X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FResidueShader.java;h=8ecb2ad70669d3e6339cd211ebfe9a35a9ea8edf;hb=163ed5b997bbda48e4cdd950e87a8fe01baae7fb;hp=c591031b1b5da96668cd777477fc6c6b64cabea4;hpb=b2b7e99113e1f0962140fc72d989cc826799a2d4;p=jalview.git diff --git a/src/jalview/renderer/ResidueShader.java b/src/jalview/renderer/ResidueShader.java index c591031..8ecb2ad 100644 --- a/src/jalview/renderer/ResidueShader.java +++ b/src/jalview/renderer/ResidueShader.java @@ -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 physico-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,33 @@ 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()); + } + + /** + * Copy constructor + */ + public ResidueShader(ResidueShader rs) + { + this.colourScheme = rs.colourScheme; + this.consensus = rs.consensus; + this.conservation = rs.conservation; + this.conservationColouring = rs.conservationColouring; + this.conservationIncrement = rs.conservationIncrement; + this.ignoreGaps = rs.ignoreGaps; + this.pidThreshold = rs.pidThreshold; + } + + /** * @see jalview.renderer.ResidueShaderI#setConsensus(jalview.datamodel.ProfilesI) */ @Override @@ -120,7 +176,7 @@ public class ResidueShader implements ResidueShaderI @Override public void setThreshold(int consensusThreshold, boolean ignoreGaps) { - threshold = consensusThreshold; + pidThreshold = consensusThreshold; this.ignoreGaps = ignoreGaps; } @@ -130,7 +186,7 @@ public class ResidueShader implements ResidueShaderI @Override public void setConservationInc(int i) { - inc = i; + conservationIncrement = i; } /** @@ -139,7 +195,7 @@ public class ResidueShader implements ResidueShaderI @Override public int getConservationInc() { - return inc; + return conservationIncrement; } /** @@ -148,7 +204,7 @@ public class ResidueShader implements ResidueShaderI @Override public int getThreshold() { - return threshold; + return pidThreshold; } /** @@ -224,7 +280,7 @@ public class ResidueShader implements ResidueShaderI */ protected boolean aboveThreshold(char residue, int column) { - if (threshold == 0) + if (pidThreshold == 0) { return true; } @@ -248,7 +304,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 +364,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); }