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 506b3433ebd76e783012ab8829d95bc7e20b71e7..4ae4dc3c23b3c607d6f765125c9a370a3a9599e1 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 54370bf2f4638868d88c722065e0597a1b0b0379..c33f8318feb3fe28664810f9abafe9a5a17c854d 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 c93cfa7a4c550ea34842e0f1d812eaac332f21d8..c153011bb168a67e31c32e20d330b39bbf57f1df 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 7d46c4b8fb910398f61e9fb3b873f682efaf023f..b3233ecfecbf070a36cf5db6aaf73f0a8cf4aa07 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 d23fa37b98f768c7484cb92c3ede9c5377c2cd13..dff7842238b1cd345ff40785fb8dec759070f1f4 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 94b3bcbe619ee5b01bd29bea6aa9b9e707934a6d..ee755a384446d8b06ef139387e14416146845ece 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 a3a148331ba7181d06ce5b7ad4c769d6a05044fe..de8cb8f5d15ec1dac873ba44e241b96111bd7096 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")