bpp-phyl  2.2.0
bpp::NonHomogeneousSequenceSimulator Class Reference

Site and sequences simulation under non-homogeneous models. More...

#include <Bpp/Phyl/Simulation/NonHomogeneousSequenceSimulator.h>

+ Inheritance diagram for bpp::NonHomogeneousSequenceSimulator:
+ Collaboration diagram for bpp::NonHomogeneousSequenceSimulator:

Public Member Functions

const SubstitutionModelSetgetSubstitutionModelSet () const
 Get the substitution model associated to this instance. More...
 
const DiscreteDistribution * getRateDistribution () const
 Get the rate distribution associated to this instance. More...
 
const TreegetTree () 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.
RASiteSimulationResultdSimulateSite () const
 Get a detailed simulation result for one site. More...
 
RASiteSimulationResultdSimulateSite (size_t ancestralStateIndex) const
 
RASiteSimulationResultdSimulateSite (size_t ancestralStateIndex, double rate) const
 
RASiteSimulationResultdSimulateSite (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 RASiteSimulationResultdSimulateSite (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 SubstitutionModelSetmodelSet_
 
const Alphabet * alphabet_
 
std::vector< int > supportedStates_
 
const DiscreteDistribution * rate_
 
const TreetemplateTree_
 
TreeTemplate< SNodetree_
 
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)
 
NonHomogeneousSequenceSimulatoroperator= (const NonHomogeneousSequenceSimulator &nhss)
 
NonHomogeneousSequenceSimulatorclone () const
 
void init ()
 Init all probabilities. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ NonHomogeneousSequenceSimulator() [1/3]

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() [2/3]

NonHomogeneousSequenceSimulator::NonHomogeneousSequenceSimulator ( const SubstitutionModel model,
const DiscreteDistribution *  rate,
const Tree tree 
)

◆ ~NonHomogeneousSequenceSimulator()

virtual bpp::NonHomogeneousSequenceSimulator::~NonHomogeneousSequenceSimulator ( )
inlinevirtual

Definition at line 141 of file NonHomogeneousSequenceSimulator.h.

References modelSet_, and ownModelSet_.

◆ NonHomogeneousSequenceSimulator() [3/3]

bpp::NonHomogeneousSequenceSimulator::NonHomogeneousSequenceSimulator ( const NonHomogeneousSequenceSimulator nhss)
inline

Definition at line 146 of file NonHomogeneousSequenceSimulator.h.

Member Function Documentation

◆ clone()

NonHomogeneousSequenceSimulator* bpp::NonHomogeneousSequenceSimulator::clone ( ) const
inlinevirtual

◆ dEvolve()

void NonHomogeneousSequenceSimulator::dEvolve ( size_t  initialState,
double  rate,
RASiteSimulationResult rassr 
) const
protected

◆ dEvolveInternal()

void NonHomogeneousSequenceSimulator::dEvolveInternal ( SNode node,
double  rate,
RASiteSimulationResult rassr 
) const
protected

◆ dSimulateSite() [1/5]

RASiteSimulationResult * NonHomogeneousSequenceSimulator::dSimulateSite ( ) const
virtual

Get a detailed simulation result for one site.

Returns
A SiteSimulationResult object with all ancestral states for all nodes and branches.

Implements bpp::DetailedSiteSimulator.

Definition at line 300 of file NonHomogeneousSequenceSimulator.cpp.

References bpp::SubstitutionModelSet::getRootFrequencies(), modelSet_, and nbStates_.

Referenced by dSimulateSite().

◆ dSimulateSite() [2/5]

RASiteSimulationResult * NonHomogeneousSequenceSimulator::dSimulateSite ( size_t  ancestralStateIndex) const
virtual

◆ dSimulateSite() [3/5]

RASiteSimulationResult * NonHomogeneousSequenceSimulator::dSimulateSite ( size_t  ancestralStateIndex,
double  rate 
) const
virtual

◆ dSimulateSite() [4/5]

RASiteSimulationResult * NonHomogeneousSequenceSimulator::dSimulateSite ( double  rate) const
virtual

◆ dSimulateSite() [5/5]

RASiteSimulationResult * NonHomogeneousSequenceSimulator::dSimulateSite ( size_t  ancestralStateIndex,
size_t  rateClass 
) const
virtual

Definition at line 350 of file NonHomogeneousSequenceSimulator.cpp.

References dSimulateSite(), and rate_.

◆ enableContinuousRates()

void bpp::NonHomogeneousSequenceSimulator::enableContinuousRates ( bool  yn)
inline

Enable the use of continuous rates instead of discrete rates.

To work, the DiscreteDistribution object used should implement the randC method.

Parameters
ynTell if we should use continuous rates.

Definition at line 280 of file NonHomogeneousSequenceSimulator.h.

References continuousRates_.

◆ evolve() [1/2]

size_t NonHomogeneousSequenceSimulator::evolve ( const SNode node,
size_t  initialStateIndex,
size_t  rateClass 
) const
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().

◆ evolve() [2/2]

size_t NonHomogeneousSequenceSimulator::evolve ( const SNode node,
size_t  initialStateIndex,
double  rate 
) const
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().

◆ evolveInternal() [1/2]

void NonHomogeneousSequenceSimulator::evolveInternal ( SNode node,
size_t  rateClass 
) const
protected

◆ evolveInternal() [2/2]

void NonHomogeneousSequenceSimulator::evolveInternal ( SNode node,
double  rate 
) const
protected

◆ getAlphabet()

const Alphabet* bpp::NonHomogeneousSequenceSimulator::getAlphabet ( ) const
inlinevirtual

Implements bpp::SequenceSimulator.

Definition at line 240 of file NonHomogeneousSequenceSimulator.h.

References alphabet_.

◆ getRateDistribution()

const DiscreteDistribution* bpp::NonHomogeneousSequenceSimulator::getRateDistribution ( ) const
inline

Get the rate distribution associated to this instance.

Returns
The DiscreteDistribution object associated to this instance.

Definition at line 264 of file NonHomogeneousSequenceSimulator.h.

References rate_.

◆ getSequencesNames()

std::vector<std::string> bpp::NonHomogeneousSequenceSimulator::getSequencesNames ( ) const
inlinevirtual

Implements bpp::SiteSimulator.

Definition at line 210 of file NonHomogeneousSequenceSimulator.h.

References seqNames_.

◆ getSubstitutionModelSet()

const SubstitutionModelSet* bpp::NonHomogeneousSequenceSimulator::getSubstitutionModelSet ( ) const
inline

Get the substitution model associated to this instance.

Returns
The substitution model associated to this instance.

Definition at line 257 of file NonHomogeneousSequenceSimulator.h.

References modelSet_.

Referenced by bpp::HomogeneousSequenceSimulator::getSubstitutionModel().

◆ getTree()

const Tree* bpp::NonHomogeneousSequenceSimulator::getTree ( ) const
inline

Get the tree associated to this instance.

Returns
The Tree object associated to this instance.

Definition at line 271 of file NonHomogeneousSequenceSimulator.h.

References templateTree_.

◆ init()

void NonHomogeneousSequenceSimulator::init ( )
private

◆ multipleEvolve() [1/2]

void NonHomogeneousSequenceSimulator::multipleEvolve ( const SNode node,
const std::vector< size_t > &  initialStateIndices,
const std::vector< size_t > &  rateClasses,
std::vector< size_t > &  finalStates 
) const
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().

◆ multipleEvolve() [2/2]

SiteContainer * NonHomogeneousSequenceSimulator::multipleEvolve ( const std::vector< size_t > &  initialStates,
const std::vector< size_t > &  rateClasses 
) const
protected

◆ multipleEvolveInternal()

void NonHomogeneousSequenceSimulator::multipleEvolveInternal ( SNode node,
const std::vector< size_t > &  rateClasses 
) const
protected

◆ operator=()

◆ simulate()

SiteContainer * NonHomogeneousSequenceSimulator::simulate ( size_t  numberOfSites) const
virtual

◆ simulateSite() [1/5]

Site * NonHomogeneousSequenceSimulator::simulateSite ( ) const
virtual

◆ simulateSite() [2/5]

Site * NonHomogeneousSequenceSimulator::simulateSite ( size_t  ancestralStateIndex) const
virtual

Implements bpp::SiteSimulator.

Definition at line 169 of file NonHomogeneousSequenceSimulator.cpp.

References continuousRates_, rate_, and simulateSite().

◆ simulateSite() [3/5]

Site * NonHomogeneousSequenceSimulator::simulateSite ( size_t  ancestralStateIndex,
double  rate 
) const
virtual

◆ simulateSite() [4/5]

Site * NonHomogeneousSequenceSimulator::simulateSite ( double  rate) const
virtual

◆ simulateSite() [5/5]

Site * NonHomogeneousSequenceSimulator::simulateSite ( size_t  ancestralStateIndex,
size_t  rateClass 
) const
virtual

Member Data Documentation

◆ alphabet_

const Alphabet* bpp::NonHomogeneousSequenceSimulator::alphabet_
private

◆ continuousRates_

bool bpp::NonHomogeneousSequenceSimulator::continuousRates_
private

◆ leaves_

std::vector<SNode*> bpp::NonHomogeneousSequenceSimulator::leaves_
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().

◆ modelSet_

◆ nbClasses_

size_t bpp::NonHomogeneousSequenceSimulator::nbClasses_
private

Definition at line 117 of file NonHomogeneousSequenceSimulator.h.

Referenced by init(), and operator=().

◆ nbNodes_

size_t bpp::NonHomogeneousSequenceSimulator::nbNodes_
private

Definition at line 116 of file NonHomogeneousSequenceSimulator.h.

Referenced by init(), and operator=().

◆ nbStates_

size_t bpp::NonHomogeneousSequenceSimulator::nbStates_
private

◆ ownModelSet_

bool bpp::NonHomogeneousSequenceSimulator::ownModelSet_
private

◆ rate_

const DiscreteDistribution* bpp::NonHomogeneousSequenceSimulator::rate_
private

◆ seqNames_

std::vector<std::string> bpp::NonHomogeneousSequenceSimulator::seqNames_
private

Definition at line 114 of file NonHomogeneousSequenceSimulator.h.

Referenced by getSequencesNames(), init(), operator=(), and simulate().

◆ supportedStates_

std::vector<int> bpp::NonHomogeneousSequenceSimulator::supportedStates_
private

Definition at line 102 of file NonHomogeneousSequenceSimulator.h.

Referenced by operator=().

◆ templateTree_

const Tree* bpp::NonHomogeneousSequenceSimulator::templateTree_
private

◆ tree_

TreeTemplate<SNode> bpp::NonHomogeneousSequenceSimulator::tree_
mutableprivate

The documentation for this class was generated from the following files: