From 7860ff7981510b67e6f4af4aeff73ef19ee2f245 Mon Sep 17 00:00:00 2001 From: Guillermo del Angel Date: Mon, 22 Oct 2012 19:59:15 -0400 Subject: [PATCH] a) Resolve [#DEV-56] - test data with indels in new directory private/testdata/CMITestData/. b) Skeleton (not yet working) of fastq-BAM unit test, c) misc bug fixes for QC functions to work (not done yet) --- .../picard/CollectGcBiasMetrics.scala | 5 +- .../picard/CollectMultipleMetrics.scala | 4 +- .../picard/PicardMetricsFunction.scala | 53 +++++++++++++++++++ 3 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 public/scala/src/org/broadinstitute/sting/queue/extensions/picard/PicardMetricsFunction.scala diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectGcBiasMetrics.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectGcBiasMetrics.scala index e783422b3..cba6ce2bb 100644 --- a/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectGcBiasMetrics.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectGcBiasMetrics.scala @@ -11,8 +11,8 @@ import java.io.File * To change this template use File | Settings | File Templates. */ class CollectGcBiasMetrics extends org.broadinstitute.sting.queue.function.JavaCommandLineFunction with PicardMetricsFunction { - analysisName = "CalculateGcMetrics" - javaMainClass = "net.sf.picard.analysis.GcBiasSummaryMetrics" + analysisName = "CollectGcBiasMetrics" + javaMainClass = "net.sf.picard.analysis.CollectGcBiasMetrics" @Input(doc="The input SAM or BAM files to analyze. Must be coordinate sorted.", shortName = "input", fullName = "input_bam_files", required = true) var input: Seq[File] = Nil @@ -26,6 +26,7 @@ class CollectGcBiasMetrics extends org.broadinstitute.sting.queue.function.JavaC override def inputBams = input override def outputFile = output override def commandLine = super.commandLine + + required("SUMMARY_OUTPUT=" + output) + required("CHART_OUTPUT=" + output+".pdf") + required("REFERENCE_SEQUENCE=" + reference) + required("ASSUME_SORTED=true") diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectMultipleMetrics.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectMultipleMetrics.scala index eab6c79ce..b9af5258c 100644 --- a/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectMultipleMetrics.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/CollectMultipleMetrics.scala @@ -11,8 +11,8 @@ import java.io.File * To change this template use File | Settings | File Templates. */ class CollectMultipleMetrics extends org.broadinstitute.sting.queue.function.JavaCommandLineFunction with PicardMetricsFunction{ - analysisName = "CalculateMultipleMetrics" - javaMainClass = "net.sf.picard.analysis.CalculateMultipleMetrics" + analysisName = "CollectMultipleMetrics" + javaMainClass = "net.sf.picard.analysis.CollectMultipleMetrics" @Input(doc="The input SAM or BAM files to analyze. Must be coordinate sorted.", shortName = "input", fullName = "input_bam_files", required = true) var input: Seq[File] = Nil diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/PicardMetricsFunction.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/PicardMetricsFunction.scala new file mode 100644 index 000000000..89169e972 --- /dev/null +++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/picard/PicardMetricsFunction.scala @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2012, The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.queue.extensions.picard + +import java.io.File +import org.broadinstitute.sting.queue.function.JavaCommandLineFunction +import net.sf.samtools.SAMFileReader.ValidationStringency +import net.sf.samtools.SAMFileHeader.SortOrder + +/** + * Wraps a Picard function that operates on BAM files but doesn't output a new BAM file (i.e. QC metric files). + * See http://picard.sourceforge.net/ for more info. + * + * Since the various BAM utilities take slightly different arguments + * some values are optional. + */ +trait PicardMetricsFunction extends JavaCommandLineFunction { + var validationStringency = ValidationStringency.SILENT + var maxRecordsInRam: Option[Int] = None + var assumeSorted: Option[Boolean] = None + protected def inputBams: Seq[File] + protected def outputFile: File + + abstract override def commandLine = super.commandLine + + repeat("INPUT=", inputBams, spaceSeparated=false) + + required("TMP_DIR=" + jobTempDir) + + optional("VALIDATION_STRINGENCY=", validationStringency, spaceSeparated=false) + + optional("OUTPUT=", outputFile, spaceSeparated=false) + + optional("MAX_RECORDS_IN_RAM=", maxRecordsInRam, spaceSeparated=false) + + optional("ASSUME_SORTED=", assumeSorted, spaceSeparated=false) +}