/// Load a tree from command line args "--tree filename" RootedSequenceTree load_T(const variables_map& args) { if (not args.count("tree")) throw myexception()<<"Tree file not specified! (--tree <filename>)"; RootedSequenceTree RT; RT.read(args["tree"].as<string>()); return RT; }
/// Construct a multifurcating tree representing topology constraints from file \a filename. /// /// \param filename The name of the file to load the tree from. /// \param names The order of the leaf labels. /// \return a multifurcating tree. /// SequenceTree load_constraint_tree(const string& filename,const vector<string>& names) { RootedSequenceTree RT; RT.read(filename); SequenceTree constraint = RT; remove_sub_branches(constraint); try{ remap_T_indices(constraint,names); } catch(const bad_mapping<string>& b) { bad_mapping<string> b2(b.missing,b.from); if (b.from == 0) b2<<"Constraint tree leaf sequence '"<<b2.missing<<"' not found in the alignment."; else b2<<"Alignment sequence '"<<b2.missing<<"' not found in the constraint tree."; throw b2; } return constraint; }