gosling.js icon indicating copy to clipboard operation
gosling.js copied to clipboard

API to support utility visualizations in Gosling

Open sehilyi opened this issue 1 year ago • 4 comments

Utility visualizations (or metadata visualizations) include tables, trees, and other summary visualizations that are often visualized together with genome-mapped data visualizations (often with coordinated interactions). We want to determine the best way to support this.

Option 1 - Extending Gosling Grammar

The user only has to write a single spec, so good for reusability. Nesting utility views and genomic views can be made possible. The challenges are to unify the grammar.

{ 
   type: 'genomics', tracks: [...]
},
{
   type: 'vega-lite', ...
},
{
   type: 'table', ...
}

Option 2 - Optional Spec for Utility Visualization in Gosling Component

This is similar to how we support Gosling theme specs in Gosling Component:

<GoslingComponent spec={...} utility={...}/>

The user does not have to switch to another component. We can have an entry for adding/editing a spec for utility visualization on the editor.

Option 3 - Create React Component around Gosling for Utility Visualization

<GoslingUtilityComponent spec={...} utility={...}/>

I initially was leaning towards the third option (before thinking about Option 2), but I like the second option more, given that it supports rendering utility visualization using the same component. I am also open to Option 1 or other alternatives.

cc @ThHarbig (feel free to edit/add this directly!)

sehilyi avatar May 09 '23 20:05 sehilyi