跳转至

happy

Hap.py 是illumina官方开发的在单倍型水平上比较二倍体基因型的工具。可用于针对金标准变异数据集(例如NA12878样本)对检测的变异结果进行基准测试,以判断检测结果的准确性, 也可以用于比较和评估两个不同变异检测软件检测结果的差异。

代码库:https://github.com/Illumina/hap.py/

使用文档:https://github.com/Illumina/hap.py/blob/master/doc/happy.md

基本使用

$ hap.py truth.vcf query.vcf -r ref.fa -f chr1.bed --threads 8 -o truth_vs_query

参数解释:

  • truth.vcfquery.vcf 为待比较的2个vcf文件;
  • -r ref.fa 用于指定使用的参考序列;
  • -f chr1.bed 指定需要比较的区间,即只有该bed区间内的位点用于比较;
  • --threads 5 指定线程;
  • -o truth_vs_query 指定输出文件前缀;

结果文件

Output FileContents
truth_vs_query.summary.csvSummary statistics
truth_vs_query.extended.csvExtended statistics
truth_vs_query.roc.all.csvAll precision / recall data points that were calculated
truth_vs_query.vcf.gzAnnotated VCF according to https://github.com/ga4gh/benchmarking-tools/tree/master/doc/ref-impl
truth_vs_query.vcf.gz.tbiVCF Tabix Index
truth_vs_query.metrics.jsonJSON file containing all computed metrics and tables.
truth_vs_query.roc.Locations.INDEL.csvROC for ALL indels only.
truth_vs_query.roc.Locations.SNP.csvROC for ALL SNPs only.
truth_vs_query.roc.Locations.INDEL.PASS.csvROC for PASSing indels only.
truth_vs_query.roc.Locations.SNP.PASS.csvROC for PASSing SNPs only.
  • truth_vs_query.summary.csv 包含直接的统计结果,包含变异位点数,精确度,召回率,F1值等统计信息,可以直观的看到两者之间的差异。
  • truth_vs_query.extended.csv 是所有的统计信息,包含了truth_vs_query.summary.csv里面的信息,以及其他拓展信息。

truth_vs_query.summary.csv 的内容如下所示:

TypeFilterTRUTH.TOTALTRUTH.TPTRUTH.FNQUERY.TOTALQUERY.FPQUERY.UNKFP.gtMETRIC.RecallMETRIC.PrecisionMETRIC.Frac_NAMETRIC.F1_ScoreTRUTH.TOTAL.TiTv_ratioQUERY.TOTAL.TiTv_ratioTRUTH.TOTAL.het_hom_ratioQUERY.TOTAL.het_hom_ratio
INDELALL8728387035248882603870260.9971590.9956150.00.9963860.5279531996350.566134631214
INDELPASS8728387035248882603870260.9971590.9956150.00.9963860.5279531996350.566134631214
SNPALL458423457270115345898414900800.9974850.9967540.00.9971192.3225577472.3216576860.7445869797960.747571520577
SNPPASS458423457270115345898414900800.9974850.9967540.00.9971192.3225577472.3216576860.7445869797960.747571520577

相关字段说明如下:

ItemDescription
Type变异类型,可以是INDEL(插入/缺失)或SNP(单核苷酸多态性)
Filter变异过滤条件,例如“ALL”表示所有的变异,而“PASS”表示通过了过滤条件的变异
TRUTH.TOTAL真实变异的总数
TRUTH.TPtrue-positives (TP),工具正确检测到的真实变异数
TRUTH.FNfalse-negatives (FN),工具未能检测到的真实变异数(假阴性)
QUERY.TOTAL工具检测到的变异总数
QUERY.FPfalse-positives (FP),工具错误地将正常序列标记为变异(假阳性)的数量
QUERY.UNK工具未能对变异进行分类的数量
FP.gt在假阳性中,属于过滤等级错误的数量
METRIC.Recall召回率,即工具正确检测到的变异占所有真实变异的比例
METRIC.Precision精确度,即工具正确检测到的变异占所有检测到的变异的比例
METRIC.Frac_NA未分类变异占总变异数的比例
METRIC.F1_ScoreF1分数,综合考虑了召回率和精确度的一个指标
TRUTH.TOTAL.TiTv_ratio真实变异的转换/转换比例
QUERY.TOTAL.TiTv_ratio检测到的变异的转换/转换比例
TRUTH.TOTAL.het_hom_ratio真实变异的杂合/纯合比例
QUERY.TOTAL.het_hom_ratio检测到的变异的杂合/纯合比例

一般比较关注 召回率METRIC.Recall,即找到了多少真实变异)、精确度METRIC.Precision,即找到的变异中有多少是真实的)、F1分数METRIC.F1_Score,召回率和精确度的综合)

这几个指标的计算公式:

Recall = TRUTH.TP / (TRUTH.TP + TRUTH.FN)
Precision = QUERY.TP / (QUERY.TP + QUERY.FP)
Frac_NA = UNK/total(query)
F1_Score = 2 * Precision * Recall / (Precision + Recall)

Note

如果需要比较的是 gvcf 文件,则需要转成 vcf文件,gatk GenotypeGVCFs -R ref.fa -V sample.g.vcf.gz -O sample.vcf.gz

集群上使用

$ module load Singularity/3.7.3
$ singularity exec $IMAGE/hap.py.sif /opt/hap.py/bin/hap.py HW84_NDSW31815.t1.g.vcf.gz HW84_NDSW31815.t3.g.vcf.gz -r IRGSP-1.0_genome.fasta --engine=vcfeval --threads 36 -o t1_vs_t3

参考

变异检测准确性评估软件hap.py使用

https://github.com/ga4gh/benchmarking-tools

本文阅读量  次
本站总访问量  次