Merge branch 'develop' into bug/JAL-2255_seq-fetcher-broken-on-linux
[jalview.git] / src / jalview / schemes / Blosum62ColourScheme.java
index 9d09259..f35b886 100755 (executable)
  */
 package jalview.schemes;
 
-import jalview.analysis.AAFrequency;
 import jalview.datamodel.AnnotatedCollectionI;
 import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceI;
+import jalview.util.Comparison;
 
 import java.awt.Color;
 import java.util.Map;
 
 public class Blosum62ColourScheme extends ResidueColourScheme
 {
+  private static final Color LIGHT_BLUE = new Color(204, 204, 255);
+  private static final Color DARK_BLUE = new Color(154, 154, 255);
+
   public Blosum62ColourScheme()
   {
     super();
   }
 
+  /**
+   * Returns a new instance of this colour scheme with which the given data may
+   * be coloured
+   */
   @Override
-  public Color findColour(char res, int j, SequenceI seq)
+  public ColourSchemeI getInstance(AnnotatedCollectionI coll,
+          Map<SequenceI, SequenceCollectionI> hrs)
   {
+    return new Blosum62ColourScheme();
+  }
+
+  @Override
+  public Color findColour(char res, int j, SequenceI seq,
+          String consensusResidue, float pid)
+  {
+    /*
+     * compare as upper case; note consensusResidue is 
+     * always computed as uppercase
+     */
     if ('a' <= res && res <= 'z')
     {
-      // TO UPPERCASE !!!
       res -= ('a' - 'A');
     }
 
-    if (consensus == null || j >= consensus.length || consensus[j] == null
-            || (threshold != 0 && !aboveThreshold(res, j)))
+    if (Comparison.isGap(res) || consensusResidue == null)
     {
       return Color.white;
     }
 
-    Color currentColour;
+    Color colour;
 
-    if (!jalview.util.Comparison.isGap(res))
+    if (consensusResidue.indexOf(res) > -1)
     {
-      String max = (String) consensus[j].get(AAFrequency.MAXRESIDUE);
+      colour = DARK_BLUE;
+    }
+    else
+    {
+      int c = 0;
 
-      if (max.indexOf(res) > -1)
+      for (char consensus : consensusResidue.toCharArray())
       {
-        // TODO use a constant here?
-        currentColour = new Color(154, 154, 255);
+        c += ResidueProperties.getBLOSUM62(consensus, res);
       }
-      else
-      {
-        int c = 0;
-        int max_aa = 0;
-        int n = max.length();
 
-        do
-        {
-          c += ResidueProperties.getBLOSUM62(max.charAt(max_aa), res);
-        } while (++max_aa < n);
-
-        if (c > 0)
-        {
-          // TODO use a constant here?
-          currentColour = new Color(204, 204, 255);
-        }
-        else
-        {
-          currentColour = Color.white;
-        }
+      if (c > 0)
+      {
+        colour = LIGHT_BLUE;
       }
-
-      if (conservationColouring)
+      else
       {
-        currentColour = applyConservation(currentColour, j);
+        colour = Color.white;
       }
     }
-    else
-    {
-      return Color.white;
-    }
+    return colour;
+  }
 
-    return currentColour;
+  @Override
+  public boolean isPeptideSpecific()
+  {
+    return true;
+  }
+
+  @Override
+  public String getSchemeName()
+  {
+    return JalviewColourScheme.Blosum62.toString();
   }
 
   @Override
-  public ColourSchemeI applyTo(AnnotatedCollectionI sg,
-          Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
+  public boolean isSimple()
   {
-    ColourSchemeI newcs = super.applyTo(sg, hiddenRepSequences);
-    return newcs;
+    return false;
   }
 }