diff --git a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisTK.java b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisTK.java index 898852211..004a98b10 100644 --- a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisTK.java +++ b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisTK.java @@ -486,4 +486,5 @@ public class GenomeAnalysisTK extends CommandLineProgram { } public SAMFileReader getSamReader() { return this.engine.getSamReader(); } + public TraversalEngine getEngine() { return this.engine; } } diff --git a/java/src/org/broadinstitute/sting/gatk/executive/MicroManager.java b/java/src/org/broadinstitute/sting/gatk/executive/MicroManager.java index 133b9c4c3..26a817441 100644 --- a/java/src/org/broadinstitute/sting/gatk/executive/MicroManager.java +++ b/java/src/org/broadinstitute/sting/gatk/executive/MicroManager.java @@ -119,6 +119,9 @@ public class MicroManager { ReferenceProvider referenceProvider = new ReferenceProvider( refIter ); LocusContextProvider locusProvider = new LocusContextProvider( readShard ); + // set the sam header of the traversal engine + traversalEngine.setSAMHeader(readShard.getMergedHeader()); + System.err.println(traversalEngine.getSAMHeader().getSequenceDictionary().toString()); accumulator = traversalEngine.traverse( walker, shard, referenceProvider, locusProvider, accumulator ); readShard.close(); } diff --git a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java index 479f267b0..7343a4d07 100755 --- a/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/traversals/TraversalEngine.java @@ -75,6 +75,11 @@ public abstract class TraversalEngine { protected boolean THREADED_IO = false; protected int THREADED_IO_BUFFER_SIZE = 10000; + + + // the stored header + protected SAMFileHeader myHeader = null; + /** * our log, which we want to capture anything from this class */ @@ -168,6 +173,26 @@ public abstract class TraversalEngine { // // -------------------------------------------------------------------------------------------------------------- + + /** + * get the associated SAM header for our run + * @return the header if it's stored, null if not + */ + public SAMFileHeader getSAMHeader() { + return myHeader; + } + + /** + * set's the SAM header for this traversal, which should + * be the merged header in the multiple BAM file case. + * + * @param myHeader the passed in header + */ + + public void setSAMHeader(SAMFileHeader myHeader) { + this.myHeader = myHeader; + } + /** * Parses the location string locStr and sets the traversal engine to only process * regions specified by the location string. The string is of the form: @@ -417,7 +442,7 @@ public abstract class TraversalEngine { public boolean shutdown() { // todo: actually shutdown the resources - + return true; } @@ -462,7 +487,7 @@ public abstract class TraversalEngine { public T traverse(Walker walker, ArrayList locations) { return null; } - + // -------------------------------------------------------------------------------------------------------------- // // traversal by loci functions diff --git a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ListSampleIds.java b/java/src/org/broadinstitute/sting/playground/gatk/walkers/ListSampleIds.java index 96df06062..a84ed8f80 100644 --- a/java/src/org/broadinstitute/sting/playground/gatk/walkers/ListSampleIds.java +++ b/java/src/org/broadinstitute/sting/playground/gatk/walkers/ListSampleIds.java @@ -1,28 +1,21 @@ 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 net.sf.samtools.SAMFileHeader; +import net.sf.samtools.SAMReadGroupRecord; +import org.broadinstitute.sting.gatk.GenomeAnalysisTK; +import org.broadinstitute.sting.gatk.LocusContext; 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; -import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate; -import org.broadinstitute.sting.utils.*; -import org.broadinstitute.sting.utils.cmdLine.Argument; -import java.util.*; +import java.util.List; public class ListSampleIds extends LocusWalker { public void initialize() { GenomeAnalysisTK toolkit = this.getToolkit(); - SAMFileHeader header = toolkit.getSamReader().getFileHeader(); + SAMFileHeader header = toolkit.getEngine().getSAMHeader(); List read_groups = header.getReadGroups(); for (int i = 0; i < read_groups.size(); i++)