Added RefMetaDataTracker system as a replacement for the List<RefenenceOrderedData> 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
This commit is contained in:
depristo 2009-04-03 19:54:54 +00:00
parent c1abcfb014
commit 4eac3193f7
17 changed files with 118 additions and 54 deletions

View File

@ -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<String, ReferenceOrderedDatum> map = new HashMap<String, ReferenceOrderedDatum>();
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<ReferenceOrderedDatum> 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);
}
}

View File

@ -35,6 +35,8 @@ public class ReferenceOrderedData<ROD extends ReferenceOrderedDatum> implements
this.name = name; this.name = name;
} }
public String getName() { return name; }
public RODIterator iterator() { public RODIterator iterator() {
return new RODIterator(new SimpleRODIterator()); return new RODIterator(new SimpleRODIterator());
} }

View File

@ -19,6 +19,7 @@ import org.apache.log4j.Logger;
import org.broadinstitute.sting.gatk.iterators.*; import org.broadinstitute.sting.gatk.iterators.*;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; 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.LocusWalker;
import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.walkers.ReadWalker;
import org.broadinstitute.sting.gatk.walkers.Walker; import org.broadinstitute.sting.gatk.walkers.Walker;
@ -33,7 +34,7 @@ public abstract class TraversalEngine {
protected List<ReferenceOrderedData<? extends ReferenceOrderedDatum>> rods = null; protected List<ReferenceOrderedData<? extends ReferenceOrderedDatum>> rods = null;
// Iterator over rods // Iterator over rods
List<ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator> rodIters; List<Pair<String, ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator>> rodIters;
// How strict should we be with SAM/BAM parsing? // How strict should we be with SAM/BAM parsing?
protected ValidationStringency strictness = ValidationStringency.STRICT; 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 * @return A list of ROD iterators for getting data from each ROD
*/ */
protected List<ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator> initializeRODs() { protected void initializeRODs() {
// set up reference ordered data // set up reference ordered data
rodIters = new ArrayList<ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator>(); rodIters = new ArrayList<Pair<String, ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator>>();
for (ReferenceOrderedData<? extends ReferenceOrderedDatum> data : rods) { for (ReferenceOrderedData<? extends ReferenceOrderedDatum> data : rods) {
rodIters.add(data.iterator()); rodIters.add(new Pair<String, ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator>(data.getName(), data.iterator()));
} }
return rodIters;
} }
/** /**
@ -459,13 +459,13 @@ public abstract class TraversalEngine {
* @param loc The location to get the rods at * @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 * @return A list of ReferenceOrderDatum at loc. ROD without a datum at loc will be null in the list
*/ */
protected List<ReferenceOrderedDatum> getReferenceOrderedDataAtLocus(List<ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator> rodIters, protected RefMetaDataTracker getReferenceOrderedDataAtLocus(final GenomeLoc loc) {
final GenomeLoc loc) { RefMetaDataTracker tracks = new RefMetaDataTracker();
List<ReferenceOrderedDatum> data = new ArrayList<ReferenceOrderedDatum>(); for (Pair<String, ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator> pair : rodIters) {
for (ReferenceOrderedData<? extends ReferenceOrderedDatum>.RODIterator iter : rodIters) { String name = pair.getFirst();
data.add(iter.seekForward(loc)); tracks.bind(name, pair.getSecond().seekForward(loc));
} }
return data; return tracks;
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------

View File

@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.Walker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; 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.ReferenceIterator;
import org.broadinstitute.sting.gatk.iterators.LocusIterator; import org.broadinstitute.sting.gatk.iterators.LocusIterator;
import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger;
@ -120,9 +121,9 @@ public class TraverseByLoci extends TraversalEngine {
locus.setReferenceContig(refSite.getCurrentContig()); locus.setReferenceContig(refSite.getCurrentContig());
// Iterate forward to get all reference ordered data covering this locus // Iterate forward to get all reference ordered data covering this locus
final List<ReferenceOrderedDatum> 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()); //System.out.format("Working at %s\n", locus.getLocation().toString());
@ -144,7 +145,7 @@ public class TraverseByLoci extends TraversalEngine {
T sum, T sum,
final LocusContext locus, final LocusContext locus,
final ReferenceIterator refSite, final ReferenceIterator refSite,
final List<ReferenceOrderedDatum> rodData ) { final RefMetaDataTracker tracker ) {
final char refBase = refSite.getBaseAsChar(); final char refBase = refSite.getBaseAsChar();
//logger.debug(String.format(" Reference: %s:%d %c", refSite.getCurrentContig().getName(), refSite.getPosition(), refBase)); //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 // 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) { if (keepMeP) {
M x = walker.map(rodData, refBase, locus); M x = walker.map(tracker, refBase, locus);
sum = walker.reduce(x, sum); sum = walker.reduce(x, sum);
} }

View File

@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.Walker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; 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.ReferenceIterator;
import org.broadinstitute.sting.gatk.iterators.LocusIterator; import org.broadinstitute.sting.gatk.iterators.LocusIterator;
import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger; import org.broadinstitute.sting.gatk.iterators.LocusIteratorByHanger;
@ -64,7 +65,7 @@ public class TraverseByLociByReference extends TraverseByLoci {
GenomeLoc current = refSite.getLocation(); GenomeLoc current = refSite.getLocation();
// Iterate forward to get all reference ordered data covering this locus // Iterate forward to get all reference ordered data covering this locus
final List<ReferenceOrderedDatum> rodData = getReferenceOrderedDataAtLocus(rodIters, current); final RefMetaDataTracker tracker = getReferenceOrderedDataAtLocus(current);
LocusContext locus = null; LocusContext locus = null;
@ -79,7 +80,7 @@ public class TraverseByLociByReference extends TraverseByLoci {
locus.setReferenceContig(refSite.getCurrentContig()); locus.setReferenceContig(refSite.getCurrentContig());
if ( DOWNSAMPLE_BY_COVERAGE ) if ( DOWNSAMPLE_BY_COVERAGE )
locus.downsampleToCoverage(downsamplingCoverage); 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) { if (this.maxReads > 0 && this.nRecords > this.maxReads) {
logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords)); logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords));

View File

@ -4,6 +4,7 @@ import org.broadinstitute.sting.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; 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.ReferenceIterator;
import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLoc;
@ -90,11 +91,11 @@ public class TraverseByReference extends TraverseByLoci {
GenomeLoc current = refSite.getLocation(); GenomeLoc current = refSite.getLocation();
// Iterate forward to get all reference ordered data covering this locus // Iterate forward to get all reference ordered data covering this locus
final List<ReferenceOrderedDatum> 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 LocusContext locus = new LocusContext(current, NO_READS, NO_OFFSETS); // make the empty locus that has no reads
locus.setReferenceContig(refSite.getCurrentContig()); 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) { if (this.maxReads > 0 && this.nRecords > this.maxReads) {
logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords)); logger.warn(String.format("Maximum number of reads encountered, terminating traversal " + this.nRecords));

View File

@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.walkers;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import java.util.List; import java.util.List;
@ -13,7 +14,7 @@ import java.util.List;
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
public class CountLociWalker extends LocusWalker<Integer, Integer> { public class CountLociWalker extends LocusWalker<Integer, Integer> {
public Integer map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
return 1; return 1;
} }

View File

@ -2,6 +2,7 @@ package org.broadinstitute.sting.gatk.walkers;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; 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.cmdLine.Argument;
import org.broadinstitute.sting.utils.Pair; import org.broadinstitute.sting.utils.Pair;
import java.util.List; import java.util.List;
@ -17,7 +18,7 @@ public class DepthOfCoverageWalker extends LocusWalker<Integer, Pair<Long, Long>
@Argument(fullName="suppressLocusPrinting",required=false,defaultValue="false") @Argument(fullName="suppressLocusPrinting",required=false,defaultValue="false")
public boolean suppressPrinting; public boolean suppressPrinting;
public Integer map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
if ( !suppressPrinting ) if ( !suppressPrinting )
out.printf("%s: %d%n", context.getLocation(), context.getReads().size() ); out.printf("%s: %d%n", context.getLocation(), context.getReads().size() );
return context.getReads().size(); return context.getReads().size();

View File

@ -1,6 +1,7 @@
package org.broadinstitute.sting.gatk.walkers; package org.broadinstitute.sting.gatk.walkers;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import java.util.List; import java.util.List;
@ -14,7 +15,7 @@ import java.util.List;
*/ */
public abstract class LocusWalker<MapType, ReduceType> extends Walker<MapType, ReduceType> { public abstract class LocusWalker<MapType, ReduceType> extends Walker<MapType, ReduceType> {
// Do we actually want to operate on the context? // Do we actually want to operate on the context?
public boolean filter(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) {
return true; // We are keeping all the reads return true; // We are keeping all the reads
} }
@ -26,7 +27,7 @@ public abstract class LocusWalker<MapType, ReduceType> extends Walker<MapType, R
public boolean cannotHandleReads() { return false; } public boolean cannotHandleReads() { return false; }
// Map over the org.broadinstitute.sting.gatk.LocusContext // Map over the org.broadinstitute.sting.gatk.LocusContext
public abstract MapType map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context); public abstract MapType map(RefMetaDataTracker tracker, char ref, LocusContext context);
// Given result of map function // Given result of map function
public abstract ReduceType reduceInit(); public abstract ReduceType reduceInit();

View File

@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.walkers;
import org.broadinstitute.sting.gatk.walkers.LocusWalker; import org.broadinstitute.sting.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import java.util.List; import java.util.List;
@ -14,12 +15,12 @@ public class NullWalker extends LocusWalker<Integer, Integer> {
} }
// Do we actually want to operate on the context? // Do we actually want to operate on the context?
public boolean filter(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) {
return true; // We are keeping all the reads return true; // We are keeping all the reads
} }
// Map over the org.broadinstitute.sting.gatk.LocusContext // Map over the org.broadinstitute.sting.gatk.LocusContext
public Integer map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context)
{ {
return 1; return 1;
} }

