/Inform

A cross platform C library for information analysis of dynamical systems

Primary LanguageCMIT LicenseMIT

Inform: A cross-platform C library for information analysis of dynamical systems

Inform is a C libary designed to provide "easy" information analysis of complex systems. The primary use case for Inform is to wrap it in a higher-level language such as Python or R. That said, Inform is definitely useful.

If you are interested in wrapping or using Inform itself, you’ll definitely be interested in the documentation - https://elife-asu.github.io/Inform.

Build Status (Travis CI) Build Status (Appveyor)

Installation from Source

To build Inform, you will need to have CMake. Most of you can use your package manager, e.g. apt-get, pacman or yum on Linux or homebrew, macports or fink on OS X.

Linux, OS X, and Windows (Bash, MinGW and Cygwin)

Once CMake is installed, building, testing and installing the library is a snap

λ cmake . -DCMAKE_BUILD_TYPE=Release -DEXAMPLES=Yes
λ make all tests
λ sudo make install

Windows with MSVC

Building with MSVC is a bit more involved. Open the Visual C++ MSBuild command prompt (should be in your start menu). You can then run cmake build and test from the prompt:

λ cmake -DCMAKE_BUILD_TYPE=Release -DEXAMPLES=Yes -G"Visual Studio 14 2015"
λ msbuild /p:Configuration=Release ALL_BUILD.vcxproj
λ test\Release\inform_unittest.exe

Installation requires the user to manually copy the headers and libraries to wherever the user would like. This project-by-project approach is standard for Windows development, as you probably know.

Binary Installation

Precompiled binaries can be found at https://github.com/elife-asu/inform/releases.

Getting Help

Inform is developed to help anyone interested in applying information-theoretic techniques get things done quickly and painlessly. We cannot do that without your feedback. We host the project’s source code and issue tracker on Github. Please create an issue if you find a bug, an error in this documentation, or have a feature you’d like to request. Your contribution will make Inform a better tool for everyone.

If you are interested in contributing to Inform, please contact the developers, and we’ll get you up and running!

Inform Community

While Inform is a great tool to use directly in C or C+\+, significant effort has gone into making it easy to wrap higher level languages. Here are a few of the wrappers that are under active developed:

Table 1. Inform Wrappers
Package Name Language Repository Website

PyInform

Python

elife-asu/pyinform

https://elife-asu.github.io/PyInform

rinform

R

elife-asu/rinform

https://elife-asu.github.io/rinform

Inform.jl

Julia

elife-asu/inform.jl

forthcoming

InformWolfram

Mathematica/Wolfram Language

elife-asu/informwolfram

forthcoming

Intellectual Relatives

Inform was not created in an intellectual vacuum. Many similar projects have preceded it and are under active development. All of those projects have advantages and disadvantages compared to Inform. If Inform doesn’t meet your needs, I hope you will let us know, and try one of these:

  • JIDT: Java Information Dynamics Toolkit (Java)

  • TRENTOOL: TRansfer ENtropy TOOLbox (Matlab)

  • dit: discrete information theory (Python)

  • MuTE: MuTE Toolbox- The Dynamic DIrected Links Detector (Matlab)

  • MVGC: Multivariate Granger Causality Toolbox (Matlab)

  • ACSS: Algorithmic Complexity for Short Strings ®

  • OACC: Online Algorithmic Complexity Calculator (web-based, R)

Copyright © 2016-2018 ELIFE, Arizona State University. Free use of this software is granted under the terms of the MIT License.

See the LICENSE file for details.

Relevant Publications

  • Moore, D.G., Valentini, G., Walker, S.I. and Levin, M. (2018) "Inform: Efficient Information-Theoretic Analysis of Collective Behaviors" Frontiers in Robotics & AI. (under review).

  • Moore, D.G., Valentini, G., Walker, S.I. and Levin, M. (2018) "Inform: A Toolkit for Information-Theoretic Analysis of Complex Systems". In: Proceedings of the 2017 IEEE Symposium on Computational Intelligence, Symposium on Artificial Life, IEEE Press. (in press).

Support

This project was supported in part by a grant provided by the Templeton World Charity Foundation as part of the Power of Information Inititive.