package jalview.schemes; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.HiddenMarkovModel; import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceI; import java.awt.Color; import java.util.Map; public class HMMERColourScheme extends ResidueColourScheme { AnnotatedCollectionI alignment; HiddenMarkovModel hmm; boolean peptideSpecific; boolean nucleotideSpecific; public HMMERColourScheme(HiddenMarkovModel markov) { hmm = markov; } public HMMERColourScheme() { } @Override public Color findColour(char symbol, int position, SequenceI seq, String consensusResidue, float pid) { if (hmm ==null) { return new Color(255, 255, 255); } return findColour(symbol, position); } public Color findColour(char symbol, int position) { Double probability; probability = hmm.getMatchEmissionProbability(position, symbol); // Double redModifier = Math.pow(probability, 0.9); Double doubleGreenModifier; float greenModifier; if (probability < 0.5) { doubleGreenModifier = probability; greenModifier = doubleGreenModifier.floatValue(); } else { doubleGreenModifier = Math.pow(probability, 1 / 1.9); greenModifier = doubleGreenModifier.floatValue(); } // Double blueModifier = Math.pow(probability, 0.9); return new Color(1f, 1f - greenModifier, 0.f); } @Override public void alignmentChanged(AnnotatedCollectionI collection, Map hiddenReps) { collection.setHMM(hmm); } @Override public ColourSchemeI getInstance(AnnotatedCollectionI sg, Map hiddenRepSequences) { HMMERColourScheme markov = new HMMERColourScheme(sg.getHMM()); return markov; } @Override public boolean isApplicableTo(AnnotatedCollectionI ac) { return true; } @Override public String getSchemeName() { return JalviewColourScheme.HMMER.name(); } @Override public boolean isSimple() { // TODO Auto-generated method stub return false; } }