Skip to content

Remote Data Interface

pzwang edited this page Jan 20, 2014 · 6 revisions

RemoteDataSource

On JS side, have new data source, RemoteDataSource. It is responsible for providing local ColumnDataSource instances to all the renderers that it is shared with, and also for updating those local sources based on bounds requested by the renderers or tools.

  • ColumnDataSource (per renderer)
  • local bounds : bounds of local values
  • full bounds : full bounds on the server side
  • LOD flag : Indicates that this data is downsampled, so that when tools interact with it, they push region selection and hit testing to the server side (i.e. local values are approximate)
  • update( colA: {start?, end?, resolution?}, colB: {start?, end?, resolution?}, aspect?, onload=callback_function )

Resolution can be specified as:

  • N points
  • data units / pixel

If two columns are specified, then aspect ration representing B/A can be considered for joint dimension downsampling

To think about

  • how to specify data we already have to not repeat sending it
  • how to or whether to have columns of different size

Selections

Selections can be thought of as geometric filters on data sources. Filters are stored on the server and any renderer can use the selection geometry to query its own local spatial index for highlighting, etc. If something (a tool on the python side, probably) needs the underlying raw data (to compute a distribution or regression, etc) it can explicitly ask for it from the server, based on the selection.