From 7d112c68d0182cfe7b8c9e0d020f3f08551802da Mon Sep 17 00:00:00 2001
From: Peter van 't Hof <p.j.van_t_hof@lumc.nl>
Date: Sun, 13 Sep 2015 12:40:49 +0200
Subject: [PATCH] Rscript usable without core now

---
 .../bammetrics/BammetricsReport.scala         |  2 +-
 .../rscript/plotScatter.R                     |  0
 .../{extensions => utils}/rscript/plotXY.R    |  0
 .../rscript/stackedBar.R                      |  0
 .../PythonCommandLineFunction.scala           |  2 +-
 .../RscriptCommandLineFunction.scala          | 65 ++-----------------
 .../nl/lumc/sasc/biopet/tools/plotHeatmap.R   |  0
 .../sasc/biopet/tools/RegionAfCount.scala     |  2 +-
 .../sasc/biopet/tools/SummaryToTsvTest.scala  |  2 +-
 .../sasc/biopet/utils}/rscript/plotScatter.R  |  0
 .../lumc/sasc/biopet/utils}/rscript/plotXY.R  |  0
 .../sasc/biopet/utils}/rscript/stackedBar.R   |  0
 .../sasc/biopet/utils}/rscript/LinePlot.scala | 28 ++++----
 .../sasc/biopet/utils/rscript/Rscript.scala   | 65 +++++++++++++++++++
 .../biopet/utils}/rscript/ScatterPlot.scala   | 28 ++++----
 .../utils}/rscript/StackedBarPlot.scala       | 26 ++++----
 .../pipelines/flexiprep/FlexiprepReport.scala |  2 +-
 .../biopet/pipelines/shiva/ShivaReport.scala  |  2 +-
 18 files changed, 112 insertions(+), 112 deletions(-)
 rename public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/{extensions => utils}/rscript/plotScatter.R (100%)
 rename public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/{extensions => utils}/rscript/plotXY.R (100%)
 rename public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/{extensions => utils}/rscript/stackedBar.R (100%)
 rename public/{biopet-framework => biopet-tools}/src/main/resources/nl/lumc/sasc/biopet/tools/plotHeatmap.R (100%)
 rename public/{biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils}/rscript/plotScatter.R (100%)
 rename public/{biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils}/rscript/plotXY.R (100%)
 rename public/{biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils}/rscript/stackedBar.R (100%)
 rename public/{biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils}/rscript/LinePlot.scala (67%)
 create mode 100644 public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/Rscript.scala
 rename public/{biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils}/rscript/ScatterPlot.scala (67%)
 rename public/{biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions => biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils}/rscript/StackedBarPlot.scala (68%)

diff --git a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BammetricsReport.scala b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BammetricsReport.scala
index b12fafa83..4ebf2ed83 100644
--- a/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BammetricsReport.scala
+++ b/public/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BammetricsReport.scala
@@ -20,7 +20,7 @@ import java.io.{ File, PrintWriter }
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.report.{ ReportBuilderExtension, ReportBuilder, ReportPage, ReportSection }
 import nl.lumc.sasc.biopet.core.summary.{ Summary, SummaryValue }
