From a190d23313598c62b8e5bc75fd85e60eab5abc43 Mon Sep 17 00:00:00 2001
From: Peter van 't Hof <p.j.van_t_hof@lumc.nl>
Date: Thu, 4 Dec 2014 10:19:47 +0100
Subject: [PATCH] Added text to args

---
 .../nl/lumc/sasc/biopet/tools/VcfFilter.scala | 53 ++++++++++---------
 1 file changed, 28 insertions(+), 25 deletions(-)

diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/VcfFilter.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/VcfFilter.scala
index 57470e3e8..aacc32bb1 100644
--- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/VcfFilter.scala
+++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/tools/VcfFilter.scala
@@ -58,47 +58,49 @@ object VcfFilter extends ToolCommand {
                   minBamAlternateDepth: Int = 0,
                   mustHaveVariant: List[String] = Nil,
                   denovoInSample: String = null,
-                  notSameGenotype: List[(String, String)] = Nil,
+                  diffGenotype: List[(String, String)] = Nil,
                   filterHetVarToHomVar: List[(String, String)] = Nil,
                   filterRefCalls: Boolean = false) extends AbstractArgs
 
   class OptParser extends AbstractOptParser {
     opt[File]('I', "inputVcf") required () maxOccurs (1) valueName ("<file>") action { (x, c) =>
       c.copy(inputVcf = x)
-    }
+    } text ("Input vcf file")
     opt[File]('o', "outputVcf") required () maxOccurs (1) valueName ("<file>") action { (x, c) =>
       c.copy(outputVcf = x)
-    } text ("output file, default to stdout")
-    opt[Int]("minSampleDepth") unbounded () action { (x, c) =>
+    } text ("Output vcf file")
+    opt[Int]("minSampleDepth") unbounded () valueName ("<int>") action { (x, c) =>
       c.copy(minSampleDepth = x)
-    }
-    opt[Int]("minTotalDepth") unbounded () action { (x, c) =>
+    } text ("Min value for DP in genotype fields")
+    opt[Int]("minTotalDepth") unbounded () valueName ("<int>") action { (x, c) =>
       c.copy(minTotalDepth = x)
-    }
-    opt[Int]("minAlternateDepth") unbounded () action { (x, c) =>
+    } text ("Min value of DP field in INFO fields")
+    opt[Int]("minAlternateDepth") unbounded () valueName ("<int>") action { (x, c) =>
       c.copy(minAlternateDepth = x)
-    }
-    opt[Int]("minSamplesPass") unbounded () action { (x, c) =>
+    } text ("Min value of AD field in genotype fields")
+    opt[Int]("minSamplesPass") unbounded () valueName ("<int>") action { (x, c) =>
       c.copy(minSamplesPass = x)
-    }
-    opt[Int]("minBamAlternateDepth") unbounded () action { (x, c) =>
+    } text ("Min number opf samples to pass --minAlternateDepth, --minBamAlternateDepth and --minSampleDepth")
+    opt[Int]("minBamAlternateDepth") unbounded () valueName ("<int>") action { (x, c) =>
       c.copy(minBamAlternateDepth = x)
-    }
-    opt[String]("denovoInSample") maxOccurs (1) unbounded () action { (x, c) =>
+    } // TODO: Convert this to more generic filter
+    opt[String]("denovoInSample") maxOccurs (1) unbounded () valueName ("<sample>") action { (x, c) =>
       c.copy(denovoInSample = x)
-    }
-    opt[String]("mustHaveVariant") unbounded () action { (x, c) =>
+    } text ("Only show variants that contain unique alleles in compete set for given sample")
+    opt[String]("mustHaveVariant") unbounded () valueName ("<sample>") action { (x, c) =>
       c.copy(mustHaveVariant = x :: c.mustHaveVariant)
-    }
-    opt[String]("notSameGenotype") unbounded () action { (x, c) =>
-      c.copy(notSameGenotype = (x.split(":")(0), x.split(":")(1)) :: c.notSameGenotype)
-    } validate { x => if (x.split(":").length == 2) success else failure("--notSameGenotype should be in this format: sample:sample") }
-    opt[String]("filterHetVarToHomVar") unbounded () action { (x, c) =>
+    } text ("Given sample must have 1 alternative allele")
+    opt[String]("diffGenotype") unbounded () valueName ("<sample:sample>") action { (x, c) =>
+      c.copy(diffGenotype = (x.split(":")(0), x.split(":")(1)) :: c.diffGenotype)
+    } validate { x => if (x.split(":").length == 2) success else failure("--notSameGenotype should be in this format: sample:sample")
+    } text ("Given samples must have a different genotype")
+    opt[String]("filterHetVarToHomVar") unbounded () valueName ("<sample:sample>") action { (x, c) =>
       c.copy(filterHetVarToHomVar = (x.split(":")(0), x.split(":")(1)) :: c.filterHetVarToHomVar)
-    } validate { x => if (x.split(":").length == 2) success else failure("--filterHetVarToHomVar should be in this format: sample:sample") }
+    } validate { x => if (x.split(":").length == 2) success else failure("--filterHetVarToHomVar should be in this format: sample:sample")
+    } text ("If variants in sample 1 are heterogeneous and alternative alleles are homogeneous in sample 2 variants are filterd")
     opt[Unit]("filterRefCalls") unbounded () action { (x, c) =>
       c.copy(filterRefCalls = true)
-    }
+    } text ("Filter when there are only ref calls")
   }
 
   var commandArgs: Args = _
@@ -132,8 +134,9 @@ object VcfFilter extends ToolCommand {
         mustHaveVariant(record) &&
         notSameGenotype(record) &&
         filterHetVarToHomVar(record) &&
-        denovoInSample(record))
+        denovoInSample(record)) {
         writer.add(record)
+      }
     }
     reader.close
     writer.close
@@ -165,7 +168,7 @@ object VcfFilter extends ToolCommand {
   }
 
   def notSameGenotype(record: VariantContext): Boolean = {
-    for ((sample1, sample2) <- commandArgs.notSameGenotype) {
+    for ((sample1, sample2) <- commandArgs.diffGenotype) {
       val genotype1 = record.getGenotype(sample1)
       val genotype2 = record.getGenotype(sample2)
       if (genotype1.sameGenotype(genotype2)) return false
-- 
GitLab