package jalview.datamodel; /** * stores data for each node in the hmm model * @author TZVanaalten * */ public class HMMNode { //contains the match emissions for each symbol double[] matchEmissions; //contains the insert emissions for each symbol double[] insertEmissions; // contains the state transitions for each possible transition. These are mm, // mi, md, im, ii, dm and dd in order double[] stateTransitions; //annotations int residueNumber; char consensusResidue; char referenceAnnotation; char maskValue; char consensusStructure; /** * Constructor */ public HMMNode() { } public double[] getMatchEmissions() { return matchEmissions; } double getMatchEmission(int symbolIndex) { return matchEmissions[symbolIndex]; } public void setMatchEmissions(double[] matches) { this.matchEmissions = matches; } public double[] getInsertEmissions() { return insertEmissions; } double getInsertEmission(int symbolIndex) { return insertEmissions[symbolIndex]; } public void setInsertEmissions(double[] insertEmissionsL) { this.insertEmissions = insertEmissionsL; } public double[] getStateTransitions() { return stateTransitions; } double getStateTransition(int transition) { return stateTransitions[transition]; } public void setStateTransitions(double[] stateTransitionsM) { this.stateTransitions = stateTransitionsM; } int getResidueNumber() { return residueNumber; } public void setResidueNumber(int resNo) { this.residueNumber = resNo; } char getConsensusResidue() { return consensusResidue; } public void setConsensusResidue(char consensusResidue) { this.consensusResidue = consensusResidue; } char getReferenceAnnotation() { return referenceAnnotation; } public void setReferenceAnnotation(char referenceAnnotation) { this.referenceAnnotation = referenceAnnotation; } char getMaskValue() { return maskValue; } public void setMaskValue(char maskValue) { this.maskValue = maskValue; } char getConsensusStructure() { return consensusStructure; } public void setConsensusStructure(char consensusStructure) { this.consensusStructure = consensusStructure; } /** * Answers the symbol index of the symbol with the highest match emission * probability (first symbol in case of a tie). Note this object stores * probabilities, not the negative logarithms as in the HMM file. * * @return */ int getMaxMatchEmissionIndex() { int maxIndex = 0; double max = 0D; for (int i = 0; i < matchEmissions.length; i++) { if (matchEmissions[i] > max) { max = matchEmissions[i]; maxIndex = i; } } return maxIndex; } }