Class WMAsMM
- java.lang.Object
-
- org.biojava.utils.AbstractChangeable
-
- org.biojava.bio.dp.WMAsMM
-
- All Implemented Interfaces:
Serializable,MarkovModel,Changeable
public class WMAsMM extends AbstractChangeable implements MarkovModel, Serializable
Wraps a weight matrix up so that it appears to be a very simple HMM.- Author:
- Matthew Pocock
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from interface org.biojava.bio.dp.MarkovModel
ARCHITECTURE, PARAMETER
-
-
Constructor Summary
Constructors Constructor Description WMAsMM(WeightMatrix wm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddState(State toAdd)Adds a state to the model.int[]advance()The maximum advance for this model.booleancontainsTransition(State from, State to)Returns wether a transition exists or not.voidcreateTransition(State from, State to)Makes a transition between two states legal.voiddestroyTransition(State from, State to)Breaks a transition between two states legal.AlphabetemissionAlphabet()Alphabet that is emitted by the emission states.DistributiongetWeights(State source)Get a probability Distribution over the transition from 'source'.intheads()The number of heads on this model.protected intindex(State s)MagicalStatemagicalState()The MagicalState for this model.voidregisterWithTrainer(ModelTrainer modelTrainer)voidremoveState(State toAdd)Remove a state from the model.voidsetWeights(State source, Distribution dist)Set the probability distribution over the transitions from 'source'.FiniteAlphabetstateAlphabet()FiniteAlphabet of the states.FiniteAlphabettransitionsFrom(State from)Returns the FiniteAlphabet of all states that have a transition from 'source'.FiniteAlphabettransitionsTo(State to)Returns the FiniteAlphabet of all states that have a transition to 'dest'.-
Methods inherited from class org.biojava.utils.AbstractChangeable
addChangeListener, addChangeListener, generateChangeSupport, getChangeSupport, hasListeners, hasListeners, isUnchanging, removeChangeListener, removeChangeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.biojava.utils.Changeable
addChangeListener, addChangeListener, isUnchanging, removeChangeListener, removeChangeListener
-
-
-
-
Constructor Detail
-
WMAsMM
public WMAsMM(WeightMatrix wm) throws IllegalSymbolException
- Throws:
IllegalSymbolException
-
-
Method Detail
-
advance
public int[] advance()
Description copied from interface:MarkovModelThe maximum advance for this model.Each head consumes a single SymbolList. However, the states that advance through that SymbolList may emit more than one symbol at a time. This array give the maximum advance in each direction.
Be sure to return a new array each time this is called. This protects the internal state of the object from someone modifying the advance array. Be sure to update this as/when states modify their advance arrays and as/when states are added or removed- Specified by:
advancein interfaceMarkovModel- Returns:
- the maximum advance of all states for all heads
-
emissionAlphabet
public Alphabet emissionAlphabet()
Description copied from interface:MarkovModelAlphabet that is emitted by the emission states.- Specified by:
emissionAlphabetin interfaceMarkovModel
-
stateAlphabet
public FiniteAlphabet stateAlphabet()
Description copied from interface:MarkovModelFiniteAlphabet of the states.We are modeling a finite-state-machine, so there will be a finite set of states.
The MagicalState returned by getMagicalState is always contained within this as the start/end state.
- Specified by:
stateAlphabetin interfaceMarkovModel- Returns:
- the alphabet over states
-
heads
public int heads()
Description copied from interface:MarkovModelThe number of heads on this model.Each head consumes a single SymbolList. A single-head model just consumes/ emits a single sequence. A two-head model performs alignment between two sequences (e.g. smith-waterman). Models with more heads do more interesting things.
heads()should equaladvance().length.- Specified by:
headsin interfaceMarkovModel- Returns:
- the number of heads in this model.
-
magicalState
public MagicalState magicalState()
Description copied from interface:MarkovModelThe MagicalState for this model.- Specified by:
magicalStatein interfaceMarkovModel
-
getWeights
public Distribution getWeights(State source) throws IllegalSymbolException
Description copied from interface:MarkovModelGet a probability Distribution over the transition from 'source'.- Specified by:
getWeightsin interfaceMarkovModel- Parameters:
source- the State currently occupied- Returns:
- the probability Distribution over the reachable states
- Throws:
IllegalSymbolException- if from is not a legal state
-
setWeights
public void setWeights(State source, Distribution dist) throws ChangeVetoException
Description copied from interface:MarkovModelSet the probability distribution over the transitions from 'source'.This should throw an IllegalAlphabetException if the source alphabet in 'dist' is not the same alphabet as returned by transitionsFrom(source).
- Specified by:
setWeightsin interfaceMarkovModel- Parameters:
source- the source Statedist- the new distribution over transitions from 'source'- Throws:
ChangeVetoException- if for any reason the distribution can't be replaced at this time
-
transitionsFrom
public FiniteAlphabet transitionsFrom(State from) throws IllegalSymbolException
Description copied from interface:MarkovModelReturns the FiniteAlphabet of all states that have a transition from 'source'.- Specified by:
transitionsFromin interfaceMarkovModel- Parameters:
from- the source State- Returns:
- a FiniteAlphabet of State objects that can reach from 'source'
- Throws:
IllegalSymbolException
-
transitionsTo
public FiniteAlphabet transitionsTo(State to) throws IllegalSymbolException
Description copied from interface:MarkovModelReturns the FiniteAlphabet of all states that have a transition to 'dest'.- Specified by:
transitionsToin interfaceMarkovModel- Parameters:
to- the destination state- Returns:
- a FiniteAlphabet of State objects that can reach 'dest'
- Throws:
IllegalSymbolException
-
registerWithTrainer
public void registerWithTrainer(ModelTrainer modelTrainer) throws BioException
- Throws:
BioException
-
createTransition
public void createTransition(State from, State to) throws ChangeVetoException
Description copied from interface:MarkovModelMakes a transition between two states legal.This should inform each TransitionListener that a transition is to be created using preCreateTransition, and if none of the listeners fire a ChangeVetoException, it should create the transition, and then inform each TransitionListener with postCreateTransition.
- Specified by:
createTransitionin interfaceMarkovModel- Parameters:
from- the State currently occupiedto- the State to move to- Throws:
ChangeVetoException- if creating the transition is vetoed
-
destroyTransition
public void destroyTransition(State from, State to) throws ChangeVetoException
Description copied from interface:MarkovModelBreaks a transition between two states legal.This should inform each TransitionListener that a transition is to be broken using preDestroyTransition, and if none of the listeners fire a ChangeVetoException, it should break the transition, and then inform each TransitionListener with postDestroyTransition.
- Specified by:
destroyTransitionin interfaceMarkovModel- Parameters:
from- the State currently occupiedto- the State to move to- Throws:
ChangeVetoException- if breaking the transition is vetoed
-
addState
public void addState(State toAdd) throws IllegalSymbolException, ChangeVetoException
Description copied from interface:MarkovModelAdds a state to the model.- Specified by:
addStatein interfaceMarkovModel- Parameters:
toAdd- the state to add- Throws:
IllegalSymbolException- if the state is not valid or is a MagicalStateChangeVetoException- if either the model does not allow states to be added, or the change was vetoed
-
removeState
public void removeState(State toAdd) throws IllegalSymbolException, ChangeVetoException
Description copied from interface:MarkovModelRemove a state from the model.States should not be removed untill they are involved in no transitions. This is to avoid producing corrupted models by accident.
- Specified by:
removeStatein interfaceMarkovModel- Parameters:
toAdd- the state to remove- Throws:
IllegalSymbolException- if the symbol is not part of this model or a MagicalStateChangeVetoException- if either the model does not allow states to be removed, or the change was vetoed
-
containsTransition
public boolean containsTransition(State from, State to) throws IllegalSymbolException
Description copied from interface:MarkovModelReturns wether a transition exists or not.- Specified by:
containsTransitionin interfaceMarkovModel- Parameters:
from- the transitin sourceto- the transition destination- Returns:
- true/false depending on wether this model has the transition
- Throws:
IllegalSymbolException- if either from or to are not states in this model
-
-