Hi Ting-Wen, here is a short function to do this (also available at https://gist.github.com/skembel/7240466 ):
#prune tree to get rid of very closely related tips otuPhylo <- function(phy, cutoff=0.05) { dists <- cophenetic(phy) diag(dists) <- NA pruned <- vector() for (i in phy$tip.label) { if (!(i %in% pruned)) { d <- na.omit(dists[i,]) pruned <- c(pruned, names(which(d <= cutoff))) } } if (length(pruned) > 0) { print("Dropping the following taxa:") print(pruned) return(drop.tip(phy, pruned)) } else { return(phy) } } Best regards, Steve On Thu, Mar 3, 2016 at 2:13 PM, Ting-Wen Timothy Chen <tch...@gwdg.de> wrote: > Hi all, > > I would like to prune several taxa with short distances between each other > from a tree by setting a specific threshold and keep one of these taxa, but > in the end I got all these taxa out... > > Following is a simple example I used, but ended in a wrong tree, not I > expected. > # the original phylogeny > > tree.ori<-cat("(A:6,(B:4,(C:1,D:1,(E:0.5,F:0.5):0.5):3):2);",file="tree.ori.tre") > tree.ori1<-read.tree("tree.ori.tre") > plot(tree.ori1) # the original phylogeny > > # I want to make a final phylogeny by pruning the taxa of short distance, > here shorter than 3. This will result in tree like this: > tree.fin<-cat("(A:6,(B:4,C:4):2);",file="tree.fin.tre") > tree.fin1<-read.tree("tree.fin.tre") > plot(tree.fin1) # the expected final phylogeny, C can be replaced by D, E > or F. > tree.fin1.dist<-cophenetic(tree.fin1) > tree.fin1.dist # and a distance metrix like this (C, D, E or F present) > > # following are what I did on the original tree: > tree.ori1.dist<-cophenetic(tree.ori1) > tree.ori1.dist # the original distance metrix, with 6 taxa > threshold<-3 # set the minimal distance between taxa as 3 > diag(tree.ori1.dist) <- threshold + 1 > ind <- apply(tree.ori1.dist, 1, min) > 3 > diag(tree.ori1.dist) <- 0 > tree.ori1.dist1 <- tree.ori1.dist[ind,ind] > tree.ori1.dist1 # however, the brench of C,D,E,F was removed... > > Is there any function in R which allows to do this? > > Thank you very much! > > All the best > Ting-Wen > -- > Ting-Wen Chen > J.F. Blumenbach Institute of Zoology and Anthropology > Georg August University Goettingen > Berliner Str. 28 > D-37073 Goettingen, Germany > Tel: +49-55139-10943 > > _______________________________________________ > 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/ > -- ______________________________________________ Steven Kembel - steve.kem...@gmail.com http://kembellab.ca [[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/