2018-7-6转录组学习4 序列比对

1.比对软件

作为初学者,在这里使用hisat2作为比对软件,关于常用的比对软件的特点引述一下hoptop的介绍:

最近的Nature Communication发表了一篇题为的Gaining comprehensive biological insight into the transcriptome by performing a broad-spectrum RNA-seq analysis的文章–被称之为史上最全RNA-Seq数据分析流程,也是我一直以来想做的事情,只不过他们做的超乎我的想象。文章中在基于参考基因组的转录本分析中所用的工具,是TopHat,HISAT2和STAR,结论就是HISAT2找到junction正确率最高,但是在总数上却比TopHat和STAR少。从这里可以看出HISAT2的二类错误(纳伪)比较少,但是一类错误(弃真)就高起来。
就唯一比对而言,STAR是三者最佳的,主要是因为它不会像TopHat和HISAT2一样在PE比对不上的情况还强行把SE也比对到基因组上。而且在处理较长的read和较短read的不同情况,STAR的稳定性也是最佳的。
就速度而言,HISAT2比STAR和TopHat2平均快上2.5~100倍。
文章链接:https://www.jianshu.com/p/681e02e7f9af
文献链接:
1:https://genomebiology.biomedcentral.com/articles/10.1186/s13059-016-0881-8
2:https://www.nature.com/articles/s41467-017-00050-4

2 Hisat2的使用

HISAT2是TopHat2/Bowti2的继任者,使用改进的BWT算法,实现了更快的速度和更少的资源占用,因此作者推荐TopHat2/Bowti2和HISAT的用户转换到HISAT2,其官网地址是:http://ccb.jhu.edu/software/hisat2/index.shtml hisat2的使用主要有建立基因组Index,reads比对和sort排序。
我们可以从hisat2官网下载需要的人类和小鼠的Index,也可以自己在本地创建

2.1 下载Index

cd ~/data/hg19
#下载链接
wget ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/data/hg19.tar.gz
wget ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/data/mm10.tar.gz
#解压得到genome1-8.ht和make_*.sh文件
x *.gz

2.2 开始比对

hisat2的基本用法是:hisat2 [options]* -x {-1 -2 | -U | --sra-acc } [-S ]
* 主要参数:
-x < hisat2-idx >
参考基因组索引文件的前缀。
-1 < m1 >
双端测序结果的第一个文件。若有多组数据,使用逗号将文件分隔。Reads的长度可以不一致。
-2 < m2 >
双端测序结果的第二个文件。若有多组数据,使用逗号将文件分隔,并且文件顺序要和-1参数对应。Reads的长度可以不一致。
-U < r >
单端数据文件。若有多组数据,使用逗号将文件分隔。可以和-1、-2参数同时使用。Reads的长度可以不一致。
–sra-acc < SRA accession number >
输入SRA登录号,比如SRR353653,SRR353654。多组数据之间使用逗号分隔。HISAT将自动下载并识别数据类型,进行比对。
-S < hit >
指定输出的SAM文件。

for i in `seq 56 58`
do
hisat2 -t -x ~/data/hg19/genomehg19/genome -1 ~/data/fastq/SRR35899${i}_1.fastq.gz -2 ~/data/fastq/SRR35899${i}_2.fastq.gz -S ~/data/hisat2/SRR35899${i}.sam 
done
for i in `seq 59 62`
do
hisat2 -t -x ~/data/hg19/genomemm10/genome -1 ~/data/fastq/SRR35899${i}_1.fastq.gz -2 ~/data/fastq/SRR35899${i}_2.fastq.gz -S ~/data/hisat2/SRR35899${i}.sam 
done
  • 此处需要注意:-x参数的命令格式为,-x < hisat2-idx >,本例中为-~/data/hg19/genomehg19/genome,其中的genome是index文件的前缀,不是某个文件夹,如果命令中不加入genome 会导致“Could not locatea HISAT2 index corresponding to basename”的错误
  • hisat2 程序在比对过程中会占用大量的内存空间,本人六年前的渣笔记本每次运行就卡死,后来换装了新内存条才可以正常运行(笑哭.jpg)

可以看到有7.40%的比对没有一次对齐,77.18%的有一次对齐,15.41%的超过一次对齐

3 SAMtools的应用

