检查一个VCF调用集对另一个的准确性

smashbenchmarking的Python项目详细描述


用于变量调用的基准测试工具包。有关smash工具包的完整描述,包括我们的数据集、结果和在ec2上运行smash的说明,请访问我们的网站smash.cs.berkeley.edu。

如果您有任何问题,请访问我们的支持论坛https://groups.google.com/forum/#!forum/smash-benchmarking

SMASH概述

最简单的SMASH用例是将变量调用算法的VCF输出与验证的真值集进行比较。 我们通过调用bench.py脚本来实现这一点,脚本有三个主要参数:基本真相vcf、预测的vcf和引用fasta。

##评估

smash评估三种主要类型的变体:snps、indels和structural变体。indel定义为小于50的变量 碱基对;较长的变体被认为是结构变体。索引进一步细分为插入、删除、反转和其他;结构变体同样细分为插入、删除和其他。

首先,smash检查真实vcf和预测vcf都有变体的所有位置。如果参考等位基因和第一个备选等位基因相同,则认为snps和indel是匹配的。如果结构变体是同一类型的变体(插入、删除或多对多),并且其位置具有基本真值变体的特定断点公差,则将其视为匹配。(调用smash时可以指定sv tolerance;默认值为50个基本对)。

然而,相同的底层变量可以用不同的方式以vcf格式表示。smash通过其解救算法来解决这种模糊性:对于预测vcf中不匹配的真vcf中的每个变量,smash将真和预测调用集描述的序列扩展到定义的窗口大小(可以在运行时指定,默认值为100bp)。如果序列匹配,则将真的调用集变量标记为真阳性,并将预测的调用集变量从假阳性集中移除。

##错误率 对于非合成数据集,smash输出应该表示地面真相vcf中给定调用不正确的可能性。例如,如果我们将对indel的错误调用率限定为1/500,我们将使用选项-indel_err 0.002(snp和sv错误率的传递方式与-snp_err和-sv_err类似)将该信息传递给基准脚本。这些错误率将用于计算smash输出中精度和召回率的错误条。

##输出

求值后,smash将结果报告为可读文本(默认)或制表符分隔的输出。结果包括 真阳性、假阳性和假阴性的计数;以及基于运行时传入的错误率的有界错误的精度和召回计算;以及一些基因分型精度度量。smash还可以输出一个完全注释的vcf文件,该文件包含来自true和predicted vcf输入文件的所有变体,标记为true-positive、false-positive、false-negative或saved。

##已知假阳性模式

对于我们没有验证整个基因组的真相的情况,可以用另一个已知的真阳性vcf来调用smash。使用此选项,如果预测调用位于同一位置、同一变体类型且具有相同的ref序列,smash将进一步将其标记为与已知误报冲突。精度也将用这个假阳性计数来计算。

如果地面真值数据不全面,但我们没有一组VCF格式的已知假阳性变量,我们可以使用–hide_fp标志在输出中隐藏假阳性相关统计信息。

##标准化

smash还包括一个规范化脚本,该脚本首先通过上排所有等位基因、删除纯合子引用和单形等位基因调用来清除vcf,等等。然后,左边的脚本将所有调用规范化为poss可以作为一个步骤标准化重复序列中的含糊不清的调用。尽管运行smash并不需要严格的左规范化,但它通过减少需要调用rescue算法的次数来提高准确性并减少运行时间。规范化可以作为求值脚本调用的一部分执行,方法是添加–normalize选项。

##假设和限制

  • 目前还没有办法限制被评估的基因组部分(如外显子组等)。
  • 目前SMASH不评估相位。
  • SMASH不处理复合杂合子变体。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何强制用户在允许访问活动之前处理对话框?我的许可证代码怎么了?   java ArraysList作为JSON   mysql如何在java中创建包含多个可选where子句的搜索语句?   java如何让Apache Camel在“直接”路径的末尾删除文件?   使用socket在两个Androids之间进行java实时数据传输。IO(websocket)和4G   如何在java中实现两个CORBA服务器之间的通信   会话树xml表示为java对象   java Skype4Java编号swtwin323325   java RecyclerView getAdapterPosition()不工作:第一次单击返回正确位置,第二次单击返回1   java在$TOMCAT/conf/context上为JNDI设置资源。xml   java为什么第二个矩形冲突在第一个矩形冲突时不起作用?   JScrollPane上的java JTextArea未出现在JPanel上   java如何将实现的PriorityQueue打印为字符串?   jpa使用Jersey更新用户角色RESTJava(JAXRS)