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
Cut
to 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_matrix
attribute.
-
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
Node
objects 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.ndarray
Note
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.ndarray
Note
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()
withdirection
set toDIRECTIONS[PAST]
.
-
mip_future
(mechanism, purview)¶ Return the future minimum information partition.
Alias for
find_mip()
withdirection
set 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()
withdirection
set toDIRECTIONS[PAST]
.
-
core_effect
(mechanism, purviews=False)¶ Return the core effect repertoire of a mechanism.
Alias for
find_mice()
withdirection
set 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=()))]