package jalview.schemes;
+import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AnnotatedCollectionI;
import jalview.datamodel.HiddenMarkovModel;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceI;
+import jalview.util.ColorUtils;
+import jalview.util.Comparison;
import java.awt.Color;
import java.util.Map;
{
if (hmm ==null)
{
- return new Color(255, 255, 255);
+ return Color.white;
}
return findColour(symbol, position);
}
public Color findColour(char symbol, int position)
{
+ if (Comparison.isGap(symbol))
+ {
+ return Color.white;
+ }
+ Double prob;
+ prob = hmm.getMatchEmissionProbability(position, symbol);
+ double freq = ResidueProperties.aminoBackgroundFrequencies.get(symbol);
+ Double value = prob - freq;
- Double probability;
- probability = hmm.getMatchEmissionProbability(position, symbol);
- // Double redModifier = Math.pow(probability, 0.9);
- Double doubleGreenModifier;
- float greenModifier;
- if (probability < 0.5)
+ Color colour = null;
+ if (value >= 0)
{
- doubleGreenModifier = probability;
- greenModifier = doubleGreenModifier.floatValue();
+
+ colour = ColorUtils.getGraduatedColour(value.floatValue(), 0,
+ Color.WHITE, 1f, Color.green);
}
- else
+ else if (value < 0)
{
- doubleGreenModifier = Math.pow(probability, 1 / 1.9);
- greenModifier = doubleGreenModifier.floatValue();
+ return Color.YELLOW;
+
}
- // Double blueModifier = Math.pow(probability, 0.9);
- return new Color(1f, 1f - greenModifier, 0.f);
+ return colour;
}
+
+
+
+
+
@Override
public void alignmentChanged(AnnotatedCollectionI collection,
Map<SequenceI, SequenceCollectionI> hiddenReps)
{
+ AlignmentAnnotation[] annArr = collection.getAlignmentAnnotation();
+ for (AlignmentAnnotation ann : annArr)
+ {
+ if (ann.label.indexOf("Information Content") > -1)
+ {
+ hmm = ann.getHMM();
+ }
+ }
- collection.setHMM(hmm);
}
@Override
public ColourSchemeI getInstance(AnnotatedCollectionI sg,
Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
{
+ HiddenMarkovModel markov = null;
+ AlignmentAnnotation[] annArr = sg.getAlignmentAnnotation();
+ for (AlignmentAnnotation ann : annArr)
+ {
+ if (ann.label.indexOf("Information Content") > -1)
+ {
+ markov = ann.getHMM();
+ }
+ }
- HMMERColourScheme markov = new HMMERColourScheme(sg.getHMM());
- return markov;
+ HMMERColourScheme colour = new HMMERColourScheme(markov);
+ return colour;
+
}
@Override