Skip to content
Snippets Groups Projects
Commit 3049d572 authored by Wai Yi Leung's avatar Wai Yi Leung
Browse files

Update Cutadapt wrapper and style change (camelCaps instead of _)

parent 564081d7
No related branches found
No related tags found
No related merge requests found
...@@ -26,19 +26,19 @@ import scala.collection.mutable ...@@ -26,19 +26,19 @@ import scala.collection.mutable
import scala.io.Source import scala.io.Source
/** /**
* Extension for cutadapt * Extension for cutadapt
* Started with version 1.5 * Started with version 1.5
* Updated to version 1.9 (18-01-2016 by wyleung) * Updated to version 1.9 (18-01-2016 by wyleung)
* */ */
class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Summarizable with Version { class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Summarizable with Version {
@Input(doc = "Input fastq file") @Input(doc = "Input fastq file")
var fastq_input: File = _ var fastqInput: File = _
@Output @Output
var fastq_output: File = _ var fastqOutput: File = _
@Output(doc = "Output statistics file") @Output(doc = "Output statistics file")
var stats_output: File = _ var statsOutput: File = _
executable = config("exe", default = "cutadapt") executable = config("exe", default = "cutadapt")
def versionCommand = executable + " --version" def versionCommand = executable + " --version"
...@@ -47,10 +47,10 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -47,10 +47,10 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
/** Name of the key containing clipped adapters information in the summary stats. */ /** Name of the key containing clipped adapters information in the summary stats. */
def adaptersStatsName = "adapters" def adaptersStatsName = "adapters"
var default_clip_mode: String = config("default_clip_mode", default = "3") var defaultClipMode: String = config("default_clip_mode", default = "3")
var opt_adapter: Set[String] = config("adapter", default = Nil) var adapter: Set[String] = config("adapter", default = Nil)
var opt_anywhere: Set[String] = config("anywhere", default = Nil) var anywhere: Set[String] = config("anywhere", default = Nil)
var opt_front: Set[String] = config("front", default = Nil) var front: Set[String] = config("front", default = Nil)
var errorRate: Option[Double] = config("error_rate") var errorRate: Option[Double] = config("error_rate")
var noIndels: Boolean = config("no_indels", default = false) var noIndels: Boolean = config("no_indels", default = false)
...@@ -60,17 +60,17 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -60,17 +60,17 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
var noMatchAdapterWildcards: Boolean = config("no_match_adapter_wildcards", default = false) // specific for 1.9 var noMatchAdapterWildcards: Boolean = config("no_match_adapter_wildcards", default = false) // specific for 1.9
/** Options for filtering of processed reads */ /** Options for filtering of processed reads */
var opt_discard: Boolean = config("discard", default = false) var discard: Boolean = config("discard", default = false)
var trimmed_only: Boolean = config("trimmed_only", default = false) var trimmedOnly: Boolean = config("trimmed_only", default = false)
var opt_minimum_length: Int = config("minimum_length", 1) var minimumLength: Int = config("minimum_length", 1)
var opt_maximum_length: Option[Int] = config("maximum_length") var maximumLength: Option[Int] = config("maximum_length")
var noTrim: Boolean = config("no_trim", default = false) var noTrim: Boolean = config("no_trim", default = false)
var maxN: Option[Int] = config("max_n") // specific for 1.9 var maxN: Option[Int] = config("max_n") // specific for 1.9
var maskAdapter: Boolean = config("mask_adapter", default = false) var maskAdapter: Boolean = config("mask_adapter", default = false)
/** Options that influence what gets output to where */ /** Options that influence what gets output to where */
var quiet: Boolean = config("quiet", default = false) var quiet: Boolean = config("quiet", default = false)
// var output: File // see up @Output // var output: File // see up @Output
var infoFile: Option[File] = config("info_file") var infoFile: Option[File] = config("info_file")
var restFile: Option[File] = config("rest_file") var restFile: Option[File] = config("rest_file")
var wildcardFile: Option[File] = config("wildcard_file") var wildcardFile: Option[File] = config("wildcard_file")
...@@ -89,31 +89,30 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -89,31 +89,30 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
var lengthTag: Option[String] = config("length_tag") var lengthTag: Option[String] = config("length_tag")
/** Colorspace options */ /** Colorspace options */
var colorspace: Boolean = config("colorspace", default=false) var colorspace: Boolean = config("colorspace", default = false)
var doubleEncode: Boolean = config("double_encode", default=false) var doubleEncode: Boolean = config("double_encode", default = false)
var trimPrimer: Boolean = config("trim_primer", default=false) var trimPrimer: Boolean = config("trim_primer", default = false)
var stripF3: Boolean = config("strip_f3", default=false) var stripF3: Boolean = config("strip_f3", default = false)
var maq: Boolean = config("maq", default=false) var maq: Boolean = config("maq", default = false)
var bwa: Boolean = config("bwa", default=false) var bwa: Boolean = config("bwa", default = false)
var noZeroCap: Boolean = config("no_zero_cap", default= false) var noZeroCap: Boolean = config("no_zero_cap", default = false)
var zeroCap: Boolean = config("zero_cap", default=false) var zeroCap: Boolean = config("zero_cap", default = false)
/** Paired end options */ /** Paired end options */
var peAdapter: Set[String] = config("pe_adapter", default = Nil) var peAdapter: Set[String] = config("pe_adapter", default = Nil)
var peAdapterFront: Set[String] = config("pe_adapter_front", default = Nil) var peAdapterFront: Set[String] = config("pe_adapter_front", default = Nil)
var peAdapterBoth: Set[String] = config("pe_adapter_both", default = Nil) var peAdapterBoth: Set[String] = config("pe_adapter_both", default = Nil)
var peCut: Boolean = config("pe_cut", default=false) var peCut: Boolean = config("pe_cut", default = false)
var pairedOutput: Option[File] = config("paired_output") var pairedOutput: Option[File] = config("paired_output")
var interleaved: Boolean = config("interleaved", default=false) var interleaved: Boolean = config("interleaved", default = false)
var untrimmedPairedOutput: Option[File] = config("untrimmed_paired_output") var untrimmedPairedOutput: Option[File] = config("untrimmed_paired_output")
/** return commandline to execute */ /** return commandline to execute */
def cmdLine = required(executable) + def cmdLine = required(executable) +
// Options that influence how the adapters are found // Options that influence how the adapters are found
repeat("-a", opt_adapter) + repeat("-a", adapter) +
repeat("-b", opt_anywhere) + repeat("-b", anywhere) +
repeat("-g", opt_front) + repeat("-g", front) +
optional("--error-rate", errorRate) + optional("--error-rate", errorRate) +
conditional(noIndels, "--no-indels") + conditional(noIndels, "--no-indels") +
optional("--times", times) + optional("--times", times) +
...@@ -121,10 +120,10 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -121,10 +120,10 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
conditional(matchReadWildcards, "--match-read-wildcards") + conditional(matchReadWildcards, "--match-read-wildcards") +
conditional(noMatchAdapterWildcards, "--no-match-adapter-wildcards") + conditional(noMatchAdapterWildcards, "--no-match-adapter-wildcards") +
// Options for filtering of processed reads // Options for filtering of processed reads
conditional(opt_discard, "--discard") + conditional(discard, "--discard") +
conditional(trimmed_only, "--trimmed-only") + conditional(trimmedOnly, "--trimmed-only") +
optional("-m", opt_minimum_length) + optional("-m", minimumLength) +
optional("-M", opt_maximum_length) + optional("-M", maximumLength) +
conditional(noTrim, "--no-trim") + conditional(noTrim, "--no-trim") +
optional("--max-n", maxN) + optional("--max-n", maxN) +
conditional(maskAdapter, "--mask-adapter") + conditional(maskAdapter, "--mask-adapter") +
...@@ -160,9 +159,9 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -160,9 +159,9 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
optional("--paired-output", pairedOutput) + optional("--paired-output", pairedOutput) +
optional("--untrimmed-paired-output", untrimmedPairedOutput) + optional("--untrimmed-paired-output", untrimmedPairedOutput) +
// input / output // input / output
required(fastq_input) + required(fastqInput) +
(if (outputAsStsout) "" else required("--output", fastq_output) + (if (outputAsStsout) "" else required("--output", fastqOutput) +
" > " + required(stats_output)) " > " + required(statsOutput))
/** Output summary stats */ /** Output summary stats */
def summaryStats: Map[String, Any] = { def summaryStats: Map[String, Any] = {
...@@ -174,7 +173,7 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su ...@@ -174,7 +173,7 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction with Su
val stats: mutable.Map[String, Int] = mutable.Map("trimmed" -> 0, "tooshort" -> 0, "toolong" -> 0) val stats: mutable.Map[String, Int] = mutable.Map("trimmed" -> 0, "tooshort" -> 0, "toolong" -> 0)
val adapter_stats: mutable.Map[String, Int] = mutable.Map() val adapter_stats: mutable.Map[String, Int] = mutable.Map()
if (stats_output.exists) for (line <- Source.fromFile(stats_output).getLines()) { if (statsOutput.exists) for (line <- Source.fromFile(statsOutput).getLines()) {
line match { line match {
case trimR(m) => stats += ("trimmed" -> m.toInt) case trimR(m) => stats += ("trimmed" -> m.toInt)
case tooShortR(m) => stats += ("tooshort" -> m.toInt) case tooShortR(m) => stats += ("tooshort" -> m.toInt)
......
...@@ -46,16 +46,16 @@ class Cutadapt(root: Configurable, fastqc: Fastqc) extends nl.lumc.sasc.biopet.e ...@@ -46,16 +46,16 @@ class Cutadapt(root: Configurable, fastqc: Fastqc) extends nl.lumc.sasc.biopet.e
// adapter sequence is clipped but not found by FastQC ~ should not happen since all clipped adapter // adapter sequence is clipped but not found by FastQC ~ should not happen since all clipped adapter
// sequences come from FastQC // sequences come from FastQC
case _ => case _ =>
throw new IllegalStateException(s"Adapter '$seq' is clipped but not found by FastQC in '$fastq_input'.") throw new IllegalStateException(s"Adapter '$seq' is clipped but not found by FastQC in '$fastqInput'.")
} }
// FastQC found no adapters // FastQC found no adapters
case otherwise => case otherwise =>
; ;
logger.debug(s"No adapters found for summarizing in '$fastq_input'.") logger.debug(s"No adapters found for summarizing in '$fastqInput'.")
None None
} }
// "adapters" key not found ~ something went wrong in our part // "adapters" key not found ~ something went wrong in our part
case _ => throw new RuntimeException(s"Required key 'adapters' not found in stats entry '$fastq_input'.") case _ => throw new RuntimeException(s"Required key 'adapters' not found in stats entry '$fastqInput'.")
} }
initStats.updated(adaptersStatsName, adapterCounts) initStats.updated(adaptersStatsName, adapterCounts)
} }
......
...@@ -102,12 +102,12 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman ...@@ -102,12 +102,12 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman
val foundAdapters = fastqc.foundAdapters.map(_.seq) val foundAdapters = fastqc.foundAdapters.map(_.seq)
if (foundAdapters.nonEmpty) { if (foundAdapters.nonEmpty) {
val cutadapt = new Cutadapt(root, fastqc) val cutadapt = new Cutadapt(root, fastqc)
cutadapt.fastq_input = seqtk.output cutadapt.fastqInput = seqtk.output
cutadapt.fastq_output = new File(output.getParentFile, input.getName + ".cutadapt.fq") cutadapt.fastqOutput = new File(output.getParentFile, input.getName + ".cutadapt.fq")
cutadapt.stats_output = new File(flexiprep.outputDir, s"${flexiprep.sampleId.getOrElse("x")}-${flexiprep.libId.getOrElse("x")}.$read.clip.stats") cutadapt.statsOutput = new File(flexiprep.outputDir, s"${flexiprep.sampleId.getOrElse("x")}-${flexiprep.libId.getOrElse("x")}.$read.clip.stats")
if (cutadapt.default_clip_mode == "3") cutadapt.opt_adapter ++= foundAdapters if (cutadapt.defaultClipMode == "3") cutadapt.adapter ++= foundAdapters
else if (cutadapt.default_clip_mode == "5") cutadapt.opt_front ++= foundAdapters else if (cutadapt.defaultClipMode == "5") cutadapt.front ++= foundAdapters
else if (cutadapt.default_clip_mode == "both") cutadapt.opt_anywhere ++= foundAdapters else if (cutadapt.defaultClipMode == "both") cutadapt.anywhere ++= foundAdapters
addPipeJob(cutadapt) addPipeJob(cutadapt)
Some(cutadapt) Some(cutadapt)
} else None } else None
...@@ -117,7 +117,7 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman ...@@ -117,7 +117,7 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman
val sickle = new Sickle(root) val sickle = new Sickle(root)
sickle.output_stats = new File(flexiprep.outputDir, s"${flexiprep.sampleId.getOrElse("x")}-${flexiprep.libId.getOrElse("x")}.$read.trim.stats") sickle.output_stats = new File(flexiprep.outputDir, s"${flexiprep.sampleId.getOrElse("x")}-${flexiprep.libId.getOrElse("x")}.$read.trim.stats")
sickle.input_R1 = clip match { sickle.input_R1 = clip match {
case Some(c) => c.fastq_output case Some(c) => c.fastqOutput
case _ => seqtk.output case _ => seqtk.output
} }
sickle.output_R1 = new File(output.getParentFile, input.getName + ".sickle.fq") sickle.output_R1 = new File(output.getParentFile, input.getName + ".sickle.fq")
...@@ -127,7 +127,7 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman ...@@ -127,7 +127,7 @@ class QcCommand(val root: Configurable, val fastqc: Fastqc) extends BiopetComman
val outputFile = (clip, trim) match { val outputFile = (clip, trim) match {
case (_, Some(t)) => t.output_R1 case (_, Some(t)) => t.output_R1
case (Some(c), _) => c.fastq_output case (Some(c), _) => c.fastqOutput
case _ => seqtk.output case _ => seqtk.output
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment