Hi Kevin.
It sounds like what you want to do is perform a pre-order tree traversal
and for each node visited ask if all the taxa to one side (e.g.,
descendants of the right daughter node) are in state "0" and all the
taxa to the other side (e.g., descendants of the left daughter) are in
state "1". If this evaluates to be true, then you record the number of
tips in each category. To do this most efficiently, you should not visit
any daughters of a node for which you have evaluated balance - but if
you do, then you will find that it doesn't satisfy the criterion
described above (specifically, descendants on either side of the node
will be all in state "0" or "1").
This should be straightforward to code, but I do not have time to
demonstrate right now. I will try to do it this evening. Let us know if
you first figure it out yourself.
- Liam
Liam J. Revell, Assistant Professor of Biology
University of Massachusetts Boston
web: http://faculty.umb.edu/liam.revell/
email: liam.rev...@umb.edu
blog: http://blog.phytools.org
On 10/23/2014 11:13 AM, Arbuckle, Kevin wrote:
Hi Fran�ois,
Thanks again for your response. Wouldn't that lose the information of how many
species were in each clade? And how would I specify that 'clades' to keep
consist of those sharing either state? My original tree consists of almost 3000
species so going through such clades manually would be difficult at best, hence
the need to automate it somehow. (I apologise, my R coding skills are improving
but still leave a lot to be desired in many cases).
I completely agree that BiSSE is far more appropriate for my aims, and indeed
this was the approach I used. However, reviewers have asked if I get the same
basic result using other methods, which is the only reason I am attempting such
analyses now.
Thank you kindly once again for your time,
Kev
________________________________
From: Fran�ois Michonneau [francois.michonn...@gmail.com]
Sent: 23 October 2014 16:05
To: Arbuckle, Kevin
Cc: r-sig-phylo@r-project.org
Subject: Re: [R-sig-phylo] Extracting sister groups
HI Kevin,
If I understand correctly what you're trying to do, you'll first need to
collapse some of your tips to create clades, a proportion of which will have
the trait. You'll then be able to use this new tree to generate the data.frame
needed by the functions you mentioned in your original post.
Depending on what you're trying to do, you may not want to lose this
phylogenetic information. Maybe a different approach, such as using BiSSE in
the diversitree package might be more appropriate?
Cheers,
-- Fran�ois
On Thu, Oct 23, 2014 at 10:27 AM, Arbuckle, Kevin
<k.arbuc...@liverpool.ac.uk<mailto:k.arbuc...@liverpool.ac.uk>> wrote:
Hi Fran�ois,
Thank you kindly for your offer of help. The code below will simulate a phylogeny
("tree") and a dataframe ("trait") with one binary trait for 100 species. The
format is representative of the data I am using for my analyses so should serve as a test case.
Hopefully this helps, let me know if there's any other information I can provide.
library(ape)
library(phytools)
tree<-rtree(100)
tran<-matrix(c(-1,1,1,-1),2,2)
rownames(tran)<-c("0","1")
colnames(tran)<-c("0","1")
phy<-sim.history(tree,tran)
trait<-data.frame(sp=tree$tip.label,bt=getStates(phy,type="tips"))
rownames(trait)<-tree$tip.label
Cheers,
Kev
________________________________
From: Fran�ois Michonneau
[francois.michonn...@gmail.com<mailto:francois.michonn...@gmail.com>]
Sent: 23 October 2014 14:54
To: Arbuckle, Kevin
Subject: Re: [R-sig-phylo] Extracting sister groups
Hi Kevin,
We should be able to help you but it would be much easier if you provided us
with a small data set that illustrate the format of your current dataset. How
is your trait currently stored? and how is it associated with the tips in your
tree?
Cheers,
-- Fran�ois
On Thu, Oct 23, 2014 at 6:23 AM, Arbuckle, Kevin
<k.arbuc...@liverpool.ac.uk<mailto:k.arbuc...@liverpool.ac.uk>> wrote:
Hi everyone,
I am attempting to run sister group analyses as one way to look at the effect
of a binary trait on diversification. Two of the functions from ape that I'm
looking at are diversity.contrast.test and richness.yule.test, but both have
the same limitation. They require the data to be input as a dataframe of two
columns, one with the number of species in clades that have the trait of
interest, and the other with the number of species in the respective sister
clades that don't have the trait. The issue is that I am working with a very
large tree, and so extracting and entering such information by hand is not
really feasible.
I am therefore looking for a function which extracts all sister clades that
differ in the presence vs absence of the trait, and ideally is capable of
generating a dataframe of the appropriate format for the above functions
automatically. It seems that a function to do this should exist already, but as
I can't seem to find anything I would appreciate some help (hopefully someone
will know of such a function that already exists).
Thanks,
Kevin Arbuckle
[[alternative HTML version deleted]]
_______________________________________________
R-sig-phylo mailing list -
R-sig-phylo@r-project.org<mailto:R-sig-phylo@r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/
[[alternative HTML version deleted]]
_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/
_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/