From 6dd41c84891d339304c5cbe9ba7d3f67cd9d5024 Mon Sep 17 00:00:00 2001 From: asivache Date: Tue, 21 Jun 2011 17:26:04 +0000 Subject: [PATCH] Nway writer takes another argument: whether to create index on the fly. Realigner in NWayOut mode currently will ALWAYS create index on the fly as there seems to be no clean way to extract the requested value from argument collection in the presence of a different @Output stream. git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@6023 348d0f76-0448-11de-a6fe-93d51630548a --- .../gatk/walkers/indels/IndelRealigner.java | 9 ++++++-- .../sting/utils/sam/NWaySAMFileWriter.java | 21 ++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java index 6b6f8ba87..598a1f9eb 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java @@ -35,6 +35,7 @@ import org.broadinstitute.sting.commandline.*; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; import org.broadinstitute.sting.gatk.datasources.reads.SAMReaderID; +import org.broadinstitute.sting.gatk.io.stubs.SAMFileWriterStub; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; import org.broadinstitute.sting.utils.exceptions.StingException; @@ -308,11 +309,15 @@ public class IndelRealigner extends ReadWalker { writerToUse = writer; if ( N_WAY_OUT != null ) { + // Map args = getToolkit().getArguments().walkerArgs; + boolean createIndex = true; + + // if ( args.containsKey("disable_bam_indexing") ) { System.out.println("NO INDEXING!!"); System.exit(1); createIndex = false; } if ( N_WAY_OUT.toUpperCase().endsWith(".MAP") ) { - writerToUse = new NWaySAMFileWriter(getToolkit(),loadFileNameMap(N_WAY_OUT),SAMFileHeader.SortOrder.coordinate,true); + writerToUse = new NWaySAMFileWriter(getToolkit(),loadFileNameMap(N_WAY_OUT),SAMFileHeader.SortOrder.coordinate,true, createIndex); } else { - writerToUse = new NWaySAMFileWriter(getToolkit(),N_WAY_OUT,SAMFileHeader.SortOrder.coordinate,true); + writerToUse = new NWaySAMFileWriter(getToolkit(),N_WAY_OUT,SAMFileHeader.SortOrder.coordinate,true, createIndex); } } else { diff --git a/java/src/org/broadinstitute/sting/utils/sam/NWaySAMFileWriter.java b/java/src/org/broadinstitute/sting/utils/sam/NWaySAMFileWriter.java index 64b20a308..3718345a4 100644 --- a/java/src/org/broadinstitute/sting/utils/sam/NWaySAMFileWriter.java +++ b/java/src/org/broadinstitute/sting/utils/sam/NWaySAMFileWriter.java @@ -51,20 +51,21 @@ public class NWaySAMFileWriter implements SAMFileWriter { private boolean presorted ; GenomeAnalysisEngine toolkit; - public NWaySAMFileWriter(GenomeAnalysisEngine toolkit, Map in2out, SAMFileHeader.SortOrder order, boolean presorted) { + public NWaySAMFileWriter(GenomeAnalysisEngine toolkit, Map in2out, SAMFileHeader.SortOrder order, boolean presorted, boolean indexOnTheFly) { this.presorted = presorted; this.toolkit = toolkit; writerMap = new HashMap(); - setupByReader(toolkit,in2out,order, presorted); + setupByReader(toolkit,in2out,order, presorted, indexOnTheFly); } - public NWaySAMFileWriter(GenomeAnalysisEngine toolkit, String ext, SAMFileHeader.SortOrder order, boolean presorted) { + public NWaySAMFileWriter(GenomeAnalysisEngine toolkit, String ext, SAMFileHeader.SortOrder order, boolean presorted, boolean indexOnTheFly ) { this.presorted = presorted; this.toolkit = toolkit; writerMap = new HashMap(); - setupByReader(toolkit,ext,order, presorted); + setupByReader(toolkit,ext,order, presorted, indexOnTheFly); } + /** * Instantiates multiple underlying SAM writes, one per input SAM reader registered with GATK engine (those will be retrieved * from toolkit). The in2out map must contain an entry for each input filename and map it @@ -72,7 +73,7 @@ public class NWaySAMFileWriter implements SAMFileWriter { * @param toolkit * @param in2out */ - public void setupByReader(GenomeAnalysisEngine toolkit, Map in2out, SAMFileHeader.SortOrder order, boolean presorted) { + public void setupByReader(GenomeAnalysisEngine toolkit, Map in2out, SAMFileHeader.SortOrder order, boolean presorted, boolean indexOnTheFly) { if ( in2out==null ) throw new StingException("input-output bam filename map for n-way-out writing is NULL"); for ( SAMReaderID rid : toolkit.getReadsDataSource().getReaderIDs() ) { @@ -87,7 +88,7 @@ public class NWaySAMFileWriter implements SAMFileWriter { if ( writerMap.containsKey( rid ) ) throw new StingException("nWayOut mode: Reader id for input sam file "+fName+" is already registered"); - addWriter(rid,outName, order, presorted); + addWriter(rid,outName, order, presorted, indexOnTheFly); } } @@ -100,7 +101,7 @@ public class NWaySAMFileWriter implements SAMFileWriter { * @param toolkit * @param ext */ - public void setupByReader(GenomeAnalysisEngine toolkit, String ext, SAMFileHeader.SortOrder order, boolean presorted) { + public void setupByReader(GenomeAnalysisEngine toolkit, String ext, SAMFileHeader.SortOrder order, boolean presorted, boolean indexOnTheFly) { for ( SAMReaderID rid : toolkit.getReadsDataSource().getReaderIDs() ) { String fName = toolkit.getReadsDataSource().getSAMFile(rid).getName(); @@ -118,16 +119,16 @@ public class NWaySAMFileWriter implements SAMFileWriter { if ( writerMap.containsKey( rid ) ) throw new StingException("nWayOut mode: Reader id for input sam file "+fName+" is already registered"); - addWriter(rid,outName, order, presorted); + addWriter(rid,outName, order, presorted, indexOnTheFly); } } - private void addWriter(SAMReaderID id , String outName, SAMFileHeader.SortOrder order, boolean presorted) { + private void addWriter(SAMReaderID id , String outName, SAMFileHeader.SortOrder order, boolean presorted, boolean indexOnTheFly) { File f = new File(outName); SAMFileHeader header = toolkit.getSAMFileHeader(id).clone(); header.setSortOrder(order); - SAMFileWriter sw = new SAMFileWriterFactory().makeSAMOrBAMWriter(header, presorted, f); + SAMFileWriter sw = new SAMFileWriterFactory().setCreateIndex(indexOnTheFly).makeSAMOrBAMWriter(header, presorted, f); writerMap.put(id,sw); }