debar-去噪算法的细节

卡梅隆·纽金特

图书馆(禁止)

去噪管道-组件和走查

这个小插曲包含了去噪算法。它一步一步地完成单个序列的处理。这些单独组件的所有讨论参数都可以传递给去噪功能。

数据输入

这个读取失败读_快速q函数允许用户将数据读入R进行去噪。这些函数使用包含标题数据、序列数据和PHRED质量分数的列生成数据帧(仅适用于fastq-如果用户不感兴趣,可以选择丢弃质量分数)。

fastq示例文件= system.file(系统文件)('外部数据/coi_sequel_data_subset.fastq.gz',包装= “禁止”)
数据= 读_快速q(快速示例文件)
姓名(数据)
##[1]“header_data”“序列”“质量”
#头(数据)-查看前几条记录

构建DNAseq对象

这个德巴去噪管道是围绕客户挪威船级社对象,用于存储输入序列数据和降噪过程生成的输出。

变量下方'前任'将存储挪威船级社对象,以及原始序列、序列名称(在本例中为读取id),以及可选的PHRED质量分数。

= 33 #单序列演示中要分析的示例数据帧的行号
前任= 挪威船级社(数据$序列[[i]],姓名=数据$头数据[[i]],分成两份=数据$质量[[i]])
前任#
##DNAseq对象。##样本ID:example_read_33##原始序列:##attcaatcataaagattgg。。。tgatttttggtcaccctgaagttt

然后可以通过美元符号符号访问原始序列、分数和名称。由于数据是由去噪过程生成的,因此也可以使用此符号进行访问。

前任$名称
##[1]“example_read_33”
#始终可以通过names函数查看可用组件
打印(“在当前DNAseq对象中可用:”)
##[1]“在当前DNAseq对象中可用:”
姓名(不含)
##[1]“name”“raw”“phred”

构建条形码序列

这个框架函数是去噪管道中的两个主要任务之一。它获取原始数据序列,并将其与核苷酸轮廓隐马尔可夫模型(PHMM)进行比较,生成统计信息(维特比算法的输出路径),用于对读取的序列进行校正。由于PHMM仅是COI-5P的657bp区域的剖面图(并且不能对周围数据进行去噪),因此它还采用输入序列并删除657bp COI-5P区域之外的任何侧翼区域。不过,不要担心,如果您希望保留序列的这些部分,可以选择在输出中包含删除的侧翼序列(如果它们包含重要的标识信息,例如将多路读取关联回其源样本的标记,则可能需要这些序列)。请注意,如果您保留剥落区域,这些区域中的任何错误都将无法纠正!

默认情况下框架函数将比较向PHMM读取的输入的正向和反向恭维,并使用对数似然值选择最符合COI-5P配置文件的方向。如果您确信所有被去噪的读数都是正向的,那么您可以通过设置选项来加快帧功能:dir_check=假(在这种情况下框架不会产生反向恭维,只会将序列向前传递给PHMM)。此外框架包含一组额外的选项,可用于筛选小片段和潜在嵌合序列。终止_拒绝选项设置为真的然后运行以下两个检查:(1)检查序列是否包含最大插入次数(_I)(默认值=400)PHMM路径中的连续插入状态(即序列中出现400个或更多连续bp作为COI-5P的一部分)(2)检查序列是否包含小于最小匹配(_M)(默认值=100)连续匹配PHMM。如果满足任一条件,则序列将被标记为拒绝,而不是加框。

前任= 框架(不含)

调整顺序

这个调整函数是去噪管道的组成部分,用于纠正序列中已识别的错误。使用PHMM路径输出和由框架函数,adjust对DNA序列应用插入和删除更正。对PHMM路径中的序列隐藏匹配、插入和删除状态进行评估,并用于纠正DNA序列。在调整算法中应用了某些规则,以确保调整不会应用于高度错误的序列,或与预期COI结构有偏差的序列(可能在生物学上是正确的)。首先,三重插入或三重删除(3个连续的核苷酸缺失或添加)不会被调整算法纠正。这是因为插入或删除密码子将保持氨基酸序列的完整性(无帧移位)。事实上,某些物种确实拥有缺失完整密码子的COI-5P序列(即它们的长度为654bp);这种序列的调整是错误的。此外,如果遇到5个或更多连续的插入或删除状态,则停止调整,并将序列标记为拒绝。这种严重的偏差极不可能发生,这表明序列存在比简单的微小技术错误(即污染序列或嵌合体)更大的问题。

