From bb55947e2ee9d670e676f8cb2f454476ceb6541e Mon Sep 17 00:00:00 2001 From: depristo Date: Thu, 26 Feb 2009 22:15:41 +0000 Subject: [PATCH] Better organization of AnalysisTK modules git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@6 348d0f76-0448-11de-a6fe-93d51630548a --- .../picard/filter/FilteringIterator.java | 2 +- src/edu/mit/broad/sting/atk/AnalysisTK.java | 25 +++++++----- ...rTest.java => BaseQualityHistoWalker.java} | 14 +++++-- .../sting/atk/modules/EmptyReadWalker.java | 38 +++++++++++++++++++ src/scripts/TraverseTest.sh | 2 +- src/scripts/TraverseTestProf.sh | 2 +- 6 files changed, 68 insertions(+), 15 deletions(-) rename src/edu/mit/broad/sting/atk/modules/{ReadWalkerTest.java => BaseQualityHistoWalker.java} (79%) create mode 100755 src/edu/mit/broad/sting/atk/modules/EmptyReadWalker.java diff --git a/lib/edu/mit/broad/picard/filter/FilteringIterator.java b/lib/edu/mit/broad/picard/filter/FilteringIterator.java index 375036394..ddb85b9d7 100644 --- a/lib/edu/mit/broad/picard/filter/FilteringIterator.java +++ b/lib/edu/mit/broad/picard/filter/FilteringIterator.java @@ -86,7 +86,7 @@ public class FilteringIterator implements CloseableIterator { while (iterator.hasNext()) { SAMRecord record = iterator.next(); if (!filter.filterOut(record)) { - return next; + return record; } } return null; diff --git a/src/edu/mit/broad/sting/atk/AnalysisTK.java b/src/edu/mit/broad/sting/atk/AnalysisTK.java index 4456d8eb7..858fb72dd 100644 --- a/src/edu/mit/broad/sting/atk/AnalysisTK.java +++ b/src/edu/mit/broad/sting/atk/AnalysisTK.java @@ -19,7 +19,7 @@ public class AnalysisTK extends CommandLineProgram { @Option(shortName="R", doc="Reference sequence file", optional=true) public File REF_FILE_ARG = null; @Option(shortName="B", doc="Debugging output", optional=true) public String DEBUGGING_STR = null; @Option(shortName="L", doc="Genome region to operation on: from chr:start-end", optional=true) public String REGION_STR = null; - @Option(shortName="T", doc="Type of analysis to run") public String AnalysisName = null; + @Option(shortName="T", doc="Type of analysis to run") public String Analysis_Name = null; public static HashMap MODULES = new HashMap(); public static void addModule(final String name, final Object walker) { @@ -28,13 +28,13 @@ public class AnalysisTK extends CommandLineProgram { } static { - addModule("EmptyLocusWalker", new EmptyLocusWalker()); - addModule("PileupWalker", new PileupWalker()); + addModule("Empty_Locus_Walker", new EmptyLocusWalker()); + addModule("Pileup", new PileupWalker()); + addModule("Empty_Read_Walker", new EmptyReadWalker()); + addModule("Base_Quality_Histogram", new BaseQualityHistoWalker()); } private TraversalEngine engine = null; - private int nSkippedIndels = 0; - public boolean DEBUGGING = false; /** Required main method implementation. */ @@ -45,7 +45,7 @@ public class AnalysisTK extends CommandLineProgram { protected int doWork() { this.engine = new TraversalEngine(INPUT_FILE, REF_FILE_ARG); - ValidationStringency strictness = ValidationStringency.STRICT; + ValidationStringency strictness; if ( STRICTNESS_ARG == null ) { strictness = ValidationStringency.STRICT; } @@ -64,10 +64,17 @@ public class AnalysisTK extends CommandLineProgram { engine.setDebugging(! ( DEBUGGING_STR == null || DEBUGGING_STR.toLowerCase().equals("true"))); engine.setMaxReads(Integer.parseInt(MAX_READS_ARG)); - //LocusWalker walker = new EmptyLocusWalker(); - LocusWalker walker = (LocusWalker)MODULES.get(AnalysisName); + //LocusWalker walker = new PileupWalker(); engine.initialize(); - engine.traverseByLoci(walker); + try { + LocusWalker walker = (LocusWalker)MODULES.get(Analysis_Name); + engine.traverseByLoci(walker); + } + catch ( java.lang.ClassCastException e ) { + // I guess we're a read walker LOL + ReadWalker walker = (ReadWalker)MODULES.get(Analysis_Name); + engine.traverseByRead(walker); + } return 0; } diff --git a/src/edu/mit/broad/sting/atk/modules/ReadWalkerTest.java b/src/edu/mit/broad/sting/atk/modules/BaseQualityHistoWalker.java similarity index 79% rename from src/edu/mit/broad/sting/atk/modules/ReadWalkerTest.java rename to src/edu/mit/broad/sting/atk/modules/BaseQualityHistoWalker.java index 75dd66182..6c8c8c982 100755 --- a/src/edu/mit/broad/sting/atk/modules/ReadWalkerTest.java +++ b/src/edu/mit/broad/sting/atk/modules/BaseQualityHistoWalker.java @@ -11,7 +11,7 @@ import edu.mit.broad.sting.atk.LocusContext; * Time: 3:22:14 PM * To change this template use File | Settings | File Templates. */ -public class ReadWalkerTest implements ReadWalker { +public class BaseQualityHistoWalker implements ReadWalker { long[] qualCounts = new long[100]; public void initialize() { @@ -44,8 +44,16 @@ public class ReadWalkerTest implements ReadWalker { } public void onTraveralDone() { - for ( int i = 0; i < this.qualCounts.length; i++ ) { + int lastNonZero = -1; + for ( int i = this.qualCounts.length-1; i >= 0; i-- ) { + if ( this.qualCounts[i] > 0 ) { + lastNonZero = i; + break; + } + } + + for ( int i = 0; i < lastNonZero+1; i++ ) { System.out.printf("%3d : %10d%n", i, this.qualCounts[i]); } } -} +} \ No newline at end of file diff --git a/src/edu/mit/broad/sting/atk/modules/EmptyReadWalker.java b/src/edu/mit/broad/sting/atk/modules/EmptyReadWalker.java new file mode 100755 index 000000000..a5d339982 --- /dev/null +++ b/src/edu/mit/broad/sting/atk/modules/EmptyReadWalker.java @@ -0,0 +1,38 @@ +package edu.mit.broad.sting.atk.modules; + +import edu.mit.broad.sam.SAMRecord; +import edu.mit.broad.sting.atk.ReadWalker; +import edu.mit.broad.sting.atk.LocusContext; + +/** + * Created by IntelliJ IDEA. + * User: mdepristo + * Date: Feb 22, 2009 + * Time: 3:22:14 PM + * To change this template use File | Settings | File Templates. + */ +public class EmptyReadWalker implements ReadWalker { + + public void initialize() { } + + public String walkerType() { return "ByRead"; } + + // Do we actually want to operate on the context? + public boolean filter(LocusContext context, SAMRecord read) { + return true; // We are keeping all the reads + } + + // Map over the edu.mit.broad.sting.atk.LocusContext + public Integer map(LocusContext context, SAMRecord read) { + return 1; + } + + // Given result of map function + public Integer reduceInit() { return 0; } + public Integer reduce(Integer value, Integer sum) { + return value + sum; + } + + public void onTraveralDone() { + } +} diff --git a/src/scripts/TraverseTest.sh b/src/scripts/TraverseTest.sh index 3238c4043..6dde72393 100755 --- a/src/scripts/TraverseTest.sh +++ b/src/scripts/TraverseTest.sh @@ -1 +1 @@ -java -cp out/production/AnalysisTK:../../jars/broad.jar edu.mit.broad.sting.atk.AnalysisTK $* +java -Xmx1024m -cp out/production/AnalysisTK:../../jars/broad.jar edu.mit.broad.sting.atk.AnalysisTK $* diff --git a/src/scripts/TraverseTestProf.sh b/src/scripts/TraverseTestProf.sh index ff10a50cd..91cf7fab5 100755 --- a/src/scripts/TraverseTestProf.sh +++ b/src/scripts/TraverseTestProf.sh @@ -1 +1 @@ -java -agentlib:hprof=cpu=samples -cp out/production/AnalysisTK:../../jars/broad.jar edu.mit.broad.sting.atk.AnalysisTK $* +java -Xmx1024m -agentlib:hprof=cpu=samples -cp out/production/AnalysisTK:../../jars/broad.jar edu.mit.broad.sting.atk.AnalysisTK $*