JAL-2385 more tests/bug fixes mostly for gui.SliderPanel and some
[jalview.git] / src / jalview / renderer / ResidueShader.java
index c591031..3f5cd11 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.renderer;
 
 import jalview.analysis.Conservation;
+import jalview.api.ViewStyleI;
 import jalview.datamodel.AnnotatedCollectionI;
 import jalview.datamodel.ProfileI;
 import jalview.datamodel.ProfilesI;
@@ -27,19 +28,47 @@ import java.util.Map;
  */
 public class ResidueShader implements ResidueShaderI
 {
+  private static final int INITIAL_CONSERVATION = 30;
+
+  /*
+   * the colour scheme that gives the colour of each residue
+   * before applying any conservation or PID shading
+   */
   private ColourSchemeI colourScheme;
 
+  /*
+   * the consensus data for each column
+   */
   private ProfilesI consensus;
 
+  /*
+   * if true, apply shading of colour by conservation
+   */
   private boolean conservationColouring;
 
+  /*
+   * the phsyico-chemical property conservation scores for columns, with values
+   * 0-9, '+' (all properties conserved), '*' (residue fully conserved) or '-' (gap)
+   * (may be null if colour by conservation is not selected)
+   */
   private char[] conservation;
 
-  private int threshold;
+  /*
+   * minimum percentage identity for colour to be applied;
+   * if above zero, residue must match consensus (or joint consensus)
+   * and column have >= pidThreshold identity with the residue
+   */
+  private int pidThreshold;
 
+  /*
+   * if true, ignore gaps in percentage identity calculation
+   */
   private boolean ignoreGaps;
 
-  private int inc;
+  /*
+   * setting of the By Conservation slider
+   */
+  private int conservationIncrement = INITIAL_CONSERVATION;
 
   public ResidueShader(ColourSchemeI cs)
   {
@@ -54,6 +83,19 @@ public class ResidueShader implements ResidueShaderI
   }
 
   /**
+   * Constructor given view style settings
+   * 
+   * @param viewStyle
+   */
+  public ResidueShader(ViewStyleI viewStyle)
+  {
+    // TODO remove duplicated storing of conservation / pid thresholds?
+    this();
+    setConservationApplied(viewStyle.isConservationColourSelected());
+    // setThreshold(viewStyle.getThreshold());
+  }
+
+  /**
    * @see jalview.renderer.ResidueShaderI#setConsensus(jalview.datamodel.ProfilesI)
    */
   @Override
@@ -120,7 +162,7 @@ public class ResidueShader implements ResidueShaderI
   @Override
   public void setThreshold(int consensusThreshold, boolean ignoreGaps)
   {
-    threshold = consensusThreshold;
+    pidThreshold = consensusThreshold;
     this.ignoreGaps = ignoreGaps;
   }
 
@@ -130,7 +172,7 @@ public class ResidueShader implements ResidueShaderI
   @Override
   public void setConservationInc(int i)
   {
-    inc = i;
+    conservationIncrement = i;
   }
 
   /**
@@ -139,7 +181,7 @@ public class ResidueShader implements ResidueShaderI
   @Override
   public int getConservationInc()
   {
-    return inc;
+    return conservationIncrement;
   }
 
   /**
@@ -148,7 +190,7 @@ public class ResidueShader implements ResidueShaderI
   @Override
   public int getThreshold()
   {
-    return threshold;
+    return pidThreshold;
   }
 
   /**
@@ -224,7 +266,7 @@ public class ResidueShader implements ResidueShaderI
    */
   protected boolean aboveThreshold(char residue, int column)
   {
-    if (threshold == 0)
+    if (pidThreshold == 0)
     {
       return true;
     }
@@ -248,7 +290,7 @@ public class ResidueShader implements ResidueShaderI
     if (profile != null
             && profile.getModalResidue().contains(String.valueOf(residue)))
     {
-      if (profile.getPercentageIdentity(ignoreGaps) >= threshold)
+      if (profile.getPercentageIdentity(ignoreGaps) >= pidThreshold)
       {
         return true;
       }
@@ -308,7 +350,7 @@ public class ResidueShader implements ResidueShaderI
      * as a result, scores of:         0  1  2  3  4  5  6  7  8  9
      * fade to white at slider value: 18 20 22 25 29 33 40 50 67 100%
      */
-    bleachFactor *= (inc / 20f);
+    bleachFactor *= (conservationIncrement / 20f);
   
     return ColorUtils.bleachColour(currentColour, bleachFactor);
   }