Allow VariantsToTable to evaluate the type of each split variant when -F TYPE and -SMA are specified

This commit is contained in:
Laura Gauthier 2015-12-10 10:17:41 -05:00
parent 7f7ba446c0
commit 593c9ddf01
2 changed files with 25 additions and 4 deletions

View File

@ -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);
}
}

View File

@ -295,6 +295,8 @@ public class VariantsToTable extends RodWalker<Integer, Integer> {
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<Integer, Integer> {
return vc.getAlternateAlleles();
}
private static Object splitAlleleTypes(VariantContext vc) {
final int numAltAlleles = vc.getAlternateAlleles().size();
if (numAltAlleles == 1)
return vc.getType().toString();
List<Allele> altAlleles = vc.getAlternateAlleles();
List<String> 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;
}
}