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
This commit is contained in:
parent
b2a18a9d61
commit
9b1d7921e8
|
|
@ -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<Integer, Integer> {
|
||||
@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, Integer> {
|
|||
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<Integer, Integer> {
|
|||
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<Integer, Integer> {
|
|||
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<Integer, Integer> {
|
|||
rightRun++;
|
||||
}
|
||||
|
||||
System.out.println(String.valueOf(bases) + ": " + leftRun + " / " + rightRun);
|
||||
//System.out.println(String.valueOf(bases) + ": " + leftRun + " / " + rightRun);
|
||||
return Math.max(leftRun, rightRun);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue