From 21182480323d51e8ecff72b56aa8668cb921dd1a Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Fri, 27 Feb 2015 16:30:52 +0100 Subject: [PATCH] Make samples and libraries Summarizable --- .../lumc/sasc/biopet/pipelines/basty/Basty.scala | 15 +++++++++++++++ .../sasc/biopet/pipelines/gatk/GatkPipeline.scala | 8 ++++++++ .../sasc/biopet/core/MultiSampleQScript.scala | 11 ++++++++--- .../pipelines/MultisamplePipelineTemplate.scala | 14 ++++++++++++++ .../nl/lumc/sasc/biopet/pipelines/carp/Carp.scala | 8 ++++++++ .../sasc/biopet/pipelines/kopisu/Kopisu.scala | 14 ++++++++++++++ .../nl/lumc/sasc/biopet/pipelines/sage/Sage.scala | 14 ++++++++++++++ 7 files changed, 81 insertions(+), 3 deletions(-) diff --git a/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala b/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala index 506b3433e..4ae4dc3c2 100644 --- a/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala +++ b/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala @@ -31,10 +31,24 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { var gatkPipeline: GatkPipeline = new GatkPipeline(qscript) + def summaryFile: File = new File(outputDir, "Sage.summary.json") + + def summaryFiles: Map[String, File] = Map() + + def summarySettings: Map[String, Any] = Map() + def makeSample(id: String) = new Sample(id) class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + protected def addJobs(): Unit = {} } @@ -56,6 +70,7 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { def biopetScript() { gatkPipeline.biopetScript addAll(gatkPipeline.functions) + addSummaryQScript(gatkPipeline) addSamplesJobs() } diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala index 54370bf2f..c33f8318f 100644 --- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala +++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala @@ -49,8 +49,16 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri def makeSample(id: String) = new Sample(id) class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + val mapping = new Mapping(qscript) mapping.sampleId = Some(sampleId) mapping.libId = Some(libId) diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala index c93cfa7a4..c153011bb 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala @@ -18,13 +18,16 @@ package nl.lumc.sasc.biopet.core import java.io.File import nl.lumc.sasc.biopet.core.config.{ Config } +import nl.lumc.sasc.biopet.core.summary.{ SummaryQScript, Summarizable } import nl.lumc.sasc.biopet.utils.ConfigUtils import org.broadinstitute.gatk.utils.commandline.{ Argument } /** * This trait creates a structured way of use multisample pipelines */ -trait MultiSampleQScript extends BiopetQScript { +trait MultiSampleQScript extends SummaryQScript { + qscript => + @Argument(doc = "Only Sample", shortName = "sample", required = false) private val onlySamples: List[String] = Nil @@ -34,7 +37,7 @@ trait MultiSampleQScript extends BiopetQScript { * Sample class with basic functions build in * @param sampleId */ - abstract class AbstractSample(val sampleId: String) { + abstract class AbstractSample(val sampleId: String) extends Summarizable { /** Overrules config of qscript with default sample */ val config = new ConfigFunctions(defaultSample = sampleId) @@ -42,7 +45,7 @@ trait MultiSampleQScript extends BiopetQScript { * Library class with basic functions build in * @param libId */ - abstract class AbstractLibrary(val libId: String) { + abstract class AbstractLibrary(val libId: String) extends Summarizable { /** Overrules config of qscript with default sample and default library */ val config = new ConfigFunctions(defaultSample = sampleId, defaultLibrary = libId) @@ -51,6 +54,7 @@ trait MultiSampleQScript extends BiopetQScript { currentSample = Some(sampleId) currentLib = Some(libId) addJobs() + addSummarizable(this, "pipeline", Some(sampleId), Some(libId)) currentLib = None currentSample = None } @@ -87,6 +91,7 @@ trait MultiSampleQScript extends BiopetQScript { final def addAndTrackJobs(): Unit = { currentSample = Some(sampleId) addJobs() + addSummarizable(this, "pipeline", Some(sampleId)) currentSample = None } diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/MultisamplePipelineTemplate.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/MultisamplePipelineTemplate.scala index 7d46c4b8f..b3233ecfe 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/MultisamplePipelineTemplate.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/pipelines/MultisamplePipelineTemplate.scala @@ -22,11 +22,25 @@ import org.broadinstitute.gatk.queue.QScript class MultisamplePipelineTemplate(val root: Configurable) extends QScript with MultiSampleQScript { def this() = this(null) + def summaryFile: File = new File(outputDir, "MultisamplePipelineTemplate.summary.json") + + def summaryFiles: Map[String, File] = Map() + + def summarySettings: Map[String, Any] = Map() + def makeSample(id: String) = new Sample(id) + class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + protected def addJobs(): Unit = { // Library jobs } diff --git a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala index d23fa37b9..dff784223 100644 --- a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala +++ b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala @@ -51,8 +51,16 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript with def makeSample(id: String) = new Sample(id) class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + val mapping = new Mapping(qscript) mapping.libId = Some(libId) mapping.sampleId = Some(sampleId) diff --git a/public/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/Kopisu.scala b/public/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/Kopisu.scala index 94b3bcbe6..ee755a384 100644 --- a/public/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/Kopisu.scala +++ b/public/kopisu/src/main/scala/nl/lumc/sasc/biopet/pipelines/kopisu/Kopisu.scala @@ -33,10 +33,24 @@ class Kopisu(val root: Configurable) extends QScript with MultiSampleQScript { addSamplesJobs() } + def summaryFile: File = new File(outputDir, "Kopisu.summary.json") + + def summaryFiles: Map[String, File] = Map() + + def summarySettings: Map[String, Any] = Map() + def makeSample(id: String) = new Sample(id) class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def addJobs(): Unit = { } diff --git a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala index a3a148331..de8cb8f5d 100644 --- a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala +++ b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala @@ -58,10 +58,24 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript { ) ), super.defaults) + def summaryFile: File = new File(outputDir, "Sage.summary.json") + + def summaryFiles: Map[String, File] = Map() + + def summarySettings: Map[String, Any] = Map() + def makeSample(id: String) = new Sample(id) class Sample(sampleId: String) extends AbstractSample(sampleId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + def makeLibrary(id: String) = new Library(id) class Library(libId: String) extends AbstractLibrary(libId) { + def summaryFiles: Map[String, File] = Map() + + def summaryStats: Map[String, Any] = Map() + val inputFastq: File = config("R1") val prefixFastq: File = createFile(".prefix.fastq") -- GitLab