| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> NGS数据分析实践:06. 数据预处理 - 序列比对+PCR重复标记+Indel区域重比对+碱基质量重校正 -> 正文阅读 |
|
[人工智能]NGS数据分析实践:06. 数据预处理 - 序列比对+PCR重复标记+Indel区域重比对+碱基质量重校正 |
NGS数据分析实践:06. 数据预处理 - 序列比对+PCR重复标记+Indel区域重比对+碱基质量重校正一般变异识别之前需要进行数据预处理,包括序列比对、排序、PCR重复标记、Indel区域重比对和碱基质量重校正等步骤。以下详细介绍数据预处理的相关流程。 1. 序列比对NGS测出来的短序列片段(read)存储于FASTQ文件里面(详见:NGS数据分析实践:03. 涉及的常用数据格式[1] - fasta和fastq格式)。Reads原本是来自于有序的基因组,但DNA经随机打断、建库和测序后,已经丢失了原来的有序性。因此,FASTQ文件中相邻的两条reads之间没有任何位置关系,它们都是来自于原本基因组中某个位置的随机短序列而已。 为了识别所测样本的基因组序列变异情况,需要先将FASTQ文件中的大量无序的reads,一条一条的去跟该物种的参考基因组作比较,找到每一条read在参考基因组上的位置,然后按顺序排列好(参考基因组的下载见:NGS数据分析实践:02. 参考基因组及注释库的下载)。这个过程被称为测序数据的序列比对,序列比对本质上是一个寻找最大公共子字符串的过程。常用的软件工具是bwa,它将BW(Burrows-Wheeler)压缩算法和后缀树相结合,能够以较小的时间和空间代价,获得准确的序列比对结果。 1.1 参考基因组建索引首先,需要为参考基因组构建索引,以便能够在序列比对的时候进行快速的搜索和定位。
1.2 序列比对双末端测序(Pair-End Sequencing,简称PE测序)中,每一对的read1和read2都来自于同一个DNA片段,read1和read2之间的距离是这个DNA片段的长度,且read1和read2的方向刚好是相反的。read1在R1.fq文件中位置和read2在R2.fq文件中的位置是相同的,而且read ID之间只在末尾有一个’1’或者’2’的差别。
在Read Group中,有如下几个信息非常重要: 除了以上这四个之外,还可以自定义添加其他的信息。这些信息设置好之后,在RG字符串中要用制表符(\t)将它们分开。 接下来,将reads比对至参考基因组,用小数据测试,无误再批量提交。
2. 排序注意,BWA比对后输出的SAM文件是没顺序的,排序步骤可使用samtools软件实现。SAM文件是文本文件,为了有效节省磁盘空间,一般会将它转化为二进制格式的BAM文件。排序和bam文件转换,可以同时进行。
3. PCR重复标记在NGS测序之前都需要先构建测序文库:通过物理(超声)打断或者化学试剂(酶切)切断原始的DNA序列,然后选择特定长度范围的序列去进行PCR扩增并上机测序。PCR扩增原本的目的是为了增大微弱DNA序列片段的密度,但由于整个反应都在一个试管中进行,因此其他一些密度并不低的DNA片段也会被同步放大,那么这时在取样去上机测序的时候,这些DNA片段就很可能会被重复取到相同的几条去进行测序。这可能会增大变异检测结果的假阴和假阳性率,详细说明见大神的文章:从零开始完整学习全基因组测序数据分析:第4节 构建WGS主流程。 因此,必须要进行PCR重复标记(去除)。Samtools的rmdup是直接将这些重复序列从比对BAM文件中删除掉;而Picard的MarkDuplicates默认情况则只是在BAM的FLAG信息中标记出来,而不是删除,这些重复序列依然会被留在文件中,可以在变异检测的时候识别到它们,并进行忽略。建议对PCR重复进行标记,留存这些序列,以便在需要的时候还可以对其做分析。
4. Indel局部区域重比对Indel局部区域重比对的原因:①BWA和bowtie等全局搜索最优匹配的算法在存在Indel的区域及其附近的比对情况往往不是很准确,特别是当一些存在长Indel、重复性序列的区域或存在长串单一碱基(如,长串的TTTT或AAAAA等)的区域;②在这些比对算法中,对碱基错配和gap的容忍度是不同的。在read比对时,如果发现碱基错配和gap都可以的话,会更偏向于错配。这种偏向错配的方式,有时候还会反过来引起错误的gap。这就会导致基因组上原本应该是一个长度比较大的Indel的地方,被错误地切割成多个错配和短indel的混合集,这必然会让我们检测到很多错误的变异。且这种情况会随着所比对的read长度的增长而变得越加严重。 Indel局部区域重比对的目的:将BWA比对过程中所发现的有潜在序列插入或者序列删除(insertion和deletion,简称Indel)的区域进行重新校正,这个过程往往还会把一些已知的Indel区域一并作为重比对的区域。鉴于上述原因,重比对会减低后续变异识别的错误率。 此处需要用到GATK (GenomeAnalysisTK.jar)来实现,包含两个小步骤:①
5. 碱基质量重校正 (BQSR)变异检测是一个依赖测序碱基质量值的步骤。碱基质量值是衡量我们测序出来的这个碱基到底有多正确的重要指标。它来自于测序图像数据的base calling,是由测序仪和测序系统来决定的。但影响这个值准确性的系统性因素有很多,包括物理和化学等对测序反应的影响、仪器本身和周围环境的影响等。因此,下机数据中的碱基质量值可能与真实值存在偏差。 碱基质量重校正 (Base Quality Score Recalibration, BQSR) 主要是通过机器学习的方法构建测序碱基的错误率模型,然后对这些碱基的质量值进行相应的调整。详细的解释依然见,从零开始完整学习全基因组测序数据分析:第4节 构建WGS主流程。 此处依然用GATK (GenomeAnalysisTK.jar)来实现,包含两个小步骤:①
注:因为BQSR实际上是为了(尽可能)校正测序过程中的系统性错误,因此,在执行的时候是按照不同的测序lane或者测序文库来进行的,这个时候@RG信息(BWA比对时所设置的)就显得很重要了,算法就是通过@RG中的ID来识别各个独立的测序过程的。 补充:有时由于有些样本测得非常深,其测序结果需要经过多次测序(或者分布在多个不同的测序lane中)才能全部获得。一般会先分别进行比对并去除(标记)重复序列和BQSR后再使用samtools进行合并,将同个样本的所有比对结果合并成唯一一个大的BAM文件。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 10:18:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |