PyPhi is a Python 3 library for computing integrated information (𝚽), and the associated quantities and objects.
If you use this code, please cite both this repository (DOI 10.5281/zenodo.12194) and the IIT 3.0 paper (DOI 10.1371/journal.pcbi.1003588).
Check out the documentation for the latest release, or the documentation for the latest development version.
The documentation is also available within the Python interpreter with the
help
function.
Set up a Python 3 virtual environment and install with
pip install pyphi
To install the latest development version, which is a work in progress and may have bugs, run:
pip install "git+https://github.com/wmayner/pyphi@develop#egg=pyphi"
Note: this software has only been tested on the Mac OS X and Linux operating systems. Windows is not supported, though it might work on with minor modifications. If you do get it to work, a writeup of the steps would be much appreciated!
PyPhi stores the results of 𝚽 calculations as they're computed in order to avoid expensive re-computation. These results can be stored locally on the filesystem (the default setting), or in a full-fledged database.
Using the default caching system is easier and works out of the box, but using a database is more robust.
To use the database-backed caching system, you must install MongoDB. Please see their installation guide for instructions.
Once you have MongoDB installed, use mongod
to start the MongoDB server.
Make sure the mongod
configuration matches the PyPhi's database
configuration settings in pyphi_config.yml
(see the configuration section of PyPhi's
documentation).
You can also check out MongoDB's Getting Started guide or the full manual.
To help develop PyPhi, fork the project on GitHub and install the requirements
with pip install -r requirements.txt
.
Gruntfile.js
defines some tasks to help with development. These are run
with Grunt.js.
To get grunt
, first install Node.js. Then, within
the pyphi
directory, run npm install
to install the local npm
dependencies, then run sudo npm install -g grunt grunt-cli
to install the
grunt
command to your system. Now you should be able to run tasks with
grunt
, e.g.
grunt test
which will run the unit tests every time you change the source code. Similarly,
grunt docs
will rebuild the HTML documentation on every change.
At some point I'll try to use a Makefile instead, since many more people have
access to make
.
Make sure you install the Python 3 C headers before installing the requirements:
sudo apt-get install python3-dev python3-scipy python3-numpy
This code is based on a previous project written in Matlab by L. Albantakis, M. Oizumi, A. Hashmi, A. Nere, U. Olces, P. Rana, and B. Shababo.
Correspondence regarding the Matlab code and the IIT 3.0 paper (below) should be directed to Larissa Albantakis, PhD, at albantakis@wisc.edu.
Albantakis L, Oizumi M, Tononi G (2014) From the Phenomenology to the Mechanisms of Consciousness: Integrated Information Theory 3.0. PLoS Comput Biol 10(5): e1003588. doi: 10.1371/journal.pcbi.1003588
@article{iit3,
author = {Albantakis, , Larissa AND Oizumi, , Masafumi AND Tononi, ,
Giulio},
journal = {PLoS Comput Biol},
publisher = {Public Library of Science},
title = {From the Phenomenology to the Mechanisms of Consciousness:
Integrated Information Theory 3.0},
year = {2014},
month = {05},
volume = {10},
url = {http://dx.doi.org/10.1371%2Fjournal.pcbi.1003588},
pages = {e1003588},
number = {5},
doi = {10.1371/journal.pcbi.1003588}
}