diff --git a/src/main/java/picard/vcf/GenotypeConcordance.java b/src/main/java/picard/vcf/GenotypeConcordance.java index 185fcce58..250e072cf 100644 --- a/src/main/java/picard/vcf/GenotypeConcordance.java +++ b/src/main/java/picard/vcf/GenotypeConcordance.java @@ -432,9 +432,18 @@ private void writeVcfTuple(final VcfTuple tuple, final VariantContextWriter writ final List truthAlleles = alleles.truthAlleles(); final List callAlleles = alleles.callAlleles(); + // Get the alleles present at this site for both samples to use for the output variant context. + final Set siteAlleles = new HashSet<>(); + if (truthContext != null) { + siteAlleles.addAll(truthContext.getAlleles()); + } + if (callContext != null) { + siteAlleles.addAll(callContext.getAlleles()); + } + // Initialize the variant context builder final VariantContext initialContext = (callContext == null) ? truthContext : callContext; - builder = new VariantContextBuilder(initialContext.getSource(), initialContext.getContig(), initialContext.getStart(), initialContext.getEnd(), Collections.emptyList()); + builder = new VariantContextBuilder(initialContext.getSource(), initialContext.getContig(), initialContext.getStart(), initialContext.getEnd(), siteAlleles); builder.computeEndFromAlleles(allAlleles, initialContext.getStart()); builder.log10PError(initialContext.getLog10PError()); @@ -443,7 +452,7 @@ private void writeVcfTuple(final VcfTuple tuple, final VariantContextWriter writ addToGenotypes(genotypes, callContext, CALL_SAMPLE, OUTPUT_VCF_CALL_SAMPLE_NAME, allAlleles, callAlleles, false); // set the alleles and genotypes - builder.alleles(alleles.allAlleles).genotypes(genotypes); + builder.genotypes(genotypes); // set the concordance state attribute final TruthAndCallStates state = GenotypeConcordance.determineState(truthContext, TRUTH_SAMPLE, callContext, CALL_SAMPLE, MIN_GQ, MIN_DP); diff --git a/src/test/java/picard/vcf/GenotypeConcordanceTest.java b/src/test/java/picard/vcf/GenotypeConcordanceTest.java index 5cc37731f..381377910 100644 --- a/src/test/java/picard/vcf/GenotypeConcordanceTest.java +++ b/src/test/java/picard/vcf/GenotypeConcordanceTest.java @@ -559,4 +559,17 @@ public void testNormalizeAllelesForIndels() { truthReader.close(); callReader.close(); } + + @Test + public void testNoCallVariants() { + final GenotypeConcordance genotypeConcordance = new GenotypeConcordance(); + genotypeConcordance.TRUTH_VCF = new File(TEST_DATA_PATH, "mini.vcf"); + genotypeConcordance.TRUTH_SAMPLE = "NA20801"; + genotypeConcordance.CALL_VCF = new File(TEST_DATA_PATH, "mini.vcf"); + genotypeConcordance.CALL_SAMPLE = "NA19920"; + genotypeConcordance.OUTPUT = new File(OUTPUT_DATA_PATH, "TwoNoCalls"); + genotypeConcordance.OUTPUT_VCF = true; + + Assert.assertEquals(genotypeConcordance.instanceMain(new String[0]), 0); + } }