Partial Information Decomposition
dglmoore opened this issue · 0 comments
dglmoore commented
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);