Vitessce supports coordinated multiple views, meaning that visualizations can be linked together on many properties.
The implementation of coordinated multiple views in Vitessce follows a coordination model proposed by Boukhelifa and Rodgers (Information Visualization 2003). The coordination details live in the Vitessce view config.
We can think about the coordination model as a graph in which there are three types of nodes: coordination types, coordination scopes, and views.
The approach or architecture used to achieve view coordination (Roberts 2007).
The property or parameter being coordinated, such as "spatial rotation" or "heatmap zoom" or "gene expression colormap". Vitessce further requires that coordination type values conform to a JSON schema, for instance a primitive number or a more complex array or object schema.
A named instance of a coordination type. Each
(coordination type, view) tuple may map onto a different coordination scope. Views are "coordinated" if they are linked to a common coordination scope. Views may update their
(coordination type, coordination scope) tuples if changes to the coordinated view connections are initiated by the user.
The value of a given coordination scope at a given time.
The container for a particular coordination type and its associated coordination scopes & values. Each coordination type has one coordination object.
The container for all coordination objects in a visualization system. In Vitessce, the coordination space is stored in the view config in a serializable JSON format.
A function that translates values between the coordination space and a visualization implementation. Coordination values may be stored in an abstract format rather than the format required for any particular view. For this reason, coordinated views must define a translation function for each coordination type, which maps coordination values onto the native format used by the view. In the simplest case the identity function may be used.