From 46978828b4b9d0dabeec8f35e2c5f8831ea9f6b1 Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Mon, 19 Aug 2013 16:20:18 +0100
Subject: [PATCH] add predicate to check partial settings

---
 uk/ac/sanger/artemis/io/ValidateFeature.java | 23 ++++++++++++++------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/uk/ac/sanger/artemis/io/ValidateFeature.java b/uk/ac/sanger/artemis/io/ValidateFeature.java
index 027893ec3..eb3551cdf 100644
--- a/uk/ac/sanger/artemis/io/ValidateFeature.java
+++ b/uk/ac/sanger/artemis/io/ValidateFeature.java
@@ -133,6 +133,7 @@ public class ValidateFeature
       showFeatureList(STRAND_PREDICATE, "Gene Strand Errors", grp, sel, gotoSrc, plotGrp);
       showFeatureList(BOUNDARY_PREDICATE, "Gene Boundary Errors", grp, sel, gotoSrc, plotGrp);
       showFeatureList(COMPLETE_GENE_MODEL_PREDICATE, "Incomplete Gene Model", grp, sel, gotoSrc, plotGrp);
+      showFeatureList(PARTIAL_PREDICATE, "Partial Settings", grp, sel, gotoSrc, plotGrp);
     }
     
     showFeatureList(INTERNAL_STOP, "Internal Stop Codons", grp, sel, gotoSrc, plotGrp);
@@ -212,15 +213,11 @@ public class ValidateFeature
           report.put("Gene features found on different strand", Level.FATAL);
         }
 
-        if(!isPartialConsistent(gffFeature, "Start_range"))
+        if(!isPartialConsistent(gffFeature, "Start_range") || 
+           !isPartialConsistent(gffFeature, "End_range"))
         {
           pass = false;
-          report.put("Partial attribute 'Start_range' not consistent", Level.FATAL);
-        }
-        if(!isPartialConsistent(gffFeature, "End_range"))
-        {
-          pass = false;
-          report.put("Partial attribute 'End_range' not consistent", Level.FATAL);
+          report.put("Partial settings not consistent", Level.FATAL);
         }
       }
     
@@ -547,6 +544,7 @@ public class ValidateFeature
     return true;
   }
   
+  
   /**
    * The phase is REQUIRED for all CDS features.
    * @param gffFeature
@@ -903,6 +901,17 @@ public class ValidateFeature
     }
   };
   
+  private static FeaturePredicate PARTIAL_PREDICATE = new FeaturePredicate() 
+  {
+    public boolean testPredicate(uk.ac.sanger.artemis.Feature feature)
+    {
+      if( isPartialConsistent((GFFStreamFeature) feature.getEmblFeature(), "Start_range") &&
+          isPartialConsistent((GFFStreamFeature) feature.getEmblFeature(), "End_range") )
+        return false;
+      return true;
+    }
+  };
+  
   private FeaturePredicate INTERNAL_STOP = new FeaturePredicate() 
   {
     public boolean testPredicate(uk.ac.sanger.artemis.Feature feature)
-- 
GitLab