1 package jalview.schemes;
3 import jalview.datamodel.AnnotatedCollectionI;
4 import jalview.datamodel.HiddenMarkovModel;
5 import jalview.datamodel.SequenceCollectionI;
6 import jalview.datamodel.SequenceI;
7 import jalview.util.ColorUtils;
8 import jalview.util.Comparison;
10 import java.awt.Color;
11 import java.util.List;
14 public class HMMERAlignmentColourScheme extends ResidueColourScheme
17 AnnotatedCollectionI alignment;
19 HiddenMarkovModel hmm;
21 boolean peptideSpecific;
23 boolean nucleotideSpecific;
25 public HMMERAlignmentColourScheme(HiddenMarkovModel markov)
30 public HMMERAlignmentColourScheme()
36 public Color findColour(char symbol, int position, SequenceI seq,
37 String consensusResidue, float pid)
43 return findColour(symbol, position);
47 * Returns the colour at a particular symbol at a column in the alignment.
51 * @return Red for an insertion, white for a gap, orange for a negative
52 * information content, white to blue for increasing information
55 private Color findColour(char symbol, int position)
58 if (Comparison.isGap(symbol))
62 if (Character.isLowerCase(symbol))
64 symbol = Character.toUpperCase(symbol);
67 prob = hmm.getMatchEmissionProbability(position, symbol);
69 String alpha = hmm.getAlphabetType();
70 if (!ResidueProperties.backgroundFrequencies.get(alpha)
77 freq = ResidueProperties.backgroundFrequencies.get(alpha).get(symbol);
81 return new Color(230, 0, 0);
83 Double value = Math.log(prob / freq);
88 colour = ColorUtils.getGraduatedColour(value.floatValue(), 0,
89 Color.WHITE, 4.52f, Color.blue);
101 public void alignmentChanged(AnnotatedCollectionI collection,
102 Map<SequenceI, SequenceCollectionI> hiddenReps)
104 List<SequenceI> seqs = collection.getSequences();
105 for (SequenceI seq : seqs)
107 if (seq.isHMMConsensusSequence())
117 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
118 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
120 HiddenMarkovModel markov = null;
121 List<SequenceI> seqs = sg.getSequences();
122 for (SequenceI seq : seqs)
124 if (seq.getHMM() != null)
126 markov = seq.getHMM();
130 HMMERColourScheme colour = new HMMERColourScheme(markov);
136 public boolean isApplicableTo(AnnotatedCollectionI ac)
143 public String getSchemeName()
146 return JalviewColourScheme.HMMERA.name();
150 public boolean isSimple()