Skip to content

Application architecture

Curtis Lisle edited this page Aug 21, 2014 · 4 revisions

Basic components

  1. Client-side javascript providing the UI for tree input, configuring visualization options, etc. Will use d3 for rendering.

  2. A server framework-based app (e.g., running as illustrator.opentreeoflife.org) that will handle authentication, persistent storage, access control, etc.

  3. A server REST API for interacting with large trees that exceed practical client-side limits. The API will be implemented in phylografter, and presumably treemachine.

Existing Arbor Components for possible adaption/reuse

Tangelo is the rapid web app development framework the Arbor team is developing as part of our development effort. This framework uses Javascript technology for interactive rendering and couples it with the processing power of embedded python algorithms for connectivity to analyses, remote web services, and scalable server-side computing.

https://github.com/Kitware/tangelo

http://tangelo.readthedocs.org/en/v0.6.1/

Romanesco is the technology we are developing to embed analysis algorithms into user-facing applications. Romanesco currently allows algorithms written in either python or R to be wrapped and invoked from client applications, including web-based ones. Romanesco formalizes a way to dynamically bind data to an an algorithm, invoke the algorithm, and expose the output results for writing to storage, input to another algorithm, etc. We are using Romanesco to wrap Geiger and other R-based phylogenetics analyses to create interactive applications that embed non-trivial data processing.

https://github.com/arborworkflows/romanesco

http://romanesco.readthedocs.org/en/latest/

girder provides web-based authentication and storage for datasets. It is an emerging technology aimed at being like a “big data dropbox”. Datasets stored in girder can be assigned URIs for access by clients through web services. girder supports data item-based access control. Objects stored in girder can have access controls assigned to them, so multiple user roles are allowed. For example, one class of user could create and delete datasets, another class of user could have read-only access to some or all datasets. We feel this technology will be helpful for public-facing web pages or production systems where multiple users will have different levels of access or sensitive datasets need to be hosted without allowing anonymous access.

https://github.com/girder/girder

http://girder.readthedocs.org/en/latest/

Combined app - The following is the code for the app which combines all three pieces. This application is the computational foundation that Arbor is being built on. It is available as a "native application" (tangelo-hub) and as a complete virtual machine (tangelo-hub-vm), depending on the application:

https://github.com/tangelo-hub

The VM version is the most straightforward to install and is packaged as a vagrant script. Only prerequisites to run it is vagrant, ansible (used to provision the VM), and a virtualization provider, such as VirtualBox.

All pieces of this software are licensed with Apache v2 or similar permissive license.