subsystem

Represents a candidate system for \(\varphi\) and \(\Phi\) evaluation.

class pyphi.subsystem.Subsystem(network, state, nodes=None, cut=None, mice_cache=None, repertoire_cache=None, single_node_repertoire_cache=None, _external_indices=None)

A set of nodes in a network.

Parameters:
  • network (Network) – The network the subsystem belongs to.
  • state (tuple[int]) – The state of the network.
Keyword Arguments:
 
  • nodes (tuple[int] or tuple[str]) – The nodes of the network which are in this subsystem. Nodes can be specified either as indices or as labels if the Network was passed node_labels. If this is None then the full network will be used.
  • cut (Cut) – The unidirectional Cut to apply to this subsystem.
network

Network – The network the subsystem belongs to.

tpm

np.ndarray – The TPM conditioned on the state of the external nodes.

cm

np.ndarray – The connectivity matrix after applying the cut.

state

tuple[int] – The state of the network.

node_indices

tuple[int] – The indices of the nodes in the subsystem.

cut

Cut – The cut that has been applied to this subsystem.

null_cut

Cut – The cut object representing no cut.

nodes

tuple[Node] – The nodes in this Subsystem.

proper_state

tuple[int] – The state of the subsystem.

proper_state[i] gives the state of the \(i^{\textrm{th}}\) node in the subsystem. Note that this is not the state of nodes[i].

connectivity_matrix

np.ndarray – Alias for cm.

size

int – The number of nodes in the subsystem.

is_cut

boolTrue if this Subsystem has a cut applied to it.

cut_indices

tuple[int] – The nodes of this subsystem to cut for \(\Phi\) computations.

This was added to support MacroSubsystem, which cuts indices other than node_indices.

Yields:tuple[int]
cut_mechanisms

list[tuple[int]] – The mechanisms that are cut in this system.

cut_node_labels

NodeLabels – Labels for the nodes of this system that will be cut.

tpm_size

int – The number of nodes in the TPM.

cache_info()

Report repertoire cache statistics.

clear_caches()

Clear the mice and repertoire caches.

__bool__()

Return False if the Subsystem has no nodes, True otherwise.

__eq__(other)

Return whether this Subsystem is equal to the other object.

Two Subsystems are equal if their sets of nodes, networks, and cuts are equal.

__lt__(other)

Return whether this subsystem has fewer nodes than the other.

__gt__(other)

Return whether this subsystem has more nodes than the other.

__len__()

Return the number of nodes in this Subsystem.

to_json()

Return a JSON-serializable representation.

apply_cut(cut)

Return a cut version of this Subsystem.

Parameters:cut (Cut) – The cut to apply to this Subsystem.
Returns:The cut subsystem.
Return type:Subsystem
indices2nodes(indices)

Return Node for these indices.

Parameters:indices (tuple[int]) – The indices in question.
Returns:The Node objects corresponding to these indices.
Return type:tuple[Node]
Raises:ValueError – If requested indices are not in the subsystem.
cause_repertoire(mechanism, purview)

Return the cause repertoire of a mechanism over a purview.

Parameters:
  • mechanism (tuple[int]) – The mechanism for which to calculate the cause repertoire.
  • purview (tuple[int]) – The purview over which to calculate the cause repertoire.
Returns:

The cause repertoire of the mechanism over the purview.

Return type:

np.ndarray

Note

The returned repertoire is a distribution over purview node states, not the states of the whole network.

effect_repertoire(mechanism, purview)

Return the effect repertoire of a mechanism over a purview.

Parameters:
  • mechanism (tuple[int]) – The mechanism for which to calculate the effect repertoire.
  • purview (tuple[int]) – The purview over which to calculate the effect repertoire.
Returns:

The effect repertoire of the mechanism over the purview.

Return type:

np.ndarray

Note

The returned repertoire is a distribution over purview node states, not the states of the whole network.

repertoire(direction, mechanism, purview)

Return the cause or effect repertoire based on a direction.

Parameters:
  • direction (Direction) – CAUSE or EFFECT.
  • mechanism (tuple[int]) – The mechanism for which to calculate the repertoire.
  • purview (tuple[int]) – The purview over which to calculate the repertoire.
Returns:

The cause or effect repertoire of the mechanism over the purview.

Return type:

np.ndarray

Raises:

ValueError – If direction is invalid.

unconstrained_repertoire(direction, purview)

Return the unconstrained cause/effect repertoire over a purview.

unconstrained_cause_repertoire(purview)

Return the unconstrained cause repertoire for a purview.

This is just the cause repertoire in the absence of any mechanism.

unconstrained_effect_repertoire(purview)

Return the unconstrained effect repertoire for a purview.

This is just the effect repertoire in the absence of any mechanism.

partitioned_repertoire(direction, partition)

Compute the repertoire of a partitioned mechanism and purview.

expand_repertoire(direction, repertoire, new_purview=None)

Distribute an effect repertoire over a larger purview.

Parameters:
Keyword Arguments:
 

new_purview (tuple[int]) – The new purview to expand the repertoire over. If None (the default), the new purview is the entire network.

Returns:

A distribution over the new purview, where probability is spread out over the new nodes.

Return type:

np.ndarray

Raises:

ValueError – If the expanded purview doesn’t contain the original purview.

expand_cause_repertoire(repertoire, new_purview=None)

Alias for expand_repertoire() with direction set to CAUSE.

expand_effect_repertoire(repertoire, new_purview=None)

Alias for expand_repertoire() with direction set to EFFECT.

cause_info(mechanism, purview)

Return the cause information for a mechanism over a purview.

effect_info(mechanism, purview)

Return the effect information for a mechanism over a purview.

cause_effect_info(mechanism, purview)

Return the cause-effect information for a mechanism over a purview.

This is the minimum of the cause and effect information.

evaluate_partition(direction, mechanism, purview, partition, repertoire=None)

Return the \(\varphi\) of a mechanism over a purview for the given partition.

Parameters:
  • direction (Direction) – CAUSE or EFFECT.
  • mechanism (tuple[int]) – The nodes in the mechanism.
  • purview (tuple[int]) – The nodes in the purview.
  • partition (Bipartition) – The partition to evaluate.
Keyword Arguments:
 

repertoire (np.array) – The unpartitioned repertoire. If not supplied, it will be computed.

Returns:

The distance between the unpartitioned and partitioned repertoires, and the partitioned repertoire.

Return type:

tuple[int, np.ndarray]

find_mip(direction, mechanism, purview)

Return the minimum information partition for a mechanism over a purview.

Parameters:
  • direction (Direction) – CAUSE or EFFECT.
  • mechanism (tuple[int]) – The nodes in the mechanism.
  • purview (tuple[int]) – The nodes in the purview.
Returns:

The irreducibility analysis for the mininum-information partition in one temporal direction.

Return type:

RepertoireIrreducibilityAnalysis

cause_mip(mechanism, purview)

Return the irreducibility analysis for the cause MIP.

Alias for find_mip() with direction set to CAUSE.

effect_mip(mechanism, purview)

Return the irreducibility analysis for the effect MIP.

Alias for find_mip() with direction set to EFFECT.

phi_cause_mip(mechanism, purview)

Return the \(\varphi\) of the cause MIP.

This is the distance between the unpartitioned cause repertoire and the MIP cause repertoire.

phi_effect_mip(mechanism, purview)

Return the \(\varphi\) of the effect MIP.

This is the distance between the unpartitioned effect repertoire and the MIP cause repertoire.

phi(mechanism, purview)

Return the \(\varphi\) of a mechanism over a purview.

potential_purviews(direction, mechanism, purviews=False)

Return all purviews that could belong to the MaximallyIrreducibleCause/MaximallyIrreducibleEffect.

Filters out trivially-reducible purviews.

Parameters:
Keyword Arguments:
 

purviews (tuple[int]) – Optional subset of purviews of interest.

find_mice(direction, mechanism, purviews=False)

Return the MaximallyIrreducibleCause or MaximallyIrreducibleEffect for a mechanism.

Parameters:
  • direction (Direction) – :CAUSE or EFFECT.
  • mechanism (tuple[int]) – The mechanism to be tested for irreducibility.
Keyword Arguments:
 

purviews (tuple[int]) – Optionally restrict the possible purviews to a subset of the subsystem. This may be useful for _e.g._ finding only concepts that are “about” a certain subset of nodes.

Returns:

The MaximallyIrreducibleCause or MaximallyIrreducibleEffect.

Return type:

MaximallyIrreducibleCauseOrEffect

mic(mechanism, purviews=False)

Return the mechanism’s maximally-irreducible cause (MaximallyIrreducibleCause).

Alias for find_mice() with direction set to CAUSE.

mie(mechanism, purviews=False)

Return the mechanism’s maximally-irreducible effect (MaximallyIrreducibleEffect).

Alias for find_mice() with direction set to EFFECT.

phi_max(mechanism)

Return the \(\varphi^{\textrm{max}}\) of a mechanism.

This is the maximum of \(\varphi\) taken over all possible purviews.

null_concept

Return the null concept of this subsystem.

The null concept is a point in concept space identified with the unconstrained cause and effect repertoire of this subsystem.

concept(mechanism, purviews=False, cause_purviews=False, effect_purviews=False)

Return the concept specified by a mechanism within this subsytem.

Parameters:

mechanism (tuple[int]) – The candidate set of nodes.

Keyword Arguments:
 
  • purviews (tuple[tuple[int]]) – Restrict the possible purviews to those in this list.
  • cause_purviews (tuple[tuple[int]]) – Restrict the possible cause purviews to those in this list. Takes precedence over purviews.
  • effect_purviews (tuple[tuple[int]]) – Restrict the possible effect purviews to those in this list. Takes precedence over purviews.
Returns:

The pair of maximally irreducible cause/effect repertoires that constitute the concept specified by the given mechanism.

Return type:

Concept