From 71eb51833468d6072ee46f80d6109dacab7c47cf Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Tue, 3 Feb 2015 17:24:48 +0100 Subject: [PATCH] Change to option types --- .../sasc/biopet/pipelines/basty/Basty.scala | 2 +- .../extensions/gatk/BaseRecalibrator.scala | 2 +- .../biopet/extensions/gatk/GatkGeneral.scala | 4 +-- .../biopet/pipelines/gatk/GatkPipeline.scala | 3 +- .../pipelines/gatk/GatkVariantcalling.scala | 3 -- .../core/BiopetCommandLineFunctionTrait.scala | 6 ++-- .../lumc/sasc/biopet/extensions/Bowtie.scala | 2 +- .../sasc/biopet/extensions/Cutadapt.scala | 4 +-- .../lumc/sasc/biopet/extensions/Raxml.scala | 4 +-- .../sasc/biopet/extensions/RunGubbins.scala | 14 ++++----- .../lumc/sasc/biopet/extensions/Sickle.scala | 4 +-- .../sasc/biopet/extensions/bwa/BwaMem.scala | 12 ++++---- .../extensions/macs2/Macs2CallPeak.scala | 20 +++++++------ .../extensions/picard/MarkDuplicates.scala | 12 ++++---- .../extensions/picard/MergeSamFiles.scala | 2 +- .../biopet/extensions/picard/Picard.scala | 4 +-- .../biopet/extensions/picard/SamToFastq.scala | 4 +-- .../extensions/samtools/SamtoolsMpileup.scala | 2 +- .../biopet/extensions/seqtk/SeqtkSeq.scala | 4 +-- .../sasc/biopet/pipelines/carp/Carp.scala | 8 ++--- .../pipelines/flexiprep/Flexiprep.scala | 27 +++++++++-------- .../biopet/pipelines/mapping/Mapping.scala | 14 ++++----- .../sasc/biopet/pipelines/sage/Sage.scala | 30 +++++++++---------- 23 files changed, 94 insertions(+), 93 deletions(-) diff --git a/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala b/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala index c260f4561..f71dfefb7 100644 --- a/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala +++ b/protected/basty/src/main/scala/nl/lumc/sasc/biopet/pipelines/basty/Basty.scala @@ -124,7 +124,7 @@ class Basty(val root: Configurable) extends QScript with MultiSampleQScript { val gubbins = new RunGubbins(this) gubbins.fastafile = concensusVariants - gubbins.startingTree = raxmlBi.getBipartitionsFile + gubbins.startingTree = Some(raxmlBi.getBipartitionsFile) gubbins.outputDirectory = outputDir + dirSufixGubbins add(gubbins) } diff --git a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/BaseRecalibrator.scala b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/BaseRecalibrator.scala index 3912958a5..c07a2a66c 100644 --- a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/BaseRecalibrator.scala +++ b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/BaseRecalibrator.scala @@ -12,7 +12,7 @@ class BaseRecalibrator(val root: Configurable) extends org.broadinstitute.gatk.q memoryLimit = Option(4) override val defaultVmem = "8G" - if (config.contains("scattercount")) scatterCount = config("scattercount") + if (config.contains("scattercount")) scatterCount = config("scattercount", default = 1) if (config.contains("dbsnp")) knownSites :+= new File(config("dbsnp").asString) if (config.contains("known_sites")) knownSites :+= new File(config("known_sites").asString) } diff --git a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/GatkGeneral.scala b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/GatkGeneral.scala index dc7cc5e40..147398ac7 100644 --- a/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/GatkGeneral.scala +++ b/protected/biopet-gatk-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/gatk/GatkGeneral.scala @@ -19,7 +19,7 @@ trait GatkGeneral extends CommandLineGATK with BiopetJavaCommandLineFunction { if (config.contains("intervals")) intervals = config("intervals").asFileList if (config.contains("exclude_intervals")) excludeIntervals = config("exclude_intervals").asFileList - reference_sequence = config("reference") - gatk_key = config("gatk_key") + reference_sequence = config("reference", required = true) + if (config.contains("gatk_key")) gatk_key = config("gatk_key") if (config.contains("pedigree")) pedigree = config("pedigree").asFileList } diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala index 88600e576..0c8844790 100644 --- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala +++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkPipeline.scala @@ -36,7 +36,6 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri var singleSampleCalling = config("single_sample_calling", default = true) var reference: File = config("reference", required = true) - var dbsnp: File = config("dbsnp") var useAllelesOption: Boolean = config("use_alleles_option", default = false) val externalGvcfs = config("external_gvcfs_files", default = Nil).asFileList @@ -72,7 +71,7 @@ class GatkPipeline(val root: Configurable) extends QScript with MultiSampleQScri samToFastq.isIntermediate = true qscript.add(samToFastq) mapping.input_R1 = samToFastq.fastqR1 - mapping.input_R2 = samToFastq.fastqR2 + mapping.input_R2 = Some(samToFastq.fastqR2) mapping.init mapping.biopetScript addAll(mapping.functions) // Add functions of mapping to curent function pool diff --git a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala index 759181117..230eff772 100644 --- a/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala +++ b/protected/biopet-gatk-pipelines/src/main/scala/nl/lumc/sasc/biopet/pipelines/gatk/GatkVariantcalling.scala @@ -32,9 +32,6 @@ class GatkVariantcalling(val root: Configurable) extends QScript with BiopetQScr @Argument(doc = "Reference", shortName = "R", required = false) var reference: File = config("reference", required = true) - @Argument(doc = "Dbsnp", shortName = "dbsnp", required = false) - var dbsnp: File = config("dbsnp") - @Argument(doc = "OutputName", required = false) var outputName: String = _ diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala index 57c635935..91f156ac4 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala @@ -38,7 +38,7 @@ trait BiopetCommandLineFunctionTrait extends CommandLineFunction with Configurab val defaultThreads = 1 @Argument(doc = "Vmem", required = false) - var vmem: String = _ + var vmem: Option[String] = None val defaultVmem: String = "" @Argument(doc = "Executable", required = false) @@ -58,9 +58,9 @@ trait BiopetCommandLineFunctionTrait extends CommandLineFunction with Configurab if (threads == 0) threads = getThreads(defaultThreads) if (threads > 1) nCoresRequest = Option(threads) - if (vmem == null) { + if (vmem.isEmpty) { vmem = config("vmem") - if (vmem == null && !defaultVmem.isEmpty) vmem = defaultVmem + if (vmem.isEmpty && !defaultVmem.isEmpty) vmem = Some(defaultVmem) } if (vmem != null) jobResourceRequests :+= "h_vmem=" + vmem jobName = configName + ":" + firstOutput.getName diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala index 7f670a444..e192a845b 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Bowtie.scala @@ -43,7 +43,7 @@ class Bowtie(val root: Configurable) extends BiopetCommandLineFunction { override val defaultThreads = 8 var sam: Boolean = config("sam", default = true) - var sam_RG: String = config("sam-RG") + var sam_RG: Option[String] = config("sam-RG") var seedlen: Option[Int] = config("seedlen") var seedmms: Option[Int] = config("seedmms") var k: Option[Int] = config("k") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala index ba145e2aa..e7a5a319e 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Cutadapt.scala @@ -43,8 +43,8 @@ class Cutadapt(val root: Configurable) extends BiopetCommandLineFunction { if (config.contains("front")) for (adapter <- config("front").asList) opt_front += adapter.toString var opt_discard: Boolean = config("discard", default = false) - var opt_minimum_length: String = config("minimum_length", 1) - var opt_maximum_length: String = config("maximum_length") + var opt_minimum_length: Option[Int] = config("minimum_length", 1) + var opt_maximum_length: Option[Int] = config("maximum_length") def cmdLine = required(executable) + // options diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala index f73582371..4f6236179 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Raxml.scala @@ -60,11 +60,11 @@ class Raxml(val root: Configurable) extends BiopetCommandLineFunction { private var out: List[File] = Nil var executableNonThreads: String = config("exe", default = "raxmlHPC") - var executableThreads: String = config("exe_pthreads") + var executableThreads: Option[String] = config("exe_pthreads") override def afterGraph { if (threads == 0) threads = getThreads(defaultThreads) - executable = if (threads > 1 && executableThreads != null) executableThreads else executableNonThreads + executable = if (threads > 1 && executableThreads.isDefined) executableThreads.get else executableNonThreads super.afterGraph out +:= getInfoFile f match { diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala index 6c8892c9b..b87e3cb1e 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/RunGubbins.scala @@ -24,7 +24,7 @@ import org.broadinstitute.gatk.utils.commandline.{ Argument, Input, Output } class RunGubbins(val root: Configurable) extends BiopetCommandLineFunction { @Input(doc = "Contaminants", required = false) - var startingTree: File = config("starting_tree") + var startingTree: Option[File] = config("starting_tree") @Input(doc = "Fasta file", shortName = "FQ") var fastafile: File = _ @@ -36,21 +36,21 @@ class RunGubbins(val root: Configurable) extends BiopetCommandLineFunction { var outputDirectory: String = _ executable = config("exe", default = "run_gubbins.py") - var outgroup: String = config("outgroup") - var filterPercentage: String = config("filter_percentage") - var treeBuilder: String = config("tree_builder") + var outgroup: Option[String] = config("outgroup") + var filterPercentage: Option[String] = config("filter_percentage") + var treeBuilder: Option[String] = config("tree_builder") var iterations: Option[Int] = config("iterations") var minSnps: Option[Int] = config("min_snps") - var convergeMethod: String = config("converge_method") + var convergeMethod: Option[String] = config("converge_method") var useTimeStamp: Boolean = config("use_time_stamp", default = false) - var prefix: String = config("prefix") + var prefix: Option[String] = config("prefix") var verbose: Boolean = config("verbose", default = false) var noCleanup: Boolean = config("no_cleanup", default = false) override def afterGraph: Unit = { super.afterGraph jobLocalDir = new File(outputDirectory) - if (prefix == null) prefix = fastafile.getName + if (prefix.isEmpty) prefix = Some(fastafile.getName) val out: List[String] = List(".recombination_predictions.embl", ".recombination_predictions.gff", ".branch_base_reconstruction.embl", diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala index 5c068b9ee..5056c70ab 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/Sickle.scala @@ -43,7 +43,7 @@ class Sickle(val root: Configurable) extends BiopetCommandLineFunction { var fastqc: Fastqc = _ executable = config("exe", default = "sickle", freeVar = false) - var qualityType: String = config("qualitytype") + var qualityType: Option[String] = config("qualitytype") var qualityThreshold: Option[Int] = config("qualityThreshold") var lengthThreshold: Option[Int] = config("lengthThreshold") var noFiveprime: Boolean = config("noFiveprime", default = false) @@ -54,7 +54,7 @@ class Sickle(val root: Configurable) extends BiopetCommandLineFunction { override def versionCommand = executable + " --version" override def afterGraph { - if (qualityType == null && defaultQualityType != null) qualityType = defaultQualityType + if (qualityType.isEmpty) qualityType = Some(defaultQualityType) } def cmdLine = { diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala index 09401898a..fc790b183 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/bwa/BwaMem.scala @@ -34,7 +34,7 @@ class BwaMem(val root: Configurable) extends Bwa { @Output(doc = "Output file SAM", shortName = "output") var output: File = _ - var R: String = config("R") + var R: Option[String] = config("R") var k: Option[Int] = config("k") var r: Option[Float] = config("r") var S: Boolean = config("S", default = false) @@ -49,11 +49,11 @@ class BwaMem(val root: Configurable) extends Bwa { var e: Boolean = config("e", default = false) var A: Option[Int] = config("A") var B: Option[Int] = config("B") - var O: String = config("O") - var E: String = config("E") - var L: String = config("L") + var O: Option[String] = config("O") + var E: Option[String] = config("E") + var L: Option[String] = config("L") var U: Option[Int] = config("U") - var x: String = config("x") + var x: Option[String] = config("x") var p: Boolean = config("p", default = false) var v: Option[Int] = config("v") var T: Option[Int] = config("T") @@ -61,7 +61,7 @@ class BwaMem(val root: Configurable) extends Bwa { var a: Boolean = config("a", default = false) var C: Boolean = config("C", default = false) var Y: Boolean = config("Y", default = false) - var I: String = config("I") + var I: Option[String] = config("I") override val defaultVmem = "6G" override val defaultThreads = 8 diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala index 0722e99a2..e6a9c48e9 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/macs2/Macs2CallPeak.scala @@ -30,12 +30,12 @@ class Macs2CallPeak(val root: Configurable) extends Macs2 { @Output(doc = "Output file gappedPeak") private var output_gapped: File = _ - var fileformat: String = config("fileformat") + var fileformat: Option[String] = config("fileformat") var gsize: Option[Float] = config("gsize") var keepdup: Boolean = config("keep-dup", default = false) var buffersize: Option[Int] = config("buffer-size") - var outputdir: String = config("outputDir") - var name: String = config("name") + var outputdir: String = _ + var name: Option[String] = config("name") var bdg: Boolean = config("bdg", default = false) var verbose: Boolean = config("verbose", default = false) var tsize: Option[Int] = config("tsize") @@ -56,12 +56,14 @@ class Macs2CallPeak(val root: Configurable) extends Macs2 { var callsummits: Boolean = config("callsummits", default = false) override def afterGraph: Unit = { - output_narrow = new File(outputdir + name + ".narrowPeak") - output_broad = new File(outputdir + name + ".broadPeak") - output_xls = new File(outputdir + name + ".xls") - output_bdg = new File(outputdir + name + ".bdg") - output_r = new File(outputdir + name + ".r") - output_gapped = new File(outputdir + name + ".gappedPeak") + if (name.isEmpty) throw new IllegalArgumentException("Name is not defined") + if (outputdir == null) throw new IllegalArgumentException("Outputdir is not defined") + output_narrow = new File(outputdir + name.get + ".narrowPeak") + output_broad = new File(outputdir + name.get + ".broadPeak") + output_xls = new File(outputdir + name.get + ".xls") + output_bdg = new File(outputdir + name.get + ".bdg") + output_r = new File(outputdir + name.get + ".r") + output_gapped = new File(outputdir + name.get + ".gappedPeak") } def cmdLine = { diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala index f88304a0a..6df04c12c 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MarkDuplicates.scala @@ -32,19 +32,19 @@ class MarkDuplicates(val root: Configurable) extends Picard { var outputMetrics: File = _ @Argument(doc = "PROGRAM_RECORD_ID", required = false) - var programRecordId: String = config("programrecordid") + var programRecordId: Option[String] = config("programrecordid") @Argument(doc = "PROGRAM_GROUP_VERSION", required = false) - var programGroupVersion: String = config("programgroupversion") + var programGroupVersion: Option[String] = config("programgroupversion") @Argument(doc = "PROGRAM_GROUP_COMMAND_LINE", required = false) - var programGroupCommandLine: String = config("programgroupcommandline") + var programGroupCommandLine: Option[String] = config("programgroupcommandline") @Argument(doc = "PROGRAM_GROUP_NAME", required = false) - var programGroupName: String = config("programgroupname") + var programGroupName: Option[String] = config("programgroupname") @Argument(doc = "COMMENT", required = false) - var comment: String = config("comment") + var comment: Option[String] = config("comment") @Argument(doc = "REMOVE_DUPLICATES", required = false) var removeDuplicates: Boolean = config("removeduplicates", default = false) @@ -62,7 +62,7 @@ class MarkDuplicates(val root: Configurable) extends Picard { var sortingCollectionSizeRatio: Option[Double] = config("sortingCollectionSizeRatio") @Argument(doc = "READ_NAME_REGEX", required = false) - var readNameRegex: String = config("readNameRegex") + var readNameRegex: Option[String] = config("readNameRegex") @Argument(doc = "OPTICAL_DUPLICATE_PIXEL_DISTANCE", required = false) var opticalDuplicatePixelDistance: Option[Int] = config("opticalDuplicatePixelDistance") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala index b1327bc3a..4de143498 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/MergeSamFiles.scala @@ -41,7 +41,7 @@ class MergeSamFiles(val root: Configurable) extends Picard { var useThreading: Boolean = config("use_threading", default = false) @Argument(doc = "COMMENT", required = false) - var comment: String = config("comment") + var comment: Option[String] = config("comment") override def commandLine = super.commandLine + repeat("INPUT=", input, spaceSeparated = false) + diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala index cc571ca7d..e417a85fd 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/Picard.scala @@ -22,13 +22,13 @@ abstract class Picard extends BiopetJavaCommandLineFunction { override def subPath = "picard" :: super.subPath @Argument(doc = "VERBOSITY", required = false) - var verbosity: String = config("verbosity") + var verbosity: Option[String] = config("verbosity") @Argument(doc = "QUIET", required = false) var quiet: Boolean = config("quiet", default = false) @Argument(doc = "VALIDATION_STRINGENCY", required = false) - var stringency: String = config("validationstringency") + var stringency: Option[String] = config("validationstringency") @Argument(doc = "COMPRESSION_LEVEL", required = false) var compression: Option[Int] = config("compressionlevel") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala index cb61cc4a8..db784ee2b 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/picard/SamToFastq.scala @@ -38,7 +38,7 @@ class SamToFastq(val root: Configurable) extends Picard { var outputPerRg: Boolean = config("outputPerRg", default = false) @Argument(doc = "Output dir", required = false) - var outputDir: String = config("outputDir") + var outputDir: String = _ @Argument(doc = "re reverse", required = false) var reReverse: Boolean = config("reReverse", default = false) @@ -53,7 +53,7 @@ class SamToFastq(val root: Configurable) extends Picard { var clippingAtribute: String = config("clippingAtribute") @Argument(doc = "clippingAction", required = false) - var clippingAction: String = config("clippingAction") + var clippingAction: Option[String] = config("clippingAction") @Argument(doc = "read1Trim", required = false) var read1Trim: Option[Int] = config("read1Trim") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala index f0e6457a4..b8a3a2d0e 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/samtools/SamtoolsMpileup.scala @@ -30,7 +30,7 @@ class SamtoolsMpileup(val root: Configurable) extends Samtools { var reference: File = config("reference") @Input(doc = "Interval bed") - var intervalBed: File = config("interval_bed") + var intervalBed: Option[File] = config("interval_bed") var disableBaq: Boolean = config("disable_baq") var minMapQuality: Option[Int] = config("min_map_quality") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala index be42104c0..9838040cc 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/seqtk/SeqtkSeq.scala @@ -37,7 +37,7 @@ class SeqtkSeq(val root: Configurable) extends Seqtk { var q: Option[Int] = config("q") /** masked bases converted to CHAR; 0 for lowercase [0] */ - var n: String = config("n") + var n: Option[String] = config("n") /** number of residues per line; 0 for 2^32-1 [0] */ var l: Option[Int] = config("l") @@ -52,7 +52,7 @@ class SeqtkSeq(val root: Configurable) extends Seqtk { var f: Option[Int] = config("f") /** mask regions in BED or name list FILE [null] */ - var M: File = config("M") + var M: Option[File] = config("M") /** drop sequences with length shorter than INT [0] */ var L: Option[Int] = config("L") diff --git a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala index b06c01f57..f0ff3f4eb 100644 --- a/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala +++ b/public/carp/src/main/scala/nl/lumc/sasc/biopet/pipelines/carp/Carp.scala @@ -86,8 +86,8 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript { val macs2 = new Macs2CallPeak(qscript) macs2.treatment = bamFile - macs2.name = sampleId - macs2.outputdir = sampleDir + "macs2/" + macs2.name + "/" + macs2.name = Some(sampleId) + macs2.outputdir = sampleDir + "macs2/" + sampleId + "/" add(macs2) } } @@ -113,8 +113,8 @@ class Carp(val root: Configurable) extends QScript with MultiSampleQScript { val macs2 = new Macs2CallPeak(this) macs2.treatment = sample.bamFile macs2.control = samples(controlId).bamFile - macs2.name = sampleId + "_VS_" + controlId - macs2.outputdir = sample.sampleDir + "/" + "macs2/" + macs2.name + "/" + macs2.name = Some(sampleId + "_VS_" + controlId) + macs2.outputdir = sample.sampleDir + "/" + "macs2/" + macs2.name.get + "/" add(macs2) } } diff --git a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala index db5c638fd..42ea3b6d9 100644 --- a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala +++ b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/Flexiprep.scala @@ -30,7 +30,7 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { var input_R1: File = _ @Input(doc = "R2 fastq file (gzipped allowed)", shortName = "R2", required = false) - var input_R2: File = _ + var input_R2: Option[File] = _ /** Skip Trim fastq files */ var skipTrim: Boolean = config("skip_trim", default = false) @@ -63,7 +63,6 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { if (sampleId == null) throw new IllegalStateException("Missing Sample name on flexiprep module") if (libraryId == null) throw new IllegalStateException("Missing Library name on flexiprep module") else if (!outputDir.endsWith("/")) outputDir += "/" - paired = (input_R2 != null) if (input_R1.endsWith(".gz")) R1_name = input_R1.getName.substring(0, input_R1.getName.lastIndexOf(".gz")) else if (input_R1.endsWith(".gzip")) R1_name = input_R1.getName.substring(0, input_R1.getName.lastIndexOf(".gzip")) @@ -71,12 +70,16 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { R1_ext = R1_name.substring(R1_name.lastIndexOf("."), R1_name.size) R1_name = R1_name.substring(0, R1_name.lastIndexOf(R1_ext)) - if (paired) { - if (input_R2.endsWith(".gz")) R2_name = input_R2.getName.substring(0, input_R2.getName.lastIndexOf(".gz")) - else if (input_R2.endsWith(".gzip")) R2_name = input_R2.getName.substring(0, input_R2.getName.lastIndexOf(".gzip")) - else R2_name = input_R2.getName - R2_ext = R2_name.substring(R2_name.lastIndexOf("."), R2_name.size) - R2_name = R2_name.substring(0, R2_name.lastIndexOf(R2_ext)) + input_R2 match { + case Some(fileR2) => { + paired = true + if (fileR2.endsWith(".gz")) R2_name = fileR2.getName.substring(0, fileR2.getName.lastIndexOf(".gz")) + else if (fileR2.endsWith(".gzip")) R2_name = fileR2.getName.substring(0, fileR2.getName.lastIndexOf(".gzip")) + else R2_name = fileR2.getName + R2_ext = R2_name.substring(R2_name.lastIndexOf("."), R2_name.size) + R2_name = R2_name.substring(0, R2_name.lastIndexOf(R2_ext)) + } + case _ => } summary.out = outputDir + sampleId + "-" + libraryId + ".qc.summary.json" @@ -95,7 +98,7 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { def runInitialJobs() { outputFiles += ("fastq_input_R1" -> extractIfNeeded(input_R1, outputDir)) - if (paired) outputFiles += ("fastq_input_R2" -> extractIfNeeded(input_R2, outputDir)) + if (paired) outputFiles += ("fastq_input_R2" -> extractIfNeeded(input_R2.get, outputDir)) fastqc_R1 = Fastqc(this, input_R1, outputDir + "/" + R1_name + ".fastqc/") add(fastqc_R1) @@ -107,12 +110,12 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { summary.addMd5sum(md5sum_R1, R2 = false, after = false) if (paired) { - fastqc_R2 = Fastqc(this, input_R2, outputDir + "/" + R2_name + ".fastqc/") + fastqc_R2 = Fastqc(this, input_R2.get, outputDir + "/" + R2_name + ".fastqc/") add(fastqc_R2) summary.addFastqc(fastqc_R2, R2 = true) outputFiles += ("fastqc_R2" -> fastqc_R2.output) - val md5sum_R2 = Md5sum(this, input_R2, outputDir) + val md5sum_R2 = Md5sum(this, input_R2.get, outputDir) add(md5sum_R2) summary.addMd5sum(md5sum_R2, R2 = true, after = false) } @@ -278,7 +281,7 @@ class Flexiprep(val root: Configurable) extends QScript with BiopetQScript { add(zcatCommand) return newFile } else if (file.getName().endsWith(".bz2")) { - var newFile = swapExt(runDir, file, ".bz2", "") + val newFile = swapExt(runDir, file, ".bz2", "") val pbzip2 = Pbzip2(this, file, newFile) pbzip2.isIntermediate = true add(pbzip2) diff --git a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala index 7ed86a669..e1080ff0f 100644 --- a/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala +++ b/public/mapping/src/main/scala/nl/lumc/sasc/biopet/pipelines/mapping/Mapping.scala @@ -36,7 +36,7 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { var input_R1: File = _ @Input(doc = "R2 fastq file", shortName = "R2", required = false) - var input_R2: File = _ + var input_R2: Option[File] = None /** Output name */ var outputName: String = _ @@ -98,7 +98,7 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { if (outputDir == null) throw new IllegalStateException("Missing Output directory on mapping module") else if (!outputDir.endsWith("/")) outputDir += "/" if (input_R1 == null) throw new IllegalStateException("Missing FastQ R1 on mapping module") - paired = (input_R2 != null) + paired = input_R2.isDefined if (libraryId == null) libraryId = config("library_id") if (sampleId == null) sampleId = config("sample_id") @@ -125,7 +125,7 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { if (!skipFlexiprep) { flexiprep.outputDir = outputDir + "flexiprep" + File.separator flexiprep.input_R1 = input_R1 - if (paired) flexiprep.input_R2 = input_R2 + flexiprep.input_R2 = input_R2 flexiprep.sampleId = this.sampleId flexiprep.libraryId = this.libraryId flexiprep.init @@ -144,10 +144,10 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { if (chunking) for (t <- 1 to numberChunks.getOrElse(1)) { val chunkDir = outputDir + "chunks/" + t + "/" chunks += (chunkDir -> (removeGz(chunkDir + input_R1.getName), - if (paired) removeGz(chunkDir + input_R2.getName) else "")) + if (paired) removeGz(chunkDir + input_R2.get.getName) else "")) } else chunks += (outputDir -> (flexiprep.extractIfNeeded(input_R1, flexiprep.outputDir), - flexiprep.extractIfNeeded(input_R2, flexiprep.outputDir))) + flexiprep.extractIfNeeded(input_R2.getOrElse(null), flexiprep.outputDir))) if (chunking) { val fastSplitter_R1 = new FastqSplitter(this) @@ -158,7 +158,7 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { if (paired) { val fastSplitter_R2 = new FastqSplitter(this) - fastSplitter_R2.input = input_R2 + fastSplitter_R2.input = input_R2.get for ((chunkDir, fastqfile) <- chunks) fastSplitter_R2.output :+= fastqfile._2 fastSplitter_R2.isIntermediate = true add(fastSplitter_R2) @@ -265,7 +265,7 @@ class Mapping(val root: Configurable) extends QScript with BiopetQScript { bwaCommand.R1 = R1 if (paired) bwaCommand.R2 = R2 bwaCommand.deps = deps - bwaCommand.R = getReadGroup + bwaCommand.R = Some(getReadGroup) bwaCommand.output = swapExt(output.getParent, output, ".bam", ".sam") bwaCommand.isIntermediate = true add(bwaCommand) diff --git a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala index 03be2ded6..c8b5c7030 100644 --- a/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala +++ b/public/sage/src/main/scala/nl/lumc/sasc/biopet/pipelines/sage/Sage.scala @@ -35,13 +35,13 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript { qscript => def this() = this(null) - var countBed: File = config("count_bed") + var countBed: Option[File] = config("count_bed") - var squishedCountBed: File = config("squished_count_bed") + var squishedCountBed: Option[File] = config("squished_count_bed") - var transcriptome: File = config("transcriptome") + var transcriptome: Option[File] = config("transcriptome") - var tagsLibrary: File = config("tags_library") + var tagsLibrary: Option[File] = config("tags_library") override def defaults = ConfigUtils.mergeMaps(Map("bowtie" -> Map( "m" -> 1, @@ -127,28 +127,28 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript { def init() { if (!outputDir.endsWith("/")) outputDir += "/" - if (transcriptome == null && tagsLibrary == null) + if (transcriptome.isEmpty && tagsLibrary.isEmpty) throw new IllegalStateException("No transcriptome or taglib found") if (countBed == null && squishedCountBed == null) throw new IllegalStateException("No bedfile supplied, please add a countBed or squishedCountBed") } def biopetScript() { - if (squishedCountBed == null) { - val squishBed = SquishBed(this, countBed, outputDir) + if (squishedCountBed.isEmpty) { + val squishBed = SquishBed(this, countBed.get, outputDir) add(squishBed) - squishedCountBed = squishBed.output + squishedCountBed = Some(squishBed.output) } - if (tagsLibrary == null) { + if (tagsLibrary.isEmpty) { val cdl = new SageCreateLibrary(this) - cdl.input = transcriptome + cdl.input = transcriptome.get cdl.output = outputDir + "taglib/tag.lib" cdl.noAntiTagsOutput = outputDir + "taglib/no_antisense_genes.txt" cdl.noTagsOutput = outputDir + "taglib/no_sense_genes.txt" cdl.allGenesOutput = outputDir + "taglib/all_genes.txt" add(cdl) - tagsLibrary = cdl.output + tagsLibrary = Some(cdl.output) } addSamplesJobs() @@ -158,19 +158,19 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript { } def addBedtoolsCounts(bamFile: File, outputPrefix: String, outputDir: String) { - val bedtoolsSense = BedtoolsCoverage(this, bamFile, squishedCountBed, outputDir + outputPrefix + ".genome.sense.coverage", + val bedtoolsSense = BedtoolsCoverage(this, bamFile, squishedCountBed.get, outputDir + outputPrefix + ".genome.sense.coverage", depth = false, sameStrand = true, diffStrand = false) val countSense = new BedtoolsCoverageToCounts(this) countSense.input = bedtoolsSense.output countSense.output = outputDir + outputPrefix + ".genome.sense.counts" - val bedtoolsAntisense = BedtoolsCoverage(this, bamFile, squishedCountBed, outputDir + outputPrefix + ".genome.antisense.coverage", + val bedtoolsAntisense = BedtoolsCoverage(this, bamFile, squishedCountBed.get, outputDir + outputPrefix + ".genome.antisense.coverage", depth = false, sameStrand = false, diffStrand = true) val countAntisense = new BedtoolsCoverageToCounts(this) countAntisense.input = bedtoolsAntisense.output countAntisense.output = outputDir + outputPrefix + ".genome.antisense.counts" - val bedtools = BedtoolsCoverage(this, bamFile, squishedCountBed, outputDir + outputPrefix + ".genome.coverage", + val bedtools = BedtoolsCoverage(this, bamFile, squishedCountBed.get, outputDir + outputPrefix + ".genome.coverage", depth = false, sameStrand = false, diffStrand = false) val count = new BedtoolsCoverageToCounts(this) count.input = bedtools.output @@ -187,7 +187,7 @@ class Sage(val root: Configurable) extends QScript with MultiSampleQScript { val createTagCounts = new SageCreateTagCounts(this) createTagCounts.input = countFastq.output - createTagCounts.tagLib = tagsLibrary + createTagCounts.tagLib = tagsLibrary.get createTagCounts.countSense = outputDir + outputPrefix + ".tagcount.sense.counts" createTagCounts.countAllSense = outputDir + outputPrefix + ".tagcount.all.sense.counts" createTagCounts.countAntiSense = outputDir + outputPrefix + ".tagcount.antisense.counts" -- GitLab