41 #ifndef BPP_NUMERIC_HMM_LOGSUMHMMLIKELIHOOD_H
42 #define BPP_NUMERIC_HMM_LOGSUMHMMLIKELIHOOD_H
45 #include "../AbstractParametrizable.h"
46 #include "../Matrix/Matrix.h"
47 #include "../NumTools.h"
147 const std::string& prefix =
"");
190 AbstractParametrizable::operator=(lik);
AbstractHmmLikelihood & operator=(const AbstractHmmLikelihood &adhlik)
A partial implementation of the Parametrizable interface.
void setParametersValues(const ParameterList ¶meters)
Update the parameters from parameters.
virtual Clonable * clone() const =0
Create a copy of this object and send a pointer to it.
Interface for computing emission probabilities in a Hidden Markov Model.
virtual HmmEmissionProbabilities * clone() const =0
Create a copy of this object and send a pointer to it.
virtual void setHmmStateAlphabet(const HmmStateAlphabet *stateAlphabet)=0
Set the new hidden state alphabet.
Describe the transition probabilities between hidden states of a Hidden Markov Model.
virtual void setHmmStateAlphabet(const HmmStateAlphabet *stateAlphabet)=0
Set the new hidden state alphabet.
A simple implementation of hidden Markov models recursion.
bool backLogLikelihoodUpToDate_
HmmStateAlphabet * hiddenAlphabet_
The alphabet describing the hidden states.
const HmmStateAlphabet & getHmmStateAlphabet() const
const HmmTransitionMatrix & getHmmTransitionMatrix() const
double getLikelihoodForASite(size_t site) const
Get the likelihood for a site, and its derivatives.
void computeBackward_() const
std::vector< size_t > breakPoints_
std::vector< double > partialD2LogLikelihoods_
Vdouble getLikelihoodForEachSite() const
Get the likelihood for each site.
double getLogLikelihood() const
HmmTransitionMatrix & getHmmTransitionMatrix()
void computeDLikelihood_() const
LogsumHmmLikelihood * clone() const
Create a copy of this object and send a pointer to it.
std::vector< double > partialDLogLikelihoods_
double getDLogLikelihoodForASite(size_t site) const
void computeD2Likelihood_() const
HmmStateAlphabet & getHmmStateAlphabet()
void setNamespace(const std::string &nameSpace)
Set the namespace for the parameter names.
void getHiddenStatesPosteriorProbabilities(std::vector< std::vector< double > > &probs, bool append=false) const
void fireParameterChanged(const ParameterList &pl)
Notify the class when one or several parameters have changed.
virtual ~LogsumHmmLikelihood()
HmmEmissionProbabilities * emissionProbabilities_
void computeDForward_() const
LogsumHmmLikelihood(const LogsumHmmLikelihood &lik)
std::vector< std::vector< double > > backLogLikelihood_
backward logLikelihood
double getValue() const
Get the value of the function at the current point.
bool ownsPointers_
Owns previous objects.
void computeD2Forward_() const
std::vector< double > partialLogLikelihoods_
void setBreakPoints(const std::vector< size_t > &breakPoints)
std::vector< std::vector< double > > d2LogLikelihood_
HmmEmissionProbabilities & getHmmEmissionProbabilities()
LogsumHmmLikelihood(HmmStateAlphabet *hiddenAlphabet, HmmTransitionMatrix *transitionMatrix, HmmEmissionProbabilities *emissionProbabilities, bool ownsPointers_=true, const std::string &prefix="")
Build a new LogsumHmmLikelihood object.
const HmmEmissionProbabilities & getHmmEmissionProbabilities() const
HmmTransitionMatrix * transitionMatrix_
Vdouble getHiddenStatesPosteriorProbabilitiesForASite(size_t site) const
void setParameters(const ParameterList &pl)
Set the point where the function must be computed.
LogsumHmmLikelihood & operator=(const LogsumHmmLikelihood &lik)
std::vector< double > logLikelihood_
The likelihood array.
std::vector< std::vector< double > > dLogLikelihood_
The DLogLikelihood arrays.
const std::vector< size_t > & getBreakPoints() const
double getD2LogLikelihoodForASite(size_t site) const
The parameter list object.
std::vector< double > Vdouble