sam与bam是两种最常用的比对结果输出文件格式,如转录组Tophat分析软件输出的比对结果为.bam文件,而BWA、bowtie等比对软件则主要输出为.sam文件。bam文件格式是sam文件的二进制格式,占用的存储空间更小,更利于节省存储资源,而且bam文件的计算处理也更快,但二进制无法直接查看则是它的一个明显缺点。而samtools是一个用于操作sam和bam文件的工具合集,包含有许多命令:二进制查看、格式转换、排序及合并等功能,结合sam格式中的flag、tag等信息,还可以完成比对结果的统计汇总等。具体的介绍可以参见:
Samtools中文使用手册:http://cncbi.github.io/Samtools-Manual-CN/
Samtools 详解:https://www.jianshu.com/p/15f3499a6469

3.1 SAMtools转换sam格式文件

sam格式转换为bam格式是通过view命令:

#参数-S 输入sam文件;参数-b 指定输出的文件为bam;最后重定向写入bam文件
for i in `seq 56 62`
  do samtools view -S SRR35899${i}.sam -b > SRR35899${i}.bam
done

3.2 SAMtools对bam文件进行排序

bam文件进行排序是通过sort命令:

 for i in `seq 56 62`
  do samtools sort SRR35899${i}.bam -o SRR35899${i}.sorted.bam
done

需要注意的是,sort有两种排序方法:默认通过最左边的坐标排序(染色体的位置);当使用 -n参数 时,通过read的名字排序,用一个简单的例子来看两种方法的区别:

head -500 SRR3589956.sam > test.sam   
samtools view -b test.sam > test.bam
samtools view test.bam | head

samtools sort test.bam -o test.sorted.bam    
samtools view test.sorted.bam | head 

可以看到默认排序是按染色体位置进行排序的

samtools sort test.bam -n -o test2.sorted.bam 
samtools view test2.sorted.bam | head   

使用 -n参数后,排序按照reads名称进行

3.3 SAMtools建立索引

建立索引是通过Index命令,建立的索引文件以.bai为后缀

for i in `seq 56 62`
  do samtools index SRR35899${i}.sorted.bam
done

SAMtools还有其他功能参见上面两个帮助文档,在此不做详述。

4 对比结果质控(QC)

比对完的结果需要进行简单的质控,在A survey of best practices for RNA-seq data analysis里面,提到了人类基因组应该有70%~90%的比对率,并且多比对read(multi-mapping reads)数量要少。另外比对在外显子和所比对链(uniformity of read coverage on exons and the mapped strand)的覆盖度要保持一致。
常用的二次质控软件下面几种,相关网站都有详细介绍:
* Picard https://broadinstitute.github.io/picard/
* RSeQC http://rseqc.sourceforge.net/
* Qualimap http://qualimap.bioinfo.cipf.es/
我们选择在python环境下的RSeQC软件,RSeQC软件包提供了许多有用的模块,可以全面评估高通量序列数据,尤其是RNA-seq数据。一些基本模块快速检查序列质量,核苷酸组成偏差,PCR偏差和GC偏差,而RNA-seq特定模块评估测序饱和度,映射读数分布,覆盖均匀性,链特异性,转录水平RNA完整性等
RSeQC可以使用pip install rseqc或者conda install rseqc安装,值得一提的是由于我原本为了节省电脑空间(渣电脑吐槽)安装了miniconda导致RSeQC安装总是报错,后来安装了anaconda才顺利安装。

4.1 总结BAM或SAM文件的映射统计信息

使用bam.stat.py脚本,此脚本根据映射质量确定“唯一映射的读取” ,该质量是读取错位的概率(不要与序列质量混淆,序列质量测量碱基调用错误的概率)


结果上看是符合70~90的比对率要求的。

4.2 基因组覆盖率的QC

使用read_distribution.py,该模块将计算映射读数如何在基因组特征上分布(如CDS外显子,5’UTR外显子,3’UTR外显子,内含子,基因间区域),需要的bed文件可以直接在RSeQC官网下载

wget http://dldcc-web.brc.bcm.edu/lilab/liguow/RSeQC/dat/hg19_RefSeq.bed.gz
x hg19_RefSeq.bed.gz

5 IGV 可视化查看

没什么好说的,截图

你可能感兴趣的:(2018-7-6转录组学习4 序列比对)