diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java index 36e4db1c5..41fa755b8 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java @@ -138,7 +138,7 @@ public class IndelRealigner extends ReadWalker { * Any number of VCF files representing known indels to be used for constructing alternate consenses. * Could be e.g. dbSNP and/or official 1000 Genomes indel calls. Non-indel variants in these files will be ignored. */ - @Input(fullName="known", shortName = "known", doc="Input VCF file(s) with known indels", required=false) + @Input(fullName="knownAlleles", shortName = "known", doc="Input VCF file(s) with known indels", required=false) public List> known = Collections.emptyList(); /** diff --git a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreator.java b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreator.java index bede50a0b..56ce60449 100755 --- a/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreator.java +++ b/public/java/src/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreator.java @@ -50,6 +50,7 @@ import java.io.PrintStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.TreeSet; /** * Emits intervals for the Local Indel Realigner to target for realignment. @@ -103,7 +104,7 @@ import java.util.List; @Allows(value={DataSource.READS, DataSource.REFERENCE}) @By(DataSource.REFERENCE) @BAQMode(ApplicationTime = BAQ.ApplicationTime.FORBIDDEN) -public class RealignerTargetCreator extends RodWalker { +public class RealignerTargetCreator extends RodWalker implements TreeReducible { /** * The target intervals for realignment. @@ -251,43 +252,125 @@ public class RealignerTargetCreator extends RodWalker= right.loc.getStart(); + } + + @com.google.java.contract.Requires({"left != null", "right != null"}) + static private Event mergeEvents(Event left, Event right) { + left.merge(right); + return left; + } + private enum EVENT_TYPE { POINT_EVENT, INDEL_EVENT, BOTH } + class EventPair { + public Event left, right; + public TreeSet intervals = new TreeSet(); + + public EventPair(Event left, Event right) { + this.left = left; + this.right = right; + } + + public EventPair(Event left, Event right, TreeSet set1, TreeSet set2) { + this.left = left; + this.right = right; + intervals.addAll(set1); + intervals.addAll(set2); + } + } + class Event { public int furthestStopPos; - public GenomeLoc loc; - public int eventStartPos; + private GenomeLoc loc; + private int eventStartPos; private int eventStopPos; private EVENT_TYPE type; private ArrayList pointEvents = new ArrayList(); @@ -332,6 +415,10 @@ public class RealignerTargetCreator extends RodWalker= 0 && eventStopPos - eventStartPos < maxIntervalSize; } - public String toString() { - return String.format("%s:%d-%d", loc.getContig(), eventStartPos, eventStopPos); + public GenomeLoc getLoc() { + return getToolkit().getGenomeLocParser().createGenomeLoc(loc.getContig(), eventStartPos, eventStopPos); } } } \ No newline at end of file diff --git a/public/java/test/org/broadinstitute/sting/BaseTest.java b/public/java/test/org/broadinstitute/sting/BaseTest.java index 35a81770d..8e11add33 100755 --- a/public/java/test/org/broadinstitute/sting/BaseTest.java +++ b/public/java/test/org/broadinstitute/sting/BaseTest.java @@ -80,7 +80,8 @@ public abstract class BaseTest { public static final String networkTempDir = "/broad/shptmp/"; public static final File networkTempDirFile = new File(networkTempDir); - public static final String testDir = "public/testdata/"; + public static final File testDirFile = new File("public/testdata/"); + public static final String testDir = testDirFile.getAbsolutePath() + "/"; /** before the class starts up */ static { diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreatorIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreatorIntegrationTest.java index 1873ccbe2..78b24d646 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreatorIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/indels/RealignerTargetCreatorIntegrationTest.java @@ -8,20 +8,41 @@ import java.util.Arrays; public class RealignerTargetCreatorIntegrationTest extends WalkerTest { @Test - public void testIntervals() { + public void testIntervals1() { + String md5 = "3f0b63a393104d0c4158c7d1538153b8"; WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( "-T RealignerTargetCreator -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam --mismatchFraction 0.15 -L 1:10,000,000-10,050,000 -o %s", 1, - Arrays.asList("e7accfa58415d6da80383953b1a3a986")); - executeTest("test standard", spec1); + Arrays.asList(md5)); + executeTest("test standard nt=1", spec1); WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( - "-T RealignerTargetCreator --known " + b36dbSNP129 + " -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,050,000 -o %s", + "-nt 4 -T RealignerTargetCreator -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam --mismatchFraction 0.15 -L 1:10,000,000-10,050,000 -o %s", 1, - Arrays.asList("0367d39a122c8ac0899fb868a82ef728")); - executeTest("test dbsnp", spec2); + Arrays.asList(md5)); + executeTest("test standard nt=4", spec2); + } + @Test + public void testIntervals2() { + String md5 = "e0f745b79b679c225314a2abef4919ff"; + + WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( + "-T RealignerTargetCreator --known " + b36dbSNP129 + " -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,200,000 -o %s", + 1, + Arrays.asList(md5)); + executeTest("test with dbsnp nt=1", spec1); + + WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( + "-nt 4 -T RealignerTargetCreator --known " + b36dbSNP129 + " -R " + b36KGReference + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,200,000 -o %s", + 1, + Arrays.asList(md5)); + executeTest("test with dbsnp nt=4", spec2); + } + + @Test + public void testKnownsOnly() { WalkerTest.WalkerTestSpec spec3 = new WalkerTest.WalkerTestSpec( "-T RealignerTargetCreator -R " + b36KGReference + " --known " + validationDataLocation + "NA12878.chr1_10mb_11mb.slx.indels.vcf4 -BTI known -o %s", 1,