检查一个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以编程方式从TableLayout中删除所有行   Java Web Sart Ubuntu12.1。加载资源(图像)   人们如何让Java SPNEGO客户端在Windows中工作?   java Eclipselink:ObjectArrayMapping和ClassDescriptor   控制台中带有引号/空格的java Javafx命名参数   java创建服务失败:找不到对象?   java Hazelcast:如何在测试期间禁用自动发现?   使用TuckyUrlRewriteFilter rermoteaddr的java块IP   javascript如何在angular 4中进行同步http调用   输入字符串的java排列   java Jenkins不是以Xrs Xmx2048m XX:MaxPermSize=512m(windows)开始的   AWS EMR上的java avro错误   java从两个ArrayList中提取特定连接的对象,组合这些相关对象并从子类中打印   java从主题中删除什么时间点消息?   谷歌像素设备上的java InvalidKeyException   java如何在执行测试后重建项目   java Android 2.2 readUTF()socket问题   按下安卓设备上的“后退”按钮后java Toast没有完成?