From 4a4fa9beb5bc3c6450bba17e3f8cf5626cc55ab3 Mon Sep 17 00:00:00 2001
From: Peter van 't Hof <p.j.van_t_hof@lumc.nl>
Date: Thu, 4 Dec 2014 11:26:34 +0100
Subject: [PATCH] Added Qual filter option

---
 .../scala/nl/lumc/sasc/biopet/tools/VcfFilter.scala  | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

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 85b2e236f..e948c05e6 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
@@ -51,6 +51,7 @@ class VcfFilter(val root: Configurable) extends BiopetJavaCommandLineFunction {
 object VcfFilter extends ToolCommand {
   case class Args(inputVcf: File = null,
                   outputVcf: File = null,
+                  minQualscore: Option[Double] = None,
                   minSampleDepth: Int = -1,
                   minTotalDepth: Int = -1,
                   minAlternateDepth: Int = -1,
@@ -105,6 +106,9 @@ object VcfFilter extends ToolCommand {
     opt[Unit]("filterNoCalls") unbounded () action { (x, c) =>
       c.copy(filterNoCalls = true)
     } text ("Filter when there are only no calls")
+    opt[Double]("minQualscore") unbounded () action { (x, c) =>
+      c.copy(minQualscore = Some(x))
+    } text ("Min qual score")
   }
 
   var commandArgs: Args = _
@@ -122,7 +126,8 @@ object VcfFilter extends ToolCommand {
     writer.writeHeader(header)
 
     for (record <- reader) {
-      if (filterRefCalls(record) &&
+      if (minQualscore(record) &&
+        filterRefCalls(record) &&
         filterNoCalls(record) &&
         minTotalDepth(record) &&
         minSampleDepth(record) &&
@@ -139,6 +144,11 @@ object VcfFilter extends ToolCommand {
     writer.close
   }
 
+  def minQualscore(record: VariantContext): Boolean = {
+    if (commandArgs.minQualscore.isEmpty) return true
+    record.getPhredScaledQual >= commandArgs.minQualscore.get
+  }
+
   def filterRefCalls(record: VariantContext): Boolean = {
     if (commandArgs.filterNoCalls) record.getGenotypes.exists(g => !g.isHomRef)
     else true
-- 
GitLab