除了DNAseq类对象之外调整功能。检查器长度是一个参数,用于确定应掩盖(转换为占位符)的更正附近的碱基对数。该参数的存在是因为通过维特比算法将序列与PHMM进行比较在识别indel错误位置方面并不完美。对应用的校正相邻的碱基对进行审查可以增加从序列中删除错误碱基对的概率,但这是在读取过程中信息丢失的权衡中实现的(当给定样本的多个序列输出可用时,可以克服此限制)。调整会更正序列的长度(当识别出插入时,错误的bp会被删除,当识别出删除时,会添加占位符),审查会最大限度地提高错误被删除的可能性。默认值检查器长度为7(即指数调整的左边或右边的七个基数被转换为占位符字符)。这个数字不是任意的,而是通过实验修正确定的。在一系列10K条码序列的去噪中,每个序列都有一个已知位置的人工indel误差,61.8%的误差得到了准确纠正。38.2%的时间,错误报告的平均值为2.31bp(标准偏差=1.98)。

仅通过对不正确调整中的平均脱靶距离(和标准偏差)进行分析,确定了保守审查规模为7。根据测试结果,将平均值加上两个标准偏差(2.3+(2*1.98)=6.26)四舍五入,这将导致审查超过95%的PHMM未正确识别的错误。此解释是为了告知用户有关更改审查长度的任何潜在决定。默认值非常保守,因为用于计算长度的汇总统计数据忽略了61.8%的校正时间。这种使用可以使阅读审查制度如他们所愿的那样保守(检查器长度=657将屏蔽显示与COI配置文件的单个bp偏差的读数)或禁用此功能(检查器长度=0)并接受调整算法。

接受的第二个附加参数调整添加的。只有当DNAseq对象拥有PHRED质量分数。指定的字符(默认为:*-质量分数为9,这是一个低值),分配给调整算法插入序列中的任何占位符字符。这样做是为了保留PHRED得分与其对应的碱基对之间的关系(如果删除bp,其PHRED分数也会被删除),如果数据的下游分析或处理依赖于PHRED评分,则此信息仍然可用。

前任= 调整(例如,审查器长度= 4)

该算法跟踪所做的调整数。

前任$调整_计数
## [1] 0

PHMM表明配置文件中位置157处缺少bp(可以通过美元符号直接调用路径例如$data$path). 占位符(字符为“-”,直到最后一个比对手强步骤)已插入,并且自调整被赋予参数检查器长度=4修正两边的四个碱基对也会变成占位符。请注意,自添加的保留为默认值,则插入的bp的分数为*(如调整后的序列字符上方所示的标签所示)。

前任$调整的顺序[150:164]
##   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~   ~ ##“c”“t”“c”

氨基酸检查

在序列的成帧和调整之后,aa_检查可用于将调整后的DNA序列转换为氨基酸,并检查氨基酸序列中是否存在终止密码子。这更容易(即翻译只执行一次),因为框架函数将DNA序列设置在一个共同的方向和阅读框中。这个aa_检查函数对停止密码子的搜索提供了对调整算法的性能。如果存在终止密码子,则表明在调整阶段未正确纠正读取帧偏移。此类序列将被标记为拒绝。这种检查并不完美,因为序列后期任何持续的框架移位都可能不足以产生终止密码子。

