一文阐述链特异性测序——stranded? reverse-stranded? un-stranded?

小小的眼睛里,装着……大大的疑惑

全文2800字,伤脑筋……

今天尝试把自己对于 stranded、reverse-stranded、un-stranded 这个问题的理解给讲清楚,有不对的地方还请大家批评指正,相互交流学习~

其实这个问题的是伴随着链特异性测序的兴起而产生的,那么为什么要有链特异性测序呢?

一些链

我们都知道DNA有两条链,很自然的我们就想把这两条链给区分一下,所有就有了各种链的定义:

  • 正负链
    正负链这个定义实际上很“人为”,在参考基因组中,DNA的一条链被指定为正链,另一条链就被指定为负链,这个指定是大家都保持一致的,即通用,我们所使用的参考基因组都是正链的序列。在文献中往往被翻译为:正链(forward strand; plus strand)与负链(reverse strand; minus strand)

  • 模板链、非模板链
    在转录过程当中,与RNA结合,充当转录模板的那条DNA链,我们称之为模板链,自然另外那条链就称为非模板链。简单来说,模板链是与RNA互补的那条DNA链,非模板链是与RNA序列相同的那条链(这样说不严谨,但是方便大家理解)。

  • 正义链、反义链
    接着前面的,正义链就是和RNA序列相同的那条DNA链,反义链就是和RNA互补的那条DNA链。在文献中往往被翻译为:正义链(sense strand)和反义链(antisense strand)

  • 编码链、非编码链
    接着前面的,编码链就是和RNA序列相同的那条DNA链,非编码链就是和RNA互补的那条DNA链。在文献中往往被翻译为:编码链(coding strand)和非编码链(noncoding strand)

难以理解……上图:


总结起来:
非模板链 = 编码链(coding strand)= 正义链(sense strand)
模板链 = 非编码链(noncoding strand) = 反义链(antisense strand)

链特异性测序

为什么要有链特异性测序?答案就是:

"With non-stranded RNA-Seq, you can't tell whether a sequencing read represents the plus or minus strand of the DNA template. In comparison, stranded RNA-Seq distinguishes the first and second strands of cDNA."

总结来说,链特异性测序有这几个优点是链非特异性测序所不具备的:

  • Identify antisense transcripts
  • Annotate a genome
  • Discover novel transcripts

设想分别位于正负链上的两个基因有一个共同的区域(overlap gene),那么如果我们用链非特异性测序:


non-stranded RNA-seq

详细讲一下该图的建库流程:
(1)oligo-dT富集:我们一般说的RNA-seq是指mRNA,但是我们提出来的总RNA有接近90%全部是rRNA,我们只想得到mRNA,利用真核生物mRNA一般都带有polyA的尾巴这一性质我们设计oligo-dT去与这个polyA的尾巴进行杂交,就能把我们想要的mRNA给富集出来。

  • 为什么只有mRNA被加尾?
    在真核生物中,mRNA由RNA聚合酶II转录,而rRNA大部分由RNA聚合酶I转录,加尾需要一系列加尾因子的作用,而这些加尾因子只有RNA聚合酶II才能够对它们进行招募富集。

(2)添加随机引物进行链的合成:这个过程实际上就是一个DNA双链的合成,无论你起始的mRNA是上面的哪一条,最终形成的两条DNA双链基本是一样的(考虑到随机引物的结合位置,两个DNA分子会有差异)。

(3)添加接头:我们最终会使用illumina进行测序,从这一步开始实际上已经开始构建测序文库了,这里添加的是“Y”接头,注意,这个接头并不是互补配对的,从图里就可以看出,是“Y”字形,显然不是互补配对的。但是你会发现,紫色的接头是都位于5'端的,而红色的接头则都是位于3'端的

(4)PCR扩增:这一步扩增的引物结合位点是在前面的接头中的,而不像前面的随机引物了。可以看到,左右两边都扩增产生了两个DNA分子,我们通过添加read1的测序引物就能测得read1,同理,添加read2的测序引物就能测得read2。但是在这里你就会发现一个尴尬的问题,无论是左边还是右边,read1测出来的序列并不一样,拿左边举例,上面那个DNA分子测出的序列为浅灰色的序列,即Plus Stranded mRNA的互补链,而下面的DNA分子测出来的序列为深灰色的序列,即和Plus Stranded mRNA序列一样的那条链。这样在同一个库中,你最后得到的read1你也不知道它到底和mRNA之间的关系是怎样的,所以就是链非特异性了。

但是当我们换成链特异性测序:


stranded RNA-Seq

以Plus Stranded mRNA举例:首先还是以mRNA为模板进行第一链的合成,然后在利用RNaseH对杂合链中的RNA进行降解,再利用含有dUTP的反应液进行第二链的合成,添加接头。来看它是如何实现链特异性的:

