JAL-2360 tidy up, simplify isApplicableTo test
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 21 Dec 2016 15:16:34 +0000 (15:16 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Wed, 21 Dec 2016 15:16:34 +0000 (15:16 +0000)
src/jalview/schemes/TCoffeeColourScheme.java

index 0611edc..6f55204 100644 (file)
@@ -31,6 +31,7 @@ import jalview.io.TCoffeeScoreFile;
 import java.awt.Color;
 import java.util.ArrayList;
 import java.util.IdentityHashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -44,19 +45,6 @@ import java.util.Map;
  */
 public class TCoffeeColourScheme extends ResidueColourScheme
 {
-
-  static final Color[] colors = { new Color(102, 102, 255), // #6666FF
-      new Color(0, 255, 0), // #00FF00
-      new Color(102, 255, 0), // #66FF00
-      new Color(204, 255, 0), // #CCFF00
-      new Color(255, 255, 0), // #FFFF00
-      new Color(255, 204, 0), // #FFCC00
-      new Color(255, 153, 0), // #FF9900
-      new Color(255, 102, 0), // #FF6600
-      new Color(255, 51, 0), // #FF3300
-      new Color(255, 34, 0) // #FF2000
-  };
-
   IdentityHashMap<SequenceI, Color[]> seqMap;
 
   /**
@@ -79,6 +67,13 @@ public class TCoffeeColourScheme extends ResidueColourScheme
     alignmentChanged(alignment, null);
   }
 
+  /**
+   * Finds the TCoffeeScore annotation (if any) for each sequence and notes the
+   * annotation colour for each column position. The colours are fixed for
+   * scores 0-9 and are set when annotation is parsed.
+   * 
+   * @see TCoffeeScoreFile#annotateAlignment(AlignmentI, boolean)
+   */
   @Override
   public void alignmentChanged(AnnotatedCollectionI alignment,
           Map<SequenceI, SequenceCollectionI> hiddenReps)
@@ -88,7 +83,7 @@ public class TCoffeeColourScheme extends ResidueColourScheme
 
     // assume only one set of TCOFFEE scores - but could have more than one
     // potentially.
-    ArrayList<AlignmentAnnotation> annots = new ArrayList<AlignmentAnnotation>();
+    List<AlignmentAnnotation> annots = new ArrayList<AlignmentAnnotation>();
     // Search alignment to get all tcoffee annotation and pick one set of
     // annotation to use to colour seqs.
     seqMap = new IdentityHashMap<SequenceI, Color[]>();
@@ -127,9 +122,12 @@ public class TCoffeeColourScheme extends ResidueColourScheme
   @Override
   public Color findColour(char c, int j, SequenceI seq)
   {
-    Color[] cols;
-
-    if (seqMap == null || (cols = seqMap.get(seq)) == null)
+    if (seqMap == null)
+    {
+      return Color.WHITE;
+    }
+    Color[] cols = seqMap.get(seq);
+    if (cols == null)
     {
       // see above TODO about computing a colour for each residue in each
       // column: cc = _rcols[i][indexFor[c]];
@@ -151,28 +149,20 @@ public class TCoffeeColourScheme extends ResidueColourScheme
   }
 
   /**
-   * Answers true if the annotated data has TCoffee score annotation
+   * Answers true if the data has TCoffee score annotation
    */
   @Override
   public boolean isApplicableTo(AnnotatedCollectionI ac)
   {
-    if (ac.getContext() != null)
-    {
-      ac = ac.getContext();
-    }
-    AlignmentAnnotation[] anns = ac.getAlignmentAnnotation();
-    if (anns == null)
+    AnnotatedCollectionI alcontext = ac instanceof AlignmentI ? ac : ac
+            .getContext();
+    if (alcontext == null)
     {
       return false;
     }
-    for (AlignmentAnnotation ann : anns)
-    {
-      if (TCoffeeScoreFile.TCOFFEE_SCORE.equals(ann.getCalcId()))
-      {
-        return true;
-      }
-    }
-    return false;
+    Iterable<AlignmentAnnotation> anns = alcontext
+            .findAnnotation(TCoffeeScoreFile.TCOFFEE_SCORE);
+    return anns.iterator().hasNext();
   }
 
   @Override