JAL-3665 sequences shaded according to emmission probability of first aligned hmm...
[jalview.git] / src / jalview / schemes / HmmerGlobalBackground.java
1 package jalview.schemes;
2
3 import jalview.api.AlignViewportI;
4 import jalview.datamodel.AnnotatedCollectionI;
5 import jalview.datamodel.HiddenMarkovModel;
6 import jalview.datamodel.SequenceCollectionI;
7 import jalview.datamodel.SequenceI;
8 import jalview.hmmer.HMMSearch;
9
10 /**
11  * An HMM colour scheme that uses global ('Uniprot') background frequencies for
12  * residues
13  * 
14  * @author tzvanaalten
15  */
16 public class HmmerGlobalBackground extends HmmerColourScheme
17 {
18   /*
19    * The highest possible log ratio is when match emission probability in
20    * the HMM model is 1, and background (for W) is 0.0109 giving
21    * log(1/0.0109) = log(91.743) = 4.519
22    */
23   private static final float MAX_LOG_RATIO = 4.519f;
24
25   /**
26    * Constructor given a sequence collection
27    * 
28    * @param ac
29    */
30   public HmmerGlobalBackground(SequenceCollectionI ac)
31   {
32     super(ac.getHmmSequences());
33     String alphabetType = getAlphabetType();
34     setFrequencies(
35             ResidueProperties.backgroundFrequencies.get(alphabetType));
36   }
37
38   /**
39    * Default constructor (required by ColourSchemes.loadColourSchemes)
40    */
41   public HmmerGlobalBackground()
42   {
43   }
44
45   @Override
46   public String getSchemeName()
47   {
48     return JalviewColourScheme.HMMERU.toString();
49   }
50
51   @Override
52   protected HmmerColourScheme newInstance(AnnotatedCollectionI ac)
53   {
54     return new HmmerGlobalBackground(ac);
55   }
56
57   @Override
58   float getMaxInformationScore()
59   {
60     return MAX_LOG_RATIO;
61   }
62
63   /**
64    * Answers a new colour scheme instance based on the HMM of the first sequence
65    * in alignment that has an HMM
66    */
67   @Override
68   public ColourSchemeI getInstance(AlignViewportI viewport,
69           AnnotatedCollectionI ac)
70   {
71     return newInstance(ac);
72   }
73
74 }