diff --git a/protected/gatk-tools-protected/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTableIntegrationTest.java b/protected/gatk-tools-protected/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTableIntegrationTest.java index 8d4474473..615b2d8d0 100644 --- a/protected/gatk-tools-protected/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTableIntegrationTest.java +++ b/protected/gatk-tools-protected/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTableIntegrationTest.java @@ -90,14 +90,14 @@ public class VariantsToTableIntegrationTest extends WalkerTest { @Test(enabled = true) public void testMultiAllelicOneRecord() { WalkerTestSpec spec = new WalkerTestSpec(variantsToTableMultiAllelicCmd(""), - Arrays.asList("0ff49c08690f61a38614606a090f23ea")); + Arrays.asList("b468589f4d2bf4c7d85a0584b77fc0fd")); executeTest("testMultiAllelicOneRecord", spec); } @Test(enabled = true) public void testMultiAllelicSplitRecords() { - WalkerTestSpec spec = new WalkerTestSpec(variantsToTableMultiAllelicCmd(" -SMA"), - Arrays.asList("17a0fc80409d2fc00ad2bbb94b3a346b")); + WalkerTestSpec spec = new WalkerTestSpec(variantsToTableMultiAllelicCmd(" -F TYPE -SMA"), + Arrays.asList("74b37874afff05d65cf7b0587b7168ec")); executeTest("testMultiAllelicSplitRecords", spec); } @@ -193,7 +193,7 @@ public class VariantsToTableIntegrationTest extends WalkerTest { " --moltenize -SMA" + " -o %s", 1, - Arrays.asList("c131e2c3cfb673c456cb160bda476101")); + Arrays.asList("84d103b54f6799424bf49c854831d059")); executeTest("testMoltenOutputWithMultipleAlleles", spec); } } diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTable.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTable.java index a2651ef29..ea1945e3c 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTable.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToTable.java @@ -295,6 +295,8 @@ public class VariantsToTable extends RodWalker { if ( splitMultiAllelic && field.equals("ALT") ) { // we need to special case the ALT field when splitting out multi-allelic records addFieldValue(splitAltAlleles(vc), records); + } else if (splitMultiAllelic && field.equals("TYPE")) { + addFieldValue(splitAlleleTypes(vc), records); } else if ( getters.containsKey(field) ) { addFieldValue(getters.get(field).get(vc), records); } else if ( vc.hasAttribute(field) ) { @@ -461,4 +463,23 @@ public class VariantsToTable extends RodWalker { return vc.getAlternateAlleles(); } + + private static Object splitAlleleTypes(VariantContext vc) { + final int numAltAlleles = vc.getAlternateAlleles().size(); + if (numAltAlleles == 1) + return vc.getType().toString(); + List altAlleles = vc.getAlternateAlleles(); + List alleleTypes = new ArrayList<>(numAltAlleles); + for (Allele allele : altAlleles) { + if (allele.length() == vc.getReference().length()) { + if ( allele.length() == 1 ) + alleleTypes.add("SNP"); + else + alleleTypes.add("MNP"); + } + else + alleleTypes.add("INDEL"); + } + return alleleTypes; + } }