PrintReads writes a header when used with -BQSR

This commit is contained in:
Tad Jordan 2013-02-13 13:45:49 -05:00
parent 5cc5aedcd1
commit 6cb80591e3
6 changed files with 47 additions and 16 deletions

View File

@ -220,6 +220,7 @@ public class BQSRIntegrationTest extends WalkerTest {
" -R " + hg18Reference + " -R " + hg18Reference +
" -I " + privateTestDir + "HiSeq.1mb.1RG.bam" + " -I " + privateTestDir + "HiSeq.1mb.1RG.bam" +
" -nct " + nct + " -nct " + nct +
" --no_pg_tag" +
" -BQSR " + privateTestDir + "HiSeq.20mb.1RG.table" + " -BQSR " + privateTestDir + "HiSeq.20mb.1RG.table" +
params.args + params.args +
" -o %s", " -o %s",
@ -234,6 +235,7 @@ public class BQSRIntegrationTest extends WalkerTest {
" -R " + hg18Reference + " -R " + hg18Reference +
" -I " + HiSeqBam + " -I " + HiSeqBam +
" -L " + HiSeqInterval + " -L " + HiSeqInterval +
" --no_pg_tag" +
" -BQSR " + privateTestDir + "HiSeq.1mb.1RG.highMaxCycle.table" + " -BQSR " + privateTestDir + "HiSeq.1mb.1RG.highMaxCycle.table" +
" -o /dev/null", " -o /dev/null",
0, 0,
@ -248,6 +250,7 @@ public class BQSRIntegrationTest extends WalkerTest {
" -R " + hg18Reference + " -R " + hg18Reference +
" -I " + HiSeqBam + " -I " + HiSeqBam +
" -L " + HiSeqInterval + " -L " + HiSeqInterval +
" --no_pg_tag" +
" -BQSR " + privateTestDir + "HiSeq.1mb.1RG.lowMaxCycle.table" + " -BQSR " + privateTestDir + "HiSeq.1mb.1RG.lowMaxCycle.table" +
" -o /dev/null", " -o /dev/null",
0, 0,

View File

@ -28,15 +28,19 @@ package org.broadinstitute.sting.gatk.walkers.readutils;
import net.sf.samtools.SAMFileWriter; import net.sf.samtools.SAMFileWriter;
import net.sf.samtools.SAMReadGroupRecord; import net.sf.samtools.SAMReadGroupRecord;
import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Argument;
import org.broadinstitute.sting.commandline.Hidden;
import org.broadinstitute.sting.commandline.Output; import org.broadinstitute.sting.commandline.Output;
import org.broadinstitute.sting.gatk.CommandLineGATK; import org.broadinstitute.sting.gatk.CommandLineGATK;
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
import org.broadinstitute.sting.gatk.io.StingSAMFileWriter;
import org.broadinstitute.sting.gatk.iterators.ReadTransformer; import org.broadinstitute.sting.gatk.iterators.ReadTransformer;
import org.broadinstitute.sting.gatk.iterators.ReadTransformersMode; import org.broadinstitute.sting.gatk.iterators.ReadTransformersMode;
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
import org.broadinstitute.sting.gatk.walkers.*; import org.broadinstitute.sting.gatk.walkers.*;
import org.broadinstitute.sting.utils.GenomeLoc;
import org.broadinstitute.sting.utils.SampleUtils; import org.broadinstitute.sting.utils.SampleUtils;
import org.broadinstitute.sting.utils.Utils;
import org.broadinstitute.sting.utils.baq.BAQ; import org.broadinstitute.sting.utils.baq.BAQ;
import org.broadinstitute.sting.utils.help.DocumentedGATKFeature; import org.broadinstitute.sting.utils.help.DocumentedGATKFeature;
import org.broadinstitute.sting.utils.sam.GATKSAMRecord; import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
@ -97,7 +101,7 @@ import java.util.*;
public class PrintReads extends ReadWalker<GATKSAMRecord, SAMFileWriter> implements NanoSchedulable { public class PrintReads extends ReadWalker<GATKSAMRecord, SAMFileWriter> implements NanoSchedulable {
@Output(doc="Write output to this BAM filename instead of STDOUT", required = true) @Output(doc="Write output to this BAM filename instead of STDOUT", required = true)
SAMFileWriter out; StingSAMFileWriter out;
@Argument(fullName = "readGroup", shortName = "readGroup", doc="Exclude all reads with this read group from the output", required = false) @Argument(fullName = "readGroup", shortName = "readGroup", doc="Exclude all reads with this read group from the output", required = false)
String readGroup = null; String readGroup = null;
@ -137,18 +141,27 @@ public class PrintReads extends ReadWalker<GATKSAMRecord, SAMFileWriter> impleme
*/ */
@Argument(fullName="simplify", shortName="s", doc="Simplify all reads.", required=false) @Argument(fullName="simplify", shortName="s", doc="Simplify all reads.", required=false)
public boolean simplifyReads = false; public boolean simplifyReads = false;
@Hidden
@Argument(fullName = "no_pg_tag", shortName = "npt", doc ="", required = false)
private boolean NO_PG_TAG = false;
List<ReadTransformer> readTransformers = Collections.emptyList(); List<ReadTransformer> readTransformers = Collections.emptyList();
private TreeSet<String> samplesToChoose = new TreeSet<String>(); private TreeSet<String> samplesToChoose = new TreeSet<String>();
private boolean SAMPLES_SPECIFIED = false; private boolean SAMPLES_SPECIFIED = false;
public static final String PROGRAM_RECORD_NAME = "GATK PrintReads"; // The name that will go in the @PG tag
Random random; Random random;
/** /**
* The initialize function. * The initialize function.
*/ */
public void initialize() { public void initialize() {
final boolean keep_records = true;
final GenomeAnalysisEngine toolkit = getToolkit();
if ( platform != null ) if ( platform != null )
platform = platform.toUpperCase(); platform = platform.toUpperCase();
@ -167,9 +180,14 @@ public class PrintReads extends ReadWalker<GATKSAMRecord, SAMFileWriter> impleme
if(!samplesToChoose.isEmpty()) { if(!samplesToChoose.isEmpty()) {
SAMPLES_SPECIFIED = true; SAMPLES_SPECIFIED = true;
} }
random = GenomeAnalysisEngine.getRandomGenerator(); random = GenomeAnalysisEngine.getRandomGenerator();
final boolean preSorted = true;
if (getToolkit() != null && getToolkit().getArguments().BQSR_RECAL_FILE != null && !NO_PG_TAG ) {
Utils.setupWriter(out, toolkit, toolkit.getSAMFileHeader(), !preSorted, keep_records, this, PROGRAM_RECORD_NAME);
}
} }
/** /**

View File

@ -28,6 +28,7 @@ package org.broadinstitute.sting.utils.sam;
import net.sf.samtools.SAMFileHeader; import net.sf.samtools.SAMFileHeader;
import net.sf.samtools.SAMFileWriter; import net.sf.samtools.SAMFileWriter;
import net.sf.samtools.SAMRecord; import net.sf.samtools.SAMRecord;
import org.broadinstitute.sting.gatk.io.StingSAMFileWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -61,12 +62,12 @@ import java.util.List;
/** /**
* @author aaron * @author aaron
* <p/> * <p/>
* Class ArtificialSAMFileWriter * Class ArtificialStingSAMFileWriter
* <p/> * <p/>
* generates a fake samwriter, that you can get the output reads * generates a fake samwriter, that you can get the output reads
* from when you're done. * from when you're done.
*/ */
public class ArtificialSAMFileWriter implements SAMFileWriter { public class ArtificialStingSAMFileWriter implements StingSAMFileWriter {
// are we closed // are we closed
private boolean closed = false; private boolean closed = false;
@ -106,4 +107,16 @@ public class ArtificialSAMFileWriter implements SAMFileWriter {
public List<SAMRecord> getRecords() { public List<SAMRecord> getRecords() {
return records; return records;
} }
@Override
public void writeHeader(SAMFileHeader header) {
}
@Override
public void setPresorted(boolean presorted) {
}
@Override
public void setMaxRecordsInRam(int maxRecordsInRam) {
}
} }

View File

@ -75,6 +75,7 @@ public class PrintReadsIntegrationTest extends WalkerTest {
" -R " + params.reference + " -R " + params.reference +
" -I " + privateTestDir + params.bam + " -I " + privateTestDir + params.bam +
params.args + params.args +
" --no_pg_tag" +
" -o %s", " -o %s",
Arrays.asList(params.md5)); Arrays.asList(params.md5));
executeTest("testPrintReads-"+params.args, spec).getFirst(); executeTest("testPrintReads-"+params.args, spec).getFirst();

View File

@ -30,7 +30,7 @@ import net.sf.samtools.SAMRecord;
import org.broadinstitute.sting.BaseTest; import org.broadinstitute.sting.BaseTest;
import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
import org.broadinstitute.sting.utils.sam.ArtificialReadsTraversal; import org.broadinstitute.sting.utils.sam.ArtificialReadsTraversal;
import org.broadinstitute.sting.utils.sam.ArtificialSAMFileWriter; import org.broadinstitute.sting.utils.sam.ArtificialStingSAMFileWriter;
import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils; import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils;
import org.broadinstitute.sting.utils.sam.GATKSAMRecord; import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeMethod;
@ -85,7 +85,7 @@ public class PrintReadsUnitTest extends BaseTest {
//private ReferenceContext ref = new ReferenceContext() //private ReferenceContext ref = new ReferenceContext()
org.broadinstitute.sting.gatk.walkers.readutils.PrintReads walker; org.broadinstitute.sting.gatk.walkers.readutils.PrintReads walker;
ArtificialSAMFileWriter writer; ArtificialStingSAMFileWriter writer;
@BeforeMethod @BeforeMethod
public void before() { public void before() {
@ -93,8 +93,7 @@ public class PrintReadsUnitTest extends BaseTest {
readTotal = ( ( trav.endingChr - trav.startingChr ) + 1 ) * trav.readsPerChr + trav.unMappedReads; readTotal = ( ( trav.endingChr - trav.startingChr ) + 1 ) * trav.readsPerChr + trav.unMappedReads;
walker = new org.broadinstitute.sting.gatk.walkers.readutils.PrintReads(); walker = new org.broadinstitute.sting.gatk.walkers.readutils.PrintReads();
writer = new ArtificialSAMFileWriter(); writer = new ArtificialStingSAMFileWriter();
walker.out = writer;
walker.initialize(); walker.initialize();
} }
@ -121,7 +120,4 @@ public class PrintReadsUnitTest extends BaseTest {
assertTrue(ret == rec); assertTrue(ret == rec);
assertTrue(ret.getReadName().equals(rec.getReadName())); assertTrue(ret.getReadName().equals(rec.getReadName()));
} }
} }

View File

@ -65,14 +65,14 @@ import java.util.List;
/** /**
* @author aaron * @author aaron
* <p/> * <p/>
* Class ArtificialSAMFileWriter * Class ArtificialStingSAMFileWriter
* <p/> * <p/>
* Test out the ArtificialSAMFileWriter class * Test out the ArtificialStingSAMFileWriter class
*/ */
public class ArtificialSAMFileWriterUnitTest extends BaseTest { public class ArtificialSAMFileWriterUnitTest extends BaseTest {
/** the artificial sam writer */ /** the artificial sam writer */
private ArtificialSAMFileWriter writer; private ArtificialStingSAMFileWriter writer;
private SAMFileHeader header; private SAMFileHeader header;
private final int startChr = 1; private final int startChr = 1;
private final int numChr = 2; private final int numChr = 2;
@ -80,7 +80,7 @@ public class ArtificialSAMFileWriterUnitTest extends BaseTest {
@BeforeMethod @BeforeMethod
public void before() { public void before() {
writer = new ArtificialSAMFileWriter(); writer = new ArtificialStingSAMFileWriter();
header = ArtificialSAMUtils.createArtificialSamHeader(numChr, startChr, chrSize); header = ArtificialSAMUtils.createArtificialSamHeader(numChr, startChr, chrSize);
} }