比对
这一步将使用hisat2或STAR对数据进行比对。hisat2在比对速度与资源占用上说比STAR要好上不少,但是也有不少人建议使用STAR,因为STAR可以获得更好的比对结果。因此具体的选择还是根据实际情况定。关于hisat2、STAR、topHat的对比可以看这篇文章。
HISAT2
分步进行
原则上,hisat2先将数据比对到sam文件,再使用samtools转换为bam文件后再进行排序。其中-x后跟的是索引文件的名字(不包括扩展名)。hisat2对SRR1374921比对用时3分钟,比对率在98.24%。
| hisat2 -p 10 \
-x genome/mm39 \
-U rRNA/SRR1374921_filtered.fq.gz
-S bam/SRR1374921.sam
|
再使用samtools转为bam
| samtools view -bS bam/SRR1374921.sam \
| samtools sort -@ 10 - -o bam/SRR1374921.bam
|
最后再用samtools进行排序并创建索引
| samtools index bam/SRR1374921.bam
|
然后其实可把SRR1374921.sam删掉了。
合并进行
其实我们也可以一条命令,直接生成排序后的bam。使用管道和tee同时生成比对报告。
| hisat2 -p 10 \
-x genome/mm39 \
-U rRNA/SRR1374921_filtered.fq.gz \
| tee >(samtools flagstat - > bam/SRR1374921.hisat2.flagstat.txt) \
| samtools sort -O BAM \
| tee bam/SRR1374921.bam \
| samtools index - bam/SRR1374921.bam.bai
|
写一个循环来跑这些数据。下载的内容里有个mergelist.txt,有所有数据样本名,把样本名截下来。
| cut mergelist.txt -d'_' -f1 > samplelist.txt
|
然后循环运行
| cat samplelist.txt | while read line; do \
hisat2 -p 10 -x genome/mm39 \
-U rRNA/${line}_filtered.fq.gz \
| tee >(samtools flagstat - > bam/${line}.hisat2.flagstat.txt) \
| samtools sort -O BAM \
| tee bam/${line}.bam \
| samtools index - bam/${line}.bam.bai; done
|
比对完成后,进入下一步统计reads数。
STAR
同样的数据,STAR需要50min才能完成,比对率85.76%。
| STAR --genomeDir genome/star_index/ \
--readFilesIn rRNA/SRR1374921_filtered.fq.gz \
--runThreadN 10 --outSAMtype BAM SortedByCoordinate \
--quantMode GeneCounts \
--outFileNamePrefix bam/SRR1374921. \
--readFilesCommand zcat
mv bam/SRR1374921.Aligned.sortedByCoord.out.bam bam/SRR1374921.star.bam
samtools index bam/SRR1374921.star.bam
|
对文件存放结构不满意的需要把log移动到log文件夹。
由于在索引中还加入了GTF,STAR会同时输出比对到各个基因的counts,结果在ReadsPerGene.out.tab中,后三列分别是“counts for unstranded RNA-seq”, “counts for the 1st read strand aligned with RNA (htseq-count option -s yes)”, “counts for the 2nd read strand aligned with RNA (htseq-count option -s reverse)”。根据需求选用哪一列。