bpp-phyl
2.2.0
|
Site and sequences simulation under non-homogeneous models. More...
#include <Bpp/Phyl/Simulation/NonHomogeneousSequenceSimulator.h>
Public Member Functions | |
const SubstitutionModelSet * | getSubstitutionModelSet () const |
Get the substitution model associated to this instance. More... | |
const DiscreteDistribution * | getRateDistribution () const |
Get the rate distribution associated to this instance. More... | |
const Tree * | getTree () const |
Get the tree associated to this instance. More... | |
void | enableContinuousRates (bool yn) |
Enable the use of continuous rates instead of discrete rates. More... | |
The SiteSimulator interface | |
Site * | simulateSite () const |
Site * | simulateSite (size_t ancestralStateIndex) const |
Site * | simulateSite (size_t ancestralStateIndex, double rate) const |
Site * | simulateSite (double rate) const |
std::vector< std::string > | getSequencesNames () const |
The DetailedSiteSimulator interface. | |
RASiteSimulationResult * | dSimulateSite () const |
Get a detailed simulation result for one site. More... | |
RASiteSimulationResult * | dSimulateSite (size_t ancestralStateIndex) const |
RASiteSimulationResult * | dSimulateSite (size_t ancestralStateIndex, double rate) const |
RASiteSimulationResult * | dSimulateSite (double rate) const |
The SequenceSimulator interface | |
SiteContainer * | simulate (size_t numberOfSites) const |
SiteSimulator and SequenceSimulator interface | |
const Alphabet * | getAlphabet () const |
Functions with rate classes instead of absolute rates. | |
virtual Site * | simulateSite (size_t ancestralStateIndex, size_t rateClass) const |
virtual RASiteSimulationResult * | dSimulateSite (size_t ancestralStateIndex, size_t rateClass) const |
Protected Member Functions | |
size_t | evolve (const SNode *node, size_t initialStateIndex, size_t rateClass) const |
Evolve from an initial state along a branch, knowing the evolutionary rate class. More... | |
size_t | evolve (const SNode *node, size_t initialStateIndex, double rate) const |
Evolve from an initial state along a branch, knowing the evolutionary rate. More... | |
void | multipleEvolve (const SNode *node, const std::vector< size_t > &initialStateIndices, const std::vector< size_t > &rateClasses, std::vector< size_t > &finalStates) const |
The same as the evolve(initialState, rateClass) function, but for several sites at a time. More... | |
SiteContainer * | multipleEvolve (const std::vector< size_t > &initialStates, const std::vector< size_t > &rateClasses) const |
void | dEvolve (size_t initialState, double rate, RASiteSimulationResult &rassr) const |
The 'Internal' methods. | |
void | evolveInternal (SNode *node, size_t rateClass) const |
void | evolveInternal (SNode *node, double rate) const |
void | multipleEvolveInternal (SNode *node, const std::vector< size_t > &rateClasses) const |
void | dEvolveInternal (SNode *node, double rate, RASiteSimulationResult &rassr) const |
Private Attributes | |
const SubstitutionModelSet * | modelSet_ |
const Alphabet * | alphabet_ |
std::vector< int > | supportedStates_ |
const DiscreteDistribution * | rate_ |
const Tree * | templateTree_ |
TreeTemplate< SNode > | tree_ |
bool | ownModelSet_ |
std::vector< SNode * > | leaves_ |
This stores once for all all leaves in a given order. This order will be used during site creation. More... | |
std::vector< std::string > | seqNames_ |
size_t | nbNodes_ |
size_t | nbClasses_ |
size_t | nbStates_ |
bool | continuousRates_ |
Stores intermediate results. | |
NonHomogeneousSequenceSimulator (const SubstitutionModelSet *modelSet, const DiscreteDistribution *rate, const Tree *tree) throw (Exception) | |
NonHomogeneousSequenceSimulator (const SubstitutionModel *model, const DiscreteDistribution *rate, const Tree *tree) | |
virtual | ~NonHomogeneousSequenceSimulator () |
NonHomogeneousSequenceSimulator (const NonHomogeneousSequenceSimulator &nhss) | |
NonHomogeneousSequenceSimulator & | operator= (const NonHomogeneousSequenceSimulator &nhss) |
NonHomogeneousSequenceSimulator * | clone () const |
void | init () |
Init all probabilities. More... | |
Site and sequences simulation under non-homogeneous models.
Rate across sites variation is supported, using a DiscreteDistribution object or by specifying explicitely the rate of the sites to simulate.
Definition at line 95 of file NonHomogeneousSequenceSimulator.h.
NonHomogeneousSequenceSimulator::NonHomogeneousSequenceSimulator | ( | const SubstitutionModelSet * | modelSet, |
const DiscreteDistribution * | rate, | ||
const Tree * | tree | ||
) | |||
throw | ( | Exception | |
) |
Definition at line 57 of file NonHomogeneousSequenceSimulator.cpp.
Referenced by clone().
NonHomogeneousSequenceSimulator::NonHomogeneousSequenceSimulator | ( | const SubstitutionModel * | model, |
const DiscreteDistribution * | rate, | ||
const Tree * | tree | ||
) |
Definition at line 82 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::StateMap::clone(), bpp::SubstitutionModel::clone(), bpp::SubstitutionModelSetTools::createHomogeneousModelSet(), bpp::SubstitutionModel::getFrequencies(), bpp::SubstitutionModel::getStateMap(), init(), modelSet_, and templateTree_.
|
inlinevirtual |
Definition at line 141 of file NonHomogeneousSequenceSimulator.h.
References modelSet_, and ownModelSet_.
|
inline |
Definition at line 146 of file NonHomogeneousSequenceSimulator.h.
|
inlinevirtual |
Implements bpp::SequenceSimulator.
Definition at line 185 of file NonHomogeneousSequenceSimulator.h.
References NonHomogeneousSequenceSimulator().
|
protected |
Definition at line 515 of file NonHomogeneousSequenceSimulator.cpp.
References dEvolveInternal(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), and tree_.
Referenced by dSimulateSite().
|
protected |
This method uses the states_ variable for saving ancestral states.
Definition at line 528 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::SiteSimulationResult::addNode(), bpp::Node::getDistanceToFather(), bpp::NodeTemplate< NodeInfos >::getFather(), bpp::Node::getId(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), and bpp::Node::hasFather().
Referenced by dEvolve().
|
virtual |
Get a detailed simulation result for one site.
Implements bpp::DetailedSiteSimulator.
Definition at line 300 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, and nbStates_.
Referenced by dSimulateSite().
|
virtual |
Implements bpp::DetailedSiteSimulator.
Definition at line 322 of file NonHomogeneousSequenceSimulator.cpp.
References continuousRates_, dSimulateSite(), and rate_.
|
virtual |
Implements bpp::DetailedSiteSimulator.
Definition at line 340 of file NonHomogeneousSequenceSimulator.cpp.
References dEvolve(), bpp::SubstitutionModelSet::getAlphabet(), modelSet_, and templateTree_.
|
virtual |
Implements bpp::DetailedSiteSimulator.
Definition at line 357 of file NonHomogeneousSequenceSimulator.cpp.
References dSimulateSite(), bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, and nbStates_.
|
virtual |
Definition at line 350 of file NonHomogeneousSequenceSimulator.cpp.
References dSimulateSite(), and rate_.
|
inline |
Enable the use of continuous rates instead of discrete rates.
To work, the DiscreteDistribution object used should implement the randC method.
yn | Tell if we should use continuous rates. |
Definition at line 280 of file NonHomogeneousSequenceSimulator.h.
References continuousRates_.
|
protected |
Evolve from an initial state along a branch, knowing the evolutionary rate class.
This method is fast since all pijt have been computed in the constructor of the class. This method is used for the implementation of the SiteSimulator interface.
Definition at line 378 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::NodeTemplate< NodeInfos >::getInfos(), and nbStates_.
Referenced by evolveInternal().
|
protected |
Evolve from an initial state along a branch, knowing the evolutionary rate.
This method is slower than the previous one since exponential terms must be computed. This method is used for the implementation of the SiteSimulator interface.
Definition at line 391 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::Node::getDistanceToFather(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::SubstitutionModel::getPij_t(), nbStates_, and bpp::SubstitutionModel::Pij_t().
|
protected |
This method uses the states_ variable for saving ancestral states.
Definition at line 432 of file NonHomogeneousSequenceSimulator.cpp.
References evolve(), bpp::NodeTemplate< NodeInfos >::getFather(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), and bpp::Node::hasFather().
Referenced by evolveInternal(), and simulateSite().
|
protected |
This method uses the states_ variable for saving ancestral states.
Definition at line 448 of file NonHomogeneousSequenceSimulator.cpp.
References evolve(), evolveInternal(), bpp::NodeTemplate< NodeInfos >::getFather(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), and bpp::Node::hasFather().
|
inlinevirtual |
Implements bpp::SequenceSimulator.
Definition at line 240 of file NonHomogeneousSequenceSimulator.h.
References alphabet_.
|
inline |
Get the rate distribution associated to this instance.
Definition at line 264 of file NonHomogeneousSequenceSimulator.h.
References rate_.
|
inlinevirtual |
Implements bpp::SiteSimulator.
Definition at line 210 of file NonHomogeneousSequenceSimulator.h.
References seqNames_.
|
inline |
Get the substitution model associated to this instance.
Definition at line 257 of file NonHomogeneousSequenceSimulator.h.
References modelSet_.
Referenced by bpp::HomogeneousSequenceSimulator::getSubstitutionModel().
|
inline |
Get the tree associated to this instance.
Definition at line 271 of file NonHomogeneousSequenceSimulator.h.
References templateTree_.
|
private |
Init all probabilities.
Method called by constructors.
Definition at line 108 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::Node::getDistanceToFather(), bpp::Node::getId(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::SubstitutionModelSet::getModelForNode(), leaves_, modelSet_, nbClasses_, nbNodes_, nbStates_, rate_, seqNames_, and tree_.
Referenced by NonHomogeneousSequenceSimulator().
|
protected |
The same as the evolve(initialState, rateClass) function, but for several sites at a time.
This method is used for the implementation of the SequenceSimulator interface.
Definition at line 408 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::NodeTemplate< NodeInfos >::getInfos(), and nbStates_.
Referenced by multipleEvolveInternal(), and simulate().
|
protected |
Definition at line 483 of file NonHomogeneousSequenceSimulator.cpp.
References alphabet_, bpp::SubstitutionModel::getAlphabetStateAsInt(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), leaves_, multipleEvolveInternal(), and tree_.
|
protected |
This method uses the multipleStates_ variable for saving ancestral states.
Definition at line 464 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::NodeTemplate< NodeInfos >::getFather(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), bpp::Node::hasFather(), and multipleEvolve().
Referenced by multipleEvolve().
|
inline |
Definition at line 162 of file NonHomogeneousSequenceSimulator.h.
References alphabet_, continuousRates_, leaves_, modelSet_, nbClasses_, nbNodes_, nbStates_, ownModelSet_, rate_, seqNames_, supportedStates_, templateTree_, and tree_.
|
virtual |
Implements bpp::SequenceSimulator.
Definition at line 251 of file NonHomogeneousSequenceSimulator.cpp.
References alphabet_, continuousRates_, bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, multipleEvolve(), nbStates_, rate_, seqNames_, and simulateSite().
|
virtual |
Implements bpp::SiteSimulator.
Definition at line 148 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, and nbStates_.
Referenced by simulate(), and simulateSite().
|
virtual |
Implements bpp::SiteSimulator.
Definition at line 169 of file NonHomogeneousSequenceSimulator.cpp.
References continuousRates_, rate_, and simulateSite().
|
virtual |
Implements bpp::SiteSimulator.
Definition at line 209 of file NonHomogeneousSequenceSimulator.cpp.
References alphabet_, evolveInternal(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), leaves_, and tree_.
|
virtual |
Implements bpp::SiteSimulator.
Definition at line 229 of file NonHomogeneousSequenceSimulator.cpp.
References bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, nbStates_, and simulateSite().
|
virtual |
Definition at line 189 of file NonHomogeneousSequenceSimulator.cpp.
References alphabet_, evolveInternal(), bpp::NodeTemplate< NodeInfos >::getInfos(), bpp::Node::getNumberOfSons(), bpp::NodeTemplate< NodeInfos >::getSon(), leaves_, and tree_.
|
private |
Definition at line 101 of file NonHomogeneousSequenceSimulator.h.
Referenced by getAlphabet(), multipleEvolve(), operator=(), simulate(), and simulateSite().
|
private |
Definition at line 120 of file NonHomogeneousSequenceSimulator.h.
Referenced by dSimulateSite(), enableContinuousRates(), operator=(), simulate(), and simulateSite().
|
private |
This stores once for all all leaves in a given order. This order will be used during site creation.
Definition at line 112 of file NonHomogeneousSequenceSimulator.h.
Referenced by init(), multipleEvolve(), operator=(), and simulateSite().
|
private |
Definition at line 100 of file NonHomogeneousSequenceSimulator.h.
Referenced by dSimulateSite(), getSubstitutionModelSet(), init(), NonHomogeneousSequenceSimulator(), operator=(), simulate(), simulateSite(), and ~NonHomogeneousSequenceSimulator().
|
private |
Definition at line 117 of file NonHomogeneousSequenceSimulator.h.
Referenced by init(), and operator=().
|
private |
Definition at line 116 of file NonHomogeneousSequenceSimulator.h.
Referenced by init(), and operator=().
|
private |
Definition at line 118 of file NonHomogeneousSequenceSimulator.h.
Referenced by dSimulateSite(), evolve(), init(), multipleEvolve(), operator=(), simulate(), and simulateSite().
|
private |
Definition at line 106 of file NonHomogeneousSequenceSimulator.h.
Referenced by operator=(), and ~NonHomogeneousSequenceSimulator().
|
private |
Definition at line 103 of file NonHomogeneousSequenceSimulator.h.
Referenced by dSimulateSite(), getRateDistribution(), init(), operator=(), simulate(), and simulateSite().
|
private |
Definition at line 114 of file NonHomogeneousSequenceSimulator.h.
Referenced by getSequencesNames(), init(), operator=(), and simulate().
|
private |
Definition at line 102 of file NonHomogeneousSequenceSimulator.h.
Referenced by operator=().
|
private |
Definition at line 104 of file NonHomogeneousSequenceSimulator.h.
Referenced by dSimulateSite(), getTree(), NonHomogeneousSequenceSimulator(), and operator=().
|
mutableprivate |
Definition at line 105 of file NonHomogeneousSequenceSimulator.h.
Referenced by dEvolve(), init(), multipleEvolve(), operator=(), and simulateSite().