5 #ifndef BPP_PHYL_MODEL_MIXTUREOFSUBSTITUTIONMODELS_H
6 #define BPP_PHYL_MODEL_MIXTUREOFSUBSTITUTIONMODELS_H
32 std::shared_ptr<const Alphabet> alpha,
33 std::vector< std::unique_ptr<TransitionModelInterface>>& vpModel) :
42 throw Exception(
"MixtureOfSubstitutionModels can only be built with SubstitutionModels, not " +
model->
getName());
60 std::shared_ptr<const Alphabet> alpha,
61 std::vector< std::unique_ptr<TransitionModelInterface>>& vpModel,
74 throw Exception(
"MixtureOfSubstitutionModels can only be built with SubstitutionModels, not " +
model->
getName());
std::vector< std::shared_ptr< TransitionModelInterface > > modelsContainer_
vector of pointers to TransitionModels.
Partial implementation of the TransitionModel interface.
std::shared_ptr< const StateMapInterface > getStateMap() const override
virtual std::string getName() const =0
Get the name of the model.
MixtureOfSubstitutionModels(std::shared_ptr< const Alphabet > alpha, std::vector< std::unique_ptr< TransitionModelInterface >> &vpModel)
Constructor of a MixtureOfSubstitutionModels, where all the models have rate 1 and equal probability.
MixtureOfSubstitutionModels(std::shared_ptr< const Alphabet > alpha, std::vector< std::unique_ptr< TransitionModelInterface >> &vpModel, Vdouble &vproba, Vdouble &vrate)
Constructor of a MixtureOfSubstitutionModels.
const SubstitutionModelInterface & subModel(const std::string &name) const
retrieve a pointer to the substitution model with the given name.
MixtureOfSubstitutionModels & operator=(const MixtureOfSubstitutionModels &model)
MixtureOfSubstitutionModels * clone() const override
MixtureOfSubstitutionModels(const MixtureOfSubstitutionModels &model)
Transition models defined as a mixture of several substitution models.
MixtureOfTransitionModels & operator=(const MixtureOfTransitionModels &)
const TransitionModelInterface & model(const std::string &name) const override
retrieve a pointer to the submodel with the given name.
Interface for all substitution models.
Defines the basic types of data flow nodes.
std::vector< double > Vdouble