<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Mar 22, 2008, at 12:26 PM, Peter Cowan wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><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; ">The problem with non-unique node labels happens when you try to <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">create a phylo4d object, this will be fixed when we switch to using <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">a vector/list of labels to identify nodes in place of the current <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">use of the row.names of the data frame for node ID and data <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">attachment:</div> </blockquote></blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Yes, I realize this. That is why I was insisting earlier that <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">matching shouldn't be done on labels. Either they are labels for <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">convenience or they are not. We can't have it both ways. If users <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">want to match their data, then they should make sure that the data <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">are assigned to the proper node by providing the "node index" that <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">they match to. It would be a simple thing, so long as they can print <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the node index and enter them into a spreadsheet with the data. It <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">is a lot easier, for example, than making sure that each species <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">name is spelled correctly in each dataset.</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; ">Sometimes this is a big pain because you get one set of species <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">names from PAUP or whatever, but you have a different abbreviation <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">in your phenotypic data. Then all species must be renamed in one <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">dataset or the other.<span class="Apple-converted-space"> </span>It's a lot easier just to make sure that a <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">number matches.</div> </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; ">Marguerite I don't fully understand this example.</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; ">For my own edification let me see if I understand what folks are <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">thinking.<span class="Apple-converted-space"> </span>There are two aspects of a phylo object under discussion <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the node index and the node labels.<span class="Apple-converted-space"> </span>As far as node labels are <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">concerned there is agreement that these need to be arbitrary with no <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">restrictions on being unique, or even existing.</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; ">However, there is a discussion about node indices, and whether they <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">should be enforced to be<span class="Apple-converted-space"> </span>an ordered vector from 1:Nnodes.</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; ">One argument for keeping them 1:Nnodes is that it is easier to iterate <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">over the nodes this way.<span class="Apple-converted-space"> </span>I can see that, but looping for each in R is <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">easy, is there an example where this would be difficult?</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; ">One argument for just using a number is that it become easier to <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">compare trees, but this require expose the node indices to end users.<span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I'm not sure this has much value for the end users who generally don't <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">care much for the internal representation of the tree.<span class="Apple-converted-space"> </span>Is there a <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">value to developers to have non consecutive node indices?</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; ">Steve's proposed solution to the tree comparison/tracking issue is to <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">use node labels (not indices), this would require a richer node label <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">model than the one currently implemented.<span class="Apple-converted-space"> </span>I think Steve has a node <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">label data frame in mind.<span class="Apple-converted-space"> </span>That would allow unique node label <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">information to sit next to potentially non-unique node label <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">information.<span class="Apple-converted-space"> </span>This seems overly complex to me.<span class="Apple-converted-space"> </span>A phylo4D object <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">already has a node data data frame, which has unique row names, <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">perhaps this should be used instead?</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div></blockquote><div>I guess what I see our needs are from a design perspective is: </div><div><br class="webkit-block-placeholder"></div><div>1) node indices:</div><div>Which are required to be unique so that we can refer to specific nodes. It is thus logical do do any matching by this node index. It happens to be convenient to use numerals, because they are the most compact (and easy for human minds to quicky differentiate) unique representation. This is not a big deal, but in OUCH the node index (it's called node label to be totally confusing with our usage here) is of type character, mainly to take advantage of R's great string matching facilities. </div><div><br class="webkit-block-placeholder"></div><div>2) taxon names:</div><div>These are convenience labels for the user and not required to be unique. It is generally used by users to be able to specify labels to print on the tree plot. For example, they may want some node labels to appear but not others. Thus, some nodes will have missing values. </div><div><br class="webkit-block-placeholder"></div><div>As I understand it, the proposal is to have yet another node index that is used to match phylo4d objects to the tree. This seems to be a bit redundant. We already have a unique index, why would we want to reinvent the wheel? Furthermore, this is more difficult for the user. They have to associate it with both the tree and the data object in order for the matching to work, instead of just copying it from tree to data. We'll have to do checking to make sure these are unique or the merge will produce wonky results or fail. And they may make less than ideal choices as to the index (probably some words or long names or something that might get misspelled in one but not the other, etc., if they are not used to thinking about effiiciency). But really, I don't see the need for more than one unique index. They serve the same function. </div><div><br class="webkit-block-placeholder"></div><div>All in all, it seems much simpler to generate the node index for the phylo4 object as an integer index as we already do, and ask the users to copy this index into their data object. The node numbers are printed in the print() function. </div><div><br class="webkit-block-placeholder"></div><div>Whether or not the index needs to be consecutively numbered is a separate issue. I don't think it's necessary, because I'd like the node index to remain stable after pruning or minor manipulations of the tree. As Peter says, you can iterate over elements of a vector very easily. </div><div><br class="webkit-block-placeholder"></div><div>It works like this:</div><div><br class="webkit-block-placeholder"></div><div>for (i in node.index) { ... }</div><div><br class="webkit-block-placeholder"></div><div>Each iteration of i is an element of node.index</div><div>If you want it's order in the vector you can simply do node.order = which(i)</div><div><br class="webkit-block-placeholder"></div><div>Steve mentions extra labels. To me these are just extra data fields.</div><div><br class="webkit-block-placeholder"></div><div>Marguerite</div><br><blockquote type="cite"><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; 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; ">There was also a proposal to relax the restriction on node <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">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 <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">and node labelling. Node indexing is purely for internal/<span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">development purposes - currently nodes are indexed as 1:NNodes, all <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">functions and methods can safely assume that they can iterate over <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">nodes in this way, end users never need to think about these <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">numbers unless they want to. Node labelling encompasses any other <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">sort of data or identifier that you want to associate with a node, <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">i.e. for end-users who want to be able to identify nodes that are <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the 'same node' across multiple trees, which could be implemented <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">as actual node labels accessed via labels() or could be included as <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">node data in a phylo4d object, since both labels and data persist <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">across subset operations.</div> </blockquote></blockquote><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"><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 <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">birds, but only have beak trait data for a subset and tarsus <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">length for a different subset, comparing the two subsets is <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">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 <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">of unique node labels on the large tree of birds that would allow <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">an end-user to match nodes between subsequent subsets of the large <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">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 <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">to the large tree, not by changing the way nodes are indexed by all <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">functions and methods in phylobase. It sounds like we do need a <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">method to create unique node labels, either as labels() or phylo4d <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">data, when users need them? I may just be missing the point of <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">changing the way nodes are indexed, I think about this stuff as <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">someone who writes functions that iterate over the nodes on a tree, <span class="Apple-converted-space"> </span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">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 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; ">____________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Marguerite A. Butler</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Department of Zoology</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">University of Hawaii</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">2538 McCarthy Mall, Edmondson 259</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Honolulu, HI<span class="Apple-converted-space"> </span>96822</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; ">Phone: 808-956-4713</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">FAX: <span class="Apple-converted-space"> </span>808-956-9812</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Dept: 808-956-8617</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="http://www2.hawaii.edu/~mbutler">http://www2.hawaii.edu/~mbutler</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="http://www.hawaii.edu/zoology/">http://www.hawaii.edu/zoology/</a></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; ">_______________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Phylobase-devl mailing list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:Phylobase-devl@lists.r-forge.r-project.org">Phylobase-devl@lists.r-forge.r-project.org</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl</a></div> </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; ">_______________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Phylobase-devl mailing list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:Phylobase-devl@lists.r-forge.r-project.org">Phylobase-devl@lists.r-forge.r-project.org</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl">https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl</a></div> </blockquote></div><br><div> <span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Lucida Grande; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Lucida Grande; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">____________________________________________</span></span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">Marguerite A. Butler</span></span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">Department of Zoology</span></span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">University of Hawaii</span></span></span></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;; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; font-size: 13px; ">2538 McCarthy Mall, Edmondson 259</span></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; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; "><span class="Apple-style-span" style="font-family: Helvetica; font-size: 12px; ">Honolulu, HI 96822</span></span><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-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; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">Phone: 808-956-4713</span></span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">FAX: 808-956-9812</span></span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; ">Dept: 808-956-8617</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ; font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-size: 12px; ; font-family: Lucida Grande; "><span class="Apple-style-span" style="font-family: Lucida Grande; "><a href="http://www2.hawaii.edu/~mbutler">http://www2.hawaii.edu/~mbutler</a></span></span></span></div><span class="Apple-style-span" style="font-family: Lucida Grande; font-size: 13px; "><a href="http://www.hawaii.edu/zoology/">http://www.hawaii.edu/zoology/</a></span><br class="Apple-interchange-newline"></span></span></span> </div><br></body></html>