From 4eac3193f7d81b02075aabccdfc3e258646896d3 Mon Sep 17 00:00:00 2001 From: depristo Date: Fri, 3 Apr 2009 19:54:54 +0000 Subject: [PATCH] Added RefMetaDataTracker system as a replacement for the List going into walkers. This system allows you to more easily get a tracker for processing using the lookup(name, default) system. See Pileup for an example. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@292 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/refdata/RefMetaDataTracker.java | 54 +++++++++++++++++++ .../gatk/refdata/ReferenceOrderedData.java | 2 + .../gatk/traversals/TraversalEngine.java | 22 ++++---- .../sting/gatk/traversals/TraverseByLoci.java | 11 ++-- .../traversals/TraverseByLociByReference.java | 5 +- .../gatk/traversals/TraverseByReference.java | 5 +- .../sting/gatk/walkers/CountLociWalker.java | 3 +- .../gatk/walkers/DepthOfCoverageWalker.java | 3 +- .../sting/gatk/walkers/LocusWalker.java | 5 +- .../sting/gatk/walkers/NullWalker.java | 5 +- .../sting/gatk/walkers/PileupWalker.java | 21 ++++---- .../gatk/walkers/AlleleFrequencyWalker.java | 7 +-- .../gatk/walkers/CoverageBySample.java | 7 +-- .../gatk/walkers/PoolCallingExperiment.java | 3 +- .../gatk/walkers/PopPriorWalker.java | 7 +-- .../gatk/walkers/SingleSampleGenotyper.java | 7 +-- .../sting/playground/utils/AlleleMetrics.java | 5 +- 17 files changed, 118 insertions(+), 54 deletions(-) create mode 100644 java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java b/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java new file mode 100644 index 000000000..11ac91856 --- /dev/null +++ b/java/src/org/broadinstitute/sting/gatk/refdata/RefMetaDataTracker.java @@ -0,0 +1,54 @@ +package org.broadinstitute.sting.gatk.refdata; + +import org.apache.log4j.Logger; + +import java.util.HashMap; +import java.util.List; +import java.util.Collection; + +/** + * Created by IntelliJ IDEA. + * User: mdepristo + * Date: Apr 3, 2009 + * Time: 3:05:23 PM + * To change this template use File | Settings | File Templates. + */ +public class RefMetaDataTracker { + final HashMap map = new HashMap(); + protected static Logger logger = Logger.getLogger(RefMetaDataTracker.class); + + /** + * Finds the reference meta data named name, if it exists, otherwise returns the defaultValue + * + * @param name + * @param defaultValue + * @return + */ + public ReferenceOrderedDatum lookup(final String name, ReferenceOrderedDatum defaultValue) { + //logger.debug(String.format("Lookup %s%n", name)); + if ( map.containsKey(name) ) + return map.get(name); + else + return defaultValue; + } + + public Object lookup(final String name, Object defaultValue) { + if ( map.containsKey(name) ) + return map.get(name); + else + return defaultValue; + } + + public Object hasROD(final String name) { + return map.containsKey(name); + } + + public Collection getAllRods() { + return map.values(); + } + + public void bind(final String name, ReferenceOrderedDatum rod) { + //logger.debug(String.format("Binding %s to %s%n", name, rod)); + map.put(name, rod); + } +} diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/ReferenceOrderedData.java b/java/src/org/broadinstitute/sting/gatk/refdata/ReferenceOrderedData.java index 8c7587c46..154b59bf9 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/ReferenceOrderedData.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/ReferenceOrderedData.java @@ -35,6 +35,8 @@ public class ReferenceOrderedData implements this.name = name; } + public String getName() { return name; } + public RODIterator iterator() { return new RODIterator(new SimpleRODIterator()); } diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java index eb96da5b3..bac4159d9 100755 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java @@ -19,6 +19,7 @@ import org.apache.log4j.Logger; import org.broadinstitute.sting.gatk.iterators.*; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.walkers.Walker; @@ -33,7 +34,7 @@ public abstract class TraversalEngine { protected List> rods = null; // Iterator over rods - List.RODIterator> rodIters; + List.RODIterator>> rodIters; // How strict should we be with SAM/BAM parsing? protected ValidationStringency strictness = ValidationStringency.STRICT; @@ -411,13 +412,12 @@ public abstract class TraversalEngine { * * @return A list of ROD iterators for getting data from each ROD */ - protected List.RODIterator> initializeRODs() { + protected void initializeRODs() { // set up reference ordered data - rodIters = new ArrayList.RODIterator>(); + rodIters = new ArrayList.RODIterator>>(); for (ReferenceOrderedData data : rods) { - rodIters.add(data.iterator()); + rodIters.add(new Pair.RODIterator>(data.getName(), data.iterator())); } - return rodIters; } /** @@ -459,13 +459,13 @@ public abstract class TraversalEngine { * @param loc The location to get the rods at * @return A list of ReferenceOrderDatum at loc. ROD without a datum at loc will be null in the list */ - protected List getReferenceOrderedDataAtLocus(List.RODIterator> rodIters, - final GenomeLoc loc) { - List data = new ArrayList(); - for (ReferenceOrderedData.RODIterator iter : rodIters) { - data.add(iter.seekForward(loc)); + protected RefMetaDataTracker getReferenceOrderedDataAtLocus(final GenomeLoc loc) { + RefMetaDataTracker tracks = new RefMetaDataTracker(); + for (Pair.RODIterator> pair : rodIters) { + String name = pair.getFirst(); + tracks.bind(name, pair.getSecond().seekForward(loc)); } - return data; + return tracks; } // -------------------------------------------------------------------------------------------------------------- diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLoci.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLoci.java index 43702f45b..bbf4007e5 100644 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLoci.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLoci.java @@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.iterators.ReferenceIterator; import org.broadinstitute.sting.gatk.iterators.LocusIterator; import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; @@ -120,9 +121,9 @@ public class TraverseByLoci extends TraversalEngine { locus.setReferenceContig(refSite.getCurrentContig()); // Iterate forward to get all reference ordered data covering this locus - final List rodData = getReferenceOrderedDataAtLocus(rodIters, locus.getLocation()); + final RefMetaDataTracker tracker = getReferenceOrderedDataAtLocus(locus.getLocation()); - sum = walkAtLocus( walker, sum, locus, refSite, rodData ); + sum = walkAtLocus( walker, sum, locus, refSite, tracker ); //System.out.format("Working at %s\n", locus.getLocation().toString()); @@ -144,7 +145,7 @@ public class TraverseByLoci extends TraversalEngine { T sum, final LocusContext locus, final ReferenceIterator refSite, - final List rodData ) { + final RefMetaDataTracker tracker ) { final char refBase = refSite.getBaseAsChar(); //logger.debug(String.format(" Reference: %s:%d %c", refSite.getCurrentContig().getName(), refSite.getPosition(), refBase)); @@ -152,9 +153,9 @@ public class TraverseByLoci extends TraversalEngine { // // Execute our contract with the walker. Call filter, map, and reduce // - final boolean keepMeP = walker.filter(rodData, refBase, locus); + final boolean keepMeP = walker.filter(tracker, refBase, locus); if (keepMeP) { - M x = walker.map(rodData, refBase, locus); + M x = walker.map(tracker, refBase, locus); sum = walker.reduce(x, sum); } diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLociByReference.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLociByReference.java index dcd107957..d482a9861 100644 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLociByReference.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByLociByReference.java @@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.iterators.ReferenceIterator; import org.broadinstitute.sting.gatk.iterators.LocusIterator; import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; @@ -64,7 +65,7 @@ public class TraverseByLociByReference extends TraverseByLoci { GenomeLoc current = refSite.getLocation(); // Iterate forward to get all reference ordered data covering this locus - final List rodData = getReferenceOrderedDataAtLocus(rodIters, current); + final RefMetaDataTracker tracker = getReferenceOrderedDataAtLocus(current); LocusContext locus = null; @@ -79,7 +80,7 @@ public class TraverseByLociByReference extends TraverseByLoci { locus.setReferenceContig(refSite.getCurrentContig()); if ( DOWNSAMPLE_BY_COVERAGE ) locus.downsampleToCoverage(downsamplingCoverage); - sum = walkAtLocus( walker, sum, locus, refSite, rodData ); + sum = walkAtLocus( walker, sum, locus, refSite, tracker ); if (this.maxReads > 0 && this.nRecords > this.maxReads) { logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords)); diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByReference.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByReference.java index db9484fa6..99444b7fa 100644 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByReference.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraverseByReference.java @@ -4,6 +4,7 @@ import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.iterators.ReferenceIterator; import org.broadinstitute.sting.utils.GenomeLoc; @@ -90,11 +91,11 @@ public class TraverseByReference extends TraverseByLoci { GenomeLoc current = refSite.getLocation(); // Iterate forward to get all reference ordered data covering this locus - final List rodData = getReferenceOrderedDataAtLocus(rodIters, current); + final RefMetaDataTracker tracker = getReferenceOrderedDataAtLocus(current); LocusContext locus = new LocusContext(current, NO_READS, NO_OFFSETS); // make the empty locus that has no reads locus.setReferenceContig(refSite.getCurrentContig()); - sum = walkAtLocus( walker, sum, locus, refSite, rodData ); + sum = walkAtLocus( walker, sum, locus, refSite, tracker ); if (this.maxReads > 0 && this.nRecords > this.maxReads) { logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords)); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/CountLociWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/CountLociWalker.java index d5ed526af..fc491790f 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/CountLociWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/CountLociWalker.java @@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.walkers; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import java.util.List; @@ -13,7 +14,7 @@ import java.util.List; * To change this template use File | Settings | File Templates. */ public class CountLociWalker extends LocusWalker { - public Integer map(List rodData, char ref, LocusContext context) { + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { return 1; } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java index ce31044bc..2be4e6dc7 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/DepthOfCoverageWalker.java @@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.walkers; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.cmdLine.Argument; import org.broadinstitute.sting.utils.Pair; import java.util.List; @@ -17,7 +18,7 @@ public class DepthOfCoverageWalker extends LocusWalker @Argument(fullName="suppressLocusPrinting",required=false,defaultValue="false") public boolean suppressPrinting; - public Integer map(List rodData, char ref, LocusContext context) { + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { if ( !suppressPrinting ) out.printf("%s: %d%n", context.getLocation(), context.getReads().size() ); return context.getReads().size(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/LocusWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/LocusWalker.java index 895b5c476..42fee73df 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/LocusWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/LocusWalker.java @@ -1,6 +1,7 @@ package org.broadinstitute.sting.gatk.walkers; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.LocusContext; import java.util.List; @@ -14,7 +15,7 @@ import java.util.List; */ public abstract class LocusWalker extends Walker { // Do we actually want to operate on the context? - public boolean filter(List rodData, char ref, LocusContext context) { + public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) { return true; // We are keeping all the reads } @@ -26,7 +27,7 @@ public abstract class LocusWalker extends Walker rodData, char ref, LocusContext context); + public abstract MapType map(RefMetaDataTracker tracker, char ref, LocusContext context); // Given result of map function public abstract ReduceType reduceInit(); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/NullWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/NullWalker.java index 9f6a3afca..69ec4b2b7 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/NullWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/NullWalker.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.walkers; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import java.util.List; @@ -14,12 +15,12 @@ public class NullWalker extends LocusWalker { } // Do we actually want to operate on the context? - public boolean filter(List rodData, char ref, LocusContext context) { + public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) { return true; // We are keeping all the reads } // Map over the org.broadinstitute.sting.gatk.LocusContext - public Integer map(List rodData, char ref, LocusContext context) + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { return 1; } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java index 4cebc31d7..e5144e9cd 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/PileupWalker.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.walkers; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.cmdLine.Argument; import org.broadinstitute.sting.utils.Utils; import net.sf.samtools.SAMRecord; @@ -24,11 +25,11 @@ public class PileupWalker extends LocusWalker { } // Do we actually want to operate on the context? - public boolean filter(List rodData, char ref, LocusContext context) { + public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) { return true; // We are keeping all the reads } - public Integer map(List rodData, char ref, LocusContext context) { + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { List reads = context.getReads(); List offsets = context.getOffsets(); String bases = Utils.basePileupAsString(reads, offsets); @@ -39,17 +40,15 @@ public class PileupWalker extends LocusWalker { } String rodString = ""; - for ( ReferenceOrderedDatum datum : rodData ) { - if ( datum != null ) { - if ( datum instanceof rodDbSNP) { - rodDbSNP dbsnp = (rodDbSNP)datum; - rodString += dbsnp.toMediumString(); - } - else { - rodString += datum.toSimpleString(); - } + for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) { + if ( datum != null && ! (datum instanceof rodDbSNP)) { + rodString += datum.toSimpleString(); } } + rodDbSNP dbsnp = (rodDbSNP)tracker.lookup("dbSNP", null); + if ( dbsnp != null ) + rodString += dbsnp.toMediumString(); + if ( rodString != "" ) rodString = "[ROD: " + rodString + "]"; diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/AlleleFrequencyWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/AlleleFrequencyWalker.java index 0821a5d40..382e7f882 100755 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/AlleleFrequencyWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/AlleleFrequencyWalker.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate; import org.broadinstitute.sting.playground.utils.AlleleMetrics; @@ -32,7 +33,7 @@ public class AlleleFrequencyWalker extends LocusWalker rodData, char ref, LocusContext context) + public AlleleFrequencyEstimate map(RefMetaDataTracker tracker, char ref, LocusContext context) { // Convert context data into bases and 4-base quals String bases = getBases(context); @@ -103,7 +104,7 @@ public class AlleleFrequencyWalker extends LocusWalker %s%n", dbsnp.toSimpleString(), dbsnp.strand, Utils.join("/", dbsnp.getAllelesFWD())); @@ -114,7 +115,7 @@ public class AlleleFrequencyWalker extends LocusWalker result is %s", alleleFreq)); - if (LOG_METRICS) metrics.nextPosition(alleleFreq, rodData); + if (LOG_METRICS) metrics.nextPosition(alleleFreq, tracker); return alleleFreq; } diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/CoverageBySample.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/CoverageBySample.java index 5f03e80ab..5063c394f 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/CoverageBySample.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/CoverageBySample.java @@ -3,10 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers; import net.sf.samtools.*; import org.broadinstitute.sting.gatk.*; -import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; -import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; -import org.broadinstitute.sting.gatk.refdata.rodDbSNP; -import org.broadinstitute.sting.gatk.refdata.rodGFF; +import org.broadinstitute.sting.gatk.refdata.*; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; @@ -36,7 +33,7 @@ public class CoverageBySample extends LocusWalker } } - public String map(List rodData, char ref, LocusContext context) + public String map(RefMetaDataTracker tracker, char ref, LocusContext context) { String line = context.getLocation().getContig() + " " + context.getLocation().getStart() + " " ; for (int i = 0; i < sample_names.size(); i++) diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PoolCallingExperiment.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/PoolCallingExperiment.java index a20650d50..bb111e2a6 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PoolCallingExperiment.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/PoolCallingExperiment.java @@ -4,6 +4,7 @@ package org.broadinstitute.sting.playground.gatk.walkers; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; import org.broadinstitute.sting.gatk.refdata.rodGFF; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; @@ -20,7 +21,7 @@ public class PoolCallingExperiment extends LocusWalker rodData, char ref, LocusContext context) + public AlleleFrequencyEstimate map(RefMetaDataTracker tracker, char ref, LocusContext context) { for (int i = 0; i < context.getReads().size(); i++) { diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PopPriorWalker.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/PopPriorWalker.java index 28143090f..0824e8658 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/PopPriorWalker.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/PopPriorWalker.java @@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; import org.broadinstitute.sting.gatk.refdata.HapMapAlleleFrequenciesROD; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.cmdLine.Argument; import net.sf.samtools.SAMRecord; @@ -30,7 +31,7 @@ public class PopPriorWalker extends LocusWalker { public String walkerType() { return "ByLocus"; } // Do we actually want to operate on the context? - public boolean filter(List rodData, char ref, LocusContext context) { + public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) { return true; // We are keeping all the reads } @@ -95,7 +96,7 @@ public class PopPriorWalker extends LocusWalker { } // Map over the org.broadinstitute.sting.gatk.LocusContext - public Integer map(List rodData, char ref, LocusContext context) { + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { char upRef = Character.toUpperCase(ref); List reads = context.getReads(); List offsets = context.getOffsets(); @@ -106,7 +107,7 @@ public class PopPriorWalker extends LocusWalker { rodDbSNP dbsnpInfo = null; HapMapAlleleFrequenciesROD hapmap = null; - for ( ReferenceOrderedDatum datum : rodData ) + for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) { if ( datum != null ) { diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/SingleSampleGenotyper.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/SingleSampleGenotyper.java index 171b94c7d..2c4811f7d 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/SingleSampleGenotyper.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/SingleSampleGenotyper.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers; import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.utils.Utils; import net.sf.samtools.SAMRecord; @@ -13,7 +14,7 @@ import java.util.List; // j.maguire 3-7-2009 public class SingleSampleGenotyper extends LocusWalker { - public boolean filter(List rodData, char ref, LocusContext context) { + public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) { return true; // We are keeping all the reads } @@ -82,7 +83,7 @@ public class SingleSampleGenotyper extends LocusWalker { } // Map over the org.broadinstitute.sting.gatk.LocusContext - public Integer map(List rodData, char ref, LocusContext context) { + public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) { //System.out.printf("Reads %s:%d %d%n", context.getContig(), context.getPosition(), context.getReads().size()); //for ( SAMRecord read : context.getReads() ) { // System.out.println(" -> " + read.getReadName()); @@ -96,7 +97,7 @@ public class SingleSampleGenotyper extends LocusWalker { // Look up hapmap and dbsnp priors String rodString = ""; - for ( ReferenceOrderedDatum datum : rodData ) + for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) { if ( datum != null ) { diff --git a/java/src/org/broadinstitute/sting/playground/utils/AlleleMetrics.java b/java/src/org/broadinstitute/sting/playground/utils/AlleleMetrics.java index 31d33af32..8f026d1ad 100755 --- a/java/src/org/broadinstitute/sting/playground/utils/AlleleMetrics.java +++ b/java/src/org/broadinstitute/sting/playground/utils/AlleleMetrics.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.utils; import org.broadinstitute.sting.gatk.refdata.rodGFF; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.rodDbSNP; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; import java.util.List; @@ -44,14 +45,14 @@ public class AlleleMetrics { } } - public void nextPosition(AlleleFrequencyEstimate alleleFreq, List rodData) { + public void nextPosition(AlleleFrequencyEstimate alleleFreq, RefMetaDataTracker tracker) { num_loci_total += 1; boolean is_dbSNP_SNP = false; boolean has_hapmap_chip_genotype = false; rodGFF hapmap_chip_genotype = null; - for ( ReferenceOrderedDatum datum : rodData ) + for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) { if ( datum != null ) {