From ec4a870a0f66b9ac4e0d143975b21500fded738a Mon Sep 17 00:00:00 2001 From: Mauricio Carneiro Date: Fri, 16 Mar 2012 14:09:07 -0400 Subject: [PATCH] Added @PG tag to ReduceReads Pulled out the functionality from Indel Realigner and Table Recalibrator into Utils.setupWriter to make everyone else's life's easier if they want to include the PG tag in their walkers. --- .../org/broadinstitute/sting/utils/Utils.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/public/java/src/org/broadinstitute/sting/utils/Utils.java b/public/java/src/org/broadinstitute/sting/utils/Utils.java index 10bc050da..a824fefab 100755 --- a/public/java/src/org/broadinstitute/sting/utils/Utils.java +++ b/public/java/src/org/broadinstitute/sting/utils/Utils.java @@ -25,9 +25,14 @@ package org.broadinstitute.sting.utils; +import net.sf.samtools.SAMFileHeader; +import net.sf.samtools.SAMProgramRecord; import net.sf.samtools.util.StringUtil; import org.apache.log4j.Logger; +import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; +import org.broadinstitute.sting.gatk.io.StingSAMFileWriter; import org.broadinstitute.sting.utils.collections.Pair; +import org.broadinstitute.sting.utils.text.TextFormattingUtils; import java.net.InetAddress; import java.util.*; @@ -668,4 +673,34 @@ public class Utils { array[i] = value; } + public static void setupWriter(StingSAMFileWriter writer, GenomeAnalysisEngine toolkit, boolean preSorted, boolean KEEP_ALL_PG_RECORDS, Object walker, String PROGRAM_RECORD_NAME) { + final SAMProgramRecord programRecord = createProgramRecord(toolkit, walker, PROGRAM_RECORD_NAME); + + SAMFileHeader header = toolkit.getSAMFileHeader(); + List oldRecords = header.getProgramRecords(); + List newRecords = new ArrayList(oldRecords.size()+1); + for ( SAMProgramRecord record : oldRecords ) + if ( !record.getId().startsWith(PROGRAM_RECORD_NAME) || KEEP_ALL_PG_RECORDS ) + newRecords.add(record); + + newRecords.add(programRecord); + header.setProgramRecords(newRecords); + + writer.writeHeader(header); + writer.setPresorted(preSorted); + } + + public static SAMProgramRecord createProgramRecord(GenomeAnalysisEngine toolkit, Object walker, String PROGRAM_RECORD_NAME) { + final SAMProgramRecord programRecord = new SAMProgramRecord(PROGRAM_RECORD_NAME); + final ResourceBundle headerInfo = TextFormattingUtils.loadResourceBundle("StingText"); + try { + final String version = headerInfo.getString("org.broadinstitute.sting.gatk.version"); + programRecord.setProgramVersion(version); + } catch (MissingResourceException e) { + // couldn't care less if the resource is missing... + } + programRecord.setCommandLine(toolkit.createApproximateCommandLineArgumentString(toolkit, walker)); + return programRecord; + } + }