From 21fba762da33de78d012f08810137233dd06583b Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Thu, 12 Feb 2015 16:10:22 +0100 Subject: [PATCH] Fix some small bugs --- .../biopet/core/BiopetCommandLineFunctionTrait.scala | 10 ++++++++-- .../scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala | 6 ++++-- .../scala/nl/lumc/sasc/biopet/core/config/Config.scala | 6 +++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala index 498b71c68..905b3a715 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunctionTrait.scala @@ -48,7 +48,8 @@ trait BiopetCommandLineFunctionTrait extends CommandLineFunction with Configurab protected[core] def beforeCmd {} /** - * Can override this method. This is executed after the script is done en queue starts to generate the graph + * Can overr + * ide this method. This is executed after the script is done en queue starts to generate the graph */ protected[core] def afterGraph {} //TODO: function need rename to beforeGraph @@ -123,7 +124,10 @@ trait BiopetCommandLineFunctionTrait extends CommandLineFunction with Configurab beforeCmd - addJobReportBinding("cores", if (nCoresRequest.get.toInt > 0) nCoresRequest.get.toInt else 1) + addJobReportBinding("cores", nCoresRequest match { + case Some(n) if n > 0 => n + case _ => 1 + }) addJobReportBinding("version", getVersion) } @@ -166,6 +170,8 @@ trait BiopetCommandLineFunctionTrait extends CommandLineFunction with Configurab /** Get version from cache otherwise execute the version command */ def getVersion: String = { + if (!BiopetCommandLineFunctionTrait.executableCache.contains(executable)) + checkExecutable if (!BiopetCommandLineFunctionTrait.versionCache.contains(executable)) BiopetCommandLineFunctionTrait.versionCache += executable -> getVersionInternal return BiopetCommandLineFunctionTrait.versionCache(executable) diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala index db8a9eb49..8b6b0a6f5 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala @@ -73,12 +73,14 @@ trait BiopetQScript extends Configurable with GatkLogging { case f: BiopetCommandLineFunctionTrait => { f.checkExecutable f.afterGraph + f.commandLine } case _ => } - if (outputDir.canWrite) globalConfig.writeReport(qSettings.runName, outputDir + ".log/" + qSettings.runName) - else BiopetQScript.addError("Output dir: '" + outputDir + "' is not writeable") + if (outputDir.getParentFile.canWrite || (outputDir.exists && outputDir.canWrite)) + globalConfig.writeReport(qSettings.runName, new File(outputDir, ".log/" + qSettings.runName)) + else BiopetQScript.addError("Parent of output dir: '" + outputDir.getParent + "' is not writeable, outputdir can not be created") BiopetQScript.checkErrors } diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala index e25e8ef50..faae1634a 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala @@ -140,7 +140,8 @@ class Config(var map: Map[String, Any]) extends Logging { } else ConfigValue(requestedIndex, null, null, freeVar) } - def writeReport(id: String, directory: String): Unit = { + def writeReport(id: String, directory: File): Unit = { + directory.mkdirs() def convertIndexValuesToMap(input: List[(ConfigValueIndex, Any)], forceFreeVar: Option[Boolean] = None): Map[String, Any] = { input.foldLeft(Map[String, Any]())( @@ -155,8 +156,7 @@ class Config(var map: Map[String, Any]) extends Logging { } def writeMapToJsonFile(map: Map[String, Any], name: String): Unit = { - val file = new File(directory + "/" + id + "." + name + ".json") - file.getParentFile.mkdirs() + val file = new File(directory, id + "." + name + ".json") val writer = new PrintWriter(file) writer.write(ConfigUtils.mapToJson(map).spaces2) writer.close() -- GitLab