Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit

Permalink
print concatenated alignment for .good.nex and .bad.nex (--bisymtest-…
Browse files Browse the repository at this point in the history
…remove-bad/-good)
  • Loading branch information
bqminh committed Dec 18, 2018
1 parent ae96071 commit 0cfee46
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 21 deletions.
35 changes: 18 additions & 17 deletions alignment/superalignment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,6 @@ SuperAlignment::SuperAlignment(Params &params) : Alignment()

init();

if (params.print_conaln) {
string str = params.out_prefix;
str = params.out_prefix;
str += ".conaln";
printCombinedAlignment(str.c_str());
}

cout << "Degree of missing data: " << computeMissingData() << endl;

#ifdef _OPENMP
Expand Down Expand Up @@ -484,12 +477,12 @@ void SuperAlignment::readPartitionDir(Params &params) {
}
}

void SuperAlignment::printPartition(const char *filename) {
void SuperAlignment::printPartition(const char *filename, const char *aln_file) {
try {
ofstream out;
out.exceptions(ios::failbit | ios::badbit);
out.open(filename);
out << "#nexus" << endl << "[ partition information for alignment written in .conaln file ]" << endl
out << "#nexus" << endl << "[ partition information for alignment written in " << aln_file <<" file ]" << endl
<< "begin sets;" << endl;
int part; int start_site;
for (part = 0, start_site = 1; part < partitions.size(); part++) {
Expand All @@ -499,15 +492,23 @@ void SuperAlignment::printPartition(const char *filename) {
out << " charset " << name << " = " << start_site << "-" << end_site-1 << ";" << endl;
start_site = end_site;
}
out << " charpartition mymodels =" << endl;
for (part = 0; part < partitions.size(); part++) {
string name = partitions[part]->name;
replace(name.begin(), name.end(), '+', '_');
if (part > 0) out << "," << endl;
// out << " " << at(part)->getModelNameParams() << ":" << name;
out << " " << partitions[part]->model_name << ":" << name;
bool ok_model = true;
for (part = 0; part < partitions.size(); part++)
if (partitions[part]->model_name.empty()) {
ok_model = false;
break;
}
if (ok_model) {
out << " charpartition mymodels =" << endl;
for (part = 0; part < partitions.size(); part++) {
string name = partitions[part]->name;
replace(name.begin(), name.end(), '+', '_');
if (part > 0) out << "," << endl;
// out << " " << at(part)->getModelNameParams() << ":" << name;
out << " " << partitions[part]->model_name << ":" << name;
}
out << ";" << endl;
}
out << ";" << endl;
out << "end;" << endl;
out.close();
cout << "Partition information was printed to " << filename << endl;
Expand Down
2 changes: 1 addition & 1 deletion alignment/superalignment.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class SuperAlignment : public Alignment
/** read partition as files in a directory */
void readPartitionDir(Params &params);

void printPartition(const char *filename);
void printPartition(const char *filename, const char *aln_file);

void printPartitionRaxml(const char *filename);

Expand Down
18 changes: 15 additions & 3 deletions main/phyloanalysis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1951,10 +1951,19 @@ void printMiscInfo(Params &params, IQTree &iqtree, double *pattern_lh) {
cout << "Branch lengths written to " << filename << endl;
}

if (params.print_conaln && iqtree.isSuperTree()) {
string str = params.out_prefix;
str = params.out_prefix;
str += ".conaln";
((SuperAlignment*)(iqtree.aln))->printCombinedAlignment(str.c_str());
}

if (params.print_partition_info && iqtree.isSuperTree()) {
ASSERT(params.print_conaln);
string aln_file = (string)params.out_prefix + ".conaln";
string partition_info = params.out_prefix;
partition_info += ".partinfo.nex";
((SuperAlignment*)(iqtree.aln))->printPartition(partition_info.c_str());
((SuperAlignment*)(iqtree.aln))->printPartition(partition_info.c_str(), aln_file.c_str());
partition_info = (string)params.out_prefix + ".partitions";
((SuperAlignment*)(iqtree.aln))->printPartitionRaxml(partition_info.c_str());
}
Expand Down Expand Up @@ -3598,15 +3607,18 @@ void doSymTest(Alignment *alignment, Params &params) {
getSymTestID(intsym, part_id, false);
}
if (!part_id.empty()) {
SuperAlignment *saln = (SuperAlignment*)alignment;
cout << "Removing " << part_id.size()
<< ((params.symtest == 2)? " bad" : " good") << " partitions (pvalue cutoff = "
<< params.symtest_pcutoff << ")..." << endl;
if (part_id.size() < alignment->getNSite())
((SuperAlignment*)alignment)->removePartitions(part_id);
saln->removePartitions(part_id);
else
outError("Can't remove all partitions");
string aln_file = (string)params.out_prefix + ((params.symtest == 2)? ".good.phy" : ".bad.phy");
saln->printCombinedAlignment(aln_file.c_str());
string filename = (string)params.out_prefix + ((params.symtest == 2)? ".good.nex" : ".bad.nex");
((SuperAlignment*)alignment)->printBestPartition(filename.c_str());
saln->printPartition(filename.c_str(), aln_file.c_str());
}
}
}
Expand Down

0 comments on commit 0cfee46

Please sign in to comment.