Added the ability to get a merged header in a LociByReference traversal

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@514 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
aaron 2009-04-23 20:34:52 +00:00
parent 282f1d88b8
commit 3dc2afd7ab
4 changed files with 37 additions and 15 deletions

View File

@ -486,4 +486,5 @@ public class GenomeAnalysisTK extends CommandLineProgram {
} }
public SAMFileReader getSamReader() { return this.engine.getSamReader(); } public SAMFileReader getSamReader() { return this.engine.getSamReader(); }
public TraversalEngine getEngine() { return this.engine; }
} }

View File

@ -119,6 +119,9 @@ public class MicroManager {
ReferenceProvider referenceProvider = new ReferenceProvider( refIter ); ReferenceProvider referenceProvider = new ReferenceProvider( refIter );
LocusContextProvider locusProvider = new LocusContextProvider( readShard ); 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 ); accumulator = traversalEngine.traverse( walker, shard, referenceProvider, locusProvider, accumulator );
readShard.close(); readShard.close();
} }

View File

@ -75,6 +75,11 @@ public abstract class TraversalEngine {
protected boolean THREADED_IO = false; protected boolean THREADED_IO = false;
protected int THREADED_IO_BUFFER_SIZE = 10000; 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 * 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 * 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: * regions specified by the location string. The string is of the form:
@ -417,7 +442,7 @@ public abstract class TraversalEngine {
public boolean shutdown() { public boolean shutdown() {
// todo: actually shutdown the resources // todo: actually shutdown the resources
return true; return true;
} }
@ -462,7 +487,7 @@ public abstract class TraversalEngine {
public <M, T> T traverse(Walker<M, T> walker, ArrayList<GenomeLoc> locations) { public <M, T> T traverse(Walker<M, T> walker, ArrayList<GenomeLoc> locations) {
return null; return null;
} }
// -------------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------------
// //
// traversal by loci functions // traversal by loci functions

View File

@ -1,28 +1,21 @@
package org.broadinstitute.sting.playground.gatk.walkers; package org.broadinstitute.sting.playground.gatk.walkers;
import net.sf.samtools.*; import net.sf.samtools.SAMFileHeader;
import org.broadinstitute.sting.gatk.*; import net.sf.samtools.SAMReadGroupRecord;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.GenomeAnalysisTK;
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.LocusContext;
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.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.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<Boolean, Boolean> public class ListSampleIds extends LocusWalker<Boolean, Boolean>
{ {
public void initialize() public void initialize()
{ {
GenomeAnalysisTK toolkit = this.getToolkit(); GenomeAnalysisTK toolkit = this.getToolkit();
SAMFileHeader header = toolkit.getSamReader().getFileHeader(); SAMFileHeader header = toolkit.getEngine().getSAMHeader();
List<SAMReadGroupRecord> read_groups = header.getReadGroups(); List<SAMReadGroupRecord> read_groups = header.getReadGroups();
for (int i = 0; i < read_groups.size(); i++) for (int i = 0; i < read_groups.size(); i++)