为什么二代测序的原始数据中会出现Read重复现象?
为什么二代测序的原始数据中会出现Read重复现象?
要搞清楚这个read重复(duplicate)的问题,我想我们需要从NGS数据的产出过程说起,具体来说如下:
- 基因组DNA提取;
- DNA随机打断,最常用的是超声打断;
- 对被打断的DNA片段进行末端修复(通常是3'加A),然后在两端加接头,选择特定长度的片段文库进行PCR扩增(通过PCR的扩增会选!择!性!地提高加上了接头的文库分子数量);
- 文库上机与测序芯片(Flowcell)上的引物结合,经过桥式PCR扩增,在芯片上形成测序所需的cluster;
- 进行SBS测序,光学信号捕获,生成序列。
我们一般认为第1步DNA提取出来的是完整的基因组,打断则是完全随机的——通常来说也确实如此。
在第3步,PCR扩增时,同一个DNA片段会产生多个相同的拷贝,第4步测序的时候,这些来源于同!一!个!拷贝的DNA片段会结合到Fellowcell的不同位置上,生成完全相同的测序cluster,然后被测序出来,这些相同的序列就是duplicate。这是duplicate的第一个来源,也是主要来源,称为PCR duplicates(PCR重复)。
同样,在第4步,生成测序cluster的时候,某一个cluster中的DNA序列可能搭到旁边的另一个cluster的生成位点上,又再重新长成一个相同的cluster,这也是序列duplicate的另一个来源,这个现象在Illumina HiSeq4000之后的Flowcell中会有这类Cluster duplicates,这是第二类duplicate(如下图)。
在第5步中,某些cluster在测序的时候,捕获的荧光亮点由于光波的衍射,导致形状出现重影(如同近视散光一样),导致它可能会被当成两个荧光点来处理。这也会被读出为两条完全相同的reads,这是第三类duplicate,称之为Optical duplicates(光学重复);

以上三种比较常见,还有第四种,称为Sister duplicates,这是比较特殊的一个情况。它是文库分子的两条互补链同时都与Flowcell上的引物结合分别形成了各自的cluster被测序,最后产生的这对reads是完全反向互补的。比对到参考基因组时,也分别在正负链的相同位置上,在有些分析中也会被认为是一种duplicates。
另外,据说 NextSeq 平台上还出现过由于荧光信号捕获相机移动位置不够,导致 tile 边缘被重复拍摄,每次采样区域的边缘由于重复采样而出现了duplicates,下图中蓝色点代表 duplicates,可以看到在tile的左右两侧明显富集。

以上,除了NextSeq的情况之外,所有这些不同类型的duplicates都各有特点。比如PCR duplicate的特点是随机分布于Flowcell表面;而cluster duplicates和optical duplicates 的特点是它们都来自Flowcell上位置相邻的cluster。Cluster的位置一般都会被记录在原始测序fastq文件@Sequence-id那一行中。
这些Read重复都会一定程度上导致一些碱基信号被错误地拉高或者减低,会对后续分析带来干扰,特别是在WGS和WES分析时都需要去除。如果测序过程没什么特殊问题或者原因,那么,测序数据的duplicate比例一般都在10%以下。
另外,PCR duplicates可以通过PCR-free来避免。并且PCR本身还会带来一些其他的问题,比如扩增过程自带了一定的偏向性,这会损失一定的测序随机性,使得某些序列信息被扩大或者减小。所以,只要DNA起始量足够,那么我们就应该尽量采用PCR Free的方式来建库。
作者:黄树嘉
链接:https://www.jianshu.com/p/f1cd91e24edd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
为什么二代测序的原始数据中会出现Read重复现象?的更多相关文章
- Next generation sequencing (NGS)二代测序数据预处理与分析
二代测序原理: 1.DNA待测文库构建. 超声波把DNA打断成小片段,一般200--500bp,两端加上不同的接头2.Flowcell.一个flowcell,8个channel,很多接头3.桥式PCR ...
- 样本、文库、重复、lane、run - 二代测序原理及名词解释
参考: 独占鳌头的Illumina仪器(二代测序篇) HiSeq2000测序原理.流程与仪器 NGS文库制备的方法比较[心得点评] 各种测序文库构建方式 样本:就是待测的DNA.RNA或蛋白序列,样本 ...
- Fastqc使用说明
用FastQC检查二代测序原始数据的质量 2013-01-28 21:28:10| 分类: Bioinformatics | 标签:bioinformatics deep-seq |举报 | ...
- NCBI SRA数据库使用详解
转:https://shengxin.ren/article/16 https://www.cnblogs.com/lmt921108/p/7442699.html 批量下载SRA http://ww ...
- 扩增子分析QIIME2-4分析实战Moving Pictures
本示例的的数据来自文章<Moving pictures of the human microbiome>,Genome Biology 2011,取样来自两个人身体四个部位五个时间点 ...
- 测序中Q20 Q30 Q40
你能给别人讲清楚这个概念吗? 二代测序中,每测一个碱基会给出一个相应的质量值,这个质量值是衡量测序准确度的.碱基的质量值13,错误率为5%,20的错误率为1%,30的错误率为0.1%.行业中Q20与Q ...
- 【转录组入门】3:了解fastq测序数据
操作:需要用安装好的sratoolkit把sra文件转换为fastq格式的测序文件,并且用fastqc软件测试测序文件的质量 作业:理解测序reads,GC含量,质量值,接头,index,fastqc ...
- illumina SBS测序详解
illumina SBS测序详解 2018年01月02日 09:33:56 sixu_9days 阅读数:9789 标签: 生物信息学二代测序 更多 个人分类: 测序原理 最近回头重新看了illl ...
- 第三章 RNA测序
第三章 RNA测序 RNA测序(RNA Sequencing,简称RNA-Seq,也被称为全转录物组鸟枪法测序Whole Transcriptome Shotgun Sequencing,简称WT ...
随机推荐
- js 解决图片居中问题
下述方法能够解决图片居中问题: (1)宽一些或者高一些(相对父元素的大小):图片在父元素的可视范围内显示图片的中间位置 (2)小一些(相对父元素的大小):图片在父元素的可视范围内居中显示 实现原理:根 ...
- node使用MySQL数据库
内容: 1.node连接数据库 2.数据库常用操作 3.数据库实例 - 用户注册.登陆 1.node连接数据库 (1)下载mysql模块 (2)使用mysql模块连接数据库 let db=mysql. ...
- Bogart BogartPublic.vb
Imports System.Data.SqlClient Imports System.Data #Region "IBogartToolbar,請勿隨便更改" Interfac ...
- xss总结漏洞篇
Xss漏洞 Xss漏洞出现在1996年.Xss漏洞又名跨站脚本漏洞 Xss可能造成的危害 网站弹框(刷流量) 网站挂马 会话劫持 Cookie被盗取 用户提权 账号被盗 尽量DDOS 蠕虫攻击 Xss ...
- RNN循环神经网络结构
note: RNN处理有序的数据.例如一句话 一层双向的循环神经网络示意图(没有 S0' 则为单层循环): 正向循环S0 到 Si:y1的值受X1,A1以及上一层的A0影响 反向循环Si 到 S0:y ...
- 红帽配置Centos仓库[红帽Redhat7替换Centos7网络源]
1.卸载红帽yum源 rpm -e $(rpm -qa|grep yum) --nodeps 2.删除所有repo相关文件 rm -rf /etc/yum.conf rm -rf /etc/yum.r ...
- 75. ID重新走过,备份表
select * into ML_QuoteApply_InPro_bak20150629 from ML_QuoteApply_InPro truncate table ML_QuoteApply_ ...
- 61. oracle给用户解锁
1.查看用户状态select username,account_status from dba_users where username='test'; 2.解锁: ALTER USER YS_ADM ...
- JAVA servlet 上传文件(commons-fileupload, commons-io)
<1>获取二进制文件流并输出 InputStream inputStream = request.getInputStream(); BufferedReader reader = new ...
- 反射(hasattr , getattr, setattr) 输入的字符串用来运行程序
当用户输入字符串时,不能够用来运行程序 1.使用 hasattr 找出输入的字符串是否在程序内 2.使用 getattr 返回找出字符串对应的函数的内存地址或者变量 3. 使用setattr 添加新的 ...