From 5448ee5880e98f93ff5e2feac8025e65fab37153 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Tue, 27 Oct 2015 15:19:42 +0100 Subject: [PATCH] Added input files to summary of shiva --- .../biopet/pipelines/shiva/ShivaTrait.scala | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTrait.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTrait.scala index 8a0cdb439..c51eb6331 100644 --- a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTrait.scala +++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaTrait.scala @@ -91,11 +91,13 @@ trait ShivaTrait extends MultiSampleQScript with Reference { class Library(libId: String) extends AbstractLibrary(libId) { /** Library specific files to add to the summary */ def summaryFiles: Map[String, File] = { - (bamFile, preProcessBam) match { + ((bamFile, preProcessBam) match { case (Some(b), Some(pb)) => Map("bamFile" -> b, "preProcessBam" -> pb) case (Some(b), _) => Map("bamFile" -> b) case _ => Map() - } + }) ++ (inputR1.map("input_R1" -> _) :: + inputR2.map("input_R2" -> _) :: + inputBam.map("input_bam" -> _) :: Nil).flatten.toMap } /** Library specific stats to add to summary */ @@ -117,8 +119,12 @@ trait ShivaTrait extends MultiSampleQScript with Reference { (Some(mapping), Some(mapping.finalBamFile), preProcess(mapping.finalBamFile)) } + lazy val inputR1: Option[File] = config("R1") + lazy val inputR2: Option[File] = config("R2") + lazy val inputBam: Option[File] = if (r1.isEmpty) config("bam") else None + lazy val (mapping, bamFile, preProcessBam): (Option[Mapping], Option[File], Option[File]) = - (config.contains("R1"), config.contains("bam")) match { + (inputR1.isDefined, inputBam.isDefined) match { case (true, _) => makeMapping // Default starting from fastq files case (false, true) => // Starting from bam file config("bam_to_fastq", default = false).asBoolean match { @@ -137,18 +143,18 @@ trait ShivaTrait extends MultiSampleQScript with Reference { /** This will add jobs for this library */ def addJobs(): Unit = { - (config.contains("R1"), config.contains("bam")) match { + (inputR1.isDefined, inputBam.isDefined) match { case (true, _) => mapping.foreach(mapping => { - mapping.input_R1 = config("R1") - mapping.input_R2 = config("R2") + mapping.input_R1 = inputR1.get + mapping.input_R2 = inputR2 inputFiles :+= new InputFile(mapping.input_R1, config("R1_md5")) mapping.input_R2.foreach(inputFiles :+= new InputFile(_, config("R2_md5"))) }) case (false, true) => { - inputFiles :+= new InputFile(config("bam"), config("bam_md5")) + inputFiles :+= new InputFile(inputBam.get, config("bam_md5")) config("bam_to_fastq", default = false).asBoolean match { case true => - val samToFastq = SamToFastq(qscript, config("bam"), + val samToFastq = SamToFastq(qscript, inputBam.get, new File(libDir, sampleId + "-" + libId + ".R1.fq.gz"), new File(libDir, sampleId + "-" + libId + ".R2.fq.gz")) samToFastq.isIntermediate = true @@ -158,7 +164,7 @@ trait ShivaTrait extends MultiSampleQScript with Reference { mapping.input_R2 = Some(samToFastq.fastqR2) }) case false => - val inputSam = SamReaderFactory.makeDefault.open(config("bam")) + val inputSam = SamReaderFactory.makeDefault.open(inputBam.get) val readGroups = inputSam.getFileHeader.getReadGroups val readGroupOke = readGroups.forall(readGroup => { @@ -170,8 +176,8 @@ trait ShivaTrait extends MultiSampleQScript with Reference { if (!readGroupOke) { if (config("correct_readgroups", default = false).asBoolean) { - logger.info("Correcting readgroups, file:" + config("bam")) - val aorrg = AddOrReplaceReadGroups(qscript, config("bam"), bamFile.get) + logger.info("Correcting readgroups, file:" + inputBam.get) + val aorrg = AddOrReplaceReadGroups(qscript, inputBam.get, bamFile.get) aorrg.RGID = sampleId + "-" + libId aorrg.RGLB = libId aorrg.RGSM = sampleId @@ -180,7 +186,7 @@ trait ShivaTrait extends MultiSampleQScript with Reference { } else throw new IllegalStateException("Sample readgroup and/or library of input bamfile is not correct, file: " + bamFile + "\nPlease note that it is possible to set 'correct_readgroups' to true in the config to automatic fix this") } else { - val oldBamFile: File = config("bam") + val oldBamFile: File = inputBam.get val oldIndex: File = new File(oldBamFile.getAbsolutePath.stripSuffix(".bam") + ".bai") val newIndex: File = new File(libDir, oldBamFile.getName.stripSuffix(".bam") + ".bai") val baiLn = Ln(qscript, oldIndex, newIndex) -- GitLab