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 HMMERColourScheme extends ResidueColourScheme
17 AnnotatedCollectionI alignment;
19 HiddenMarkovModel hmm;
21 boolean peptideSpecific;
23 boolean nucleotideSpecific;
25 public HMMERColourScheme(HiddenMarkovModel markov)
29 public HMMERColourScheme()
35 public Color findColour(char symbol, int position, SequenceI seq,
36 String consensusResidue, float pid)
42 return findColour(symbol, position);
45 public Color findColour(char symbol, int position)
48 if (Comparison.isGap(symbol))
52 if (Character.isLowerCase(symbol))
54 return new Color(230, 0, 0);
57 prob = hmm.getMatchEmissionProbability(position, symbol);
59 if ("amino".equals(hmm.getAlphabetType()))
61 if (!ResidueProperties.aminoBackgroundFrequencies.containsKey(symbol))
65 freq = ResidueProperties.aminoBackgroundFrequencies.get(symbol);
67 else if ("DNA".equals(hmm.getAlphabetType()))
69 if (!ResidueProperties.dnaBackgroundFrequencies.containsKey(symbol))
73 freq = ResidueProperties.dnaBackgroundFrequencies.get(symbol);
75 else if ("RNA".equals(hmm.getAlphabetType()))
77 if (!ResidueProperties.rnaBackgroundFrequencies.containsKey(symbol))
81 freq = ResidueProperties.rnaBackgroundFrequencies.get(symbol);
85 return new Color(230, 0, 0);
87 Double value = Math.log(prob / freq);
92 colour = ColorUtils.getGraduatedColour(value.floatValue(), 0,
93 Color.WHITE, 4.52f, Color.blue);
110 public void alignmentChanged(AnnotatedCollectionI collection,
111 Map<SequenceI, SequenceCollectionI> hiddenReps)
113 List<SequenceI> seqs = collection.getSequences();
114 for (SequenceI seq : seqs)
116 if (seq.getHMM() != null)
128 public ColourSchemeI getInstance(AnnotatedCollectionI sg,
129 Map<SequenceI, SequenceCollectionI> hiddenRepSequences)
131 HiddenMarkovModel markov = null;
132 List<SequenceI> seqs = sg.getSequences();
133 for (SequenceI seq : seqs)
135 if (seq.getHMM() != null)
137 markov = seq.getHMM();
141 HMMERColourScheme colour = new HMMERColourScheme(markov);
147 public boolean isApplicableTo(AnnotatedCollectionI ac)
154 public String getSchemeName()
157 return JalviewColourScheme.HMMER.name();
161 public boolean isSimple()
163 // TODO Auto-generated method stub