View File

@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.walkers;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; 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.cmdLine.Argument;
import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.Utils;
import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMRecord;
@ -24,11 +25,11 @@ public class PileupWalker extends LocusWalker<Integer, Integer> {
} }
// Do we actually want to operate on the context? // Do we actually want to operate on the context?
public boolean filter(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) {
return true; // We are keeping all the reads return true; // We are keeping all the reads
} }
public Integer map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
List<SAMRecord> reads = context.getReads(); List<SAMRecord> reads = context.getReads();
List<Integer> offsets = context.getOffsets(); List<Integer> offsets = context.getOffsets();
String bases = Utils.basePileupAsString(reads, offsets); String bases = Utils.basePileupAsString(reads, offsets);
@ -39,17 +40,15 @@ public class PileupWalker extends LocusWalker<Integer, Integer> {
} }
String rodString = ""; String rodString = "";
for ( ReferenceOrderedDatum datum : rodData ) { for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) {
if ( datum != null ) { if ( datum != null && ! (datum instanceof rodDbSNP)) {
if ( datum instanceof rodDbSNP) {
rodDbSNP dbsnp = (rodDbSNP)datum;
rodString += dbsnp.toMediumString();
}
else {
rodString += datum.toSimpleString(); rodString += datum.toSimpleString();
} }
} }
} rodDbSNP dbsnp = (rodDbSNP)tracker.lookup("dbSNP", null);
if ( dbsnp != null )
rodString += dbsnp.toMediumString();
if ( rodString != "" ) if ( rodString != "" )
rodString = "[ROD: " + rodString + "]"; rodString = "[ROD: " + rodString + "]";

