diff --git a/src/global_defs.h b/src/global_defs.h index dfd5ffc..3d49d94 100644 --- a/src/global_defs.h +++ b/src/global_defs.h @@ -65,7 +65,7 @@ #define ERR_MSG_SIZE 240 #define UNUSED(expr) do { (void)(expr); } while (0) -#define MT_PRECISION_DIGITS 4 +#define MT_PRECISION_DIGITS 17 #define DEFAULT_GAMMA_RATE_CATS 4 #define DEFAULT_GAMMA_RATE_MODE PLL_GAMMA_RATES_MEAN diff --git a/src/main.cpp b/src/main.cpp index b79cc14..87e0c70 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -180,6 +180,12 @@ int main(int argc, char *argv[]) ofstream * results_stream = 0; + ofstream xml_stream; + if (ROOT) { + xml_stream = ofstream(opts.output_results_file + ".xml", std::ios::out); + xml_stream << "" << std::setprecision(17) << endl; + } + if (ROOT) results_stream = modeltest::Utils::open_file_for_writing(opts.output_results_file); @@ -283,6 +289,19 @@ int main(int argc, char *argv[]) MT_INFO); } + for (const auto model : ModelTestService::instance()->get_modeltest()->get_models(part_id)) { + xml_stream << "get_name() + << "\" lnL=\"" << model->get_loglh() + << "\" score=\"" << model->get_bic() + << "\" score-bic=\"" << model->get_bic() + << "\" score-aic=\"" << model->get_aic() + << "\" score-aicc=\"" << model->get_aicc() + << "\" free-params=\"" << model->get_n_free_variables() + << "\" />" << endl; + } + + delete bic_selection; delete aic_selection; delete aicc_selection; @@ -368,6 +387,14 @@ int main(int argc, char *argv[]) << opts.output_tree_file << endl; //MT_INFO << "Log written to " << opts.output_log_file << endl; + + if (ROOT) { + xml_stream << "" << endl; + xml_stream.close(); + + MT_INFO << "Model selections written to " << opts.output_results_file << ".xml." << endl; + } + /* clean */ if (opts.partitions_desc) delete opts.partitions_desc; @@ -400,5 +427,6 @@ BARRIER; ModelTestService::finalize( false ); + return return_val; } diff --git a/src/optimize/model_optimizer_pll.cpp b/src/optimize/model_optimizer_pll.cpp index c324081..cd23892 100644 --- a/src/optimize/model_optimizer_pll.cpp +++ b/src/optimize/model_optimizer_pll.cpp @@ -165,7 +165,7 @@ ModelOptimizerPll::ModelOptimizerPll (MsaPll &_msa, model.set_loglh(cur_loglh); model.set_exec_time(end_time - start_time); - model.evaluate_criteria(n_branches, msa.get_n_sites()); + model.evaluate_criteria(n_branches, partition.get_n_sites()); if (optimize_topology) model.set_tree(pll_tree); @@ -198,6 +198,7 @@ ModelOptimizerPll::ModelOptimizerPll (MsaPll &_msa, if (opt_per_param) { bool all_params_done = false; + size_t i = 0; while ((fabs (cur_loglh - save_loglh) > epsilon && cur_loglh > save_loglh)) { save_loglh = cur_loglh; @@ -222,7 +223,10 @@ ModelOptimizerPll::ModelOptimizerPll (MsaPll &_msa, opt_delta = cur_loglh; notify(); } + ++i; } + + LOG_INFO << "\t\t" << model.get_name() << " part " << partition.get_unique_id() << " eps-iteration count: " << i << endl; } else {