From 44731da1be682d6fa22725a3345d5cf94e16f9b6 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Wed, 6 Apr 2016 20:04:19 +0200 Subject: [PATCH] Added more args --- .../core/BiopetCommandLineFunction.scala | 12 +++ .../lumc/sasc/biopet/extensions/Snptest.scala | 75 +++++++++++++++++-- 2 files changed, 80 insertions(+), 7 deletions(-) diff --git a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunction.scala b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunction.scala index a413c8bad..a7bdaf92f 100644 --- a/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunction.scala +++ b/public/biopet-core/src/main/scala/nl/lumc/sasc/biopet/core/BiopetCommandLineFunction.scala @@ -165,6 +165,18 @@ trait BiopetCommandLineFunction extends CommandLineResources { biopetFunction => this } + def multiArg(argName: String, values: Iterable[Any], groupSize: Int = 1, minGroups: Int = 0, maxGroups: Int = 0): String = { + if (values.size % groupSize != 0) + Logging.addError(s"Arg '${argName}' values: '${values}' does not fit to a groupSize of ${groupSize}") + val groups = values.size / groupSize + if (groups < minGroups) + Logging.addError(s"Args '${argName}' need atleast $minGroups with size $groupSize") + if (maxGroups > 0 && groups > maxGroups) + Logging.addError(s"Args '${argName}' may only have $maxGroups with size $groupSize") + if (values.nonEmpty) required(argName) + values.map(required(_)).mkString + else "" + } + @Output(required = false) private[core] var stdoutFile: Option[File] = None diff --git a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Snptest.scala b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Snptest.scala index d1948f5f1..62668f454 100644 --- a/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Snptest.scala +++ b/public/biopet-extensions/src/main/scala/nl/lumc/sasc/biopet/extensions/Snptest.scala @@ -60,6 +60,41 @@ class Snptest(val root: Configurable) extends BiopetCommandLineFunction with Ref var conditionOn: List[String] = config("condition_on") + var priorAdd: List[String] = config("prior_add", default = Nil) + var priorCov: List[String] = config("prior_cov", default = Nil) + var priorDom: List[String] = config("prior_dom", default = Nil) + var priorGen: List[String] = config("prior_gen", default = Nil) + var priorHet: List[String] = config("prior_het", default = Nil) + var priorRec: List[String] = config("prior_rec", default = Nil) + var tDf: Option[String] = config("t_df") + var tPrior: Boolean = config("t_prior", default = false) + + var priorMqtQ: Option[String] = config("prior_mqt_Q") + var priorQtVb: Option[String] = config("prior_qt_V_b") + var priorQtVq: Option[String] = config("prior_qt_V_q") + var priorQtA: Option[String] = config("prior_qt_a") + var priorQtB: Option[String] = config("prior_qt_b") + var priorQtMeanB: Option[String] = config("prior_qt_mean_b") + var priorQtMeanQ: Option[String] = config("prior_qt_mean_q") + + var meanBf: List[String] = config("mean_bf", default = Nil) + + var analysisDescription: Option[String] = config("analysis_description") + var analysisName: Option[String] = config("analysis_name") + var chunk: Option[Int] = config("chunk") + var debug: Boolean = config("debug", default = false) + var hwe: Boolean = config("hwe", default = false) + var lowerSampleLimit: Option[Int] = config("lower_sample_limit") + var overlap: Boolean = config("overlap", default = false) + var printids: Boolean = config("printids", default = false) + var quantileNormalisePhenotypes: Boolean = config("quantile_normalise_phenotypes", default = false) + var range: List[String] = config("range", default = Nil) + var renorm: Boolean = config("renorm", default = false) + var snpid: List[String] = config("snpid", default = Nil) + var useRawCovariates: Boolean = config("use_raw_covariates") + var useRawPhenotypes: Boolean = config("use_raw_phenotypes") + var noClobber: Boolean = config("no_clobber", default = false) + executable = config("exe", default = "snptest") def versionCommand: String = executable + " -help" @@ -70,16 +105,11 @@ class Snptest(val root: Configurable) extends BiopetCommandLineFunction with Ref require(inputGenotypes.length == inputSampleFiles.length) } - def multiArg(argName: String, values: Iterable[Any]): String = { - if (values.nonEmpty) required(argName) + values.map(required(_)).mkString - else "" - } - def cmdLine: String = { val data = inputGenotypes.zip(inputSampleFiles).flatMap(x => List(x._1, x._2)) required(executable) + optional("-assume_chromosome", assumeChromosome) + - multiArg("-data", data) + + multiArg("-data", data, groupSize = 2) + optional("-genotype_field", genotypeField) + optional("-genotype_probability_scale", genotypeProbabilityScale) + optional("-haploid_genotype_coding", haploidGenotypeCoding) + @@ -107,7 +137,38 @@ class Snptest(val root: Configurable) extends BiopetCommandLineFunction with Ref multiArg("-cov_names", covNames) + optional("-sex_column", sexColumn) + optional("-stratify_on", stratifyOn) + - multiArg("-condition_on", conditionOn) + multiArg("-condition_on", conditionOn) + + multiArg("-prior_add", priorAdd, groupSize = 4, maxGroups = 1) + + multiArg("-prior_cov", priorCov, groupSize = 2, maxGroups = 1) + + multiArg("-prior_dom", priorDom, groupSize = 4, maxGroups = 1) + + multiArg("-prior_gen", priorGen, groupSize = 6, maxGroups = 1) + + multiArg("-prior_het", priorHet, groupSize = 4, maxGroups = 1) + + multiArg("-prior_rec", priorRec, groupSize = 4, maxGroups = 1) + + optional("-t_df", tDf) + + conditional(tPrior, "-t_prior") + + optional("-prior_mqt_Q", priorMqtQ) + + optional("-prior_qt_V_b", priorQtVb) + + optional("-prior_qt_V_q", priorQtVq) + + optional("-prior_qt_a", priorQtA) + + optional("-prior_qt_b", priorQtB) + + optional("-prior_qt_mean_b", priorQtMeanB) + + optional("-prior_qt_mean_q", priorQtMeanQ) + + multiArg("-mean_bf", meanBf, groupSize = 2, maxGroups = 1) + + optional("-analysis_description", analysisDescription) + + optional("-analysis_name", analysisName) + + optional("-chunk", chunk) + + conditional(debug, "-debug") + + conditional(hwe, "-hwe") + + optional("-lower_sample_limit", lowerSampleLimit) + + conditional(overlap, "-overlap") + + conditional(printids, "-printids") + + conditional(quantileNormalisePhenotypes, "quantile_normalise_phenotypes") + + multiArg("-range", range, groupSize = 2) + + conditional(renorm, "-renorm") + + multiArg("-snpid", snpid) + + conditional(useRawCovariates, "-use_raw_covariates") + + conditional(useRawPhenotypes, "-use_raw_phenotypes") + + conditional(noClobber, "-no_clobber") } } -- GitLab