46 #include "../PatternTools.h" 48 #include <Bpp/Numeric/VectorTools.h> 49 #include <Bpp/App/ApplicationTools.h> 57 DiscreteDistribution* rDist,
60 bool usePatterns)
throw (Exception) :
62 treeLikelihoodsContainer_(),
66 if ((mixedmodel = dynamic_cast<MixedSubstitutionModel*>(model_)) == 0)
67 throw Exception(
"Bad model: RHomogeneousMixedTreeLikelihood needs a MixedSubstitutionModel.");
69 for (
size_t i = 0; i < s; i++)
71 treeLikelihoodsContainer_.push_back(
79 const SiteContainer& data,
81 DiscreteDistribution* rDist,
84 bool usePatterns)
throw (Exception) :
86 treeLikelihoodsContainer_(),
91 if ((mixedmodel = dynamic_cast<MixedSubstitutionModel*>(model_)) == 0)
92 throw Exception(
"Bad model: RHomogeneousMixedTreeLikelihood needs a MixedSubstitutionModel.");
95 for (
size_t i = 0; i < s; i++)
97 treeLikelihoodsContainer_.push_back(
108 treeLikelihoodsContainer_.clear();
111 for (
size_t i = 0; i < treeLikelihoodsContainer_.size(); i++)
114 probas_.push_back(lik.
probas_[i]);
123 treeLikelihoodsContainer_(lik.treeLikelihoodsContainer_.size()),
124 probas_(lik.probas_.size())
156 for (
size_t i = 0; i < treeLikelihoodsContainer_.size(); i++)
158 treeLikelihoodsContainer_[i]->setData(sites);
166 bool modelC=
model_->getParameters().testParametersValues(params);
173 for (
size_t i = 0; i < s; i++)
177 pl.addParameters(pm->getParameters());
178 pl.includeParameters(getParameters());
virtual void computeTreeDLikelihood(const std::string &variable)
double getLikelihoodForASiteForARateClassForAState(size_t site, size_t rateClass, int state) const
Get the likelihood for a site knowing its rate class and its ancestral state.
RHomogeneousMixedTreeLikelihood & operator=(const RHomogeneousMixedTreeLikelihood &lik)
Interface for all substitution models.
void initialize()
Init the likelihood object.
virtual double getNProbability(size_t i) const =0
Returns the probability of a specific model from the mixture.
double getLogLikelihoodForASiteForARateClass(size_t site, size_t rateClass) const
Get the logarithm of the likelihood for a site knowing its rate class.
virtual void computeDownSubtreeDLikelihood(const Node *)
Interface for phylogenetic tree objects.
std::vector< RHomogeneousTreeLikelihood * > treeLikelihoodsContainer_
This class implement the 'traditional' way of computing likelihood for a tree.
SubstitutionModel * model_
RHomogeneousTreeLikelihood & operator=(const RHomogeneousTreeLikelihood &lik)
virtual double getD2LikelihoodForASiteForARateClass(size_t site, size_t rateClass) const
void setData(const SiteContainer &sites)
Set the dataset for which the likelihood must be evaluated.
virtual void computeDownSubtreeD2Likelihood(const Node *)
void computeAllTransitionProbabilities()
This method is used by fireParameterChanged method.
double getLogLikelihoodForASiteForARateClassForAState(size_t site, size_t rateClass, int state) const
Get the logarithm of the likelihood for a site knowing its rate class and its ancestral state...
void initialize()
Init the likelihood object.
virtual double getDLikelihoodForASiteForARateClass(size_t site, size_t rateClass) const
void fireParameterChanged(const ParameterList ¶ms)
double getLogLikelihood() const
Get the logarithm of the likelihood for the whole dataset.
virtual const std::vector< double > & getProbabilities() const =0
RHomogeneousMixedTreeLikelihood(const Tree &tree, SubstitutionModel *model, DiscreteDistribution *rDist, bool checkRooted=true, bool verbose=true, bool usePatterns=true)
Build a new RHomogeneousMixedTreeLikelihood object without data.
double getLikelihoodForASiteForARateClass(size_t site, size_t rateClass) const
Get the likelihood for a site knowing its rate class.
The phylogenetic node class.
void computeTreeLikelihood()
virtual void displayLikelihood(const Node *node)
This method is mainly for debugging purpose.
virtual ~RHomogeneousMixedTreeLikelihood()
std::vector< double > probas_
void computeTransitionProbabilitiesForNode(const Node *node)
This method is used by fireParameterChanged method.
virtual void computeTreeD2Likelihood(const std::string &variable)
virtual size_t getNumberOfModels() const =0
virtual void computeSubtreeLikelihood(const Node *node)
Compute the likelihood for a subtree defined by the Tree::Node node.
virtual void applyParameters()
All parameters are stored in a parameter list. This function apply these parameters to the substituti...
virtual const SubstitutionModel * getNModel(size_t i) const =0
Returns a specific model from the mixture.
void setData(const SiteContainer &sites)
Set the dataset for which the likelihood must be evaluated.
Interface for Substitution models, defined as a mixture of "simple" substitution models.