Question: Computationally-Effective Tool To Directly Generate Maximum Likelihood Phylogeny Tree (Rooted)
gravatar for jianfeng.mao
8.1 years ago by
jianfeng.mao30 wrote:

Dear BioStarers,

Here, I would like to get your helps on finding a computationally-effective tool to directly generate Maximum Likelihood phylogeny tree (rooted with outgroup). There would be many choice for constructing ML phylogeny tree. However, I have fewer experiences on this topic. So your advice/direction would be very valuable to me. I would like to know: which computational tool could I depend on? Advice on tools other than ML is also welcome.

My objective: In my study, I have sequences from several individuals of one species (in-group), and homologous sequences from one of another species (outgroup). I want to generate a ML phylogeny tree for in-group with outgroup as root.

Here I listed what I have tried: (1) PhyML ( It could be run parallel in multiple cores, and It could be run on-line. However, it could not directly output me a rooted tree with outgroup (see: Setting up rooted tree from PhyML is not straightforward and usually ambiguously.

(2) nhphyml ( Seems it could be a good choice. I did not implemented on my own data. I plan to try.

(3) PAML (baseml, I did not experienced it. By checking the its manual, it seems it is used to compare trees. I am not sure if it could be depended on in my study for a rooted phylogeny tree. Any directions?

Do you have any other experiences to share with me? Or any advice, or directions to me?

Thanks in advance.

Best wishes,

phylogeny • 3.3k views
ADD COMMENTlink written 8.1 years ago by jianfeng.mao30

I agree with Dan Gaston that editing your tree with treefig, njplot or another tree visualization program seems like the best option. Regarding nhPhyML, this program requires a rooted tree as input; given that you want a rooted tree out of the program, this will probably not be very helpful to you. To generate a rooted tree, you need a branch-heterogeneous model, a (relaxed-)clock model, or a reconciliation as explained by Lars Arvestad. Most commonly-used software do not implement such models unfortunately. If you are not against Bayesian approaches and think your data is amenable to a dating analysis, you could use Beast to generate a rooted tree as well.

ADD REPLYlink written 8.1 years ago by boussau10

Or an outgroup. You can always generate a rooted tree provided you have an outgroup to do the rooting with.

ADD REPLYlink written 8.1 years ago by DG7.1k
gravatar for DG
8.1 years ago by
DG7.1k wrote:

If you have an output unrooted tree, regardless of the program that generated it, it is trivial to "reroot" the tree. In practice most ML programs default to an unrooted topology for computational reasons. Assuming your outgroup sequences do not cluster within your sequences of interest many tree visualization programs (like FigTree) will allow you re-root the tree wherever you wish. In your case on the branch between the outgroup and the sequences of interest. PhyML is a solid ML program with good model choices.

I personally prefer RAxML because the developer, Stamatakis, is quite an exceptional computer scientist who works closely with a group of biologists to produce a biologically reasonable, useful, and computationally rigorous product. Its fast, behaves well, and has lots of options. One of the options lets you specify an outgroup BTW, so your output will already be rooted according to the output. Plenty of model choices to use appropriately.

ADD COMMENTlink written 8.1 years ago by DG7.1k

If you need to do this computation for many trees, a visualization program is probably not the best choice for rerooting, but there are other tools, for example "Newick Utilties" (, that roots by outgroup on the command line.

Also, consider rooting by reconciliation, that is pick the root such that you get as few duplications as possible when reconciling your gene/protein tree with a species tree. Dannie Durand's program Notung ( is excellent for that.

ADD REPLYlink written 8.1 years ago by Lars Arvestad40

Thanks Dan, I will try FigTree to re-root my tree. I have gotten unrooted tree (with/without the outgroup) from PhyML. However, I am confused on how to merge these two trees. It seems FigTree should be a choice.

ADD REPLYlink written 8.1 years ago by jianfeng.mao30

You don't want to merge the trees. You should infer the tree including the outgroup, then you can place the root however you like in order to visualize the tree. In your case on the branch between the outgroup and sequences of interest. Don't infer a tree without the outgroup if you want to display it as rooted.

You only need to do the single tree (although I would also suggest doing bootstrap replicates of course).

ADD REPLYlink written 8.1 years ago by DG7.1k
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1781 users visited in the last hour