pyphi.connectivity.block_cm#

pyphi.connectivity.block_cm(cm)[source]#

Return whether cm can be arranged as a block connectivity matrix.

If so, the corresponding mechanism/purview is trivially reducible. Technically, only square matrices are “block diagonal”, but the notion of connectivity carries over.

We test for block connectivity by trying to grow a block of nodes such that:

  • ‘source’ nodes only input to nodes in the block

  • ‘sink’ nodes only receive inputs from source nodes in the block

For example, the following connectivity matrix represents connections from nodes1 = A, B, C to nodes2 = D, E, F, G (without loss of generality, note that nodes1 and nodes2 may share elements):

   D  E  F  G
A [1, 1, 0, 0]
B [1, 1, 0, 0]
C [0, 0, 1, 1]

Since nodes AB only connect to nodes DE, and node C only connects to nodes FG, the subgraph is reducible, because the cut

A,B    C
─── ✕ ───
D,E   F,G

does not change the structure of the graph.

Parameters:

cm (ArrayLike)

Return type:

bool