PrintReads writes a header when used with -BQSR
This commit is contained in:
parent
5cc5aedcd1
commit
6cb80591e3
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue