Skip to content
Martin Černý edited this page Jun 23, 2016 · 15 revisions

This plugin is still in prototype phase, active development is underway. See API & design page for some design principles and discussions that led to the current state.

Important changes to previous design

  • Dependent variables in DSs are identified by an ID and have a (possibly non-unique) string name that is presented to the user. The mapping between entities and DSs through this ID.
  • The overall architeture is the one with a common interface (DataSeries) and specific implementations for each data type.

What works

  • All functionality is accessible through the Apps->DataSeries menu.
  • Time series (TS) are mostly implemented
  • There is a nice import dialog for importing TSs in various formats.
  • Data series can be mapped to edges/nodes through a column of type int that is a foreign key for the data series. The only user friendly way to set it up (so far) is when the mapping is created - a string column can be used to find appropriate data series entries by their row names.
  • TSs of a selected node (not edges so far) is visible in the "Data Series Visual" table panel.
  • TSs and mappings are saved and loaded with the session.

Implementing new types of DSs

  • Implement the actual DS class (possibly inherit from from AbstractDataSeries or other helpers in cz.cas.mbu.cydataseries.internal.data, see TimeSeriesImpl for a minimal example)
  • Implement and register a DataSeriesStorageProvider service for the class (possibly inherit from AbstractDataSeriesStorageProvider which is suitable for save/load of all tabular data series, see TimeSeriesStorageProviderImpl for a minimal example)
  • Optional: To take advantage of the DS import dialog for importing the new DS type, implement and register a DataSeriesImportProvider which hides most of the heavy lifting (you just need to be able to create your DS from an array of string values). See TimeSeriesImportProviderImpl for an example.

Issues to be resolved:

  • Mapping between DSs and entities is not bound to a network (e.g., it is assumed that all columns of the same name in all node tables will have the same mapping), this simplifies implementation but is a questionable choice.
  • It is not clear how different types of data series would feed into DataSeriesVisualPanel (maybe a provider scheme relaying on JFreeChart structures?)
  • The response of "data series visual" panel to selection is inefficient