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.vcf
和query.vcf
为待比较的2个vcf文件;-r ref.fa
用于指定使用的参考序列;-f chr1.bed
指定需要比较的区间,即只有该bed区间内的位点用于比较;--threads 5
指定线程;-o truth_vs_query
指定输出文件前缀;
结果文件
Output File | Contents |
---|---|
truth_vs_query.summary.csv | Summary statistics |
truth_vs_query.extended.csv | Extended statistics |
truth_vs_query.roc.all.csv | All precision / recall data points that were calculated |
truth_vs_query.vcf.gz | Annotated VCF according to https://github.com/ga4gh/benchmarking-tools/tree/master/doc/ref-impl |
truth_vs_query.vcf.gz.tbi | VCF Tabix Index |
truth_vs_query.metrics.json | JSON file containing all computed metrics and tables. |
truth_vs_query.roc.Locations.INDEL.csv | ROC for ALL indels only. |
truth_vs_query.roc.Locations.SNP.csv | ROC for ALL SNPs only. |
truth_vs_query.roc.Locations.INDEL.PASS.csv | ROC for PASSing indels only. |
truth_vs_query.roc.Locations.SNP.PASS.csv | ROC 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
的内容如下所示:
Type | Filter | TRUTH.TOTAL | TRUTH.TP | TRUTH.FN | QUERY.TOTAL | QUERY.FP | QUERY.UNK | FP.gt | METRIC.Recall | METRIC.Precision | METRIC.Frac_NA | METRIC.F1_Score | TRUTH.TOTAL.TiTv_ratio | QUERY.TOTAL.TiTv_ratio | TRUTH.TOTAL.het_hom_ratio | QUERY.TOTAL.het_hom_ratio |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
INDEL | ALL | 87283 | 87035 | 248 | 88260 | 387 | 0 | 26 | 0.997159 | 0.995615 | 0.0 | 0.996386 | 0.527953199635 | 0.566134631214 | ||
INDEL | PASS | 87283 | 87035 | 248 | 88260 | 387 | 0 | 26 | 0.997159 | 0.995615 | 0.0 | 0.996386 | 0.527953199635 | 0.566134631214 | ||
SNP | ALL | 458423 | 457270 | 1153 | 458984 | 1490 | 0 | 80 | 0.997485 | 0.996754 | 0.0 | 0.997119 | 2.322557747 | 2.321657686 | 0.744586979796 | 0.747571520577 |
SNP | PASS | 458423 | 457270 | 1153 | 458984 | 1490 | 0 | 80 | 0.997485 | 0.996754 | 0.0 | 0.997119 | 2.322557747 | 2.321657686 | 0.744586979796 | 0.747571520577 |
相关字段说明如下:
Item | Description |
---|---|
Type | 变异类型,可以是INDEL(插入/缺失)或SNP(单核苷酸多态性) |
Filter | 变异过滤条件,例如“ALL”表示所有的变异,而“PASS”表示通过了过滤条件的变异 |
TRUTH.TOTAL | 真实变异的总数 |
TRUTH.TP | true-positives (TP),工具正确检测到的真实变异数 |
TRUTH.FN | false-negatives (FN),工具未能检测到的真实变异数(假阴性) |
QUERY.TOTAL | 工具检测到的变异总数 |
QUERY.FP | false-positives (FP),工具错误地将正常序列标记为变异(假阳性)的数量 |
QUERY.UNK | 工具未能对变异进行分类的数量 |
FP.gt | 在假阳性中,属于过滤等级错误的数量 |
METRIC.Recall | 召回率,即工具正确检测到的变异占所有真实变异的比例 |
METRIC.Precision | 精确度,即工具正确检测到的变异占所有检测到的变异的比例 |
METRIC.Frac_NA | 未分类变异占总变异数的比例 |
METRIC.F1_Score | F1分数,综合考虑了召回率和精确度的一个指标 |
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
参考¶
https://github.com/ga4gh/benchmarking-tools
本文阅读量 次本站总访问量 次