Open msrosenberg opened 10 years ago
Drawing unrooted networks is quite a different challenge, and probably out of scope for PST. If the tree-viz app is capable of this, I think we should pass along whatever other styling hints we can (edge thickness, node size/shape, etc) and hope for the best. But without the "hierarchy" of a rooted tree, some nexss selectors won't be applied in these cases.
@jimallman , my understanding is that a tree, as a data structure, has the property of being able to be rooted at any node/branch and have that be a correctly rooted tree, but technically, as @msrosenberg pointed out yesterday, most phylogenetic inference concepts don't actually designate a single root. We use, as a convention, midpoint rooting along the longest (outgroup) branch. Is that right? In that context, I think that any NeXML/NeXSON implementation should be clearly applying metadata to the whole edge w/o an implied directionality and should make sure that node properties actually apply to the node itself and not its implied, rooted, edge.
I think rooting should be expressed only as a metadata property within the nexml/nexson document, and as such, can be addressed stylistically via nexss, but it shouldn't be more special than any other property. I think the issue of rooting and how that affects edges and nodes should stay within the realm of the nexml/nexson annotation.
Since the nexss interpreter (for ETE, at least) expects to be working within a clear hierarchy of nodes, I'm afraid we're dependent on the tree-viz app to correctly identify the intended root.
Here's what the ETE docs have to say about tree rooting. In this case at least, we can find the annotation that defines our preferred root and (re)root the tree as needed with its TreeNode.set_outgroup()
method, or un-root the tree using TreeNode.unroot()
.
Something we never discussed (or I don't recall anyway), the first time through was the issue of rooting. I see at least three issues here: