package jalview.schemes; import jalview.api.AlignViewportI; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.SequenceCollectionI; /** * An HMM colour scheme that uses global ('Uniprot') background frequencies for * residues * * @author tzvanaalten */ public class HmmerGlobalBackground extends HmmerColourScheme { /* * The highest possible log ratio is when match emission probability in * the HMM model is 1, and background (for W) is 0.0109 giving * log(1/0.0109) = log(91.743) = 4.519 */ private static final float MAX_LOG_RATIO = 4.519f; /** * Constructor given a sequence collection * * @param ac */ public HmmerGlobalBackground(SequenceCollectionI ac) { super(ac.getHmmSequences()); String alphabetType = getHmm() == null ? ResidueProperties.ALPHABET_AMINO : getHmm().getAlphabetType(); setFrequencies( ResidueProperties.backgroundFrequencies.get(alphabetType)); } /** * Default constructor (required by ColourSchemes.loadColourSchemes) */ public HmmerGlobalBackground() { } @Override public String getSchemeName() { return JalviewColourScheme.HMMERU.toString(); } @Override protected HmmerColourScheme newInstance(AnnotatedCollectionI ac) { return new HmmerGlobalBackground(ac); } @Override float getMaxInformationScore() { return MAX_LOG_RATIO; } /** * Answers a new colour scheme instance based on the HMM of the first sequence * in alignment that has an HMM */ @Override public ColourSchemeI getInstance(AlignViewportI viewport, AnnotatedCollectionI ac) { return newInstance(ac); } }