org.biojava.bio.dp
Class DP

java.lang.Object
  extended byorg.biojava.bio.dp.DP
Direct Known Subclasses:
PairwiseDP, SingleDP

public abstract class DP
extends java.lang.Object

Objects that can perform dymamic programming operations upon sequences with HMMs.

The three main DP operations are Forwards, Backwards and Viterbi. Forwards and Backwards calculate the probability of the sequences having been made in any way by the model. Viterbi finds the most supported way that the sequence could have been made.

Each of the functions can return the dynamic-programming matrix containing the intermediate results. This may be useful for model training, or for visualisation.

Each of the funcitons can be calculated using the model probabilities, the null-model probabilities or the odds (ratio between the two). For Forwards and Backwards, the odds calculations produce numbers with questionable basis in reality. For Viterbi with odds, you will recieve the path through the model that is most different from the null model, and supported by the probabilities.

Author:
Matthew Pocock, Thomas Down

Nested Class Summary
static class DP.ReverseIterator
           
 
Constructor Summary
DP(MarkovModel model)
           
 
Method Summary
abstract  double backward(SymbolList[] symList, ScoreType scoreType)
           
abstract  DPMatrix backwardMatrix(SymbolList[] symList, DPMatrix matrix, ScoreType scoreType)
           
abstract  DPMatrix backwardMatrix(SymbolList[] symList, ScoreType scoreType)
           
static int[][] backwardTransitions(MarkovModel model, State[] states)
           
static double[][] backwardTransitionScores(MarkovModel model, State[] states, int[][] transitions, ScoreType scoreType)
           
static MarkovModel flatView(MarkovModel model)
           
abstract  double forward(SymbolList[] symList, ScoreType scoreType)
           
abstract  DPMatrix forwardMatrix(SymbolList[] symList, DPMatrix matrix, ScoreType scoreType)
           
abstract  DPMatrix forwardMatrix(SymbolList[] symList, ScoreType scoreType)
           
 DPMatrix forwardsBackwards(SymbolList[] symList, ScoreType scoreType)
           
static int[][] forwardTransitions(MarkovModel model, State[] states)
           
static double[][] forwardTransitionScores(MarkovModel model, State[] states, int[][] transitions, ScoreType scoreType)
           
 StatePath generate(int length)
           Generates an alignment from a model.
 int[][] getBackwardTransitions()
           
 double[][] getBackwardTransitionScores(ScoreType scoreType)
           
 int getDotStatesIndex()
           
 int[][] getForwardTransitions()
           
 double[][] getForwardTransitionScores(ScoreType scoreType)
           
 MarkovModel getModel()
           
 State[] getStates()
           
 void lockModel()
           
static double scoreWeightMatrix(WeightMatrix matrix, SymbolList symList, int start)
          Scores the SymbolList from symbol start to symbol (start+columns) with a weight matrix.
static State[] stateList(MarkovModel mm)
           
 void unlockModel()
           
 void update()
           
abstract  StatePath viterbi(SymbolList[] symList, ScoreType scoreType)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DP

public DP(MarkovModel model)
   throws IllegalSymbolException,
          IllegalTransitionException,
          BioException
Method Detail

scoreWeightMatrix

public static double scoreWeightMatrix(WeightMatrix matrix,
                                       SymbolList symList,
                                       int start)
                                throws IllegalSymbolException
Scores the SymbolList from symbol start to symbol (start+columns) with a weight matrix.

Parameters:
matrix - the weight matrix used to evaluate the sequences
symList - the SymbolList to assess
start - the index of the first symbol in the window to evaluate
Returns:
the log probability or likelyhood of this weight matrix having generated symbols start to (start + columns) of symList
Throws:
IllegalSymbolException

flatView

public static MarkovModel flatView(MarkovModel model)
                            throws IllegalAlphabetException,
                                   IllegalSymbolException
Throws:
IllegalAlphabetException
IllegalSymbolException

stateList

public static State[] stateList(MarkovModel mm)
                         throws IllegalSymbolException,
                                IllegalTransitionException,
                                BioException
Throws:
IllegalSymbolException
IllegalTransitionException
BioException

