diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java index 0a3d5415e..dff214e23 100755 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/VariantContext.java @@ -922,6 +922,7 @@ public class VariantContext implements Feature { // to enable tribble intergrati * @return number of hom var calls */ public int getHomVarCount() { + calculateGenotypeCounts(); return genotypeCounts[Genotype.Type.HOM_VAR.ordinal()]; } @@ -931,6 +932,7 @@ public class VariantContext implements Feature { // to enable tribble intergrati * @return number of mixed calls */ public int getMixedCount() { + calculateGenotypeCounts(); return genotypeCounts[Genotype.Type.MIXED.ordinal()]; } diff --git a/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextUnitTest.java index 318c2ce50..0a7427df7 100755 --- a/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/variantcontext/VariantContextUnitTest.java @@ -468,6 +468,28 @@ public class VariantContextUnitTest extends BaseTest { } @Test + public void testGetGenotypeCounts() { + List alleles = Arrays.asList(Aref, T); + Genotype g1 = new Genotype("AA", Arrays.asList(Aref, Aref)); + Genotype g2 = new Genotype("AT", Arrays.asList(Aref, T)); + Genotype g3 = new Genotype("TT", Arrays.asList(T, T)); + Genotype g4 = new Genotype("A.", Arrays.asList(Aref, Allele.NO_CALL)); + Genotype g5 = new Genotype("..", Arrays.asList(Allele.NO_CALL, Allele.NO_CALL)); + + // we need to create a new VariantContext each time + VariantContext vc = new VariantContextBuilder("foo", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1,g2,g3,g4,g5).make(); + Assert.assertEquals(1, vc.getHetCount()); + vc = new VariantContextBuilder("foo", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1,g2,g3,g4,g5).make(); + Assert.assertEquals(1, vc.getHomRefCount()); + vc = new VariantContextBuilder("foo", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1,g2,g3,g4,g5).make(); + Assert.assertEquals(1, vc.getHomVarCount()); + vc = new VariantContextBuilder("foo", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1,g2,g3,g4,g5).make(); + Assert.assertEquals(1, vc.getMixedCount()); + vc = new VariantContextBuilder("foo", snpLoc, snpLocStart, snpLocStop, alleles).genotypes(g1,g2,g3,g4,g5).make(); + Assert.assertEquals(1, vc.getNoCallCount()); + } + + @Test public void testVCFfromGenotypes() { List alleles = Arrays.asList(Aref, T, del); Genotype g1 = new Genotype("AA", Arrays.asList(Aref, Aref));