From 7e1495dcd4ed1dcdae5973e93c46f330da5ffa7a Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Tue, 27 Oct 2015 13:45:39 +0100 Subject: [PATCH] Implemented sample specific settings in the summary --- .../sasc/biopet/core/MultiSampleQScript.scala | 6 +++++ .../biopet/core/summary/WriteSummary.scala | 22 +++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) 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 f60aeeca8..81c992b4d 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 7b8f34ecb..3af28669c 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 } } -- GitLab