Commit d71e3968 authored by Peter van 't Hof's avatar Peter van 't Hof
Browse files

Merge remote-tracking branch 'remotes/origin/develop' into feature-centrifuge

parents dbda4819 6efe0956
...@@ -18,7 +18,7 @@ import java.io.{ File, FileInputStream, PrintWriter } ...@@ -18,7 +18,7 @@ import java.io.{ File, FileInputStream, PrintWriter }
import java.security.MessageDigest import java.security.MessageDigest
import nl.lumc.sasc.biopet.utils.Logging import nl.lumc.sasc.biopet.utils.Logging
import org.broadinstitute.gatk.utils.commandline.{ Gather, Input, Output } import org.broadinstitute.gatk.utils.commandline.{ Input, Output }
import org.broadinstitute.gatk.utils.runtime.ProcessSettings import org.broadinstitute.gatk.utils.runtime.ProcessSettings
import org.ggf.drmaa.JobTemplate import org.ggf.drmaa.JobTemplate
...@@ -40,6 +40,8 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction => ...@@ -40,6 +40,8 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction =>
def defaultRemoteCommand = "bash" def defaultRemoteCommand = "bash"
private val remoteCommand: String = config("remote_command", default = defaultRemoteCommand) private val remoteCommand: String = config("remote_command", default = defaultRemoteCommand)
val preCommands: List[String] = config("pre_commands", default = Nil, freeVar = false)
private def changeScript(file: File): Unit = { private def changeScript(file: File): Unit = {
val lines = Source.fromFile(file).getLines().toList val lines = Source.fromFile(file).getLines().toList
val writer = new PrintWriter(file) val writer = new PrintWriter(file)
...@@ -111,7 +113,7 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction => ...@@ -111,7 +113,7 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction =>
* Checks executable. Follow full CanonicalPath, checks if it is existing and do a md5sum on it to store in job report * Checks executable. Follow full CanonicalPath, checks if it is existing and do a md5sum on it to store in job report
*/ */
protected[core] def preProcessExecutable() { protected[core] def preProcessExecutable() {
val exe = BiopetCommandLineFunction.preProcessExecutable(executable) val exe = BiopetCommandLineFunction.preProcessExecutable(executable, preCommands)
exe.path.foreach(executable = _) exe.path.foreach(executable = _)
addJobReportBinding("md5sum_exe", exe.md5.getOrElse("N/A")) addJobReportBinding("md5sum_exe", exe.md5.getOrElse("N/A"))
} }
...@@ -219,7 +221,8 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction => ...@@ -219,7 +221,8 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction =>
*/ */
override final def commandLine: String = { override final def commandLine: String = {
preCmdInternal() preCmdInternal()
val cmd = cmdLine + val cmd = preCommands.mkString("\n", "\n", "\n") +
cmdLine +
stdinFile.map(file => " < " + required(file.getAbsoluteFile)).getOrElse("") + stdinFile.map(file => " < " + required(file.getAbsoluteFile)).getOrElse("") +
stdoutFile.map(file => " > " + required(file.getAbsoluteFile)).getOrElse("") stdoutFile.map(file => " > " + required(file.getAbsoluteFile)).getOrElse("")
addJobReportBinding("command", cmd) addJobReportBinding("command", cmd)
...@@ -240,13 +243,18 @@ object BiopetCommandLineFunction extends Logging { ...@@ -240,13 +243,18 @@ object BiopetCommandLineFunction extends Logging {
private[core] val executableCache: mutable.Map[String, String] = mutable.Map() private[core] val executableCache: mutable.Map[String, String] = mutable.Map()
case class Executable(path: Option[String], md5: Option[String]) case class Executable(path: Option[String], md5: Option[String])
def preProcessExecutable(executable: String): Executable = { def preProcessExecutable(executable: String, pre_commands: List[String] = Nil): Executable = {
if (!BiopetCommandLineFunction.executableMd5Cache.contains(executable)) { if (!BiopetCommandLineFunction.executableMd5Cache.contains(executable)) {
if (executable != null) { if (executable != null) {
if (!BiopetCommandLineFunction.executableCache.contains(executable)) { if (!BiopetCommandLineFunction.executableCache.contains(executable)) {
try { try {
val buffer = new StringBuffer() val buffer = new StringBuffer()
val cmd = Seq("which", executable) val tempFile = File.createTempFile("which.", ".sh")
val writer = new PrintWriter(tempFile)
pre_commands.foreach(cmd => writer.println(cmd + " > /dev/null 2> /dev/null"))
writer.println(s"which $executable")
writer.close()
val cmd = Seq("bash", tempFile.getAbsolutePath)
val process = Process(cmd).run(ProcessLogger(buffer.append(_))) val process = Process(cmd).run(ProcessLogger(buffer.append(_)))
if (process.exitValue == 0) { if (process.exitValue == 0) {
val file = new File(buffer.toString) val file = new File(buffer.toString)
......
...@@ -155,7 +155,9 @@ object GensToVcf extends ToolCommand { ...@@ -155,7 +155,9 @@ object GensToVcf extends ToolCommand {
.make() .make()
} }
val infoMap = infoHeaderKeys.map(_.map(x => ("GENS_" + x) -> infoValues.get(infoHeaderMap.get(x))).toMap).getOrElse(Map()) val infoMap = infoHeaderKeys
.map(_.map(x => ("GENS_" + x) -> infoValues.get(infoHeaderMap.get(x)).replaceAll(";", ",")).toMap)
.getOrElse(Map())
val builder = (new VariantContextBuilder) val builder = (new VariantContextBuilder)
.chr(cmdArgs.contig) .chr(cmdArgs.contig)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment