diff --git a/CMakeLists.txt b/CMakeLists.txt index ca5ebac72..2f7eb503a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,7 +87,7 @@ endif() # The version number. set (iqtree_VERSION_MAJOR 2) set (iqtree_VERSION_MINOR 3) -set (iqtree_VERSION_PATCH ".5") +set (iqtree_VERSION_PATCH ".6") option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) diff --git a/main/phyloanalysis.cpp b/main/phyloanalysis.cpp index e712707bc..ac71027f4 100644 --- a/main/phyloanalysis.cpp +++ b/main/phyloanalysis.cpp @@ -323,7 +323,7 @@ void reportNexusFile(ostream &out, ModelSubst *m) { double f = 1.0 / m->num_states; for (i = 0; i < m->num_states; i++) out << " " << f; - out << endl; + out << ";" << endl; out.precision(4); out << "end;" << endl; } diff --git a/model/modelmixture.cpp b/model/modelmixture.cpp index 5a7008a35..de8772e39 100644 --- a/model/modelmixture.cpp +++ b/model/modelmixture.cpp @@ -2429,8 +2429,8 @@ void ModelMixture::setBounds(double *lower_bound, double *upper_bound, bool *bou // only consider the first class as this is a linked substitution matrix iterator it = begin(); auto freq = (*it)->freq_type; - int ndim = (*it)->getNDim(); (*it)->freq_type=FREQ_USER_DEFINED; + int ndim = (*it)->getNDim(); (*it)->setBounds(&lower_bound[dim], &upper_bound[dim], &bound_check[dim]); (*it)->freq_type=freq; //manually set these params for the restartParameters method; TODO: properly fix this -JD diff --git a/model/modelprotein.cpp b/model/modelprotein.cpp index 4e5d7196e..4359c5446 100644 --- a/model/modelprotein.cpp +++ b/model/modelprotein.cpp @@ -995,7 +995,9 @@ void ModelProtein::init(const char *model_name, string model_params, StateFreqTy } else { // initialize rate matrix with a model (default: POISSON) -JD nxs_model = models_block->findModel(Params::getInstance().gtr20_model); - ASSERT(nxs_model); + if (nxs_model == nullptr) { + outError("Unknown init model: " + Params::getInstance().gtr20_model); + } readParametersString(nxs_model->description, false); rescaleRates(rates, getNumRateEntries()); } diff --git a/tree/phylosupertree.cpp b/tree/phylosupertree.cpp index 21fabf81d..dcde7a0ed 100644 --- a/tree/phylosupertree.cpp +++ b/tree/phylosupertree.cpp @@ -1535,9 +1535,12 @@ void PhyloSuperTree::printBestPartitionParams(const char *filename) { if (!saln->partitions[part]->aln_file.empty()) out << saln->partitions[part]->aln_file << ": "; /*if (saln->partitions[part]->seq_type == SEQ_CODON) out << "CODON, ";*/ - out << saln->partitions[part]->sequence_type << ", "; + out << saln->partitions[part]->sequence_type; string pos = saln->partitions[part]->position_spec; replace(pos.begin(), pos.end(), ',' , ' '); + if (!saln->partitions[part]->sequence_type.empty() && !pos.empty()) { + out << ", "; + } out << pos << ";" << endl; } out << " charpartition mymodels =" << endl; diff --git a/utils/tools.cpp b/utils/tools.cpp index 10930e466..a7e91dc2f 100644 --- a/utils/tools.cpp +++ b/utils/tools.cpp @@ -1689,8 +1689,9 @@ void parseArg(int argc, char *argv[], Params ¶ms) { if (strcmp(argv[cnt], "--gtr20-model") == 0 || strcmp(argv[cnt], "--init-exchange") == 0) { cnt++; if (cnt >= argc) - throw "Use --gtr20-model "; + throw "Use " + string(argv[cnt-1]) + " "; params.gtr20_model = argv[cnt]; + transform(params.gtr20_model.begin(), params.gtr20_model.end(), params.gtr20_model.begin(), ::toupper); continue; } if (strcmp(argv[cnt], "--guess-multiplier") == 0) {