-import nl.lumc.sasc.biopet.extensions.rscript.{ StackedBarPlot, LinePlot }
+import nl.lumc.sasc.biopet.utils.rscript.{ StackedBarPlot, LinePlot }
 
 class BammetricsReport(val root: Configurable) extends ReportBuilderExtension {
   val builder = BammetricsReport
diff --git a/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotScatter.R b/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotScatter.R
similarity index 100%
rename from public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotScatter.R
rename to public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotScatter.R
diff --git a/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotXY.R b/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotXY.R
similarity index 100%
rename from public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotXY.R
rename to public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotXY.R
diff --git a/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/stackedBar.R b/public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/stackedBar.R
similarity index 100%
rename from public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/stackedBar.R
rename to public/biopet-core/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/stackedBar.R
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/PythonCommandLineFunction.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/PythonCommandLineFunction.scala
index 000c77a9a..044b43676 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/PythonCommandLineFunction.scala
+++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/PythonCommandLineFunction.scala
@@ -15,7 +15,7 @@
  */
 package nl.lumc.sasc.biopet.core.extensions
 
-import java.io.{File, FileOutputStream}
+import java.io.{ File, FileOutputStream }
 
 import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction
 import org.broadinstitute.gatk.utils.commandline.Input
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/RscriptCommandLineFunction.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/RscriptCommandLineFunction.scala
index cce714ef1..c773de615 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/RscriptCommandLineFunction.scala
+++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/extensions/RscriptCommandLineFunction.scala
@@ -15,9 +15,10 @@
  */
 package nl.lumc.sasc.biopet.core.extensions
 
-import java.io.{File, FileOutputStream}
+import java.io.{ File, FileOutputStream }
 
 import nl.lumc.sasc.biopet.core.BiopetCommandLineFunction
+import nl.lumc.sasc.biopet.utils.rscript.Rscript
 
 import scala.sys.process._
 
@@ -26,67 +27,13 @@ import scala.sys.process._
  *
  * Created by wyleung on 17-2-15.
  */
-trait RscriptCommandLineFunction extends BiopetCommandLineFunction {
+trait RscriptCommandLineFunction extends BiopetCommandLineFunction with Rscript {
 
-  protected var script: File
-
-  executable = config("exe", default = "Rscript", submodule = "Rscript")
+  executable = rscriptExecutable
 
   override def beforeGraph(): Unit = {
-    checkScript()
-  }
-
-  /**
-   * If script not exist in file system it try to copy it from the jar
-   * @param local if true it use File.createTempFile instead of ".queue/tmp/"
-   */
-  protected def checkScript(local: Boolean = false): Unit = {
-    if (script.exists()) {
-      script = script.getAbsoluteFile
-    } else {
-      val rScript: File = {
-        if (local) File.createTempFile(script.getName, ".R")
-        else new File(".queue/tmp/" + script)
-      }
-      if (!rScript.getParentFile.exists) rScript.getParentFile.mkdirs
-
-      val is = getClass.getResourceAsStream(script.getPath)
-      val os = new FileOutputStream(rScript)
-
-      org.apache.commons.io.IOUtils.copy(is, os)
-      os.close()
-
-      script = rScript
-    }
+    checkScript(Some(jobTempDir))
   }
 
-  /**
-   * Execute rscript on local system
-   * @param logger How to handle stdout and stderr
-   */
-  def runLocal(logger: ProcessLogger): Unit = {
-    checkScript(local = true)
-
-    this.logger.info(cmdLine)
-
-    val cmd = cmdLine.stripPrefix(" '").stripSuffix("' ").split("' *'")
-
-    this.logger.info(cmd.mkString(" "))
-
-    val process = Process(cmd.toSeq).run(logger)
-    this.logger.info(process.exitValue())
-  }
-
-  /**
-   * Execute rscript on local system
-   * Stdout and stderr will go to biopet logger
-   */
-  def runLocal(): Unit = {
-    runLocal(ProcessLogger(logger.info(_)))
-  }
-
-  def cmdLine: String = {
-    required(executable) +
-      required(script)
-  }
+  def cmdLine: String = repeat(cmd)
 }
diff --git a/public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/tools/plotHeatmap.R b/public/biopet-tools/src/main/resources/nl/lumc/sasc/biopet/tools/plotHeatmap.R
similarity index 100%
rename from public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/tools/plotHeatmap.R
rename to public/biopet-tools/src/main/resources/nl/lumc/sasc/biopet/tools/plotHeatmap.R
diff --git a/public/biopet-tools/src/main/scala/nl/lumc/sasc/biopet/tools/RegionAfCount.scala b/public/biopet-tools/src/main/scala/nl/lumc/sasc/biopet/tools/RegionAfCount.scala
index 6f1c72a55..66d7f3250 100644
--- a/public/biopet-tools/src/main/scala/nl/lumc/sasc/biopet/tools/RegionAfCount.scala
+++ b/public/biopet-tools/src/main/scala/nl/lumc/sasc/biopet/tools/RegionAfCount.scala
@@ -19,7 +19,7 @@ import java.io.{ PrintWriter, InputStream, File }
 import java.util
 
 import htsjdk.variant.vcf.VCFFileReader
-import nl.lumc.sasc.biopet.extensions.rscript.ScatterPlot
+import nl.lumc.sasc.biopet.utils.rscript.ScatterPlot
 import nl.lumc.sasc.biopet.utils.intervals.{ BedRecord, BedRecordList }
 
 import scala.collection.JavaConversions._
diff --git a/public/biopet-tools/src/test/scala/nl/lumc/sasc/biopet/tools/SummaryToTsvTest.scala b/public/biopet-tools/src/test/scala/nl/lumc/sasc/biopet/tools/SummaryToTsvTest.scala
index 916fd48cc..6071fceaa 100644
--- a/public/biopet-tools/src/test/scala/nl/lumc/sasc/biopet/tools/SummaryToTsvTest.scala
+++ b/public/biopet-tools/src/test/scala/nl/lumc/sasc/biopet/tools/SummaryToTsvTest.scala
@@ -9,7 +9,7 @@ import org.scalatest.mock.MockitoSugar
 import org.scalatest.testng.TestNGSuite
 import org.testng.annotations.Test
 
-import nl.lumc.sasc.biopet.core.summary.Summary
+import nl.lumc.sasc.biopet.utils.summary.Summary
 
 /**
  * Created by ahbbollen on 31-8-15.
diff --git a/public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotScatter.R b/public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotScatter.R
similarity index 100%
rename from public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotScatter.R
rename to public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotScatter.R
diff --git a/public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotXY.R b/public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotXY.R
similarity index 100%
rename from public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/plotXY.R
rename to public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/plotXY.R
diff --git a/public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/stackedBar.R b/public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/stackedBar.R
similarity index 100%
rename from public/biopet-framework/src/main/resources/nl/lumc/sasc/biopet/extensions/rscript/stackedBar.R
rename to public/biopet-utils/src/main/resources/nl/lumc/sasc/biopet/utils/rscript/stackedBar.R
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/LinePlot.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/LinePlot.scala
similarity index 67%
rename from public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/LinePlot.scala
rename to public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/LinePlot.scala
index 4ff413b1f..fb0e2f0a0 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/LinePlot.scala
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/LinePlot.scala
@@ -13,26 +13,22 @@
  * license; For commercial users or users who do not want to follow the AGPL
  * license, please contact us to obtain a separate license.
  */
-package nl.lumc.sasc.biopet.extensions.rscript
+package nl.lumc.sasc.biopet.utils.rscript
 
 import java.io.File
 
-import nl.lumc.sasc.biopet.core.extensions.RscriptCommandLineFunction
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
 /**
  * Extension for en general line plot with R
  *
  * Created by pjvan_thof on 4/29/15.
  */
-class LinePlot(val root: Configurable) extends RscriptCommandLineFunction {
+class LinePlot(val root: Configurable) extends Rscript {
   protected var script: File = config("script", default = "plotXY.R")
 
-  @Input
   var input: File = _
 
-  @Output
   var output: File = _
 
   var width: Option[Int] = config("width")
@@ -43,14 +39,14 @@ class LinePlot(val root: Configurable) extends RscriptCommandLineFunction {
   var title: Option[String] = config("title")
   var removeZero: Boolean = config("removeZero", default = false)
 
-  override def cmdLine: String = super.cmdLine +
-    required("--input", input) +
-    required("--output", output) +
-    optional("--width", width) +
-    optional("--height", height) +
-    optional("--xlabel", xlabel) +
-    required("--ylabel", ylabel) +
-    optional("--llabel", llabel) +
-    optional("--title", title) +
-    optional("--removeZero", removeZero)
+  override def cmd = super.cmd ++
+    Seq("--input", input.getAbsolutePath) ++
+    Seq("--output", output.getAbsolutePath) ++
+    width.map(x => Seq("--width", x.toString)).getOrElse(Seq()) ++
+    height.map(x => Seq("--height", x.toString)).getOrElse(Seq()) ++
+    xlabel.map(Seq("--xlabel", _)).getOrElse(Seq()) ++
+    ylabel.map(Seq("--ylabel", _)).getOrElse(Seq()) ++
+    llabel.map(Seq("--llabel", _)).getOrElse(Seq()) ++
+    title.map(Seq("--title", _)).getOrElse(Seq()) ++
+    (if (removeZero) Seq("--removeZero") else Seq())
 }
diff --git a/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/Rscript.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/Rscript.scala
new file mode 100644
index 000000000..685108d0c
--- /dev/null
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/Rscript.scala
@@ -0,0 +1,65 @@
+package nl.lumc.sasc.biopet.utils.rscript
+
+import java.io.{ File, FileOutputStream }
+
+import nl.lumc.sasc.biopet.utils.Logging
+import nl.lumc.sasc.biopet.utils.config.Configurable
+
+import scala.sys.process.{ Process, ProcessLogger }
+
+/**
+ * Created by pjvanthof on 13/09/15.
+ */
+trait Rscript extends Configurable {
+  protected var script: File
+
+  def rscriptExecutable: String = config("exe", default = "Rscript", submodule = "Rscript")
+
+  /** This is the defaul implementation, to add arguments override this */
+  def cmd: Seq[String] = Seq(rscriptExecutable, script.getAbsolutePath)
+
+  /**
+   * If script not exist in file system it try to copy it from the jar
+   * @param dir Directory to store temp script, if None or not given File.createTempFile is called
+   */
+  protected def checkScript(dir: Option[File] = None): Unit = {
+    if (script.exists()) {
+      script = script.getAbsoluteFile
+    } else {
+      val rScript: File = dir match {
+        case Some(dir) => new File(dir, script.getName)
+        case _         => File.createTempFile(script.getName, ".R")
+      }
+      if (!rScript.getParentFile.exists) rScript.getParentFile.mkdirs
+
+      val is = getClass.getResourceAsStream(script.getPath)
+      val os = new FileOutputStream(rScript)
+
+      org.apache.commons.io.IOUtils.copy(is, os)
+      os.close()
+
+      script = rScript
+    }
+  }
+
+  /**
+   * Execute rscript on local system
+   * @param logger How to handle stdout and stderr
+   */
+  def runLocal(logger: ProcessLogger): Unit = {
+    checkScript()
+
+    Logging.logger.info("Running: " + cmd.mkString(" "))
+
+    val process = Process(cmd).run(logger)
+    Logging.logger.info(process.exitValue())
+  }
+
+  /**
+   * Execute rscript on local system
+   * Stdout and stderr will go to biopet logger
+   */
+  def runLocal(): Unit = {
+    runLocal(ProcessLogger(Logging.logger.info(_)))
+  }
+}
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/ScatterPlot.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/ScatterPlot.scala
similarity index 67%
rename from public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/ScatterPlot.scala
rename to public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/ScatterPlot.scala
index ad3533ced..9bcbaffcc 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/ScatterPlot.scala
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/ScatterPlot.scala
@@ -13,26 +13,22 @@
  * license; For commercial users or users who do not want to follow the AGPL
  * license, please contact us to obtain a separate license.
  */
-package nl.lumc.sasc.biopet.extensions.rscript
+package nl.lumc.sasc.biopet.utils.rscript
 
 import java.io.File
 
-import nl.lumc.sasc.biopet.core.extensions.RscriptCommandLineFunction
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
 /**
  * Extension for en general line plot with R
  *
  * Created by pjvan_thof on 4/29/15.
  */
-class ScatterPlot(val root: Configurable) extends RscriptCommandLineFunction {
+class ScatterPlot(val root: Configurable) extends Rscript {
   protected var script: File = config("script", default = "plotScatter.R")
 
-  @Input
   var input: File = _
 
-  @Output
   var output: File = _
 
   var width: Option[Int] = config("width")
@@ -43,14 +39,14 @@ class ScatterPlot(val root: Configurable) extends RscriptCommandLineFunction {
   var title: Option[String] = config("title")
   var removeZero: Boolean = config("removeZero", default = false)
 
-  override def cmdLine: String = super.cmdLine +
-    required("--input", input) +
-    required("--output", output) +
-    optional("--width", width) +
-    optional("--height", height) +
-    optional("--xlabel", xlabel) +
-    required("--ylabel", ylabel) +
-    optional("--llabel", llabel) +
-    optional("--title", title) +
-    optional("--removeZero", removeZero)
+  override def cmd = super.cmd ++
+    Seq("--input", input.getAbsolutePath) ++
+    Seq("--output", output.getAbsolutePath) ++
+    width.map(x => Seq("--width", x.toString)).getOrElse(Seq()) ++
+    height.map(x => Seq("--height", x.toString)).getOrElse(Seq()) ++
+    xlabel.map(Seq("--xlabel", _)).getOrElse(Seq()) ++
+    ylabel.map(Seq("--ylabel", _)).getOrElse(Seq()) ++
+    llabel.map(Seq("--llabel", _)).getOrElse(Seq()) ++
+    title.map(Seq("--title", _)).getOrElse(Seq()) ++
+    (if (removeZero) Seq("--removeZero") else Seq())
 }
diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/StackedBarPlot.scala b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/StackedBarPlot.scala
similarity index 68%
rename from public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/StackedBarPlot.scala
rename to public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/StackedBarPlot.scala
index 2bf533f81..1965e0a54 100644
--- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/extensions/rscript/StackedBarPlot.scala
+++ b/public/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/rscript/StackedBarPlot.scala
@@ -13,26 +13,22 @@
  * license; For commercial users or users who do not want to follow the AGPL
  * license, please contact us to obtain a separate license.
  */
-package nl.lumc.sasc.biopet.extensions.rscript
+package nl.lumc.sasc.biopet.utils.rscript
 
 import java.io.File
 
-import nl.lumc.sasc.biopet.core.extensions.RscriptCommandLineFunction
 import nl.lumc.sasc.biopet.utils.config.Configurable
-import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
 
 /**
  * Extension for en general stackedbar plot with R
  *
  * Created by pjvan_thof on 4/29/15.
  */
-class StackedBarPlot(val root: Configurable) extends RscriptCommandLineFunction {
+class StackedBarPlot(val root: Configurable) extends Rscript {
   protected var script: File = config("script", default = "stackedBar.R")
 
-  @Input
   var input: File = _
 
-  @Output
   var output: File = _
 
   var width: Option[Int] = config("width")
@@ -42,13 +38,13 @@ class StackedBarPlot(val root: Configurable) extends RscriptCommandLineFunction
   var llabel: Option[String] = config("llabel")
   var title: Option[String] = config("title")
 
-  override def cmdLine: String = super.cmdLine +
-    required("--input", input) +
-    required("--output", output) +
-    optional("--width", width) +
-    optional("--height", height) +
-    optional("--xlabel", xlabel) +
-    required("--ylabel", ylabel) +
-    optional("--llabel", llabel) +
-    optional("--title", title)
+  override def cmd = super.cmd ++
+    Seq("--input", input.getAbsolutePath) ++
+    Seq("--output", output.getAbsolutePath) ++
+    width.map(x => Seq("--width", x.toString)).getOrElse(Seq()) ++
+    height.map(x => Seq("--height", x.toString)).getOrElse(Seq()) ++
+    xlabel.map(Seq("--xlabel", _)).getOrElse(Seq()) ++
+    ylabel.map(Seq("--ylabel", _)).getOrElse(Seq()) ++
+    llabel.map(Seq("--llabel", _)).getOrElse(Seq()) ++
+    title.map(Seq("--title", _)).getOrElse(Seq())
 }
diff --git a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepReport.scala b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepReport.scala
index e8a0653d9..c435504ca 100644
--- a/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepReport.scala
+++ b/public/flexiprep/src/main/scala/nl/lumc/sasc/biopet/pipelines/flexiprep/FlexiprepReport.scala
@@ -20,7 +20,7 @@ import java.io.{ File, PrintWriter }
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.report.{ ReportBuilderExtension, ReportBuilder, ReportPage, ReportSection }
 import nl.lumc.sasc.biopet.core.summary.{ Summary, SummaryValue }
-import nl.lumc.sasc.biopet.extensions.rscript.StackedBarPlot
+import nl.lumc.sasc.biopet.utils.rscript.StackedBarPlot
 
 class FlexiprepReport(val root: Configurable) extends ReportBuilderExtension {
   val builder = FlexiprepReport
diff --git a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
index 4f47abcca..3f121092d 100644
--- a/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
+++ b/public/shiva/src/main/scala/nl/lumc/sasc/biopet/pipelines/shiva/ShivaReport.scala
@@ -20,7 +20,7 @@ import java.io.{ File, PrintWriter }
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.report._
 import nl.lumc.sasc.biopet.core.summary.{ Summary, SummaryValue }
-import nl.lumc.sasc.biopet.extensions.rscript.StackedBarPlot
+import nl.lumc.sasc.biopet.utils.rscript.StackedBarPlot
 import nl.lumc.sasc.biopet.pipelines.bammetrics.BammetricsReport
 import nl.lumc.sasc.biopet.pipelines.flexiprep.FlexiprepReport
 
-- 
GitLab