Skip to content
Martin Černý edited this page Jan 15, 2017 · 15 revisions

The CyDataseries plugin lets you enrich your networks with data series (e.g., gene expression measurements over multiple time points or conditions). It also supports some basic manipulation with the data series. While useful on its own, the CyDataseries plugin is primarily intended as infrastructure for other plugins that perform specialized processing on time series data (e.g., regulatory network inference).

This plugin is still in beta phase, active development is underway. The public API may change for the 1.0 version, but it is guaranteed that sessions saved with the current version will load correctly in 1.0. See API & design page for some design principles and discussions that led to the current state.

#Usage

  1. Examples
    1. Enriching network with expression time series from Gene expression omnibus
    2. Enriching network with expression time series from .CSV/.TSV file
    3. Smoothing a time series
  2. Reference documentation for all functions of the plugin.

What works

  • All functionality is accessible through the File->Import, File->Export and Apps->Data Series menus.
  • Time series and named numeric series (e.g. multiple unordered measurements) are implemented
  • There is a nice import dialog for importing series in various formats, including the SOFT format used in Gene expression omnibus. See SOFT example and Tabular example.
  • 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.
  • Series for a selected nodes or edges and their neighbourhood is visible in the "Data Series Visual" table panel.
  • Series and mappings are saved and loaded with the session.
  • The complete series (unprocessed) are displayed in the "Data Series" panel

For developers

Please note, that the plugin has yet to reach 1.0 (expecting 1.0 in spring of 2017) and thus the API of the plugin may still change (although it is unlikely). If you want to use the plugin in your new app, it is advisable to contact the author (cerny.m@gmail.com) to iron out any possible issues and make sure your app will work with future versions of the plugin.

Suggestions to API or anything else should be placed as issues in the issue tracking system.

In the documentation, we use DS for data series and TS for time series.

Package structure of the plugin

  • cz.cas.mbu.cydataseries main public interfaces of the plugin
  • cz.cas.mbu.cydataseries.dataimport public interface for importing data series and custom import methods
  • cz.cas.mbu.cydataseries.internal Implementation of the plugin's services + GUI tasks
  • cz.cas.mbu.cydataseries.internal.data Implementation of the various types of DSs and abstract classes to help implementation of further types
  • cz.cas.mbu.cydataseries.internal.dataimport Implementation of the DS import + import providers
  • cz.cas.mbu.cydataseries.internal.tasks All dialogs/panels used by the plugin.
  • cz.cas.mbu.cydataseries.internal.ui All dialogs/panels used by the plugin.

Implementing new types of series

  • The method is the same for implementations within the plugin and for implementations in other plugins.
  • 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:

  • It is not clear how different types of data series would feed into DataSeriesVisualPanel (maybe a provider scheme relaying on JFreeChart structures?). Currently partially hard-coded.
  • The response of "data series visual" panel to selection is inefficient