Re: [R-sig-phylo] Extract all possible clades from a tree

2017-01-06 Thread Kamila Naxerova
This new code works perfectly for me. 

Thanks so much everyone for helping me to solve this issue in record time!

Kamila

> On Jan 6, 2017, at 6:39 AM, Emmanuel Paradis <emmanuel.para...@ird.fr> wrote:
> 
> I paste below the new code of extract.clade for those who want to try it.
> 
> Best,
> 
> Emmanuel
> 
> 
> extract.clade <- function(phy, node, root.edge = 0, interactive = FALSE)
> {
>n <- length(phy$tip.label)
>if (interactive) {
>cat("Click close to the node...\n")
>node <- identify(phy)$nodes
>} else {
>if (length(node) > 1) {
>node <- node[1]
>warning("only the first value of 'node' has been considered")
>}
>if (is.character(node)) {
>if (is.null(phy$node.label))
>stop("the tree has no node labels")
>node <- match(node, phy$node.label) + n
>if (is.na(node)) stop("'node' not among the node labels.")
>}
>if (node <= n)
>stop("node number must be greater than the number of tips")
>}
>if (node == n + 1L) return(phy)
>keep <- prop.part(phy)[[node - n]]
>drop.tip(phy, (1:n)[-keep], root.edge = root.edge, rooted = TRUE)
> }
> 
> 
> Le 06/01/2017 à 10:17, Emmanuel Paradis a écrit :
>> Hi,
>> 
>> Klaus is right: extract.clade() fails if the tree has been rooted with
>> resolve.root = TRUE before. I'm going to rewrite the function calling
>> drop.tip (which will be safer). In the meantime, Klaus's function should
>> work for Kamila.
>> 
>> Best,
>> 
>> Emmanuel
>> 
>> Le 06/01/2017 à 05:17, Klaus Schliep a écrit :
>>> I had a look at the tree. There seems a bug in extract.clades, when the
>>> tree was rooted before with the root() function. extract.clade() seem to
>>> expect some ordering of nodes which seems not satisfied (and it looks as
>>> it was written a long time ago).
>>> 
>>> I just wrote a small function (easier than to debug the old one) which
>>> should do the same and it seems to work:
>>> 
>>> library(phangorn)
>>> 
>>> extract.clade2 <- function(phy, node){
>>>if(!(node %in% phy$edge[,1])) stop("node number must be greater than
>>> the number of tips")
>>>drop.tip(phy, setdiff(1:Ntip(phy), Descendants(phy, node)[[1]]))
>>> }
>>> 
>>> Klaus
>>> 
>>> 
>>> 
>>> On Jan 5, 2017 10:25 PM, "Joseph W. Brown" <josep...@umich.edu
>>> <mailto:josep...@umich.edu>> wrote:
>>> 
>>>Hmm. Maybe something wonky with your tree? I simulated a 17-tip tree
>>>and tried things out:
>>> 
>>>phy <- rtree(17);
>>>rootID <- length(phy$tip.label) + 1;
>>>counter <- 1;
>>>for (i in rootID:max(phy$edge[,1])) {
>>>  clade <- extract.clade(phy, i);
>>>  # do something. just printing clade properties here
>>>  print(paste0("clade ", counter, " (node ", i, ") has ",
>>>length(clade$tip.label), " tips."));
>>>  counter <- counter + 1;
>>>}
>>> 
>>>[1] "clade 1 (node 18) has 17 tips."
>>>[1] "clade 2 (node 19) has 11 tips."
>>>[1] "clade 3 (node 20) has 10 tips."
>>>[1] "clade 4 (node 21) has 4 tips."
>>>[1] "clade 5 (node 22) has 3 tips."
>>>[1] "clade 6 (node 23) has 2 tips."
>>>[1] "clade 7 (node 24) has 6 tips."
>>>[1] "clade 8 (node 25) has 5 tips."
>>>[1] "clade 9 (node 26) has 3 tips."
>>>[1] "clade 10 (node 27) has 2 tips."
>>>[1] "clade 11 (node 28) has 2 tips."
>>>[1] "clade 12 (node 29) has 6 tips."
>>>[1] "clade 13 (node 30) has 2 tips."
>>>[1] "clade 14 (node 31) has 4 tips."
>>>[1] "clade 15 (node 32) has 3 tips."
>>>[1] "clade 16 (node 33) has 2 tips."
>>> 
>>>and had no problem. Maybe post your tree here?
>>> 
>>>JWB
>>>
>>>Joseph W. Brown
>>>Post-doctoral Researcher, Smith Laboratory
>&g

Re: [R-sig-phylo] Extract all possible clades from a tree

2017-01-05 Thread Kamila Naxerova
Dear Joseph,

thanks so much. This is exactly what I need!

I am running into some problems that I don’t understand though. In my case, 
rootID is 18, and max(phy$edge[,1]) is 33. When I try to execute your loop, 
this happens:

> extract.clade(phy, 18)

Phylogenetic tree with 17 tips and 16 internal nodes.

Tip labels:
X1, X8, X9, X10 ...

Rooted; includes branch lengths.

So far so good… but then I keep getting these errors:

> extract.clade(phy, 19)
Error in phy$edge[, 2] : incorrect number of dimensions
> extract.clade(phy, 20)
Error in phy$edge[, 2] : incorrect number of dimensions

Not sure why extract.clade produces these errors. 19-23 don’t work, 24-26 work, 
27 produces the error again, 28 works etc. 

Thanks again. 

Kamila


> On Jan 5, 2017, at 4:12 PM, Joseph W. Brown <josep...@umich.edu> wrote:
> 
> Not sure if I understand the problem completely, but this should allow you to 
> examine all of the clades (and should work if polytomies are involved):
> 
> # for tree phy
> rootID <- length(phy$tip.label) + 1;
> for (i in rootID:max(phy$edge[,1])) {
>   clade <- extract.clade(phy, i);
>   # do something
> }
> 
> This includes the root node (i.e. whole tree), but that can be changed. This 
> can be rewritten as an lapply if necessary.
> 
> HTH.
> JWB
> 
> Joseph W. Brown
> Post-doctoral Researcher, Smith Laboratory
> University of Michigan
> Department of Ecology & Evolutionary Biology
> Room 2071, Kraus Natural Sciences Building
> Ann Arbor MI 48109-1079
> josep...@umich.edu <mailto:josep...@umich.edu>
> 
> 
> 
>> On 5 Jan, 2017, at 15:50, Kamila Naxerova <knaxer...@partners.org 
>> <mailto:knaxer...@partners.org>> wrote:
>> 
>> Hi all, 
>> 
>> I would like to break a phylogenetic tree into all possible clades and then 
>> examine each one of them for certain characteristics.
>> 
>> I am writing some code to do this from scratch, but it’s getting pretty 
>> cumbersome quickly. 
>> 
>> I was wondering whether there are some functions out there already that 
>> could help me with this task?
>> 
>> Thanks so much for any help.
>> 
>> Cheers,
>> Kamila
>> 
>> 
>> The information in this e-mail is intended only for t...{{dropped:24}}

___
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] Extract all possible clades from a tree

2017-01-05 Thread Kamila Naxerova
Hi all, 

I would like to break a phylogenetic tree into all possible clades and then 
examine each one of them for certain characteristics.

I am writing some code to do this from scratch, but it’s getting pretty 
cumbersome quickly. 

I was wondering whether there are some functions out there already that could 
help me with this task?

Thanks so much for any help.

Cheers,
Kamila


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.
___
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/

Re: [R-sig-phylo] Adjust position of tip labels in plot.phylo

2016-07-01 Thread Kamila Naxerova
Thank you so very much for helping me with this! This is the perfect solution.

Kamila
> On Jul 1, 2016, at 3:37 AM, Emmanuel Paradis <emmanuel.para...@ird.fr> wrote:
> 
> Hi Kamila,
> 
> The vectors x and y extracted by Liam are ordered in the same way than the 
> tip labels of the tree (say its names is 'phy'); for instance, the followings 
> should do the same output than plot(phy):
> 
> plot(phy, show.tip.label = FALSE)
> obj <- get("last_plot.phylo", envir = .PlotPhyloEnv)
> x <- obj$xx[1:obj$Ntip]
> y <- obj$yy[1:obj$Ntip]
> text(x, y, phy$tip.label)
> 
> Another R function that may be useful in your case is locator if you plot the 
> tree interactively (i.e., this will not work if using pdf(), png(), ...). 
> This may use in different ways, for instance:
> 
> text(locator(1), NULL, "Label to be placed interactively")
> 
> You then click on the graphical window where you want to add the text.
> 
> Best,
> 
> Emmanuel
> 
> Le 01/07/2016 05:47, Kamila Naxerova a �crit :
>> Thanks so much for your reply, Liam.
>> 
>> Most of the tip labels plotted by plot.phylo are in an optimal place, but 
>> while plotting a large number of trees, I have observed some �outliers" 
>> where the tip label is mispositioned and overlaps with the edge. Therefore, 
>> I would like to move some of those �bad� labels.
>> 
>> I am afraid my grasp of R�s underbelly is not profound enough to understand 
>> how to implement your last suggestion. It seems that you are extracting the 
>> tip label xy coordinates from the last tree that was plotted, but how do you 
>> then assign the new, modified coordinates to a new plot?
>> 
>> Thanks again for helping with this, it�s much appreciated.
>> 
>> Kamila
>> 
>>> On Jun 29, 2016, at 10:32 PM, Liam J. Revell <liam.rev...@umb.edu> wrote:
>>> 
>>> Dear Kamila.
>>> 
>>> In what way would you like to adjust the tip labels? The most useful 
>>> adjustment that I have found is the argument lab4ut="axial" which plots the 
>>> labels with the angle of the corresponding terminal edge. It is also 
>>> possible to offset the tip labels using label.offset>0.
>>> 
>>> We can also get the positions of the tips in the coordinates of our 
>>> plotting device as follows:
>>> 
>>> obj<-get("last_plot.phylo",envir=.PlotPhyloEnv)
>>> x<-obj$xx[1:obj$Ntip]
>>> y<-obj$yy[1:obj$Ntip]
>>> 
>>> You can then use these coordinates to plot your labels any way you choose!
>>> 
>>> - Liam
>>> 
>>> Liam J. Revell, Associate 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 6/29/2016 5:11 PM, Kamila Naxerova wrote:
>>>> Dear all,
>>>> 
>>>> is there a way to adjust the position of tip labels when plotted an 
>>>> unrooted tree with plot.phylo?
>>>> 
>>>> Many thanks,
>>>> Kamila
>>>> 
>>>> 
>>>> 
>>>> The information in this e-mail is intended only for t...{{dropped:24}}
>> 
>> ___
>> 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 
>> <https://stat.ethz.ch/mailman/listinfo/r-sig-phylo>
>> Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/ 
>> <http://www.mail-archive.com/r-sig-phylo@r-project.org/>


