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:
Distributions
Information Metrics
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:
Shannon Entropy
Renyi Entropy
Tsallis Entropy
Conditional Entropy
Mutual Information
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
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:
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
andsrc/distribution.cpp
.Information Metrics
The following information metrics have been implemented:
See
include/inform/entropy.h
andsrc/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
andsrc/time_series.cpp
.Building
To build the library, first clone the code and run, in the project root,
This will build the library, tests and the example code provided.
Running Tests
To run the tests
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
Documentation
Documentation is nonexistent. This is a problem that should be promptly remedied.