From 2f38f1f11abf65339ea78634ff05d0b502bea2c7 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Mon, 26 May 2014 17:21:58 +0200 Subject: [PATCH] Added python parser to buildin python scripts --- .../nl/lumc/sasc/biopet/wrappers/Python.scala | 36 +++++++++++++++++++ .../flexiprep/scripts/FastqSync.scala | 36 +++++++++++++++++++ .../flexiprep/scripts/FastqcToContams.scala | 29 +++++++++++++++ .../flexiprep/scripts/FastqcToQualtype.scala | 27 ++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 biopet-framework/src/main/java/nl/lumc/sasc/biopet/wrappers/Python.scala create mode 100644 flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala create mode 100644 flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala create mode 100644 flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala diff --git a/biopet-framework/src/main/java/nl/lumc/sasc/biopet/wrappers/Python.scala b/biopet-framework/src/main/java/nl/lumc/sasc/biopet/wrappers/Python.scala new file mode 100644 index 000000000..5bda85e17 --- /dev/null +++ b/biopet-framework/src/main/java/nl/lumc/sasc/biopet/wrappers/Python.scala @@ -0,0 +1,36 @@ +package nl.lumc.sasc.biopet.wrappers + +import java.io.FileOutputStream +import nl.lumc.sasc.biopet.core._ +import org.broadinstitute.sting.queue.function.CommandLineFunction +import org.broadinstitute.sting.commandline._ +import java.io.File +import scala.collection.JavaConversions._ + +trait Python extends CommandLineFunction { + @Argument(doc="Pyhton exe", shortName="script") + var python_exe: String = "python" + @Input(doc="Pyhton script", shortName="script", required=false) + var python_script: File = _ + + private var python_script_name : String = _ + def setPythonScript(script:String, subpackage:String) { + python_script_name = script + //val pack = getClass.getPackage.toString.replaceAll(".", "/") + //logger.info(pack) +// for (r <- getClass.getClassLoader.getResources("/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/*")) { +// logger.info(r) +// logger.info(r.getContent) +// } + python_script = new File(".queue/tmp/" + subpackage + python_script_name) + if (!python_script.getParentFile.exists) python_script.getParentFile.mkdirs + val is = getClass.getResourceAsStream(subpackage + python_script_name) + val os = new FileOutputStream(python_script) + org.apache.commons.io.IOUtils.copy(is, os) + os.close() + } + + def getPythonCommand() : String = { + required(python_exe) + required(python_script) + } +} diff --git a/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala new file mode 100644 index 000000000..684729e75 --- /dev/null +++ b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqSync.scala @@ -0,0 +1,36 @@ +package nl.lumc.sasc.biopet.pipelines.flexiprep.scripts + +//import java.io.FileOutputStream +import nl.lumc.sasc.biopet.core._ +import nl.lumc.sasc.biopet.wrappers._ +import org.broadinstitute.sting.queue.function.CommandLineFunction +import org.broadinstitute.sting.commandline._ +import java.io.File + +class FastqSync(val globalConfig: Config) extends CommandLineFunction with Python { + def this() = this(new Config(Map())) + analysisName = "fastqsync" + val config: Config = globalConfig.getAsConfig(analysisName) + logger.debug("Config for " + analysisName + ": " + config) + + setPythonScript("__init__.py", "scripts/pyfastqc/") + setPythonScript("sync_paired_end_reads.py", "scripts/") + + @Input(doc="Start fastq") var input_start_fastq: File = _ + @Input(doc="R1 input") var input_R1: File = _ + @Input(doc="R2 input") var input_R2: File = _ + @Output(doc="R1 output") var output_R1: File = _ + @Output(doc="R2 output") var output_R2: File = _ + @Output(doc="stats output") var output_stats: File = _ + + def commandLine = { + getPythonCommand + + required(input_start_fastq) + + required(input_R1) + + required(input_R2) + + required(output_R1) + + required(output_R2) + + " > " + + required(output_stats) + } +} \ No newline at end of file diff --git a/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala new file mode 100644 index 000000000..f72c91277 --- /dev/null +++ b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToContams.scala @@ -0,0 +1,29 @@ +package nl.lumc.sasc.biopet.pipelines.flexiprep.scripts + +import nl.lumc.sasc.biopet.core._ +import org.broadinstitute.sting.queue.function.CommandLineFunction +import nl.lumc.sasc.biopet.wrappers.Python +import org.broadinstitute.sting.commandline._ +import java.io.File + +class FastqcToContams(val globalConfig: Config) extends CommandLineFunction with Python { + def this() = this(new Config(Map())) + analysisName = "getcontams" + val config: Config = globalConfig.getAsConfig(analysisName) + logger.debug("Config for " + analysisName + ": " + config) + + setPythonScript("__init__.py", "scripts/pyfastqc/") + setPythonScript("fastqc_contam.py", "scripts/") + + @Input(doc="Fastqc output", shortName="fastqc", required=true) var fastqc_output: File = _ + @Input(doc="Contams input", shortName="fastqc", required=true) var contams_file: File = _ + @Output(doc="Output file", shortName="out", required=true) var out: File = _ + + def commandLine = { + getPythonCommand + + required(fastqc_output.getParent()) + + required("-c",contams_file) + + " > " + + required(out) + } +} \ No newline at end of file diff --git a/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala new file mode 100644 index 000000000..bbdaefa1f --- /dev/null +++ b/flexiprep/src/main/java/nl/lumc/sasc/biopet/pipelines/flexiprep/scripts/FastqcToQualtype.scala @@ -0,0 +1,27 @@ +package nl.lumc.sasc.biopet.pipelines.flexiprep.scripts + +import nl.lumc.sasc.biopet.core._ +import org.broadinstitute.sting.queue.function.CommandLineFunction +import nl.lumc.sasc.biopet.wrappers.Python +import org.broadinstitute.sting.commandline._ +import java.io.File + +class FastqcToQualtype(val globalConfig: Config) extends CommandLineFunction with Python { + def this() = this(new Config(Map())) + analysisName = "getqualtype" + val config: Config = globalConfig.getAsConfig(analysisName) + logger.debug("Config for " + analysisName + ": " + config) + + setPythonScript("__init__.py", "scripts/pyfastqc/") + setPythonScript("qual_type_sickle.py", "scripts/") + + @Input(doc="Fastqc output", shortName="fastqc", required=true) var fastqc_output: File = _ + @Output(doc="Output file", shortName="out", required=true) var out: File = _ + + def commandLine = { + getPythonCommand + + required(fastqc_output.getParent()) + + " > " + + required(out) + } +} \ No newline at end of file -- GitLab