<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hi Folks,</div><div><div><br class="webkit-block-placeholder"></div><div>Here are two responses to some of the issues in the conference call minutes. It was started off-list, so I am copying them here.</div><div><br class="webkit-block-placeholder"></div><div>Marguerite<br><div>-----<br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Hi All,</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">On Mar 22, 2008, at 11:29 AM, Steve Kembel wrote:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">Hi all,</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#550500" style="font: normal normal normal 12px/normal Helvetica; color: rgb(85, 5, 0); ">The unique label restriction should be lifted</font></div></blockquote></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 99, 19); min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#006313" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 99, 19); "> I don't think it exists, except in the documentation ?</font></div></blockquote></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">The problem with non-unique node labels happens when you try to create a phylo4d object, this will be fixed when we switch to using a vector/list of labels to identify nodes in place of the current use of the row.names of the data frame for node ID and data attachment:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">small &lt;- read.tree(text="(((A,B)C,D),E);")</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">small4 &lt;- as(small,"phylo4")</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">small4d &lt;- phylo4d(small4,node.data=rnorm(3))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">Error in `row.names&lt;-.data.frame`(`*tmp*`, value = c("", "", "C")) :</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">  duplicate 'row.names' are not allowed</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">In addition: Warning message:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" color="#0000dd" style="font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); ">non-unique value when setting 'row.names': ‘’</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; color: rgb(0, 0, 221); min-height: 14px; "><br></div></div></blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><br></div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Yes, I realize this. That is why I was insisting earlier that matching shouldn't be done on labels. Either they are labels for convenience or they are not. We can't have it both ways. If users want to match their data, then they should make sure that the data are assigned to the proper node by providing the "node index" that they match to. It would be a simple thing, so long as they can print the node index and enter them into a spreadsheet with the data. It is a lot easier, for example, than making sure that each species name is spelled correctly in each dataset. </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Sometimes this is a big pain because you get one set of species names from PAUP or whatever, but you have a different abbreviation in your phenotypic data. Then all species must be renamed in one dataset or the other.  It's a lot easier just to make sure that a number matches.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Marguerite</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><br class="webkit-block-placeholder"></div></div><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div><br class="webkit-block-placeholder"></div></div><blockquote type="cite"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">There was also a proposal to relax the restriction on node numbers being 1:length(nodes).</div></blockquote></blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I feel like we're mixing up what I am going to call node indexing and node labelling. Node indexing is purely for internal/development purposes - currently nodes are indexed as 1:NNodes, all functions and methods can safely assume that they can iterate over nodes in this way, end users never need to think about these numbers unless they want to. Node labelling encompasses any other sort of data or identifier that you want to associate with a node, i.e. for end-users who want to be able to identify nodes that are the 'same node' across multiple trees, which could be implemented as actual node labels accessed via labels() or could be included as node data in a phylo4d object, since both labels and data persist across subset operations.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><blockquote type="cite"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Pros:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Easier diffing of trees. For example, if I have a large tree of birds, but only have beak trait data for a subset and tarsus length for a different subset, comparing the two subsets is easier if the nodes are NOT renumbered.</div></blockquote></blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">If I understand the example, it sounds like what you want is a set of unique node labels on the large tree of birds that would allow an end-user to match nodes between subsequent subsets of the large tree:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">intersect(labels(subTree1),labels(subTree2))</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I think this is a problem that is best solved by adding node labels to the large tree, not by changing the way nodes are indexed by all functions and methods in phylobase. It sounds like we do need a method to create unique node labels, either as labels() or phylo4d data, when users need them? I may just be missing the point of changing the way nodes are indexed, I think about this stuff as someone who writes functions that iterate over the nodes on a tree, which would be more complicated if nodes had arbitrary index numbers.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Cheers,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Steve</div></blockquote></div><br><div><span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: 13px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">____________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">Marguerite A. Butler</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">Department of Zoology</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">University of Hawaii</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; "><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 13px; ">2538 McCarthy Mall, Edmondson 259</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; font-family: Helvetica; font-size: 12px; ">Honolulu, HI  96822<br style="font-family: Helvetica; font-size: 12px; "></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; font-family: Helvetica; font-size: 12px; "><br class="khtml-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">Phone: 808-956-4713</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">FAX:   808-956-9812</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; ">Dept: 808-956-8617</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; font-family: 'Lucida Grande'; "><a href="http://www2.hawaii.edu/~mbutler">http://www2.hawaii.edu/~mbutler</a></div><a href="http://www.hawaii.edu/zoology/">http://www.hawaii.edu/zoology/</a></span></div><div><font class="Apple-style-span" face="'Lucida Grande'" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br class="webkit-block-placeholder"></span></font></div></div></div></body></html>