测序的PCR duplicates - I(转载)

在做NGS data处理的时候,常常会遇到需要使用picard和samtools 进行remove PCR duplicates的步骤。
在网上查了一下 PCR duplicates的来历,有两个资料讲的比较详细。
但是这两个资料侧重的点不太一样,这里节选翻译+总结一下这两份资料,供将来研究作参考。
这里是第一份资料,另一份资料在下一篇文章中。

第一篇

一般来说,建库测序的过程分为下面六步:

1, 用超声波等方法将基因组DNA打碎。
2,对打碎得到的DNA片段加接头。
3,PCR扩增加了接头的DNA片段。
4,将扩增后的产物“洒”在flowcell上,目的是一个bead上抓取到一个DNA片段分子。
5,在bead上进行PCR扩增反应,保证后面测序时可以读取到足够强的信号。
6,测序(各测序平台有自己的技术:pyrosequencing (Roche), reversible terminator chemistry (Illumina), or ion semiconductor (Ion Torrent)).

PCR duplicates是在第3步产生的。

理想情况下,对打碎的基因组DNA,每个DNA片段测且仅测到一次。

而第三步扩增了6个cycle,那么每个DNA片段有了64份拷贝。将扩增后所有产物“洒”到flowcell,来自一个DNA片段的两个拷贝,可能会锚定在两个bead上,经过测序得到的这两条read,就是PCR duplication。

一般来说,如果PCR duplication rate过高,那么同样总数目的reads,所提供的关于基因组的信息就大大减少了。

那么PCR duplication rate跟什么因素相关呢?

下面通过一个简单的计算来说明这个问题。

假设扩增后(第3步后)准备上机测序的DNA总质量为1ug。建库时候扩增了6个cycle,也就是每个DNA片段有2^6=64份拷贝。原始的(扩增前)DNA片段总质量=1ug/64=15.6ng.

一个碱基对的分子量为 660g/mol, 即 660 g per mol per bp. 假设我们打碎的DNA片段长度都为200bp,那么一个片段的分子量 = 200bp*660g/mol = 220 bp * 660 * 10^9 ng/mol

那么 原始的(扩增前)DNA片段总数目=15.6 ng / (220 bp * 660 * 10^9 ng/mol ) = 1.07438e-13 mol

由于1mol 单位中包含 6.022×10^23 个粒子,那么1.07438e-13 mol对应 1.07438e-13 *6.022×10^23 = 64699163600 ~ 7e10 个分子。

也就是说,基因组被打碎后得到了** 7e10 **独特的DNA片段。

注:阿伏伽德罗常数用于代表一摩尔物质所含的基本单元(如分子或原子)之数量,在一般计算时,常取6.02×1023或6.022×1023为近似值(来源,维基百科:https://zh.wikipedia.org/wiki/阿伏伽德罗常数

如果我们对人的基因组进行测序(3G bp),测序深度为20x,read长度为100bp,那么对应了大约 3e9 bp /100bp * 20x = 600M reads. 一个read来自一个bead,也就是有600M个beads。

到这里,我们有7e10 独特的DNA片段,每个片段在上机测序前有64份拷贝,它们会 600M beads随机进行杂交。

平均来看,一个DNA片段被一个bead“抓住”的几率 = 600M/7e10=6e8/7e10=0.0085.

为了了解PCR duplicates rate,我们需要知道这7e10个独特的DNA片段,被0个、1个、2个... bead抓住的几率,体现在最后read中就是0个read,1个read,2个reads...

由于一个DNA片段被一个bead“抓住”的几率很低,我们可以用Poission distribution来刻画这个过程。

Poisson distribution的概率密度函数 = λke-λ/k! , k=0,1,2,...n.

这里, λ 就是一个DNA片段被一个bead“抓住”的几率=0.0085. 而 k 就是一个独特的DNA片段被几个bead抓住。

k=seq(0,10,1)
names=as.character(k)
barplot(dpois(k,lambda=0.0085),names.arg=names,xlab="Number of times a given molecule is represented in reads",
ylab="Probability")

image

由于beads的数目远远小于DNA片段总数,因此大部分DNA片段根本木有被测到。

而我们关注的是“1” bar和它右边的所有bar。因此我们把“0”bar去除掉,再看:

k=seq(1,10,1)
names=as.character(k)
barplot(dpois(k,lambda=0.0085),names.arg=names,xlab="Number of times a given molecule is represented in reads",
ylab="Probability")

image

从这个图上来看,如果一个DNA片段被测到了(因为我们把k=0的都扔掉了),那么它很大机会是只被测到了一次。而如果它被测到了2次或更多次,这就造成了PCR duplicates.

我们算一下被测到的DNA片段(无论被测到几次)的比例:

sum(dpois(k,lambda=.0085)/k)/(1-dpois(0,lambda=.0085))

sum(dpois(k,lambda=.0085)/k) 就是在数 count(1)/1+count(2)/2 + ..., 也就是总计测到的、独特的DNA分子有多少个。被除数(1-dpois(0,lambda=.0085)) 是所有测出来的reads数目。

结果为0.9979, 即 0.21% PCR duplicates.

现在,我们假设,我们打碎基因组DNA后,得到了9e9个DNA片段,在第三步扩增时候,进行了9个cycle,也就是每个DNA片段被扩增了512倍。那么 Poisson distribution中的lambda=6e8/9e9 = 0.067. 即一个DNA片段被一个bead抓住的概率为0.067.

sum(dpois(k,lambda=.067)/k)/(1-dpois(0,lambda=.067))

结果为0.983,也就是有1.7% PCR duplicate rate。

k=seq(1,10,1)
names=as.character(k)
barplot(dpois(k,lambda=0.067),names.arg=names,xlab="Number of times a given molecule is represented in reads",
        ylab="Probability")

image

可以看出,相比较lambda=0.0085的柱状图,k=2的柱子明显变高了,也就是说更多的DNA片段被测到了两次,PCR duplicates rate上升了。

更极端的情况,如果我们打碎基因组DNA后,得到了1e9个DNA片段,在第三步扩增时候,进行了12个cycle,也就是每个DNA片段被扩增了4096倍。那么 Poisson distribution中的lambda=6e8/1e9 = 0.6. 即一个DNA片段被一个bead抓住的概率为0.6.

sum(dpois(k,lambda=.6)/k)/(1-dpois(0,lambda=.6))

=0.85, 即有15%的reads都是PCR duplicates。

k=seq(1,10,1)
names=as.character(k)
barplot(dpois(k,lambda=0.6),names.arg=names,xlab="Number of times a given molecule is represented in reads",
        ylab="Probability")

image

从这幅图中可以看的更明显。

到这里,我们可以看到:DNA片段/bead数目 这个比例越小,PCR duplicate rate越大。

原文作者下面还回答了一些读者提出的问题:

“为什么不准备一些DNA原材料,不做PCR,直接测序”

作者引用了Mike Talkowski (People) 的答案:

在第二步加接头的时候,只有一小部分DNA片段可以成功加上接头,第三步会把成功连上接头的DNA片段进行扩增,此时待上机的产物大部分都是有接头的DNA片段了,而上机后,只有有接头的DNA片段才可以被bead抓取到。

如果不做PCR,直接从第二步到上机,那上机产物中大部分都是没有接头的分子,上机后bead也无法抓取这些分子。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容