That all sounds great as gravy to me, Emmanuel. Thanks for clarifying
the help file.
-Cave

On Wed, Jan 22, 2014 at 4:08 AM, Emmanuel Paradis
<emmanuel.para...@ird.fr> wrote:
> Hi David,
>
> You are right about this help page which is not so accurrate. I have
> modified it with:
>
>   "The test differs slightly whether the tree is rooted or not. An
>   urooted tree is considered binary if all its nodes are of degree three
>   (i.e., three edges connect to each node). A rooted tree is considered
>   binary if all nodes (including the root node) have exactly two
>   descendant nodes, so that they are of degree three expect the root
>   which is of degree 2."
>
> About the concept of rooted vs. unrooted, it is not so different from the
> one in Newick. Consider the tree:
>
>   (A,B,C);
>
> is it an unrooted (binary) tree, or a rooted tree with a basal trifurcation?
> The presence of a root edge helps to solve this ambiguity, so:
>
>   (A,B,C):0;
>
> is a (non-binary) rooted tree (note that both trees are graphically
> identical). Ape considers the first tree as unrooted because it is the kind
> of trees produced by many functions such as nj, bionj, etc.
>
> Best,
>
> Emmanuel
>
> Le 16/01/2014 17:32, David Bapst a écrit :
>
>> Liam and to those who responded privately,
>>
>> Yes, I understand that's the general reasoning for why ape refers to
>> trees with a polytomous root as 'unrooted'.
>>
>> But if a tree with a basal trichotomy is an acceptable binary tree,
>> this doesn't jive with the help description for is.binary.tree in ape.
>> The references to 'two descendant nodes' is the help file's
>> terminology, after all. In particular, it doesn't match the text about
>> binary trees having 2Ntip-2 edges; that is only true for 'rooted'
>> binary trees.
>>
>> I also don't think every instance of a polytomy existing at the root
>> reflects a user who necessarily realizes such topologies are treated
>> as 'unrooted'; after all, a user might have use cases where a polytomy
>> at the root actually represents a real multifurcating branching event.
>> Although I realize this has never fully agreed with ape's concept of
>> rooted and unrooted, I know I generally input trees in R with
>> polytomous roots because there's some uncertainty in the proper
>> outgroup, or the outgroup got dropped between inference and analysis.
>> Either way, the tree is rooted and has directionality, it just doesn't
>> have a fully resolved root. There's probably even better examples of
>> use cases involving polytomous roots that just aren't occurring to me
>> right now.
>>
>> Users may also not be immediately familiar with the 'rooted' and
>> 'unrooted' concepts in ape as related to the presence of polytomies at
>> the root node; I know I wasn't familiar with this concept when I first
>> started working with phylogenies in R (although I admit I did know by
>> the time I used is.binary.tree in my code).
>>
>> So, I think some clarification might be needed about the application
>> of this function.
>>
>> Cheers,
>> -Dave
>>
>> On Wed, Jan 15, 2014 at 8:03 PM, Liam J. Revell <liam.rev...@umb.edu>
>> wrote:
>>>
>>> Hi David.
>>>
>>> In an unrooted, fully dichotomous tree each internal node is attached to
>>> three & exactly three nodes (some of which are tips). (In a rooted binary
>>> tree one additional internal node exists, the root, which is attached to
>>> only two nodes.) Ancestor & descendant have no meaning until the tree is
>>> rooted. The fact that an unrooted tree stored as an object of class
>>> "phylo"
>>> has one node with three 'descendants' (these aren't actually all
>>> descendants, as the tree is unrooted) is just an artifact of the way the
>>> object is stored in memory & thus is.binary.tree is behaving correctly.
>>>
>>> All the best, 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 1/15/2014 3:34 PM, David Bapst wrote:
>>>>
>>>>
>>>> Hi Emmanuel and the rest of the list,
>>>>
>>>> In some code, I use the ape function is.binary.tree to test if a
>>>> phylogeny is fully dichotomous. However, some recent analyses have
>>>> made me wonder if this wasn't the right choice. I'm not sure if the
>>>> following is a bug report me or me not understand the reasoning of a
>>>> function in ape.
>>>>
>>>> You see, I had an 'unrooted' (in ape terminology) tree with a basal
>>>> trichotomy. I wouldn't consider such a tree to be fully dichotomous,
>>>> but is.binary.tree says such a tree is in fact binary (i.e. returns
>>>> TRUE). It appears to be limited to just trees with basal trichotomies.
>>>> If the root is an even larger polytomy (more than three descendant
>>>> nodes), is.binary.tree returns FALSE.
>>>>
>>>> I was a bit surprised, as the function description says "This function
>>>> tests whether a phylogenetic tree is binary, i.e. whether every node
>>>> (including the root node) has exactly two descendant nodes." This
>>>> would make me think it also tests if the root has two descendant
>>>> nodes, but that doesn't seem to be the case, unless an unrooted tree
>>>> with three lineages is (for some reason I'm unaware of) considered to
>>>> have two descendant nodes.
>>>>
>>>> There's also some stuff in ?is.binary.tree about fully dichotomous
>>>> trees having 2Ntip-2 edges, which is only true if the root is also
>>>> dichotomous (and thus the tree is 'rooted'). It isn't true for taxa
>>>> with a basal trichotomy.
>>>>
>>>> Here's some code. I got the same results with both ape v3.0-11 and the
>>>> v3.1 that Emmanuel had sent out two weeks ago.
>>>>
>>>> library(ape)
>>>>
>>>> tree<-rtree(10)
>>>> #collapse root
>>>> tree$edge.length[which(tree$edge[,1]==11)[1]]<-0
>>>> tree1<-di2multi(tree)
>>>> is.binary.tree(tree1)
>>>> is.rooted(tree1)
>>>>
>>>> tree<-stree(3)
>>>> is.binary.tree(tree)
>>>> is.rooted(tree)
>>>>
>>>> tree<-stree(4)
>>>> is.binary.tree(tree)
>>>> is.rooted(tree)
>>>>
>>>> Is.rooted correctly returns FALSE, so does that mean best practice to
>>>> get a tree where every node has two descendant nodes would be use
>>>> is.binary.tree() & is.rooted()?
>>>>
>>>> Curious on your thoughts on this and the intent of is.binary.tree.
>>>>
>>>> -Dave
>>>>
>>>
>>
>>
>>
>



-- 
David W. Bapst, PhD
Adjunct Asst. Professor, Geology and Geol. Eng.
South Dakota School of Mines and Technology
501 E. St. Joseph
Rapid City, SD 57701

http://webpages.sdsmt.edu/~dbapst/
http://cran.r-project.org/web/packages/paleotree/index.html

_______________________________________________
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