This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Checking monophyletic group in 1000s of gene phylogenetic tree

Dear all,

I am looking for software or methods that I can use to check whether a pre-specified monophyletic group is present in the gene trees that I have (1000's of trees). Basically, I have the reference tree and I know which all labels forms a clade or monophyletic group. I can give this info and I would like to test whether the gene trees follows the same monophyletic grouping?

​Is there a way to do that either using R (ape) or any protocol available.

Here is a sample tree with 4 clades

((((((A:0.00021,(B:0.00005,C:0.00005):0.00017):0.00008,
D:0.00029):0.00039,((E:0.00001,F:0.00001):0.00035,
J:0.00036):0.00032):0.00050,((H:0.00052,I:0.00052):0.00009,
J:0.00061):0.00057):0.00143,(K:0.00075,(L:0.00054,
M:0.00054):0.00021):0.00185):0.00102,N:0.00363);
phylogeny

2 answers

You can do it programmatically with the ETE toolkit. Check this example:

from ete2 import Tree
t =  Tree("((((((a, e), i), o),h), u), ((f, g), j));")
print t

#                   /-a
#                /-|
#             /-|   \-e
#            |  |
#          /-|   \-i
#         |  |
#       /-|   \-o
#      |  |
#    /-|   \-h
#   |  |
#   |   \-u
# --|
#   |      /-f
#   |   /-|
#    \-|   \-g
#      |
#       \-j


# all vowels are not monophyletic in the
# previous tree, but polyphyletic (a foreign label breaks its monophyly)
print t.check_monophyly(values=["a", "e", "i", "o", "u"], target_attr="name")

# however, the following set of vowels are monophyletic
print t.check_monophyly(values=["a", "e", "i", "o"], target_attr="name")

# A special case of polyphyly, called paraphyly, is also used to
# define certain type of grouping. See this wikipedia article for
# disambiguation: http://en.wikipedia.org/wiki/Paraphyly
print t.check_monophyly(values=["i", "o"], target_attr="name")

You can compare the likelihood of constrained (with your monophyletic group of interest fixed) versus unconstrained trees. There are papers using Bayesian (e.g., MrBayes + Bayes factor here) and maximum likelihood (e.g., RAxML + approximately unbiased test here) phylogeny frameworks.

ape has a function is.monophyletic, so it should do what you want as well.

Log in to answer this question.