subsystem¶
Represents a candidate system for \(\varphi\) and \(\Phi\) evaluation.
-
class
pyphi.subsystem.Subsystem(network, state, nodes, cut=None, mice_cache=None, repertoire_cache=None)¶ A set of nodes in a network.
Parameters: Keyword Arguments: cut (Cut) – The unidirectional
Cutto apply to this subsystem.-
nodes¶ list(Node – A list of nodes in the subsystem.
-
node_indices¶ tuple(int – The indices of the nodes in the subsystem.
-
size¶ int – The number of nodes in the subsystem.
-
network¶ Network – The network the subsystem belongs to.
-
state¶ tuple(int – The state of the subsystem’s network.
state[i]gives the state of node \(i\).
-
proper_state¶ tuple(int – The state of the subsystem.
proper_state[i]gives the \(i^{\textrm{th}}\) node in the subsystem. Note that this is not the state of node \(i\).
-
cut¶ Cut – The cut that has been applied to this subsystem.
-
connectivity_matrix¶ np.array – The connectivity matrix after applying the cut.
-
cut_matrix¶ np.array – A matrix of connections which have been severed by the cut.
-
perturb_vector¶ np.array – The vector of perturbation probabilities for each node.
-
cut_indices¶ tuple(int – The nodes of the subsystem cut by a \(\Phi\) cut.
-
null_cut¶ Cut – The cut object representing no cut.
-
tpm¶ np.array – The TPM conditioned on the state of the external nodes.
Construct a Subsystem.
-
state The state of the Network this Subsystem belongs to.
-
proper_state The state of the nodes in this Subsystem.
-
cm¶ Alias for
connectivity_matrixattribute.
-
size The size of this Subsystem.
-
is_cut¶ Return whether this Subsystem has a cut applied to it.
-
cut_indices The indices of this system to be cut for \(\Phi\) computations.
This was added to support
MacroSubsystem, which cuts indices other thanself.node_indices.
-
repertoire_cache_info()¶ Report repertoire cache statistics.
-
__repr__()¶ Return a representation of this Subsystem.
-
__str__()¶ Return this Subsystem as a string.
-
__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.
-
__bool__()¶ Return false if the Subsystem has no nodes, true otherwise.
-
__ne__(other)¶ Return whether this Subsystem is not equal to the other object.
-
__ge__(other)¶ Return whether this Subsystem >= the other object.
-
__le__(other)¶ Return whether this Subsystem <= the other object.
-
__gt__(other)¶ Return whether this Subsystem > the other object.
-
__lt__(other)¶ Return whether this Subsystem < the other object.
-
__len__()¶ Return the number of nodes in this Subsystem.
-
__hash__()¶ Return the hash value of this Subsystem.
-
to_json()¶ Return this Subsystem as a JSON object.
-
apply_cut(cut)¶ Return a cut version of this
Subsystem.Parameters: cut (Cut) – The cut to apply to this Subsystem.Returns: subsystem (Subsystem)
-
indices2nodes(indices)¶ Return nodes for these indices.
Parameters: indices (iterable(int) – Returns: nodes – - The
Nodeobjects corresponding to - these indices.
Return type: tuple(Node Raises: ValueError– If requested indices are not in the subsystem.- The
-
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: cause_repertoire –
- The cause repertoire of the
mechanism over the purview.
Return type: np.ndarrayNote
The returned repertoire is a distribution over the nodes in the purview, not the whole network. This is because we never actually need to compare proper cause/effect repertoires, which are distributions over the whole network; we need only compare the purview-repertoires with each other, since cut vs. whole comparisons are only ever done over the same purview.
-
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: effect_repertoire –
- The effect repertoire of the
mechanism over the purview.
Return type: np.ndarrayNote
The returned repertoire is a distribution over the nodes in the purview, not the whole network. This is because we never actually need to compare proper cause/effect repertoires, which are distributions over the whole network; we need only compare the purview-repertoires with each other, since cut vs. whole comparisons are only ever done over the same 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.
-
expand_repertoire(direction, purview, repertoire, new_purview=None)¶ Expand a partial repertoire over a purview to a distribution over a new state space.
Parameters: - direction (str) – Either
DIRECTIONS[PAST]orDIRECTIONS[FUTURE]. - purview (tuple(int) – The purview over which the repertoire was calculated.
- repertoire (
np.ndarray) – A repertoire computed overpurview.
Keyword Arguments: new_purview (tuple(int) – The purview to expand the repertoire over. Defaults to the entire subsystem.
Returns: The expanded repertoire.
Return type: np.ndarray- direction (str) – Either
-
expand_cause_repertoire(purview, repertoire, new_purview=None)¶ Expand a partial cause repertoire over a purview to a distribution over the entire subsystem’s state space.
-
expand_effect_repertoire(purview, repertoire, new_purview=None)¶ Expand a partial effect repertoire over a purview to a distribution over the entire subsystem’s state space.
-
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.
-
find_mip(direction, mechanism, purview)¶ Return the minimum information partition for a mechanism over a purview.
Parameters: - direction (str) – Either
DIRECTIONS[PAST]orDIRECTIONS[FUTURE]. - mechanism (tuple(int) – The nodes in the mechanism.
- purview (tuple(int) – The nodes in the purview.
Returns: mip –
- The mininum-information partition in one temporal
direction.
Return type: - direction (str) – Either
-
mip_past(mechanism, purview)¶ Return the past minimum information partition.
Alias for
find_mip()withdirectionset toDIRECTIONS[PAST].
-
mip_future(mechanism, purview)¶ Return the future minimum information partition.
Alias for
find_mip()withdirectionset toDIRECTIONS[FUTURE].
-
phi_mip_past(mechanism, purview)¶ Return the \(\varphi\) of the past minimum information partition.
This is the distance between the unpartitioned cause repertoire and the MIP cause repertoire.
-
phi_mip_future(mechanism, purview)¶ Return the \(\varphi\) of the future minimum information partition.
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.
-
find_mice(direction, mechanism, purviews=False)¶ Return the maximally irreducible cause or effect for a mechanism.
Parameters: - direction (str) – The temporal direction (
DIRECTIONS[PAST]orDIRECTIONS[FUTURE]) specifying 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: mice – The maximally-irreducible cause or effect.
Return type: Note
Strictly speaking, the MICE is a pair of repertoires: the core cause repertoire and core effect repertoire of a mechanism, which are maximally different than the unconstrained cause/effect repertoires (i.e., those that maximize \(\varphi\)). Here, we return only information corresponding to one direction,
DIRECTIONS[PAST]orDIRECTIONS[FUTURE], i.e., we return a core cause or core effect, not the pair of them.- direction (str) – The temporal direction (
-
core_cause(mechanism, purviews=False)¶ Return the core cause repertoire of a mechanism.
Alias for
find_mice()withdirectionset toDIRECTIONS[PAST].
-
core_effect(mechanism, purviews=False)¶ Return the core effect repertoire of a mechanism.
Alias for
find_mice()withdirectionset toDIRECTIONS[PAST].
-
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, past_purviews=False, future_purviews=False)¶ Calculate a concept.
See
pyphi.compute.concept()for more information.
-
-
pyphi.subsystem.mip_bipartitions(mechanism, purview)¶ Return all \(\varphi\) bipartitions of a mechanism over a purview.
Excludes all bipartitions where one half is entirely empty, e.g:
A [] A []- — X – is not valid, but — X — is.
- B [] [] B
Parameters: - mechanism (tuple(int) – The mechanism to partition
- purview (tuple(int) – The purview to partition
Returns: bipartitions –
Where each partition is
bipart[0].mechanism bipart[1].mechanism ——————- X ——————-
bipart[0].purview bipart[1].purview
Return type: list(tuple((Part, Part
Example
>>> from pyphi.subsystem import mip_bipartitions >>> mechanism = (0,) >>> purview = (2, 3) >>> mip_bipartitions(mechanism, purview) [(Part(mechanism=(), purview=(2,)), Part(mechanism=(0,), purview=(3,))), (Part(mechanism=(), purview=(3,)), Part(mechanism=(0,), purview=(2,))), (Part(mechanism=(), purview=(2, 3)), Part(mechanism=(0,), purview=()))]