The information in this e-mail is intended only for the ...{{dropped:14}}

___
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/

Re: [R-sig-phylo] Adjust position of tip labels in plot.phylo

2016-06-30 Thread Kamila Naxerova
Thanks so much for your reply, Liam. 

Most of the tip labels plotted by plot.phylo are in an optimal place, but while 
plotting a large number of trees, I have observed some “outliers" where the tip 
label is mispositioned and overlaps with the edge. Therefore, I would like to 
move some of those “bad” labels.

I am afraid my grasp of R’s underbelly is not profound enough to understand how 
to implement your last suggestion. It seems that you are extracting the tip 
label xy coordinates from the last tree that was plotted, but how do you then 
assign the new, modified coordinates to a new plot?

Thanks again for helping with this, it’s much appreciated.

Kamila

> On Jun 29, 2016, at 10:32 PM, Liam J. Revell <liam.rev...@umb.edu> wrote:
> 
> Dear Kamila.
> 
> In what way would you like to adjust the tip labels? The most useful 
> adjustment that I have found is the argument lab4ut="axial" which plots the 
> labels with the angle of the corresponding terminal edge. It is also possible 
> to offset the tip labels using label.offset>0.
> 
> We can also get the positions of the tips in the coordinates of our plotting 
> device as follows:
> 
> obj<-get("last_plot.phylo",envir=.PlotPhyloEnv)
> x<-obj$xx[1:obj$Ntip]
> y<-obj$yy[1:obj$Ntip]
> 
> You can then use these coordinates to plot your labels any way you choose!
> 
> - Liam
> 
> Liam J. Revell, Associate 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 6/29/2016 5:11 PM, Kamila Naxerova wrote:
>> Dear all,
>> 
>> is there a way to adjust the position of tip labels when plotted an unrooted 
>> tree with plot.phylo?
>> 
>> Many thanks,
>> Kamila
>> 
>> 
>> 
>> The information in this e-mail is intended only for t...{{dropped:24}}

___
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] Adjust position of tip labels in plot.phylo

2016-06-29 Thread Kamila Naxerova
Dear all,

is there a way to adjust the position of tip labels when plotted an unrooted 
tree with plot.phylo? 

Many thanks,
Kamila



The information in this e-mail is intended only for the ...{{dropped:11}}

___
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] Error in plotBS when number of taxa is small

2016-06-14 Thread Kamila Naxerova
Hi all,

I am trying to attach bootstrap values to a small tree (just 4 taxa). plotBS() 
in the phangorn package gives me the following error: 

tree <- plotBS(phylotree,bstrees,type="phylogram",p=90)

Error in if (drop[j]) next : missing value where TRUE/FALSE needed


This error disappears and everything work great as soon as I have 5 taxa. But 
removing one always leads to this error, for multiple independent trees.

Am I missing something obvious? Unfortunately I don’t understand the error 
message.

Many thanks!
Kamila



The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.
___
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] Plotting rooted tree with bootstrap values (ape/phangorn)

2015-08-31 Thread Kamila Naxerova
Hi all,

I have a (almost certainly trivial) question about plotting a rooted tree with 
bootstrap values using ape and phangorn. I am using a simple script that looks 
like this:

dist <- daisy(matrix,metric="gower")
nrooted <- root(nj(dist),outgroup=x)

plot(nrooted) ## this plots the tree with the correct root, just the way I want 
it

# now I would like to put some bootstrap values on this tree
f <- function (xx) root(nj(daisy(xx,metric="gower")),outgroup=x)
b <- boot.phylo(nrooted,matrix,FUN = f, B=1000, trees=T)
tree <- plotBS(nrooted,b$trees,type="phylogram”)

The tree that is produced by plotBS has lost the root I assigned it. I would be 
really grateful is somebody could point out to me how to do this right!

Thanks so much.
Kamila


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.
___
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/