From 9b1d7921e871b58f1f28ae0d957145603a1b93de Mon Sep 17 00:00:00 2001 From: ebanks Date: Tue, 18 Aug 2009 15:16:30 +0000 Subject: [PATCH] added filter based on concordance to another call set git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1432 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/indels/IndelFilterWalker.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IndelFilterWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IndelFilterWalker.java index 6ec1bbdaa..1873c8cb2 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IndelFilterWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/indels/IndelFilterWalker.java @@ -10,7 +10,8 @@ import org.broadinstitute.sting.utils.cmdLine.Argument; /** * filter an indel callset based on given criteria */ -@Requires(value={DataSource.REFERENCE},referenceMetaData={@RMD(name="indels",type=AllelicVariant.class)}) +@Requires(value={DataSource.REFERENCE},referenceMetaData={@RMD(name="calls",type=AllelicVariant.class)}) +@Allows(value={DataSource.REFERENCE},referenceMetaData={@RMD(name="calls",type=AllelicVariant.class),@RMD(name="otherindels",type=AllelicVariant.class)}) @Reference(window=@Window(start=-20,stop=20)) public class IndelFilterWalker extends RefWalker { @Argument(fullName="homopolymerRunMax", shortName="homopolMax", doc="filter indels within homopolymer runs greater than the given length (max 20)", required=false) @@ -21,6 +22,10 @@ public class IndelFilterWalker extends RefWalker { Integer SIZE_MAX = 100; @Argument(fullName="sizeMin", shortName="sizeMin", doc="filter indels less than a certain size", required=false) Integer SIZE_MIN = 0; + @Argument(fullName="inOtherSet", shortName="inSet", doc="filter indels that DO NOT occur in the provided 2nd set", required=false) + Boolean IN_OTHER_SET = false; + @Argument(fullName="notInOtherSet", shortName="notInSet", doc="filter indels that DO occur in the provided 2nd set", required=false) + Boolean NOT_IN_OTHER_SET = false; public void initialize() { if ( HOMOPOLYMER_MAX > 20 ) @@ -30,7 +35,7 @@ public class IndelFilterWalker extends RefWalker { public Integer reduceInit() { return 0; } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { - AllelicVariant indel = (AllelicVariant)tracker.lookup("indels", null); + AllelicVariant indel = (AllelicVariant)tracker.lookup("calls", null); if ( indel == null || !indel.isIndel() ) return 0; @@ -42,6 +47,10 @@ public class IndelFilterWalker extends RefWalker { if ( homopol < HOMOPOLYMER_MIN || homopol > HOMOPOLYMER_MAX ) return 0; + AllelicVariant other = (AllelicVariant)tracker.lookup("otherIndels", null); + if ( (IN_OTHER_SET && other == null) || (NOT_IN_OTHER_SET && other != null) ) + return 0; + out.println(indel); return 1; } @@ -76,7 +85,7 @@ public class IndelFilterWalker extends RefWalker { rightRun++; } - System.out.println(String.valueOf(bases) + ": " + leftRun + " / " + rightRun); + //System.out.println(String.valueOf(bases) + ": " + leftRun + " / " + rightRun); return Math.max(leftRun, rightRun); } } \ No newline at end of file