ELIFE-ASU / Inform

A cross platform C library for information analysis of dynamical systems

Home Page:https://elife-asu.github.io/Inform

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Partial Information Decomposition

dglmoore opened this issue · comments

Implement partial information decomposition as described by Williams and Beer.

Proposed API

Implementing PID is going to take some effort on our part. I think the best approach will be to have a structure which represents a redundancy lattice of a given size:

typedef struct inform_pid_lattice inform_pid_lattice;

Each node in the lattice will have information about which nodes are below it and what the node's PI-function evaluates to. A single function call will take the various time series and construct the lattice:

inform_pid_lattice *inform_pid(int const *stimulus, int const *responses, 
    size_t l, size_t n, size_t m, int b, inform_pid_lattice *lattice, inform_error *err);

Example Usage

int stimulus[4]    = {0, 0, 1, 1};
int responses[8] = {0, 0, 1, 1, 0, 1, 0, 1};

inform_pid_lattice *pid = inform_pid(stimulus, responses, 2, 1, 4, 2, NULL, NULL);