Allow users to specify arbitrary IQ-TREE models #776
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of proposed changes
IQ-TREE supports hundreds of models through its
-m
argument. Whenusers omit this argument, IQ-TREE will run a model test and use the best
model to build the tree. Users can refer to the IQ-TREE log file to find
the best model and use that in future runs of the command.
Unfortunately, augur tree hardcodes only a handful of possible
substitution models as viable choices for the
--substitution-model
argument. Although the help text for
--substitution-model
says userscan provide "none" as an argument to run the IQ-TREE model test, "none"
is not one of the hardcoded choices. This means the model test
functionality of IQ-TREE hasn't been available for years. Additionally,
the message we print to stdout when users can select "none" refers to
the wrong log file, and once users find the best model for their data,
they cannot provide it to augur tree unless it happens to be one of the
predefined choices.
To address these issues, this commit removes the list of hardcoded
substitution model choices from augur tree, allowing users to provide
any valid IQ-TREE model or "none", as described in the help text. This
commit also adds a functional test of this "model test" interface that
revealed a typo in the code that calls IQ-TREE, fixes the typo, and
prints the path of the actual IQ-TREE log file to check for model test
results.
Related issue(s)
Fixes #619
Testing
Adds a functional test to
tests/functional/tree.t
to test for the model test functionality of IQ-TREE.