forwardTransitions

public static int[][] forwardTransitions(MarkovModel model,
                                         State[] states)
                                  throws IllegalSymbolException
Throws:
IllegalSymbolException

forwardTransitionScores

public static double[][] forwardTransitionScores(MarkovModel model,
                                                 State[] states,
                                                 int[][] transitions,
                                                 ScoreType scoreType)
                                          throws IllegalSymbolException
Throws:
IllegalSymbolException

backwardTransitions

public static int[][] backwardTransitions(MarkovModel model,
                                          State[] states)
                                   throws IllegalSymbolException
Throws:
IllegalSymbolException

backwardTransitionScores

public static double[][] backwardTransitionScores(MarkovModel model,
                                                  State[] states,
                                                  int[][] transitions,
                                                  ScoreType scoreType)
                                           throws IllegalSymbolException
Throws:
IllegalSymbolException

getDotStatesIndex

public int getDotStatesIndex()

getModel

public MarkovModel getModel()

getStates

public State[] getStates()

getForwardTransitions

public int[][] getForwardTransitions()

getForwardTransitionScores

public double[][] getForwardTransitionScores(ScoreType scoreType)

getBackwardTransitions

public int[][] getBackwardTransitions()

getBackwardTransitionScores

public double[][] getBackwardTransitionScores(ScoreType scoreType)

lockModel

public void lockModel()

unlockModel

public void unlockModel()

update

public void update()

forward

public abstract double forward(SymbolList[] symList,
                               ScoreType scoreType)
                        throws IllegalSymbolException,
                               IllegalAlphabetException,
                               IllegalTransitionException
Throws:
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

backward

public abstract double backward(SymbolList[] symList,
                                ScoreType scoreType)
                         throws IllegalSymbolException,
                                IllegalAlphabetException,
                                IllegalTransitionException
Throws:
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

forwardMatrix

public abstract DPMatrix forwardMatrix(SymbolList[] symList,
                                       ScoreType scoreType)
                                throws IllegalSymbolException,
                                       IllegalAlphabetException,
                                       IllegalTransitionException
Throws:
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

backwardMatrix

public abstract DPMatrix backwardMatrix(SymbolList[] symList,
                                        ScoreType scoreType)
                                 throws IllegalSymbolException,
                                        IllegalAlphabetException,
                                        IllegalTransitionException
Throws:
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

forwardMatrix

public abstract DPMatrix forwardMatrix(SymbolList[] symList,
                                       DPMatrix matrix,
                                       ScoreType scoreType)
                                throws java.lang.IllegalArgumentException,
                                       IllegalSymbolException,
                                       IllegalAlphabetException,
                                       IllegalTransitionException
Throws:
java.lang.IllegalArgumentException
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

backwardMatrix

public abstract DPMatrix backwardMatrix(SymbolList[] symList,
                                        DPMatrix matrix,
                                        ScoreType scoreType)
                                 throws java.lang.IllegalArgumentException,
                                        IllegalSymbolException,
                                        IllegalAlphabetException,
                                        IllegalTransitionException
Throws:
java.lang.IllegalArgumentException
IllegalSymbolException
IllegalAlphabetException
IllegalTransitionException

viterbi

public abstract StatePath viterbi(SymbolList[] symList,
                                  ScoreType scoreType)
                           throws IllegalSymbolException,
                                  java.lang.IllegalArgumentException,
                                  IllegalAlphabetException,
                                  IllegalTransitionException
Throws:
IllegalSymbolException
java.lang.IllegalArgumentException
IllegalAlphabetException
IllegalTransitionException

forwardsBackwards

public DPMatrix forwardsBackwards(SymbolList[] symList,
                                  ScoreType scoreType)
                           throws BioException
Throws:
BioException

generate

public StatePath generate(int length)
                   throws IllegalSymbolException,
                          BioException

Generates an alignment from a model.

If the length is set to -1 then the model length will be sampled using the model's transition to the end state. If the length is fixed using length, then the transitions to the end state are implicitly invoked.

Parameters:
length - the length of the sequence to generate
Returns:
a StatePath generated at random
Throws:
IllegalSymbolException
BioException