HISAT2是一款用于“对应(map)”二代测序数据(全基因组、转录组和外显子组)至目标基因组的工具,用来替代HISATTopHat2。本文汇集一些使用HISAT2的常见问题问答。

1. 如何解读HISAT2的输出统计?

一个常见的双端测序样本HISAT2输出统计:

这篇博文的目的是展示R语言中下标操作矩阵的潜在问题。R语言提供了多种方法提取一个矩阵的单个或者部分元素,不同方法对应的效率在Hadley Wickham的Advance R中已有讨论。这些方法中,使用最广泛的是通过下标(行或者列)取值,即操作符[。然而,这种方法存在潜在问题,即内存中会拷贝原始对象。

举例:首先建立一个矩阵,之后取这个矩阵除了第一行之外的部分,接下来操作这个部分矩阵。

manipulate
1
2
3
4
5
6
7
8
9
10
11
12
## step1: build matrix
n <- 8000
tmp1 <- matrix(rnorm(n * n), nrow = n, ncol = n)
gc()

## step2: manipulate a subset of matrix
sink('/dev/null')
apply(tmp1[2:n, ], 1, function(x) x[1])
sink()

## step3: garbage collection
gc()

1. C语言指针基础

C语言的指针设计是一致和优雅的。C语言中“指针(pointer)”就是地址(所以不能用普通整数储存地址),“指针变量(pointer variable)”是存储地址的变量。一个指针变量,只能指向一个特定类型的变量,比如整数、浮点数、字符或者指针。

Initiate a pointer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int tmp1 = 1, tmp2;

/* "=" does not mean "assignment", it just means "initiating" */
/* p is the address of tmp1, *p is equal to the value of tmp1*/
int *p = &tmp1;

int *q;
q = &tmp2;

/* p points to tmp1, q points to tmp2, now the value of tmp2 is 1*/
*p = *q;

/* p and q now both points to tmp1*/
q = p;

关于Docker的安装和使用,有详细的文档可供参考。本文收集一些有趣和重要的记录。

1. 普通用户权限执行Docker

创建docker用户组并添加普通用户。

1
2
$ sudo groupadd docker
$ sudo usermod -aG docker myUserName

注销后,再次登录即可。