43 #include <Bpp/Seq/Container/SiteContainerTools.h> 46 #include <Bpp/Phyl/Likelihood/RHomogeneousTreeLikelihood.h> 47 #include <Bpp/Phyl/Likelihood/RNonHomogeneousTreeLikelihood.h> 48 #include <Bpp/Phyl/Model/SubstitutionModelSetTools.h> 49 #include <Bpp/Phyl/OptimizationTools.h> 59 auto_ptr<SiteContainer> sites(SiteContainerTools::removeGapSites(block.getAlignment(), propGapsToKeep_));
60 if (gapsAsUnresolved_)
61 SiteContainerTools::changeGapsToUnknownCharacters(*sites);
67 if (!block.hasProperty(treePropertyIn_))
68 throw Exception(
"MaximumLikelihoodModelFitMafIterator::fitModelBlock. No property available for " + treePropertyIn_);
70 tree = &(
dynamic_cast<const Tree&
>(block.getProperty(treePropertyIn_)));
72 throw Exception(
"MaximumLikelihoodModelFitMafIterator::fitModelBlock. Tree must be unrooted.");
73 }
catch (bad_cast& e) {
74 throw Exception(
"MaximumLikelihoodModelFitMafIterator::fitModelBlock. A property was found for '" + treePropertyIn_ +
"' but does not appear to contain a phylogenetic tree.");
81 auto_ptr<DiscreteRatesAcrossSitesTreeLikelihood> tl;
83 if (rootFreqs_.get()) {
84 modelSet_.reset(SubstitutionModelSetTools::createHomogeneousModelSet(model_->clone(), rootFreqs_->clone(), tree));
85 tl.reset(
new RNonHomogeneousTreeLikelihood(*tree, *sites, modelSet_.get(), rDist_.get(),
false,
true,
false));
87 if (initParameters_.size() == 0)
90 tl.reset(
new RHomogeneousTreeLikelihood(*tree, *sites, model_.get(), rDist_.get(),
false,
false,
true));
93 tl->setParameters(fixedParameters_);
96 unsigned int nbIt = OptimizationTools::optimizeNumericalParameters2(tl.get(), initParameters_, 0, 0.000001, 10000, 0, 0,
false,
false, 0);
99 result_.setValue(
"NbIterations", static_cast<double>(nbIt));
100 for (
size_t i = 0;i < parametersOut_.size(); ++i) {
101 result_.setValue(parametersOut_[i], tl->getParameterValue(parametersOut_[i]));
106 if (rootFreqs_.get()) {
107 initParameters_.addParameters(modelSet_->getIndependentParameters());
109 initParameters_.addParameters(model_->getIndependentParameters());
111 initParameters_.addParameters(rDist_->getIndependentParameters());
113 initParameters_.deleteParameters(fixedParameters_.getParameterNames());
static const std::string NO_PROPERTY
void compute(const MafBlock &block)