Fixed bug in PhaseByTransmission where it was completely dropping multi-allelic records.
Added test to make sure this is no longer happening.
This commit is contained in:
parent
cdfd07f9eb
commit
d4dc5ba04a
|
|
@ -56,7 +56,6 @@ import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||||
import org.broadinstitute.sting.gatk.samples.Sample;
|
import org.broadinstitute.sting.gatk.samples.Sample;
|
||||||
import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
||||||
import org.broadinstitute.sting.utils.MathUtils;
|
|
||||||
import org.broadinstitute.sting.utils.QualityUtils;
|
import org.broadinstitute.sting.utils.QualityUtils;
|
||||||
import org.broadinstitute.sting.utils.SampleUtils;
|
import org.broadinstitute.sting.utils.SampleUtils;
|
||||||
import org.broadinstitute.sting.utils.help.HelpConstants;
|
import org.broadinstitute.sting.utils.help.HelpConstants;
|
||||||
|
|
@ -830,9 +829,14 @@ public class PhaseByTransmission extends RodWalker<HashMap<Byte,Integer>, HashMa
|
||||||
return metricsCounters;
|
return metricsCounters;
|
||||||
|
|
||||||
final VariantContext vc = tracker.getFirstValue(variantCollection.variants, context.getLocation());
|
final VariantContext vc = tracker.getFirstValue(variantCollection.variants, context.getLocation());
|
||||||
if (vc == null || !vc.isBiallelic())
|
if ( vc == null )
|
||||||
return metricsCounters;
|
return metricsCounters;
|
||||||
|
|
||||||
|
if ( !vc.isBiallelic() ) {
|
||||||
|
vcfWriter.add(vc);
|
||||||
|
return metricsCounters;
|
||||||
|
}
|
||||||
|
|
||||||
final VariantContextBuilder builder = new VariantContextBuilder(vc);
|
final VariantContextBuilder builder = new VariantContextBuilder(vc);
|
||||||
|
|
||||||
final GenotypesContext genotypesContext = GenotypesContext.copy(vc.getGenotypes());
|
final GenotypesContext genotypesContext = GenotypesContext.copy(vc.getGenotypes());
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,16 @@
|
||||||
|
|
||||||
package org.broadinstitute.sting.gatk.walkers.phasing;
|
package org.broadinstitute.sting.gatk.walkers.phasing;
|
||||||
|
|
||||||
|
import org.broad.tribble.readers.LineIterator;
|
||||||
|
import org.broad.tribble.readers.PositionalBufferedStream;
|
||||||
import org.broadinstitute.sting.WalkerTest;
|
import org.broadinstitute.sting.WalkerTest;
|
||||||
|
import org.broadinstitute.variant.vcf.VCFCodec;
|
||||||
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class PhaseByTransmissionIntegrationTest extends WalkerTest {
|
public class PhaseByTransmissionIntegrationTest extends WalkerTest {
|
||||||
|
|
@ -57,6 +64,7 @@ public class PhaseByTransmissionIntegrationTest extends WalkerTest {
|
||||||
private static String TNTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.TN.vcf";
|
private static String TNTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.TN.vcf";
|
||||||
private static String TPTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.TP.vcf";
|
private static String TPTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.TP.vcf";
|
||||||
private static String FPTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.FP.vcf";
|
private static String FPTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.FP.vcf";
|
||||||
|
private static String MultiAllelicsTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.multiAllelics.vcf";
|
||||||
private static String SpecialTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.Special.vcf";
|
private static String SpecialTest = phaseByTransmissionTestDataRoot + "PhaseByTransmission.IntegrationTest.Special.vcf";
|
||||||
|
|
||||||
//Tests using PbT on all genotypes with default parameters
|
//Tests using PbT on all genotypes with default parameters
|
||||||
|
|
@ -200,4 +208,44 @@ public class PhaseByTransmissionIntegrationTest extends WalkerTest {
|
||||||
executeTest("testFatherAlleleFirst", spec);
|
executeTest("testFatherAlleleFirst", spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testMultiAllelics() throws IOException {
|
||||||
|
WalkerTestSpec spec = new WalkerTestSpec(
|
||||||
|
buildCommandLine(
|
||||||
|
"-T PhaseByTransmission",
|
||||||
|
"--no_cmdline_in_header",
|
||||||
|
"-R " + b37KGReference,
|
||||||
|
"--variant " + MultiAllelicsTest,
|
||||||
|
"-ped "+ goodFamilyFile,
|
||||||
|
"-L 1:10109-10315",
|
||||||
|
"-o %s"
|
||||||
|
),
|
||||||
|
1,
|
||||||
|
Arrays.asList("") // don't care about the md5, just testing that records aren't being dropped
|
||||||
|
);
|
||||||
|
|
||||||
|
final File outputVCF = executeTest("testMultiAllelics", spec).getFirst().get(0);
|
||||||
|
|
||||||
|
final VCFCodec codec = new VCFCodec();
|
||||||
|
final FileInputStream originalStream = new FileInputStream(MultiAllelicsTest);
|
||||||
|
final LineIterator originalLineIterator = codec.makeSourceFromStream(new PositionalBufferedStream(originalStream));
|
||||||
|
codec.readHeader(originalLineIterator);
|
||||||
|
int numOriginalRecords = 0;
|
||||||
|
while ( originalLineIterator.hasNext() ) {
|
||||||
|
originalLineIterator.next();
|
||||||
|
numOriginalRecords++;
|
||||||
|
}
|
||||||
|
|
||||||
|
final FileInputStream newStream = new FileInputStream(outputVCF);
|
||||||
|
final LineIterator newLineIterator = codec.makeSourceFromStream(new PositionalBufferedStream(newStream));
|
||||||
|
codec.readHeader(newLineIterator);
|
||||||
|
int numNewRecords = 0;
|
||||||
|
while ( newLineIterator.hasNext() ) {
|
||||||
|
newLineIterator.next();
|
||||||
|
numNewRecords++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.assertTrue(numOriginalRecords > 0);
|
||||||
|
Assert.assertEquals(numNewRecords, numOriginalRecords);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue