Fix for Mark: get rid of old program tags whose IDs clash with the recalibrator/realigner tag (including if the id has a .1 at the end, etc.). Keeping them around is dangerous because we don't know which one refers to the latest run of the tool on the bam.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3798 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
6bf5df4eb5
commit
ab84ed8c68
|
|
@ -59,6 +59,7 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
|
||||||
|
|
||||||
public static final String ORIGINAL_CIGAR_TAG = "OC";
|
public static final String ORIGINAL_CIGAR_TAG = "OC";
|
||||||
public static final String ORIGINAL_START_TAG = "OS";
|
public static final String ORIGINAL_START_TAG = "OS";
|
||||||
|
public static final String PROGRAM_RECORD_NAME = "GATK IndelRealigner";
|
||||||
|
|
||||||
@Argument(fullName="targetIntervals", shortName="targetIntervals", doc="intervals file output from RealignerTargetCreator", required=true)
|
@Argument(fullName="targetIntervals", shortName="targetIntervals", doc="intervals file output from RealignerTargetCreator", required=true)
|
||||||
protected String intervalsFile = null;
|
protected String intervalsFile = null;
|
||||||
|
|
@ -214,10 +215,18 @@ public class IndelRealigner extends ReadWalker<Integer, Integer> {
|
||||||
header.setSortOrder(SAMFileHeader.SortOrder.queryname);
|
header.setSortOrder(SAMFileHeader.SortOrder.queryname);
|
||||||
|
|
||||||
if ( !NO_PG_TAG ) {
|
if ( !NO_PG_TAG ) {
|
||||||
final SAMProgramRecord programRecord = new SAMProgramRecord("GATK IndelRealigner");
|
final SAMProgramRecord programRecord = new SAMProgramRecord(PROGRAM_RECORD_NAME);
|
||||||
final ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText");
|
final ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText");
|
||||||
programRecord.setProgramVersion(headerInfo.getString("org.broadinstitute.sting.gatk.version"));
|
programRecord.setProgramVersion(headerInfo.getString("org.broadinstitute.sting.gatk.version"));
|
||||||
header.addProgramRecord( programRecord );
|
|
||||||
|
List<SAMProgramRecord> oldRecords = header.getProgramRecords();
|
||||||
|
List<SAMProgramRecord> newRecords = new ArrayList<SAMProgramRecord>(oldRecords.size()+1);
|
||||||
|
for ( SAMProgramRecord record : oldRecords ) {
|
||||||
|
if ( !record.getId().startsWith(PROGRAM_RECORD_NAME) )
|
||||||
|
newRecords.add(record);
|
||||||
|
}
|
||||||
|
newRecords.add(programRecord);
|
||||||
|
header.setProgramRecords(newRecords);
|
||||||
}
|
}
|
||||||
|
|
||||||
SAMFileWriter writer = factory.makeBAMWriter(header, false, file, compressionLevel);
|
SAMFileWriter writer = factory.makeBAMWriter(header, false, file, compressionLevel);
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,8 @@ import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||||
@Requires({ DataSource.READS, DataSource.REFERENCE, DataSource.REFERENCE_BASES }) // This walker requires -I input.bam, it also requires -R reference.fasta
|
@Requires({ DataSource.READS, DataSource.REFERENCE, DataSource.REFERENCE_BASES }) // This walker requires -I input.bam, it also requires -R reference.fasta
|
||||||
public class TableRecalibrationWalker extends ReadWalker<SAMRecord, SAMFileWriter> {
|
public class TableRecalibrationWalker extends ReadWalker<SAMRecord, SAMFileWriter> {
|
||||||
|
|
||||||
|
public static final String PROGRAM_RECORD_NAME = "GATK TableRecalibration";
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Shared Arguments
|
// Shared Arguments
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
@ -89,7 +91,7 @@ public class TableRecalibrationWalker extends ReadWalker<SAMRecord, SAMFileWrite
|
||||||
// Command Line Arguments
|
// Command Line Arguments
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
@Argument(fullName="output_bam", shortName="outputBam", doc="The output BAM file", required=true)
|
@Argument(fullName="output_bam", shortName="outputBam", doc="The output BAM file", required=true)
|
||||||
private StingSAMFileWriter OUTPUT_BAM;
|
private StingSAMFileWriter OUTPUT_BAM = null;
|
||||||
@Argument(fullName="preserve_qscores_less_than", shortName="pQ",
|
@Argument(fullName="preserve_qscores_less_than", shortName="pQ",
|
||||||
doc="Bases with quality scores less than this threshold won't be recalibrated, default=5. In general it's unsafe to change qualities scores below < 5, since base callers use these values to indicate random or bad bases", required=false)
|
doc="Bases with quality scores less than this threshold won't be recalibrated, default=5. In general it's unsafe to change qualities scores below < 5, since base callers use these values to indicate random or bad bases", required=false)
|
||||||
private int PRESERVE_QSCORES_LESS_THAN = 5;
|
private int PRESERVE_QSCORES_LESS_THAN = 5;
|
||||||
|
|
@ -256,7 +258,7 @@ public class TableRecalibrationWalker extends ReadWalker<SAMRecord, SAMFileWrite
|
||||||
// Take the header of the input SAM file and tweak it by adding in a new programRecord with the version number and list of covariates that were used
|
// Take the header of the input SAM file and tweak it by adding in a new programRecord with the version number and list of covariates that were used
|
||||||
final SAMFileHeader header = getToolkit().getSAMFileHeader().clone();
|
final SAMFileHeader header = getToolkit().getSAMFileHeader().clone();
|
||||||
if( !NO_PG_TAG ) {
|
if( !NO_PG_TAG ) {
|
||||||
final SAMProgramRecord programRecord = new SAMProgramRecord( "GATK TableRecalibration" );
|
final SAMProgramRecord programRecord = new SAMProgramRecord(PROGRAM_RECORD_NAME);
|
||||||
final ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText");
|
final ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText");
|
||||||
programRecord.setProgramVersion( headerInfo.getString("org.broadinstitute.sting.gatk.version") );
|
programRecord.setProgramVersion( headerInfo.getString("org.broadinstitute.sting.gatk.version") );
|
||||||
String commandLineString = "Covariates=[";
|
String commandLineString = "Covariates=[";
|
||||||
|
|
@ -280,7 +282,15 @@ public class TableRecalibrationWalker extends ReadWalker<SAMRecord, SAMFileWrite
|
||||||
commandLineString += "maxQ=" + MAX_QUALITY_SCORE + ", ";
|
commandLineString += "maxQ=" + MAX_QUALITY_SCORE + ", ";
|
||||||
commandLineString += "smoothing=" + SMOOTHING;
|
commandLineString += "smoothing=" + SMOOTHING;
|
||||||
programRecord.setCommandLine( commandLineString );
|
programRecord.setCommandLine( commandLineString );
|
||||||
header.addProgramRecord( programRecord );
|
|
||||||
|
List<SAMProgramRecord> oldRecords = header.getProgramRecords();
|
||||||
|
List<SAMProgramRecord> newRecords = new ArrayList<SAMProgramRecord>(oldRecords.size()+1);
|
||||||
|
for ( SAMProgramRecord record : oldRecords ) {
|
||||||
|
if ( !record.getId().startsWith(PROGRAM_RECORD_NAME) )
|
||||||
|
newRecords.add(record);
|
||||||
|
}
|
||||||
|
newRecords.add(programRecord);
|
||||||
|
header.setProgramRecords(newRecords);
|
||||||
|
|
||||||
// Write out the new header
|
// Write out the new header
|
||||||
OUTPUT_BAM.writeHeader( header );
|
OUTPUT_BAM.writeHeader( header );
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue