Read a result#
pyphi.analyze() returns an Analysis. This page
walks through what it prints and what each row means, then through the
system irreducibility analysis underneath it and how to interpret an unexpected value.
import pyphi
pyphi.config.progress_bars = False
substrate = pyphi.examples.iit4_2023_fig1a_substrate()
analysis = pyphi.analyze(substrate, (0, 1, 1), subset=(0, 1))
analysis
| Φ | 1.56269 |
|---|---|
| φs | 0.0404968 |
| Distinctions | 3 |
| Σφd | 0.727763 |
| Relations | 7 |
| Σφr | 0.834924 |
| Mechanism | φd | Cause purview | Effect purview |
|---|---|---|---|
| a | 0.332728 | B | B |
| B | 0.323594 | a | aB |
| aB | 0.0714404 | B | aB |
| Units | A,B |
|---|---|
| Current state | (0, 1) |
| Specified cause state | (1, 0) |
| Specified effect state | (1, 0) |
| MIP | 2 parts: {A,B} |
| ii(s) | 0.0404968 |
| Requirement binds | differentiation (EFFECT) |
The analysis card#
Φ: the structure integrated information, the sum of φ over every distinction and every relation. It measures how much structure the system specifies. It is
analysis.big_phi.\(\varphi_s\): the system integrated information: whether the system exists as one whole, and how irreducibly. It is
analysis.phi. Zero means reducible, not “no structure”: a system can have \(\varphi_s = 0\) and a nonzero Φ.Distinctions, \(\Sigma\varphi_d\): how many mechanisms specify an irreducible cause–effect state, and their total φ.
Relations, \(\Sigma\varphi_r\): how many congruent overlaps bind those distinctions, and their total φ. Under the default analytical backend these are computed in closed form; the individual relations are not enumerated, so they cannot be listed one by one. Query relational structure shows what can be asked of them and how to enumerate when you must.
Formalism: appears only on a result computed under an earlier version of IIT, and gives that version (see Reproduce results from earlier versions of IIT). It is
analysis.formalism.The distinction table: one row per distinction: its mechanism, \(\varphi_d\), and its cause and effect purviews, each written in the state the distinction specifies. An uppercase letter is a unit ON, lowercase is OFF, and a unit with more than two states carries its state as a subscript (
A₂). A cause purviewameans the mechanism specifies unit A being OFF in the past.System: the units and current state analyzed, the cause and effect states the system specifies, the minimum partition (the cut that makes the least difference: the system’s weakest link), the system’s intrinsic information ii(s), and, when the intrinsic-information requirement set \(\varphi_s\), which term and direction did so. The next section explains these.
The system irreducibility analysis#
sia = analysis.sia
sia
| φs | 0.0404968 |
|---|---|
| Normalized φs | 0.0404968 |
| System | A,B |
| Current state | (0, 1) |
| Specified state | (1, 0) |
|---|---|
| Intrinsic specification | 0.843228 |
| Intrinsic differentiation | 0.663964 |
| Specified state | (1, 0) |
|---|---|
| Intrinsic specification | 1.09763 |
| Intrinsic differentiation | 0.0404968 |
| Partition | 2 parts: {A,B} |
|---|---|
| Tied MIPs | 0 |
| A | B | |
|---|---|---|
| A | · | ✕ |
| B | · | · |
Normalized \(\varphi_s\): \(\varphi_s\) divided by the partition’s normalization; the minimum partition is chosen on this value.
Specified state (cause and effect): the past and future states the system specifies with maximal intrinsic information.
Intrinsic specification: how selectively and informatively the specified state is picked out.
Intrinsic differentiation: the surprisal of the specified state: how much of a repertoire of alternatives the system provides itself. Zero for a deterministic transition.
MIP: the partition and, in the grid, the connections it severs; “Tied MIPs” counts partitions tied with it.
\(\varphi_s\) is the smallest of three terms: the cause-side integration
\(\varphi_c\), the effect-side integration \(\varphi_e\), and the intrinsic
information ii(s), itself the smaller of specification and
differentiation over both directions (see
The intrinsic-information requirement). sia.explain() says which term
won:
for finding in sia.explain().findings:
print(finding.kind, "=", finding.value)
winning_partition = 2 parts: {A,B}
runner_up = 2 parts: {A,B}
gap = -0.02024840405900287
partition_margin = 0.21340128355945173
state_margin = 0.7608118065390782
state_margin = 1.097995033428008
effectively_tied = False
binding_direction = EFFECT
requirement_binding = differentiation
Here the effect-side differentiation is the smallest term, so it is \(\varphi_s\).
When φₛ is zero#
There are two different reasons, and the findings above tell them apart.
Ordinary reducibility. One side’s integration is already zero: some
partition of the system makes no difference to its cause or effect
repertoire. Then binding_direction gives that side and there is no
requirement_binding finding.
The intrinsic-information requirement. Both \(\varphi_c\) and \(\varphi_e\) are positive,
but the system provides itself no repertoire of alternatives (a
deterministic transition has zero differentiation), so ii(s) is zero and
with it \(\varphi_s\). Then a requirement_binding finding gives the term
(differentiation or specification) and the direction.
basic = pyphi.analyze(pyphi.examples.basic_substrate(), (1, 1, 0), compute="sia")
print(float(basic.cause.phi), float(basic.effect.phi), basic.intrinsic_information)
[f.value for f in basic.explain().findings if f.kind == "requirement_binding"]
0.20751874963942188 0.41503749927884376 0.0
['differentiation']
Where to go next#
What IIT computes for what these quantities are in the theory.
Control tie-breaking for the selection margins and what an “effectively tied” result means.
Sweep states and subsystems to compute the same quantities over every state at once.