View File

@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; 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.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate; import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate;
import org.broadinstitute.sting.playground.utils.AlleleMetrics; import org.broadinstitute.sting.playground.utils.AlleleMetrics;
@ -32,7 +33,7 @@ public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate,
public boolean requiresReads() { return true; } public boolean requiresReads() { return true; }
public AlleleFrequencyEstimate map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) public AlleleFrequencyEstimate map(RefMetaDataTracker tracker, char ref, LocusContext context)
{ {
// Convert context data into bases and 4-base quals // Convert context data into bases and 4-base quals
String bases = getBases(context); String bases = getBases(context);
@ -103,7 +104,7 @@ public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate,
// Print dbSNP data if its there // Print dbSNP data if its there
if (true) { if (true) {
for ( ReferenceOrderedDatum datum : rodData ) { for ( ReferenceOrderedDatum datum : tracker.getAllRods() ) {
if ( datum != null && datum instanceof rodDbSNP) { if ( datum != null && datum instanceof rodDbSNP) {
rodDbSNP dbsnp = (rodDbSNP)datum; rodDbSNP dbsnp = (rodDbSNP)datum;
//System.out.printf(" DBSNP %s on %s => %s%n", dbsnp.toSimpleString(), dbsnp.strand, Utils.join("/", dbsnp.getAllelesFWD())); //System.out.printf(" DBSNP %s on %s => %s%n", dbsnp.toSimpleString(), dbsnp.strand, Utils.join("/", dbsnp.getAllelesFWD()));
@ -114,7 +115,7 @@ public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate,
logger.debug(String.format(" => result is %s", alleleFreq)); logger.debug(String.format(" => result is %s", alleleFreq));
if (LOG_METRICS) metrics.nextPosition(alleleFreq, rodData); if (LOG_METRICS) metrics.nextPosition(alleleFreq, tracker);
return alleleFreq; return alleleFreq;
} }

View File

@ -3,10 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers;
import net.sf.samtools.*; import net.sf.samtools.*;
import org.broadinstitute.sting.gatk.*; import org.broadinstitute.sting.gatk.*;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.*;
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.walkers.LocusWalker; import org.broadinstitute.sting.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker;
@ -36,7 +33,7 @@ public class CoverageBySample extends LocusWalker<String, String>
} }
} }
public String map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) public String map(RefMetaDataTracker tracker, char ref, LocusContext context)
{ {
String line = context.getLocation().getContig() + " " + context.getLocation().getStart() + " " ; String line = context.getLocation().getContig() + " " + context.getLocation().getStart() + " " ;
for (int i = 0; i < sample_names.size(); i++) for (int i = 0; i < sample_names.size(); i++)

View File

@ -4,6 +4,7 @@ package org.broadinstitute.sting.playground.gatk.walkers;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; import org.broadinstitute.sting.gatk.refdata.rodDbSNP;
import org.broadinstitute.sting.gatk.refdata.rodGFF; 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.walkers.LocusWalker;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker;
@ -20,7 +21,7 @@ public class PoolCallingExperiment extends LocusWalker<AlleleFrequencyEstimate,
@Argument public int DOWNSAMPLE; @Argument public int DOWNSAMPLE;
public AlleleFrequencyEstimate map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) public AlleleFrequencyEstimate map(RefMetaDataTracker tracker, char ref, LocusContext context)
{ {
for (int i = 0; i < context.getReads().size(); i++) for (int i = 0; i < context.getReads().size(); i++)
{ {

View File

@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; import org.broadinstitute.sting.gatk.refdata.rodDbSNP;
import org.broadinstitute.sting.gatk.refdata.HapMapAlleleFrequenciesROD; 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.Utils;
import org.broadinstitute.sting.utils.cmdLine.Argument; import org.broadinstitute.sting.utils.cmdLine.Argument;
import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMRecord;
@ -30,7 +31,7 @@ public class PopPriorWalker extends LocusWalker<Integer, Integer> {
public String walkerType() { return "ByLocus"; } public String walkerType() { return "ByLocus"; }
// Do we actually want to operate on the context? // Do we actually want to operate on the context?
public boolean filter(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) {
return true; // We are keeping all the reads return true; // We are keeping all the reads
} }
@ -95,7 +96,7 @@ public class PopPriorWalker extends LocusWalker<Integer, Integer> {
} }
// Map over the org.broadinstitute.sting.gatk.LocusContext // Map over the org.broadinstitute.sting.gatk.LocusContext
public Integer map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public Integer map(RefMetaDataTracker tracker, char ref, LocusContext context) {
char upRef = Character.toUpperCase(ref); char upRef = Character.toUpperCase(ref);
List<SAMRecord> reads = context.getReads(); List<SAMRecord> reads = context.getReads();
List<Integer> offsets = context.getOffsets(); List<Integer> offsets = context.getOffsets();
@ -106,7 +107,7 @@ public class PopPriorWalker extends LocusWalker<Integer, Integer> {
rodDbSNP dbsnpInfo = null; rodDbSNP dbsnpInfo = null;
HapMapAlleleFrequenciesROD hapmap = null; HapMapAlleleFrequenciesROD hapmap = null;
for ( ReferenceOrderedDatum datum : rodData ) for ( ReferenceOrderedDatum datum : tracker.getAllRods() )
{ {
if ( datum != null ) if ( datum != null )
{ {

View File

@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.gatk.walkers;
import org.broadinstitute.sting.gatk.LocusContext; import org.broadinstitute.sting.gatk.LocusContext;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; 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.gatk.walkers.LocusWalker;
import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.Utils;
import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMRecord;
@ -13,7 +14,7 @@ import java.util.List;
// j.maguire 3-7-2009 // j.maguire 3-7-2009
public class SingleSampleGenotyper extends LocusWalker<Integer, Integer> { public class SingleSampleGenotyper extends LocusWalker<Integer, Integer> {
public boolean filter(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context) { public boolean filter(RefMetaDataTracker tracker, char ref, LocusContext context) {
return true; // We are keeping all the reads return true; // We are keeping all the reads
} }
@ -82,7 +83,7 @@ public class SingleSampleGenotyper extends LocusWalker<Integer, Integer> {
} }
// Map over the org.broadinstitute.sting.gatk.LocusContext // Map over the org.broadinstitute.sting.gatk.LocusContext
public Integer map(List<ReferenceOrderedDatum> 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()); //System.out.printf("Reads %s:%d %d%n", context.getContig(), context.getPosition(), context.getReads().size());
//for ( SAMRecord read : context.getReads() ) { //for ( SAMRecord read : context.getReads() ) {
// System.out.println(" -> " + read.getReadName()); // System.out.println(" -> " + read.getReadName());
@ -96,7 +97,7 @@ public class SingleSampleGenotyper extends LocusWalker<Integer, Integer> {
// Look up hapmap and dbsnp priors // Look up hapmap and dbsnp priors
String rodString = ""; String rodString = "";
for ( ReferenceOrderedDatum datum : rodData ) for ( ReferenceOrderedDatum datum : tracker.getAllRods() )
{ {
if ( datum != null ) if ( datum != null )
{ {

View File

@ -3,6 +3,7 @@ package org.broadinstitute.sting.playground.utils;
import org.broadinstitute.sting.gatk.refdata.rodGFF; import org.broadinstitute.sting.gatk.refdata.rodGFF;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
import org.broadinstitute.sting.gatk.refdata.rodDbSNP; import org.broadinstitute.sting.gatk.refdata.rodDbSNP;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker; import org.broadinstitute.sting.playground.gatk.walkers.AlleleFrequencyWalker;
import java.util.List; import java.util.List;
@ -44,14 +45,14 @@ public class AlleleMetrics {
} }
} }
public void nextPosition(AlleleFrequencyEstimate alleleFreq, List<ReferenceOrderedDatum> rodData) { public void nextPosition(AlleleFrequencyEstimate alleleFreq, RefMetaDataTracker tracker) {
num_loci_total += 1; num_loci_total += 1;
boolean is_dbSNP_SNP = false; boolean is_dbSNP_SNP = false;
boolean has_hapmap_chip_genotype = false; boolean has_hapmap_chip_genotype = false;
rodGFF hapmap_chip_genotype = null; rodGFF hapmap_chip_genotype = null;
for ( ReferenceOrderedDatum datum : rodData ) for ( ReferenceOrderedDatum datum : tracker.getAllRods() )
{ {
if ( datum != null ) if ( datum != null )
{ {