From 03c15ef352d4459f83692c0230e47e32a0660d92 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Tue, 29 Dec 2015 13:06:45 +0100 Subject: [PATCH] Added combine reads for GearsSingle --- .../biopet/pipelines/gears/CombineReads.scala | 48 +++++++++++++++++-- .../biopet/pipelines/gears/GearsSingle.scala | 12 ++--- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/CombineReads.scala b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/CombineReads.scala index a6c269b7b..cd14d2323 100644 --- a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/CombineReads.scala +++ b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/CombineReads.scala @@ -2,7 +2,8 @@ package nl.lumc.sasc.biopet.pipelines.gears import nl.lumc.sasc.biopet.core.SampleLibraryTag import nl.lumc.sasc.biopet.core.summary.SummaryQScript -import nl.lumc.sasc.biopet.extensions.Flash +import nl.lumc.sasc.biopet.extensions.{Cutadapt, Flash} +import nl.lumc.sasc.biopet.pipelines.flexiprep.Fastqc import nl.lumc.sasc.biopet.utils.config.Configurable import org.broadinstitute.gatk.queue.QScript @@ -15,18 +16,59 @@ class CombineReads(val root: Configurable) extends QScript with SummaryQScript w @Input(doc = "R2 reads in FastQ format", shortName = "R2", required = false) var fastqR2: File = _ - + + override def fixedValues = Map("flash" -> Map("compress" -> true)) + /** Init for pipeline */ def init(): Unit = { } + private lazy val flash = new Flash(this) + + private lazy val forwardPrimers: List[String] = config("forward_primers") + private lazy val reversePrimers: List[String] = config("reverse_primers") + + def combinedFastq: File = if ((forwardPrimers :: reversePrimers).nonEmpty) + swapExt(outputDir, flash.combinedFastq, ".fastq.gz", ".clip.fastq.gz") + else flash.combinedFastq + + def notCombinedR1Fastq: File = if ((forwardPrimers :: reversePrimers).nonEmpty) + swapExt(outputDir, flash.notCombinedR1, ".fastq.gz", ".clip.fastq.gz") + else flash.notCombinedR1 + + def notCombinedR2Fastq: File = if ((forwardPrimers :: reversePrimers).nonEmpty) + swapExt(outputDir, flash.notCombinedR2, ".fastq.gz", ".clip.fastq.gz") + else flash.notCombinedR2 + /** Pipeline itself */ def biopetScript(): Unit = { - val flash = new Flash(this) flash.outputDirectory = new File(outputDir, "flash") flash.fastqR1 = fastqR1 flash.fastqR2 = fastqR2 + flash.isIntermediate = (forwardPrimers ::: reversePrimers).nonEmpty add(flash) + + if ((forwardPrimers ::: reversePrimers).nonEmpty) { + val cutadapt = new Cutadapt(this) + cutadapt.fastq_input = flash.combinedFastq + cutadapt.fastq_output = this.combinedFastq + cutadapt.stats_output = swapExt(outputDir, cutadapt.fastq_output, ".fastq.gz", ".stats") + cutadapt.opt_anywhere ++= (forwardPrimers ::: reversePrimers) + add(cutadapt) + addSummarizable(cutadapt, "cutadapt") + } + + val combinedFastqc = Fastqc(this, this.combinedFastq, new File(outputDir, "combined_fastqc")) + add(combinedFastqc) + addSummarizable(combinedFastqc, "fastqc_combined") + + val notCombinedR1Fastqc = Fastqc(this, this.combinedFastq, new File(outputDir, "not_combined_R1_fastqc")) + add(notCombinedR1Fastqc) + addSummarizable(notCombinedR1Fastqc, "fastqc_not_combined_R1") + + val notCombinedR2Fastqc = Fastqc(this, this.combinedFastq, new File(outputDir, "not_combined_R2_fastqc")) + add(notCombinedR2Fastqc) + addSummarizable(notCombinedR2Fastqc, "fastqc_not_combined_R2") } /** Must return a map with used settings for this pipeline */ diff --git a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsSingle.scala b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsSingle.scala index 0cf2d0f00..f94fe96e2 100644 --- a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsSingle.scala +++ b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsSingle.scala @@ -104,12 +104,12 @@ class GearsSingle(val root: Configurable) extends QScript with SummaryQScript wi lazy val combinedFastq = { r2 match { case Some(r2) => - val flash = new Flash(this) - flash.outputDirectory = new File(outputDir, "combine_reads_flash") - flash.fastqR1 = r1 - flash.fastqR2 = r2 - add(flash) - flash.combinedFastq + val combineReads = new CombineReads(this) + combineReads.outputDir = new File(outputDir, "combine_reads") + combineReads.fastqR1 = r1 + combineReads.fastqR2 = r2 + add(combineReads) + combineReads.combinedFastq case _ => r1 } } -- GitLab