diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/Breakdancer.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/Breakdancer.scala index 631e9d33b564d4a22b5ed79a93e893fd4d27f30f..8c6cbb13b730f4ad12e9db86aa310f5dbb0af76c 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/Breakdancer.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/Breakdancer.scala @@ -22,22 +22,22 @@ class BreakdancerConfig(val root: Configurable) extends BiopetCommandLineFunctio var min_insertsize: Option[Int] = config("min_insertsize", default = 450) var solid_data: Boolean = config("solid", default = false) var sd_cutoff: Option[Int] = config("sd_cutoff", default = 4) // Cutoff in unit of standard deviation [4] - + // we set this to a higher number to avoid biases in small numbers in sorted bams var min_observations: Option[Int] = config("min_observations", default = 10000) // Number of observation required to estimate mean and s.d. insert size [10_000] var coefvar_cutoff: Option[Int] = config("coef_cutoff", default = 1) // Cutoff on coefficients of variation [1] var histogram_bins: Option[Int] = config("histogram_bins", default = 50) // Number of bins in the histogram [50] - + def cmdLine = required(executable) + - optional("-q", min_mq) + - conditional(use_mq, "-m") + - optional("-s", min_insertsize) + - conditional(solid_data, "-s") + - optional("-c", sd_cutoff) + - optional("-n", min_observations) + - optional("-v", coefvar_cutoff) + - optional("-b", histogram_bins) + - required(input) + " 1> " + required(output) + optional("-q", min_mq) + + conditional(use_mq, "-m") + + optional("-s", min_insertsize) + + conditional(solid_data, "-s") + + optional("-c", sd_cutoff) + + optional("-n", min_observations) + + optional("-v", coefvar_cutoff) + + optional("-b", histogram_bins) + + required(input) + " 1> " + required(output) } object BreakdancerConfig { @@ -61,35 +61,30 @@ object BreakdancerConfig { private def swapExtension(inputFile: String) = inputFile.substring(0, inputFile.lastIndexOf(".bam")) + ".breakdancer.cfg" } - - - /* * The caller * **/ - -class BreakdancerCaller(val root: Configurable) extends BiopetCommandLineFunction { +class BreakdancerCaller(val root: Configurable) extends BiopetCommandLineFunction { executable = config("exe", default = "breakdancer-max", freeVar = false) - + override val defaultVmem = "6G" override val defaultThreads = 1 // breakdancer can only work on 1 single thread - + override val versionRegex = """.*[Vv]ersion:? (.*)""".r override val versionExitcode = List(1) override def versionCommand = executable - - + @Input(doc = "The breakdancer configuration file") var input: File = _ - -// @Argument(doc = "Work directory") -// var workdir: String = _ - - @Output(doc = "Breakdancer VCF output") + + // @Argument(doc = "Work directory") + // var workdir: String = _ + + @Output(doc = "Breakdancer TSV output") var output: File = _ - + /* Options: -o STRING operate on a single chromosome [all chromosome] @@ -115,36 +110,36 @@ class BreakdancerCaller(val root: Configurable) extends BiopetCommandLineFunctio var q: Option[Int] = config("qs", default = 35) var r: Option[Int] = config("r", default = 2) var x: Option[Int] = config("x", default = 1000) - var b: Option[Int] = config("b", default = 100) + var b: Option[Int] = config("b", default = 100) var t: Boolean = config("t", default = false) var d: String = config("d") var g: String = config("g") var l: Boolean = config("l", default = false) var a: Boolean = config("a", default = false) var h: Boolean = config("h", default = false) - var y: Option[Int] = config("y", default = 30) - + var y: Option[Int] = config("y", default = 30) + override def beforeCmd { } - def cmdLine = required(executable) + - optional("-s", s) + - optional("-c", c) + - optional("-m", m) + - optional("-q", q) + - optional("-r", r) + - optional("-x", x) + - optional("-b", b) + - conditional(t ,"-t") + - optional("-d", d) + - optional("-g", g) + - conditional(l ,"-l") + - conditional(a ,"-a") + - conditional(h ,"-h") + - optional("-y", y) + - required(input) + - ">" + - required(output) + def cmdLine = required(executable) + + optional("-s", s) + + optional("-c", c) + + optional("-m", m) + + optional("-q", q) + + optional("-r", r) + + optional("-x", x) + + optional("-b", b) + + conditional(t, "-t") + + optional("-d", d) + + optional("-g", g) + + conditional(l, "-l") + + conditional(a, "-a") + + conditional(h, "-h") + + optional("-y", y) + + required(input) + + ">" + + required(output) } object BreakdancerCaller { @@ -159,23 +154,18 @@ object BreakdancerCaller { /// Breakdancer is actually a mini pipeline executing binaries from the breakdancer package class Breakdancer(val root: Configurable) extends QScript with BiopetQScript { def this() = this(null) - + @Input(doc = "Input file (bam)") var input: File = _ @Input(doc = "Reference Fasta file") var reference: File = _ - + @Argument(doc = "Work directory") var workdir: String = _ - - var deps : List[File] = Nil - - @Output(doc = "Breakdancer VCF output") - lazy val outputvcf: File = { - new File(workdir + "/" + input.getName.substring(0, input.getName.lastIndexOf(".bam")) + ".breakdancer.vcf") - } - + + var deps: List[File] = Nil + @Output(doc = "Breakdancer config") lazy val configfile: File = { new File(workdir + "/" + input.getName.substring(0, input.getName.lastIndexOf(".bam")) + ".breakdancer.cfg") @@ -184,32 +174,35 @@ class Breakdancer(val root: Configurable) extends QScript with BiopetQScript { lazy val outputraw: File = { new File(workdir + "/" + input.getName.substring(0, input.getName.lastIndexOf(".bam")) + ".breakdancer.tsv") } - + @Output(doc = "Breakdancer VCF output") + lazy val outputvcf: File = { + new File(workdir + "/" + input.getName.substring(0, input.getName.lastIndexOf(".bam")) + ".breakdancer.vcf") + } + override def init() { } def biopetScript() { // read config and set all parameters for the pipeline logger.info("Starting Breakdancer configuration") - + val bdcfg = BreakdancerConfig(this, input, this.configfile) bdcfg.deps = this.deps - outputFiles += ("cfg" -> bdcfg.output ) - add( bdcfg ) - - val output_tsv: File = this.outputraw - val breakdancer = BreakdancerCaller( this, bdcfg.output, output_tsv ) - add( breakdancer ) - outputFiles += ("tsv" -> breakdancer.output ) - - val bdvcf = BreakdancerVCF( this, breakdancer.output, this.outputvcf ) - add( bdvcf ) - outputFiles += ("vcf" -> bdvcf.output ) + outputFiles += ("cfg" -> bdcfg.output) + add(bdcfg) + + val breakdancer = BreakdancerCaller(this, bdcfg.output, this.outputraw) + add(breakdancer) + outputFiles += ("tsv" -> breakdancer.output) + + val bdvcf = BreakdancerVCF(this, breakdancer.output, this.outputvcf) + add(bdvcf) + outputFiles += ("vcf" -> bdvcf.output) } } object Breakdancer extends PipelineCommand { - def apply(root: Configurable, input: File, reference: File, runDir: String): Breakdancer = { + def apply(root: Configurable, input: File, reference: File, runDir: String): Breakdancer = { val breakdancer = new Breakdancer(root) breakdancer.input = input breakdancer.reference = reference diff --git a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/BreakdancerVCF.scala b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/BreakdancerVCF.scala index 731b0f8292102218a856b6aa21da72a86261f7db..d23299ab800b0209f66bb3957261e76d5073f4be 100644 --- a/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/BreakdancerVCF.scala +++ b/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/extensions/svcallers/BreakdancerVCF.scala @@ -37,15 +37,15 @@ class BreakdancerVCF(val root: Configurable) extends PythonCommandLineFunction { def cmdLine = { getPythonCommand + - "-i " + required(input) + - "-o " + required(output) + "-i " + required(input) + + "-o " + required(output) } } object BreakdancerVCF { - def apply(root: Configurable, input:File, output:File): BreakdancerVCF = { + def apply(root: Configurable, input: File, output: File): BreakdancerVCF = { val bd = new BreakdancerVCF(root) - bd.input =input + bd.input = input bd.output = output return bd } diff --git a/biopet-framework/src/main/scripts/nl/lumc/sasc/biopet/extension/svcallers/breakdancer2vcf.py b/biopet-framework/src/main/scripts/nl/lumc/sasc/biopet/extensions/svcallers/breakdancer2vcf.py similarity index 100% rename from biopet-framework/src/main/scripts/nl/lumc/sasc/biopet/extension/svcallers/breakdancer2vcf.py rename to biopet-framework/src/main/scripts/nl/lumc/sasc/biopet/extensions/svcallers/breakdancer2vcf.py