diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala index f60aeeca83c20ad810ad2183a8938137200a0ee3..81c992b4d5911af0b9a808e7750d15f1078c44e9 100644 --- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala +++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala @@ -35,6 +35,9 @@ trait MultiSampleQScript extends SummaryQScript { /** Overrules config of qscript with default sample */ val config = new ConfigFunctions(defaultSample = sampleId) + /** Sample specific settings */ + def summarySettings: Map[String, Any] = Map() + /** Library class with basic functions build in */ abstract class AbstractLibrary(val libId: String) extends Summarizable { /** Overrules config of qscript with default sample and default library */ @@ -45,6 +48,9 @@ trait MultiSampleQScript extends SummaryQScript { qscript.addSummarizable(summarizable, name, Some(sampleId), Some(libId)) } + /** Library specific settings */ + def summarySettings: Map[String, Any] = Map() + /** Adds the library jobs */ final def addAndTrackJobs(): Unit = { if (nameRegex.findFirstIn(libId) == None) diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala index 7b8f34ecbb8108d53c342df2f4112df973f702c3..3af28669c8efac499d88ac0bdbdc98f25fb35b96 100644 --- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala +++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/summary/WriteSummary.scala @@ -18,7 +18,7 @@ package nl.lumc.sasc.biopet.core.summary import java.io.{ File, PrintWriter } import nl.lumc.sasc.biopet.utils.config.Configurable -import nl.lumc.sasc.biopet.core.{ Version, BiopetCommandLineFunction, BiopetJavaCommandLineFunction, SampleLibraryTag } +import nl.lumc.sasc.biopet.core._ import nl.lumc.sasc.biopet.utils.ConfigUtils import nl.lumc.sasc.biopet.{ LastCommitHash, Version } import org.broadinstitute.gatk.queue.function.{ InProcessFunction, QFunction } @@ -99,12 +99,26 @@ class WriteSummary(val root: Configurable) extends InProcessFunction with Config ).toMap } - val map = Map(qscript.summaryName -> ((if (settings.isEmpty) Map[String, Any]() else Map("settings" -> settings)) ++ - (if (files.isEmpty) Map[String, Any]() else Map("files" -> Map("pipeline" -> files))) ++ - (if (executables.isEmpty) Map[String, Any]() else Map("executables" -> executables.toMap)))) + val map = Map(qscript.summaryName -> (Map( + "settings" -> settings, + "files" -> Map("pipeline" -> files), + "executables" -> executables.toMap)) + ) qscript match { case tag: SampleLibraryTag => prefixSampleLibrary(map, tag.sampleId, tag.libId) + case q:MultiSampleQScript => { + q.samples.map { case (sampleName,sample) => + sampleName -> Map( + qscript.summaryName -> Map("settings" -> sample.summarySettings), + "libraries" -> sample.libraries.map { case (libName, lib) => + sampleName -> Map( + qscript.summaryName -> Map("settings" -> lib) + ) + } + ) + } ++ map + } case _ => map } }