From 027a6ff39ea1bcc0be8c1a5c47423a760c6ca502 Mon Sep 17 00:00:00 2001
From: Peter van 't Hof <p.j.van_t_hof@lumc.nl>
Date: Mon, 23 Jun 2014 12:41:06 +0200
Subject: [PATCH] Separated multisample functions to an other class

---
 .../sasc/biopet/core/MultiSampleQScript.scala | 43 +++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala

diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
new file mode 100644
index 000000000..ae5f3f7d0
--- /dev/null
+++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala
@@ -0,0 +1,43 @@
+package nl.lumc.sasc.biopet.core
+
+import java.io.File
+import nl.lumc.sasc.biopet.core.config.Configurable
+
+trait MultiSampleQScript extends BiopetQScript {
+  var samples:Map[String,Any] = Map()
+  
+  final def runSamplesJobs : Map[String,Map[String,File]] = {
+    var output: Map[String,Map[String,File]] = Map()
+    samples = config("samples")
+    if (globalConfig.contains("samples")) for ((key,value) <- samples) {
+      var sample = Configurable.any2map(value)
+      if (!sample.contains("ID")) sample += ("ID" -> key)
+      if (sample("ID") == key) {
+        var files:Map[String,List[File]] = runSingleSampleJobs(sample)
+      } else logger.warn("Key is not the same as ID on value for sample")
+    } else logger.warn("No Samples found in config")
+    return output
+  }
+  
+  def runSingleSampleJobs(sampleConfig:Map[String,Any]) : Map[String,List[File]]
+  def runSingleSampleJobs(sample:String) : Map[String,List[File]] ={
+    return runSingleSampleJobs(Configurable.any2map(samples(sample)))
+  }
+  
+  final def runRunsJobs(sampleConfig:Map[String,Any]) : Map[String,Map[String,File]] = {
+    var output: Map[String,Map[String,File]] = Map()
+    val sampleID = sampleConfig("ID")
+    if (sampleConfig.contains("runs")) {
+      val runs = Configurable.any2map(sampleConfig("runs"))
+      for ((key,value) <- runs) {
+        var run = Configurable.any2map(value)
+        if (!run.contains("ID")) run += ("ID" -> key)
+        if (run("ID") == key) {
+          output += key -> runSingleRunJobs(run, sampleConfig)
+        } else logger.warn("Key is not the same as ID on value for run of sample: " + sampleID)
+      }
+    } else logger.warn("No runs found in config for sample: " + sampleID)
+    return output
+  }
+  def runSingleRunJobs(runConfig:Map[String,Any], sampleConfig:Map[String,Any]) : Map[String,File]
+}
-- 
GitLab