Hi Max,
there is also a function called Siblings in phangorn:
library(phangorn)
tree <- rcoal(10)
Siblings(tree, 1:10, include.self=TRUE) # Siblings for all the tips
Siblings(tree, include.self=TRUE) # all pairs
Regards,
Klaus


On Fri, Jan 10, 2020 at 3:27 AM Liam Revell <liam.rev...@umb.edu> wrote:

> Peter's function works but it only returns sister pairs in which both of
> the sisters are tips.
>
> Here's another alternative that uses phangorn & gives you a list of all
> the sister pairs in which at least one of the sisters is a tip (and it
> also works for terminal multifurcations).
>
> parents<-unique(sapply(1:Ntip(tree),Ancestors,x=tree,type="parent"))
> pairs<-lapply(parents,Descendants,x=tree,type="children")
>
> ## you can stop here if you are content to have your tips & nodes
> ## represented using their numerical indices, otherwise:
>
> foo<-function(i,phy) if(i<=Ntip(phy)) phy$tip.label[i] else i
> labels<-lapply(pairs,function(x,phy) sapply(x,foo,phy=phy),phy=tree)
>
> All the best, Liam
>
> Liam J. Revell
> Associate Professor, University of Massachusetts Boston
> Profesor Asistente, Universidad Católica de la Ssma Concepción
> web: http://faculty.umb.edu/liam.revell/, http://www.phytools.org
>
> Academic Director UMass Boston Chile Abroad:
> https://www.umb.edu/academics/caps/international/biology_chile
>
> On 1/9/2020 11:04 PM, Peter Cowman wrote:
> > [EXTERNAL SENDER]
> >
> > HI Max,
> >
> > Not entirely sure if this is what you want but i did come across a
> script to extract direct sister pairs (tips) in a tree
> >
> >  From the dryad supplement of  Grossenbacher D, Briscoe Runquist R,
> Goldberg EE, Brandvain Y (2015) Geographic range size is predicted by plant
> mating system. Ecology Letters 18(7): 706-713.
> >
> >
> https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoi.org%2F10.5061%2Fdryad.hv117%2F6&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929613195&amp;sdata=nf%2FSkFBV4EHIQhikHeTLk86YOxu2j1MA5Fp3TmYPVVk%3D&amp;reserved=0
> <
> https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdoi.org%2F10.5061%2Fdryad.hv117%2F6&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929613195&amp;sdata=nf%2FSkFBV4EHIQhikHeTLk86YOxu2j1MA5Fp3TmYPVVk%3D&amp;reserved=0
> >
> >
> > The script grabs sister pairs across a sample of tree and gives their
> distance - i.e. pairs of tips that are monophyletic
> >
> > here is the code I have from that script (might be worth getting it from
> the source script again)
> >
> > #####
> > # Get all sisters
> > GetSisters = function(TREE){
> >    tips = TREE$edge[TREE$edge[,2]<=length(TREE$tip.label),]
> >    sis.nodes = tips[duplicated(tips[,1]),1]
> >
> tmp=data.frame(cbind(sis.nodes,do.call(rbind,lapply(sis.nodes,function(NODE){
> >      this = TREE$edge[,1]==NODE
> >      c(TREE$edge[this,2][1:2],sum(TREE$edge.length[this][1:2]))
> >    }))))
> >    colnames(tmp) = c("internal","A","B","dist")
> >
> >    tmp$a = TREE$tip.label[tmp$A]; tmp$b = TREE$tip.label[tmp$B]
> >    tmp
> > }
> > #####
> >
> > Hope it helps
> >
> > Cheers
> >
> > Pete
> >
> >
> > =======================================
> > Peter F Cowman, Ph.D.
> > Senior Research Fellow in Ecosystem Dynamics
> > ARC Discovery Fellow (DECRA)
> >
> > ARC Centre of Excellence for Coral Reef Studies <
> https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.coralcoe.org.au%2F&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=sC6e6ZSJ7BlEWYhN6jn4don4IEoRS0s65M2ZXMaFt2w%3D&amp;reserved=0
> >
> > James Cook University, Townsville, QLD, 4811, Australia
> >
> > Office: +61 7 4781 3194 | Rm 128 Bld DB019
> > Email: peter.cow...@jcu.edu.au <mailto:peter.cow...@jcu.edu.au>
> > Twitter: @pete_cowman
> > ORCID ID: orcid.org/0000-0001-5977-5327 <
> https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Forcid.org%2F0000-0001-5977-5327&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=g5uHfG1qDpUjquyAKfV6NUvHp9mVIupG1hKS6ubfHHo%3D&amp;reserved=0
> >
> >
> >> On 10 Jan 2020, at 07:36, Max Shpak <shpak....@gmail.com> wrote:
> >>
> >> If I have an object of class "phylo" in the ape, with attributes edge,
> >> Nnode, node.label, and tip.label, is there some straightforward way for
> me
> >> to extract a list of sister taxon pairs (whether the sister taxa are two
> >> edges or an edge and a node)?
> >>
> >> I wrote to E. Paradis (the author of ape), and he said that he didn't
> know
> >> of a direct way to do this, but it may be possible through some
> >> manipulation of the mrca functions.
> >>
> >> Does anybody on this board have any suggestions for how to go about
> this?
> >>
> >> Thank you, Max Shpak
> >>
> >> --
> >> =======================
> >> Max Shpak, Ph.D.
> >> Center for Systems and Synthetic Biology
> >> University of Texas at Austin
> >> Austin, TX 78712
> >>
> >>        [[alternative HTML version deleted]]
> >>
> >> _______________________________________________
> >> R-sig-phylo mailing list - R-sig-phylo@r-project.org
> >>
> https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-phylo&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=xiGcF2HLz%2Ffv6B1h0tKuQFmwLOfaneTjrXDgFNv4glA%3D&amp;reserved=0
> >> Searchable archive at
> https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.mail-archive.com%2Fr-sig-phylo%40r-project.org%2F&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=XdPCQsFlTHWdRx8G6OgTczvvLEInBWVoNflalBdpkFY%3D&amp;reserved=0
> >
> >
> >          [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-phylo mailing list - R-sig-phylo@r-project.org
> >
> https://nam01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-phylo&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=xiGcF2HLz%2Ffv6B1h0tKuQFmwLOfaneTjrXDgFNv4glA%3D&amp;reserved=0
> > Searchable archive at
> https://nam01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.mail-archive.com%2Fr-sig-phylo%40r-project.org%2F&amp;data=02%7C01%7Cliam.revell%40umb.edu%7C90a597b4b91d49de99c908d79571b556%7Cb97188711ee94425953c1ace1373eb38%7C0%7C1%7C637142187929623185&amp;sdata=XdPCQsFlTHWdRx8G6OgTczvvLEInBWVoNflalBdpkFY%3D&amp;reserved=0
> >
> _______________________________________________
> 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/
>


-- 
Klaus Schliep

Senior Scientist
Institute of Computational Biotechnology
TU Graz
http://www.phangorn.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/

Reply via email to