ELIFE-ASU / Inform

A cross platform C library for information analysis of dynamical systems
https://elife-asu.github.io/Inform
MIT License
21 stars 3 forks source link

Create an end-to-end prototype #1

Closed dglmoore closed 8 years ago

dglmoore commented 8 years ago

Inform is an effort to create a single, group wide library of information and network theoretic code. At present it is split into, more or less, three parts:

  1. Distributions
  2. Information Metrics
  3. Time Series Analysis

The idea is to use time series to build up probability distributions which can then be analyzed using the various information metrics. The added layer of abstraction provided by distributions will hopefully allow for more generic and broadly applicable code wherein the format of the data is somewhat arbitrary as long as a distribution can be unambiguously constructed.

Distributions

At present the distributions code is fairly specific. The distributions are required to be finitely supported, and provide an iterator interface of the event probabilities.

See include/inform/distribution.h and src/distribution.cpp.

Information Metrics

The following information metrics have been implemented:

See include/inform/entropy.h and src/entropy.cpp.

Time Series Analysis

The only currently implemented function on time series is active information, though it takes two forms.

See include/inform/time_series.h.

C API

An example of a very limited C API is provided to make the active information metric FFI accessible. The API has been tested using Julia. It should be possible to write a Python module around this (growing) API.

See include/inform/time_series.h and src/time_series.cpp.

Building

To build the library, first clone the code and run, in the project root,

$ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug
$ make -C build all

This will build the library, tests and the example code provided.

Running Tests

To run the tests

$ make -C build test

Example Code

An example is provided that reads a network from a nodes and edges file, evaluates the time series, and computes the active information for each node. To run this code

$ build/examples/fission_yeast/inform_fission_yeast

Documentation

Documentation is nonexistent. This is a problem that should be promptly remedied.