*/
package jalview.schemes;
+import jalview.analysis.scoremodels.ScoreModels;
+import jalview.api.analysis.PairwiseScoreModelI;
import jalview.datamodel.AnnotatedCollectionI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceI;
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()
}
@Override
- public Color findColour(char res, int j, SequenceI seq)
+ public Color findColour(char res, int j, SequenceI seq,
+ String consensusResidue, float pid)
{
+ PairwiseScoreModelI sm = ScoreModels.getInstance().getBlosum62();
+
+ /*
+ * compare as upper case; note consensusResidue is
+ * always computed as uppercase
+ */
if ('a' <= res && res <= 'z')
{
- // TO UPPERCASE !!!
res -= ('a' - 'A');
}
- if (consensus == null || consensus.get(j) == null
- || (threshold != 0 && !aboveThreshold(res, j)))
+ if (Comparison.isGap(res) || consensusResidue == null)
{
return Color.white;
}
- Color currentColour;
+ Color colour;
- if (!Comparison.isGap(res))
+ if (consensusResidue.indexOf(res) > -1)
{
- /*
- * test if this is the consensus (or joint consensus) residue
- */
- String max = consensus.get(j).getModalResidue();
+ colour = DARK_BLUE;
+ }
+ else
+ {
+ float score = 0;
- if (max.indexOf(res) > -1)
+ for (char consensus : consensusResidue.toCharArray())
{
- currentColour = DARK_BLUE;
+ score += sm.getPairwiseScore(consensus, res);
}
- else
+
+ if (score > 0)
{
- 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)
- {
- currentColour = LIGHT_BLUE;
- }
- else
- {
- currentColour = Color.white;
- }
+ colour = LIGHT_BLUE;
}
-
- if (conservationColouring)
+ else
{
- currentColour = applyConservation(currentColour, j);
+ colour = Color.white;
}
}
- else
- {
- return Color.white;
- }
-
- return currentColour;
+ return colour;
}
@Override