Comments (6)
It looks as though there is already a flag for that; it is -djc (I didn't know until I was looking at the code I wanted to change and found that there was already such a flag).
from iqtree2.
The manual says this about -djc (I didn't look at the code though...):
Avoid computing ML pairwise distances and BIONJ tree.
That suggests to me that the behaviour would be to only use an MP tree as a starting tree (or a collection of them). I'm looking for something that would suppress the MP tree, and suppress the JC NJ tree as well, and only calculate the NJ tree from ML distances (as long as I specify all the ML model parameters, it could always just return an error in that case, or a warning and then fall back onto the standard method of JC distances, JC NJ tree, ML paramaters, ML NJ tree, etc)
from iqtree2.
Right, -djc
is the opposite of what you want. I remember that was introduced some time ago to avoid the excessive run time of BIONJ in exactly this case, and just to stick with parsimony starting tree. One needs to implement a new option for you, Rob.
from iqtree2.
Rob, I had several discussions with @JamesBarbetti. It turned out that this single option requires a lot of changes in IQ-TREE (see reason below). While James already made necessary changes and committed the code, I won't probably release it soon, but rather have it in a feature request branch. James will to the testing, to make sure that IQ-TREE is running correctly with and without this option (i.e. it does break existing options). Then I will need to review his code, before merging into the master branch.
The reason is: IQ-TREE assumes to have a tree right after loading the alignment, before doing anything else. Even if you input a model with fixed parameters, the code for model optimisation is still broken without a tree. The thing is: IQ-TREE is not that smart, it cannot predict that you input a fixed model, until it initialises the model. Even then, IQ-TREE needs to optimise branch lengths of the tree (branch lengths are also parameters), but the tree does not exist yet, for this option.
Because of this, I'm reluctant to implement this option. Unless this option might be used by many users...
Another thing: Right now the default workflow is:
- Build parsimony tree
- Estimate model parameters
- Compute ML distances
- Compute NJ tree (or any other variant)
- Put both trees into a set of candidate trees
....
So actually, with this behaviour, we already have the good from both worlds, parsimony and distance, as starting trees for further tree search. I don't really see a point, why just doing ML-NJ tree. Especially I have seen many times that NJ is worse than parsimony (and the opposite as well). None is better than the other. That's why IQ-TREE has both of them at the beginning.
Therefore I'm not convinced why this option. What do you think?
from iqtree2.
Hi Minh,
I see the issue, and I think we can just park this for now. But here's why I think it would still be a useful feature.
If we release our the various new NJ improvements as a library, it would be useful to also have code to calculate ML distances with all of the amazing models in IQ-TREE. Right now we can do this, but on large alignments it's about 2x slower than it needs to be because we start by getting a tree (parsimony or NJ) and optimising branch lengths. But in cases where we know the model parameters, it's not necessary to do that.
Regardless, I just mention that so it's recorded here. My suggestion is that we just leave this issue open for now, and maybe revisit it towards the end of the year. It's not very important either way, it's only really relevant to HUGE datasets (where the speed of doing an MP tree and optimising branch lengths is a problem), and there are much more useful and important things to work on!!
from iqtree2.
OK I have a dumb question. Would something like this work as a workaround given @bqminh's comments on the constraints within IQ-TREE?
- Build random tree with unit (or random) branch lengths
- Initialise ML model parameters (using whatever method we currently use, and so also respecting any user input ML model parameters)
- Do not estimate model parameters (i.e. do not try to optimise branch lengths or ML parameters, just leave them initialised as random )
- Compute ML distances
- Compute ML NJ tree
- Stop (or continue to use ML NJ tree only as a starting tree)
I'm just wondering if steps 1-3 would allow us to do very fast ML-NJ trees on large datasets, and also be simple to incorporate.
from iqtree2.
Related Issues (20)
- 11 weight for 12.12 model & rate parameters for each site HOT 6
- IQ-TREE not working on M1 macbook HOT 2
- Unexplained base content of sequence alignment generated under UNREST model HOT 1
- IQTree crashes with nonreversible models HOT 2
- crashing during model selection HOT 2
- Ambiguous bases being treated as constant HOT 1
- Help with IQ-TREE HOT 3
- Constraint not compatible with ModelFinder? HOT 5
- Segmentation fault when trying to use lds2 with predefined substitution rates HOT 2
- CMake deprecation warning: Compatibility with CMake < 3.5 will be removed from a future version of CMake.
- Build fails on ARM Mac (macOS 14) with `Error at CMakeLists.txt:701 (add_subdirectory)` HOT 4
- IQtree help string should mention architecture HOT 1
- Cannot find exact build setup used to make the release binaries HOT 1
- auto thread number detection with modelfinder HOT 1
- Compilation failure with GCC 12 HOT 8
- A question that how to gene tree root on my data๏ผ HOT 3
- Compliation error HOT 6
- A possible bug? HOT 8
- Enhancement request: Implement +ASC option to speed up MixtureFinder searches on supermatrices lacking constant sites HOT 3
- SIGNAL SEGMENTATION FAULT HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iqtree2.