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