(1)第一种方法是,我使用能够特异性降解含有尿嘧啶(U)的酶来对含有U的链进行降解,然后再进行链的合成,这样,我的文库里面显然只会有一种DNA分子,我测出来的read1自然就肯定是mRNA的序列(在这张图里)。
(2)第二种方法是,将含有U的DNA双链解开,进行扩增,但是DNA聚合酶没有办法以U为模板进行扩增,所以最终所有的DNA分子也只有一种,就是DNA聚合酶以没有U的DNA单链为模板合成的DNA分子,这个时候测出来的read1显然也只能是mRNA的序列。

通过上面的方法,你就能知道你的read1到底是测的哪条链,就实现了真正的链特异性测序了。

stranded 与 reverse-stranded

这个问题实际上来源于我在使用featureCounts进行定量时的一个选项,下面是这个选项的描述:


很难搞清楚……这里的0、1、2是什么意思。实际上不仅仅是 featureCounts ,还有很多工具都有这个类似的选项,比如:TopHat、HTSeq、RSEM、Salmon 等等。下面借用一张网图来对这个问题进行解释:

我们在进行双端测序的时候,会有read1与read2,但是就会有三种情况,第一种是read1就是测到的sense strand的信息(condition A),第二种情况是read1测到的是antisense strand的信息(condition B),第三种情况就是前面讲到的链非特异性测序(condition C)。那我们要对这个进行区分,就需要指定上面的这个参数,例如 featureCounts 中,-s 0就表示链非特异性测序,也就是 condition C-s 1就表示,read1测到的是sense strand的信息,也就是 condition A,也就是它自己所描述的 stranded-s 2就表示,read1得到的是antisense strand的信息,也就是 condition B,也就是它自己所描述的 reversely stranded

好了,上面的清楚了,但是同样是这样的一个问题,不同的软件……它有着不同的描述,例如 TopHat 就不是用 strandedreversely stranded 来定义(这也是我认为最好相通的),它用 first strandedsecond stranded 来定义这件事,它的 first stranded 表示 read1测到的是antisense strand的信息!second stranded 表示 read1测到的是sense strand的信息!这在我看来……是很奇葩的,是很容易搞混淆的。

下面用一张图进行一个汇总,实名感谢这篇帖子Strandness in RNASeq,应该是全网讲的最清楚的了:

注:这里的 caseA 就是上面的 condition A,以此类推

fr & ff & rf & f & r

细心的人会注意到上面的 TopHat 参数中有个 fr,这又是什么……?

先上图(图片来源:https://www.biostars.org/p/344264/):

  • 单端测序
    对于单端测序来说,f 就表示这个read1测出的信息是从5'端开始的,而 r 则表示read1测出的信息是从中间开始的,显然现在基本上已经全都是 f 模式了。注意,在两种不同的模式下,first stranded 含义又不同了!
  • 双端测序
    在双端测序下,如果read1与read2是头对头的,就称之为 fr ,如果是都位于一条链上,则称之为 ff ,如果是尾巴对尾巴的,则称之为 rf注意,在三种不同的模式下,first stranded 含义又不同了!

我就遇到过测出来的反而是antisense strand的信息的情况,这是一个PRO-seq的单端测序数据,首先在igv上看一下:

igv

你可以看到,最上面的那套数据,所有的reads全部是比对到反链上的,但是在这个区间里面只有正链基因PTBP2,所以如果不把这个问题搞清楚……后面的分析基本要出问题。

建库决定read1的信息

上面那张表,不同的建库方式就会有不同的结果,总结一下:

  • read1的信息是sense strand的:Ligation & Standard SOLiD
  • read1的信息是antisense strand的:dUTP & illuminaTruSeq Stranded
  • 链非特异性测序:Standard illumina

下面尝试理解为什么 dUTP 建库为 reversely stranded ,而 Ligation 建库为 stranded 。针对这个问题的理解,最多的就是这个图了:


但是这个图分不清sense和antisense,可以看我的这张:
dUTP vs Ligation

详细来讲:
在这里,红色始终表示sense strand的信息天蓝色始终表示antisense strand的信息蓝色和黄色表示接头深绿色和玫瑰红色表示reads
需要注意的是:在将adapter连接到待测序的核酸链上时,能够与裸露的3'端连接的一定是黄色的adapter;而能够与裸露的5'端连接的一定是蓝色的adapter!而我们在测序时,首先会添加能够与蓝色adapter结合的测序引物进行测序,生成read1,随后才是生成read2。仔细看就知道,从连上接头两边就已经开始出现差异了,所以这两种测序建库方法,得到的reads与链之间的关系一定是相反的~

怎么办?

  • 遇到这个问题,首先是去看测序数据的建库方式,这样就能判断了;
  • 如果建库信息没有,先进行比对,无论怎样建库,比对这一步不会有这些信息的干扰,比对出来后,利用bam文件在igv上进行判断,你就能知道read1到底是sense strand的信息还是antisense strand的信息了。

今天又是摸鱼的一天!

你可能感兴趣的:(一文阐述链特异性测序——stranded? reverse-stranded? un-stranded?)