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