package picard.vcf; import htsjdk.samtools.metrics.MetricBase; import htsjdk.variant.variantcontext.VariantContext; import picard.vcf.GenotypeConcordanceStates.*; import java.util.Map; /** * Class that holds metrics about the Genotype Concordance contingency tables. */ public class GenotypeConcordanceContingencyMetrics extends MetricBase { /** * Empty constructor - needed for unit tests */ public GenotypeConcordanceContingencyMetrics() { } public GenotypeConcordanceContingencyMetrics(final VariantContext.Type variantType, final GenotypeConcordanceCounts concordanceCounts, final String truthSample, final String callSample, final boolean missingSitesFlag) { this.VARIANT_TYPE = variantType; this.TRUTH_SAMPLE = truthSample; this.CALL_SAMPLE = callSample; final GenotypeConcordanceSchemeFactory schemeFactory = new GenotypeConcordanceSchemeFactory(); final GenotypeConcordanceScheme scheme = schemeFactory.getScheme(missingSitesFlag); scheme.validateScheme(); concordanceCounts.validateCountsAgainstScheme(scheme); Map<ContingencyState, Long> counts = concordanceCounts.getContingencyStateCounts(scheme); this.TP_COUNT = counts.get(ContingencyState.TP); this.TN_COUNT = counts.get(ContingencyState.TN); this.FP_COUNT = counts.get(ContingencyState.FP); this.FN_COUNT = counts.get(ContingencyState.FN); this.EMPTY_COUNT = counts.get(ContingencyState.EMPTY); } /** The type of the event (i.e. either SNP or INDEL) */ public VariantContext.Type VARIANT_TYPE; /** The name of the 'truth' sample */ public String TRUTH_SAMPLE; /** The name of the 'call' sample */ public String CALL_SAMPLE; /** The TP (true positive) count across all variants */ public long TP_COUNT; /** The TN (true negative) count across all variants */ public long TN_COUNT; /** The FP (false positive) count across all variants */ public long FP_COUNT; /** The FN (false negative) count across all variants */ public long FN_COUNT; /** The empty (no contingency info) count across all variants */ public long EMPTY_COUNT; }