OpenTreeOfLife / tree-illustrator

Generate repeatable, data-driven, publication quality figures of trees.
BSD 2-Clause "Simplified" License
7 stars 3 forks source link

Consider OpeNDAP for big-streaming-tree use cases? #20

Open jimallman opened 7 years ago

jimallman commented 7 years ago

OpeNDAP supports retrieval of very large remote datasets in a piecemeal fashion. This seems like a possible solution for loading partial views of a very large phylogeny.

It also supports straightforward queries via URL, so an in-browser client might not be difficult to work out. I don’t know how compatible this is with our existing tools, but it's food for thought.

rhr commented 7 years ago

Interesting - but to me the main question is how to design a streaming api for trees that best supports an interactive viewer - i.e. hierarchical levels of detail? It's probably most similar to GIS in that respect.

jimallman commented 7 years ago

Understood. One approach would be to emulate argus (the OpenTree project's synthetic-tree viewer), which always loads a specified target node and its n-level descendants (with optional maximum number of nodes). The client drives the changing view, and could simply retain the existing nodes in view and augment them with the new information. At some point, we'd want rules for dropping nodes from the client-side view, just to manage resources (RAM) and performance.

This is complicated somewhat for bifurcating/phylogenetic trees, since they will eventually confound our "traditional" notions of a tree view by offering mainly unlabeled pairs of children, with hundreds of "steps" between taxa of interest. This leads to lots of tedious "stepwise" navigation, which some viewers address by favoring more of a "teleport" style of navigation that zooms to a distant node of interest. So we might consider a query that returns the subtree that gets us "from here to there", or at least a reasonable subset.

In other words, we might want to work backward from the desired user experience.