pyphi.formalism.iit4.SystemIrreducibilityAnalysis#

class pyphi.formalism.iit4.SystemIrreducibilityAnalysis(phi, partition, normalized_phi=0, cause=None, effect=None, system_state=None, current_state=None, node_indices=None, node_labels=None, intrinsic_differentiation=None, reasons=None, runner_up=None, partition_margin=None, signed_phi=None, signed_normalized_phi=None, config=None, provenance=None)[source]#

Bases: HasProvenance, Displayable, OrderableByPhi, ToPandasMixin, Serializable

System-level integrated information.

phi is the non-negative integrated-information value defined by Eqs. 19-20 (the |·|+ operator applied to the raw integration). signed_phi is the raw value before clamping; when negative, it indicates preventative causation that the clamp hides. Construction accepts the signed value as phi and __post_init__ writes the clamped value to phi while preserving the raw value on signed_phi. normalized_phi and signed_normalized_phi follow the same pattern.

partition_margin is the gap in (clamped) normalized φ between the MIP and the best competing partition, computed at selection (before the intrinsic-information requirement is applied); it is zero when a competitor ties and None when there was no competitor or the partition sweep stopped early on a reducible partition (in which case no exact margin exists). Set shortcircuit_sia=False to evaluate every partition and obtain an exact margin even when φ_s = 0.

Parameters:
order_by()[source]#

Return a list of values to compare for ordering.

The first value in the list has the greatest priority; if the first objects are equal the second object is compared, etc.

property state_margins: dict[Direction, float | None]#

Per-direction intrinsic-information gap between the specified system state and the best competing state (StateSpecification.state_margin).

property tied_selections: tuple[str, ...]#

The selections whose margin is within config.numerics.precision of zero — a subset of ("partition", "cause_state", "effect_state").

Empty when every selection has a clear winner. See also the per-direction StateSpecification.state_margin on system_state and partition_margin.

property effectively_tied: bool#

Whether any selection margin is within config.numerics.precision of zero — i.e. tied_selections is non-empty.

property intrinsic_information: float | None#

The system intrinsic information ii(s) (Mayner et al. 2026, Eq. 13).

The minimum over directions of min(i_spec, i_diff), where i_spec is the intrinsic information of the specified state and i_diff its intrinsic differentiation, each rectified by |·|⁺. Partition-independent given the specified states. φₛ = min{φ_c, φ_e, ii(s)}, so φₛ ≤ ii(s); a result computed under IIT 4.0 as published in 2023, which lacks this requirement, can exceed it. None when no system state is available or the intrinsic differentiation was not computed (e.g. on null SIAs).

property intrinsic_specification: dict[Direction, float | None]#

Per-direction intrinsic specification of the specified system state (Mayner et al. 2026, Eqs. 7 and 9).

Parallel in shape to intrinsic_differentiation; together the two give ii(s) = min over directions of min(i_spec, i_diff) (2026, Eq. 13), exposed as intrinsic_information. An entry is None when that direction’s state was not specified (null analyses).

property integrated_fraction: float | None#

The integrated fraction φₛ / ii(s) of the system intrinsic information.

Lies in [0, 1], since φₛ = min{φ_c, φ_e, ii(s)}; for a result computed under IIT 4.0 as published in 2023, which lacks this requirement, it may exceed 1. None when ii(s) is unavailable or zero (no finite ratio is defined).

resolve_system_state()[source]#

Update system_state to reflect the specified states resolved by the MIP.

When the system has tied specified states, the MIP resolves the tie by selecting the state most vulnerable to the winning partition. This back-propagates that resolution into system_state so that downstream consumers (e.g., congruence filtering in ces) see the correct specified states.

Return type:

None

explain()[source]#

A typed account of why this φ_s value came out as it did.

Return type:

Explanation

diff(other)[source]#

Structured delta from this SIA to other (a.diff(b)).

Return type:

ResultDiff