Hi Minh and the IQ-TREE team,
Thanks again for the great software! My research has been made both more efficient and more flexible due to your efforts. Bravo!
I have a suggestion for a future version of IQ-TREE which is being prompted by a project currently in progress.
Suppose we have several ingroup taxa… some of which are living animals represented by both DNA and morphology, while other ingroup taxa are fossils represented only by morphology. Also suppose that the outgroup taxa are similarly represented… some are living and some are fossils. Let’s also assume that the DNA data representing the living taxa is robust - maybe a 40 gene concatenated alignment with 50,000 positions. In a model and partition scheme test using IQ-TREE or PartitionFinder (or whatever software) we find it makes most sense to use 12 DNA partitions some of which use a GTR+G model and others a GTR+I+G model.
If we want to force all ingroup taxa to form a monophyletic group, we can easily do so by using the -g option. This can be done with a constraint tree like the example “monophyly.constraint.tree.nwk” attached below. To use this in IQ-TREE, I simply add “-g monophyly.constraint.tree.nwk” to the terminal call.
However, if the DNA data has been used in a previous study to infer the relationships among the living taxa (and the support values for those relationships are strong), a different approach could be made. Suppose we eliminate the DNA data from the current analysis altogether and instead use only morphology. We could create a “molecular scaffold” tree based on the previous study to lock down the relationships among living taxa and allow fossils to assume their most likely positions. If we are willing to assume that the inclusion of fossil taxa won’t change the relationships among living taxa, this approach has a major advantage… the software does not have to deal with GTR+G and GTR+I+G parameters across 12 different partitions and can therefore greatly reduce processing time. This can be done with a scaffold tree like the example “scaffold.constraint.tree.nwk” attached below. To use this in IQ-TREE, I simply add “-g scaffold.constraint.tree.nwk” to the terminal call.
But.... What if we want to use BOTH scaffold and monophyly constraints at the same time? This would be quite advantageous! The trick of course is that we need to provide scaffold and monophyly constraint trees that are fully congruent (like the two trees attached). This can be done in MrBayes using a combination of “hard” (monophyly) and “soft” (backbone) constraints. TNT also offers the option to combine monophyletic group trees and skeleton trees. Both MrBayes and TNT run a congruence test on the user-defined trees before processing the data and stop if the trees fail this test.
My suggestion for a future version of IQ-TREE would be to allow more than one constraint tree under the condition that they are congruent. Maybe the terminal call could be adapted to something like: “-g1 momophyly.constraint.tree.nwk -g2 scafold.constraint.tree.nwk”. One foreseeable issue would be to preserve the code of former IQ-TREE versions by setting -g and –g1 to be synonymous commands. As far as I know, RAxML does not allow more than one set of user-defined constraints. If IQ-TREE could incorporate this feature, it would add to the growing list of items that make your software more versatile and better adapted to deal with diverse data sets.
Thanks for hearing me out. Cheers!
-Steven