Basic UsageΒΆ

Let’s make a simple 3-node network and compute its \(\Phi\).

To make a network, we need a TPM, current state, past state, and optionally a connectivity matrix. The TPM can be in more than one form; see the documentation for pyphi.network. Here we’ll use the 2-dimensional state-by-node form.

>>> import pyphi
>>> import numpy as np
>>> tpm = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 1], [1, 0, 0], [1, 1, 0],
...                 [1, 1, 1], [1, 1, 1], [1, 1, 0]])

The current and past states should be \(n\)-tuples, where \(n\) is the number of nodes in the network, where the \(i^{\textrm{th}}\) element is the state of the \(i^{\textrm{th}}\) node in the network.

>>> current_state = (1, 0, 0)
>>> past_state = (1, 1, 0)

The connectivity matrix is a square matrix such that the \(i,j^{\textrm{th}}\) entry is 1 if there is a connection from node \(i\) to node \(j\), and 0 otherwise.

>>> cm = np.array([[0, 0, 1], [1, 0, 1], [1, 1, 0]])

Now we construct the network itself with the arguments we just created:

>>> network = pyphi.Network(tpm, current_state, past_state,
...                         connectivity_matrix=cm)

The next step is to define a subsystem for which we want to evaluate \(\Phi\). To make a subsystem, we need the indices of subset of nodes which should be included in it and the network that the subsystem belongs to.

In this case, we want the \(\Phi\) of the entire network, so we simply include every node in the network in our subsystem:

>>> subsystem = pyphi.Subsystem(range(network.size), network)

Now we use pyphi.compute.big_phi() function to compute the \(\Phi\) of our subsystem:

>>> phi = pyphi.compute.big_phi(subsystem)
>>> phi
2.312496

If we want to take a deeper look at the integrated-information-theoretic properties of our network, we can access all the intermediate quantities and structures that are calculated in the course of arriving at a final \(\Phi\) value by using pyphi.compute.big_mip(). This returns a deeply nested object, BigMip, that contains data about the subsystem’s constellation of concepts, cause and effect repertoires, etc.

>>> mip = pyphi.compute.big_mip(subsystem)

For instance, we can see that this network has 4 concepts:

>>> len(mip.unpartitioned_constellation)
4

The documentation for pyphi.models contains description of these structures.

Note

The network and subsystem discussed here are returned by the pyphi.examples.basic_network() and pyphi.examples.basic_subsystem() functions.