关于aa_检查功能:1。序列转换使用在中描述和实现的删失翻译表线圈。这样做是为了aa_检查该函数不偏袒使用更深奥的翻译表的分类组。您可以覆盖默认行为并传递遗传密码的编号如果它是已知的(与可转换(_T)参数),甚至用参数覆盖用于翻译的阅读框帧偏移(_O). 2. 如果你熟悉线圈](https://github.com/CNuge/coil网站)您会注意到,它将翻译后的序列与氨基酸PHMM进行比较,以确定有错误的序列。这不是在目前的氨基酸检查中进行的,即出于速度的考虑(将序列与PHMM进行比较在计算上很昂贵),并且因为序列中潜在的大量占位符字符是由调整算法会降低相应氨基酸序列的似然分数(由于占位符过多),并导致大量错误拒绝。

前任= aa_检查(不含)#默认行为应满足99%以上的用户需求

创建输出序列

一旦DNA序列被框定、调整并检查了未纠正错误的证据,就可以生成输出序列。输出序列中使用的默认不明确字符为“N”(amig_char=“N”). 此字符被替换为发生调整和审查的输出序列。此外,可以生成两种类型的输出序列:修剪和加框序列或重新附加侧翼信息的序列。的默认行为比对手强保持序列的侧翼(由参数控制keep_alpards=真). 框架COI-5P剖面区域之外的任何DNA序列信息都会重新附加到序列的末端,以创建输出序列。这样做是为了德巴尔可以应用于分析原始序列数据,该数据包含后续分析步骤中所需条码区域之外的重要信息。例如,如果序列被特定于样本的条形码序列标记,则该信息将保存在输出序列中,以便对去噪后的序列进行解复用,并将其分配给正确的源。由于侧翼区域被框架函数,这些区域不会去噪,序列中这些部分出现的任何错误都不会得到纠正。注:在适用的情况下,保留与侧翼序列区域相对应的PHRED质量分数。第二个选项是设置保留侧翼选择错误的这将导致任何侧翼序列被丢弃,并且仅输出用于COI-5P轮廓区的DNA序列。如果COI-5P配置文件区域的前面缺少bp,则会添加占位符字符,以使所有输出序列都位于公共读取框中。如果DNAseq对象包含PHRED分数,则也会生成与所需DNA输出字符串相对应的PHRED输出字符串。

#选项a-重新附加侧翼序列-如果希望保留序列标记,请使用此选项
前任= 比对手强(不含)
前任$比对手强
## [1] “ATTCAACATAAAGATACATTGGAACCTTATATATACTTATATTTATTTATATTCGGAATATATGAGAGAGAGAATCGACACTATAGATAATCCGTGAACTAGACACCGCGAACTATTTGGGGATCAAATCTATAACGCCACGCATTTTATAATCTTTTATATAGATTTATAGTTATATATTTGGAGACTTATACTGACTTAGACTTACTTAGCTACTTACTGATACTTACCTTAATCGGACTGACTGATATACTCTCCTCTCCGGATATATACATTACTTATCTACTTACATTACCCTTACTCTTACTCATACTTAGATACTGATCTACTGAGATACTAACTGATAGACTGAGACTGATCTCTACTCACATACTGACATAGATAGATATAGAGATAGAGAGATATAGGAGCTGGAA公司CTGGAGAACGTTTACCCCTTATCAGTAGTAACCTAGCACAGAGTGCTCAGTTAGCAGTAGTTAGCAATCTTCACTGCAGAGTGTATCATCAATCTTATCTAGAGAGCCGTAAACTTTTATCTACTGAATACACACACAGAGACGAGTACTTACTTATCATTATATATAGAGAGAGACAGAGAGACGTACTTAGCTATCTATCTATGTATCTATATACTTATATACATTACCAGTAGCTGTGGCTACTTATTTATATATTTAGATCAGTATCAGGTTATCAGGAGAGATATATACACACATTACACACACATATTAGCAGTGTACTTAGTTATCTATTTAGTTACTGAGAGATCTATTTTTATCGATACTTATGTATTTTTTTTTACTTGTATCGATTTACCCTGAAGTTT“
固定长度(不包括$超过)#侧翼序列被重新连接
## [1] 708
前任$被击败的
## [1] “~z~~~~=~~~~ ~~~_~~~%~~~~+~~~~~~~`~~~~2~~~~1~~~~3~~~#~~~…~~~[~~~]~~~-~~~5~~~~4~~~5-~~~--~~~9~~~s~~~\~~~..~~~~~~~_~~~~ ~~~=~~~~+~~~%~~~~~~~`~~~~2~~~~3~~~~1~~~#~~~5-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~_~~~=~~~~ ~~~~_~~~~ ~~~=~~~~+~~~~2~~~~3~~~~1~~~%~~~~~~~#~~~`~~~~4~~~[~~~]~~~5~~~-~~~…~~~~~~~~~~~~~~~~~h~~~~~“
#选项b-仅输出COI-5P区域的序列
前任= 比对手强(例如,保留侧翼= 错误的)
前任$比对手强#必要时,在序列前面添加占位符字符以建立通用阅读框架
## [1] “NNNTTATACTTTTATATTCGGAATATGGATATATATAATAATCGGACAGCTATAGATAATCCGTGAACTACCGAACTATTTGGGGATCAAATCTATAACTACGTAACCCACCATTGTATAATCTTATATACTTATACATTATATATTTATATACATATATATTGGAGACTTAGCTACCTTAATATACTGACTGACTTACTTACCTTTATAATGGACTGACATCCTCTATATAGACTCATCATCCTCCGGAACTACACCGACTTATACTCAATCTTACTCTTACATTACATTAGACTTAGACTGATCTATAGATCTACTTACTGATATACTATTATATATCTATACTATAACTGGACTGATACTGACCTCCTGACTAGTACTGATCACTACTGAGACTGACACTGAGTTTACCCACCTTA公司TCAAGTAACCTAGCACACAGAGTGCATCAGTTAGATTTAGCAATCTTCACTTAGCAGGTCATCAATCTTAGCGAGCGCTAAACTTTATCTACATACATCAATACATACGGTCTCATGAATACACACAGAGACGAGAGTACTGTTATGTATCAGGATCACTGTATCATTATATATATCTACTTACTTATCTAGCAGTGTGTGGCTATTTATATACTTATATACATTAGCTGTGTGTGGTGCTATCTATATATTTACATTACAGCTACTTACGTGTGTATCTATCTATTTACTTACACATTACTTA“
固定长度(不包括$超过)#只有COI-5P区域被排除在外
## [1] 654

正在写入文件

序列去噪完成后,可以在R中进一步查询和评估其组件,或者将序列保存到输出文件中。

德巴包含以fastq或fasta格式输出序列的函数(write_fastq(写入快速)写入_快速分别)。输出序列时名称DNAseq对象的字段用于为序列和超出预期字段成为写入文件的序列。两个输出选项都有一个追加选项,默认为真的.何时真的输出将附加到具有指定名称的现有文件(文件名参数),如果更改为错误的现有文件将被覆盖。

#注意-输出演示标记单元格设置为eval=FALSE,这样就不会生成输出文件
#并保存,而无需您阅读此消息并故意这么做。请确保先检查您的工作目录!

写入_快速(例如,文件名= “out.fa”,追加= 真的)#将把ex的输出序列附加到out.fa

写入_快速(例如,文件名= “out.fa”,追加= 错误的)#将用ex.的数据覆盖out.fa。

这个write_fastq(写入快速)文件包含两个与PHRED质量分数处理相关的附加参数。如果keep_phred(保留_份)设置为真的,则DNAseq对象中包含的PHRED分数将用于在输出的fastq记录中构建PHRED行。如果keep_phred(保留_份)设置为错误的,或DNAseq对象不具有PHRED分数(即它来自fasta文件),则PHRED行将填充指定的phred_占位符用户指定的字符(或默认值:#,极低的PHRED分数2)。

write_fastq(写入快速)(例如,文件名= “输出.fq”)#默认值-将输出序列附加到文件并保留对象的分数

write_fastq(写入快速)(例如,文件名= “输出.fq”,追加= 错误的,keep_phred(保留_份)= 错误的,phred_占位符= "?")#替代-覆盖
#归档并丢弃phred分数,用字符“?”替换正确的次数。

致谢

该软件的开发资金由加拿大政府通过Genome Canada和Ontario Genomics以及安大略研究基金在生物信息学和计算生物学方面提供。资助者在该软件的研究设计或准备过程中没有扮演任何角色。