大家好,今天来介绍hisat2比对需要多久(hisat2建立索引需要多久)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
小麦RNAseq利用hisat2构建index过程
根据崔女神文章 https://www.jianshu.com/p/071c1757ded1
利用hisat2来构建小麦的转录组的索引文件,服务器内存64G,构建的命令如下:
构建过程中提示提示内存不足,但是可自动优化参数,构建时间全长大约为3个拍宽小时。
IWGSC.1.ht2l 16M
IWGSC.2.ht2l 4B(你没有看错,是4B)
IWGSC.3.ht2l 12M
IWGSC.4.ht2l 3.4G
IWGSC.7.ht2l 25M
IWGSC.8.ht2l 3.7M
但是rf文件还不确定有何用,经研究和设置的线程数有关,8个线程即生成8个rf文件,20个线程即生成20个rf文件。
至此,小麦RNA-seq索引文件构建完毕,本人连续3次构建了小麦的袭森亮index文件,文件大小略有不同,下一步测试比对index是否可用,同时测试run out of memory是否对索引文件构建的成功与否有影响,感谢崔老春裂师。
HISAT2 建立索引警告和比对时报错解决方案
tags: HISAT2 RNA-seq
HISAT2 发表的文章中强调了它的速度很快,我就测试了一下这个工具。
HISAT2 建立索引:
然而没多久就看到这样的警告:
只是警告,并没有报错。
HISAT2 建参考索引很慢,等 HISAT2 建完索引(建索引花了 16 个小时),然后用 HISAT2 比对 RNA-seq 数据测试。
几分钟之后报错了:
github 上有人在 HISAT2 项目中报告过这个错误,虽然没有最终讨论出解决办法,但是都觉得跟建索引不完整有关,或许与建索引时候的警告有关。我查了一些资料,综合 biostar 和 SEQanswer 中的讨论,建立索引时遇到的警告是由于参考序列中存在大段的 n 碱基导致的,例如其中一条 fasta 中 n (我遇到的是小写的 n)太多。解决办法也很简单,过滤掉参考序列中长度小于 50bp 的 contig 和序列中连续 n 碱基超过 40bp 的contig 。然后重新建索引,就没有任何警告了,但是会损失部分参考序列。这样处理之后建的索引再睁唤庆用 HISAT2 比对 RNA-seq 数据,就没有问题了。
HISAT2 比对速度确实很快,一个样本转录组数据比对 2G 的核糖体 RNA 参考基因组约 25 分钟,bowtie2 需要 170 分钟(线程数都是 4)。 bowtie2 的 local 模式比对出 21% 的 rRNA 污染链宴,而 HISAT2 比对 2% 的 rRNA 污染,差异也挺大的……
但是,HISAT2 的线程数不能设置太高,用户手册中建议对人类参考基因组进行比对时,线程数设置在 1-8 之间。我用文献悉握 Transcript-level expression analysis of RNA-seq
experiments with HISAT, StringTie and Ballgown 中的数据测试也发现当线程数超过 12 时整个比对步骤消耗的时间反而会增加。
真核生物mRNA测序
一、真核生物mRNA的结构:
二、建库方式:
真核生物mRNA含有poly-A尾,因此最常用的富集真核生物mRNA的方法就是采用附着poly-T oligo的磁珠从total RNA 中抓取mRNA。建库示意图如下图所示:
1、提取总RNA:提取总RNA后需要对其进行质量检查,包括纯度、浓度和完整性(RIN)。如果总RNA起始量太低,不能保证有足够的mRNA用于建库。另外RNA容易降解,而采用附着poly-T oligo的磁珠捕获降解后的RNA会产生3’偏好性,因此建议RIN值大于等于7。
2、mRNA捕获:真核生物的成熟mRNA带有poly-A尾,因此可以采用附着poly-T oligo的磁珠从总铅虚漏RNA中捕获mRNA。
3、mRNA片段化:
4、cDNA第一链合成:以mRNA为模板合成cDNA。
5、cDNA第二链合成:以cDNA第一链为模板合成cDNA第二链。
6、双链cDNA末端修复:3’槐烂加A,5’修复。
7、加接头:
8、PCR富集mRNA文库。
9、上机测序。
三、生信分析:
1、数据拆分:利用bcl2fastq软件将bcl文件转换成fastq文件。
2、数据预处理:有些测序reads可能包含测序接头、引物序列、低质量碱基、N含量较高,因此通常需要对测序数据进行预处理,去除这些不合格的碱基或reads。常用的软件有fastp,cutadpater以及Trimmonmatic等。
3、质控分析:对预处理后的数据进行质控分析,通常采用fastqc。
4、参考基因誉高组比对:将测序数据与参考基因组进行比对,常用的比对软件有hisat2,tophat2,STAR等。
5、转录本的组装和定量:常用的软件有cufflinks,stringtie等。
6、差异分析:分析不同处理条件下基因或转录本的表达是否有差异,穿能够与的软件有DEseq2,edger,ballgown等。
7、富集分析:对差异基因进行富集分析,统计学原理是基于超几何分布。
有参转录组分析
• 总体上来说HISAT利用了BWA和Bowtie的算法,同时解决了mRNA中不存在内含子难以比对的问题,比对上代主流RNA-seq比对工具能快50倍,同时需求更少的内存<8G(这就意味着你可以在PC上跑数据),20个样本,每个样本一亿reads的估计,用一台电脑一天之内能够跑完。使用者可以提供精确的基因注释来提高在已知基因区域的准确性,但这是可选项。
• Transcript assembly and quantification with StringTie
• RNA-seq的分析依赖于精准的对于基因isoform的重建以及对于基因相对丰度的预测。继承于Cufflinks,StringTie相对于之前开发的工具更为准确,需求内存和耗时也更少。
• 使用者一样可以乱猛盯使用注释文件来帮助StringTie运行,对于低丰度的数据比较有帮助。此时StringTie依旧会对非注释区域进行转录本的组装,所以注释文件在这里是可选选项。
首先添加环境变量,如果使用conda的话需要 source activate
hisat2支持对gtf文件构建索引,并且可以向其中添加外显子,SNP等信息,进一步完善索引
随后利用 ballgown 或者 featurecount 得到表达矩阵进行下游分析
对于可变剪切一般使用 rMATs 进行统计,rMATS是一款对RNA-Seq数据进行差异可变剪切分析的软件。其通过rMATS统计哗和模型对不同样本(有生物知困学重复的)进行可变剪切事件的表达定量,然后以likelihood-ratio test计算P value来表示两组样品在IncLevel(Inclusion Level)水平上的差异(从公式上来看,IncLevel跟PSI的定义也是类似的),lncLevel并利用Benjamini Hochberg算法对p value进行校正得FDR值。rMATS可识别的可变剪切事件有5种,分别是skipped exon (SE)外显子跳跃,alternative 5′ splice site (A5SS)第一个外显子可变剪切,alternative 3′ splice site (A3SS)最后一个外显子可变剪切,mutually exclusive exons (MXE)外显子选择性跳跃和 retained intron (RI)内含子滞留
随后对结果进行可视化,
SAM/BAM相关的进阶知识
目录
samtools 和 picard 都有对SAM/BAM文件进行排序的功能,一般都是基于坐标排序(还提供了 -n 选项来设定用reads名进行排序),先是对chromosome/contig进行排序,再在chromosome/contig内部基于start site从小到大排序,对start site排序很好理解,可是对chromosome/contig排序的时候是基于什么标准呢?
基于你提供的 ref.fa 文件中的chromosome/contig的顺序 。当你使用比对工具将fastq文件中的reads比对上参考基因组后会生成SAM文件,SAM文件包含头信息,其中有以 @SQ 开头的头信息记录,reference中有多少条chromosome/contig就会有多少条这样的记录,而且它们的顺序与 ref.fa 是一致的。
当使用samtools或picard对SAM/BAM文件进行排序时,这些工具就会读取头信息,按照头信息指定的顺序来排chromosome/contig。所以进行排序时需要提供包含头信息的SAM/BAM文件。
那么 普通情况下我们的chromosome/contig排序情况是什么样的?
一般情况下在进行SAM文件的排序时,染色体的排序到底是按照哪种规则进行排序的,不是一个很重要的问题,也不会对后续的分析产生影响,但是在执行GATK流程时,GATK对染色体的排序是有要樱陆求的,必须按照从chr1开始到chr22,最后是chrX和chrY这样的顺序,否则会报错
面对这样变态的要求,我们怎么解决?
在构造ref.fa文件时,让它按照从chr1开始到chr22,最后是chrX和chrY这样的顺序进行组织就可以了:
FLAG列在SAM文件的第二列,这是一个很重要的列,包含了很多mapping过程中的有用信息,但很多初学者在学习SAM文件格式的介绍时,遇到FLAG列的说明,常常会一头雾水
what?还二进制,这也太反人类的设计了吧!
不过如果你站在开发者的角度去思考这个问题,就会豁然开朗
在mapping过程中,我们想记录一条read的mapping的信息包括:
这些信息总结起来总共包括以下12项:
而每一项又只有两种情况,是或否,那么我可以用一个12位的二进制数来记录所有的信息,每一位表示某一项的情况,这就是原始FLAG信息的由来,但是二进制数适合给计算机看,不适合人看,需要转换成对应的十进制数,也就有了我们在SAM文件中看到的FLAG值
但是FLAG值所包含信息的解读还是要转换为12位的二进制数
SAM格式文件的第3和第7列,可以用来判断某条reads是否比对成功到了基因组的染色体,左右两条reads是否比对到同一条染色体
有两个方法可以提取未比对成功的测序数据:
对于PE数据,在未比对成功的测序数据可以分成3类:
看完这一部分,是不是有一个感觉: FLAG玩得溜局颂睁,SAM文件可以处理得出神入化
首先,思考一个问题: 对于PE数据,一条测序片段(fragment)有read1和read2两条测序片段,它们俩的名字相同,那么对于这一条测序片段,对它进行mapping之后得到的SAM文件中会出现几条记录呢?
对于我的这个假设可以用以下的方法进行验桐岁证:
上面的测试结果与我们的假设吻合
但是在一次处理三代测序数据(三代测序数据是Single-End)中发现了不同:
在输出中出现了一些不太和谐的结果:有极少部分的QNAME对应2条以上的记录,这意味着存在一条read会有多条比对记录的情况,why?
对这个与预期不完全相符的结果,尝试去寻找里面的原因,其间进行了各种各样的推理、假设、验证,最终在 李恒的github 中找到了答案
这种情况容易在三代测序数据中出现
如果你用的是Single-End的数据,那么差异应该比较小,不会太明显,而在Pair-End上差异可能会比较大,之所以会产生这些差异,原因有两点:
从上面列出的两点差异可以看出,mpileup默认输出的是高质量的覆盖深度,这是有历史原因的:当场mpileup功能被开发出来就是为了与bcftools组合,将samtools mpileup的输出作为bcftools的输入用于下游的snp-calling,当然需要保证数据的质量
当然可以通过设置对应的参数使得它的属于结果与depth的一致,但是不推荐这么做
下面是对同一个样本的paired-end Fastaq文件比对结果(比对使用hisat2),hisat2和samtools分别给出的mapping rate的统计
hisat2:
samtools flagstat:
从上面可以看出,hisat2给出的mapping rate为85.40%,而samtools给出的为86.32%,两个的统计结果不一样,而且samtools的统计会大一些,what?
介四什么鬼?
我们来简单地分析一下:
hisat2中,
samtools中,
计算没问题,那问题出在哪呢?
有没有注意到上面的两个式子中的分子和分母,计算它们的差值:
分子:
分母:
发现了没有,它们的差值正好都等于samtools flagstat的输出结果的第二行:
所以,hisat2和samtools计算mapping rate的公式实际上分别为:
一般来说,我们想得到的是hisat2计算公式所得到的统计结果,hisat2统计结果在比对结束后会以标准错误形式给出,我们可以将标准错误重定向到一个log文件中,但是如果我们忘了保持这个统计结果,怎么办?
最简单的办法就是重新跑一遍hisat2,但是这样太耗费时间和计算资源了,这时我们可以利用samtools flagstat对SAM文件的统计结果,以及它的部分统计值与hisat2计算公式的关系,快速地算出准确的mapping rate:
(1) 【】从零开始完整学习全基因组测序数据分析:第5节 理解并操作BAM文件
(2) 【生信技能树】【直播】我的基因组(十五):提取未比对的测序数据
(3) BWA’s README in github
(4) 【】黄树嘉《样本量重要,还是测序深度重要? 生物信息工程师可以分为多少种类型? 《解螺旋技术交流圈》精华第3期》
(5) 生信媛《HISAT2的比对率计算结果和SAMTools flagstat不同,你想过原因吗? 》