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 0f8223bc4..7bcb01612 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java @@ -58,7 +58,8 @@ import java.util.*; public class IndelRealigner extends ReadWalker { 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) protected String intervalsFile = null; @@ -214,10 +215,18 @@ public class IndelRealigner extends ReadWalker { header.setSortOrder(SAMFileHeader.SortOrder.queryname); 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"); programRecord.setProgramVersion(headerInfo.getString("org.broadinstitute.sting.gatk.version")); - header.addProgramRecord( programRecord ); + + List oldRecords = header.getProgramRecords(); + List newRecords = new ArrayList(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); diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java index b95655c18..7d876ddff 100644 --- a/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/recalibration/TableRecalibrationWalker.java @@ -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 public class TableRecalibrationWalker extends ReadWalker { + public static final String PROGRAM_RECORD_NAME = "GATK TableRecalibration"; + ///////////////////////////// // Shared Arguments ///////////////////////////// @@ -89,7 +91,7 @@ public class TableRecalibrationWalker extends ReadWalker oldRecords = header.getProgramRecords(); + List newRecords = new ArrayList(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 OUTPUT_BAM.writeHeader( header );