Layers
Layers provide multilayer semantics (aspects, layer tuples, and per-layer
attributes). This page covers both the manager API and the mixin used by
AnnNet.
Layer Manager
annnet.core._Layers.LayerManager
Manager for Kivela multi-layer operations.
Provides organized namespace for layer operations by delegating to AnnNet methods. All heavy lifting is done by the AnnNet class; this is just a clean API surface.
Attributes
_G = graph
instance-attribute
Functions
__init__(graph)
aspects()
List aspect names.
Returns:
| Type | Description |
|---|---|
list[str]
|
Aspect identifiers in configured order. |
elementary_layers()
Return elementary layer labels per aspect.
Returns:
| Type | Description |
|---|---|
dict[str, list[str]]
|
Mapping of aspect name to list of elementary labels. |
layer_tuples()
List all aspect-tuples (Cartesian product).
Returns:
| Type | Description |
|---|---|
list[tuple[str, ...]]
|
All layer tuples in configured order. |
tuple_id(aa)
Canonical string id for a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Aspect-tuple layer (e.g., |
required |
Returns:
| Type | Description |
|---|---|
str
|
Canonical id (single label for 1 aspect, or |
vertex_layers(u)
List all layer-tuples where vertex u is present.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
Returns:
| Type | Description |
|---|---|
list[tuple[str, ...]]
|
Layer tuples where |
has_presence(u, aa)
Check whether (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
set_aspect_attrs(aspect, **attrs)
Attach metadata to an aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
aspect_attrs(aspect)
Get metadata dict for an aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_layer_attrs(aa, **attrs)
Attach metadata to a Kivela layer (aspect tuple).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
layer_attrs(aa)
Get metadata dict for a Kivela layer (aspect tuple).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_vertex_layer_attrs(u, aa, **attrs)
Attach metadata to a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
vertex_layer_attrs(u, aa)
Get metadata dict for a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
elem_layer_id(aspect, label)
Canonical "{aspect}_{label}" id used in layer_attributes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
str
|
|
set_elem_layer_attrs(aspect, label, **attrs)
Upsert attributes for an elementary layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
elem_layer_attrs(aspect, label)
Read attributes for an elementary layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
vertex_set(aa)
Vertices present in a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
edge_set(aa, include_inter=False, include_coupling=False)
Edges associated with a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
set[str]
|
|
union(layer_tuples, include_inter=False, include_coupling=False)
Set-union over Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
intersection(layer_tuples, include_inter=False, include_coupling=False)
Set-intersection over Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
difference(layer_a, layer_b, include_inter=False, include_coupling=False)
Set-difference over two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
to_slice(aa, slice_id=None, include_inter=False, include_coupling=False, **attrs)
Create a slice from a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
slice_id
|
str
|
Slice identifier. Defaults to the canonical layer id. |
None
|
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
Examples:
union_to_slice(layer_tuples, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
intersection_to_slice(layer_tuples, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
difference_to_slice(layer_a, layer_b, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
subgraph(aa, include_inter=False, include_coupling=False)
Concrete subgraph induced by a single layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_union(layer_tuples, include_inter=False, include_coupling=False)
Subgraph induced by the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_intersection(layer_tuples, include_inter=False, include_coupling=False)
Subgraph induced by the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_difference(layer_a, layer_b, include_inter=False, include_coupling=False)
Subgraph induced by a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
intra_edges_tuple(aa)
Edge IDs of intra edges inside a layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
inter_edges_between(aa, bb)
Edge IDs of inter edges between two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple A. |
required |
bb
|
Iterable[str]
|
Layer tuple B. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
coupling_edges_between(aa, bb)
Edge IDs of coupling edges between two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple A. |
required |
bb
|
Iterable[str]
|
Layer tuple B. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
supra_adjacency(layers=None)
Proxy to full supra adjacency over selected layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Layer subset. In single-aspect mode, string IDs are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
blocks(layers=None)
Return supra block matrices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Layer subset. In single-aspect mode, string IDs are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
Layer Mixin
annnet.core._Layers.LayerClass
Functions
set_aspects(aspects, elem_layers)
Define multi-aspect structure.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspects
|
list[str]
|
Aspect identifiers (e.g., |
required |
elem_layers
|
dict[str, list[str]]
|
Elementary labels per aspect (e.g., |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Examples:
_rebuild_all_layers_cache()
add_presence(u, layer_tuple)
Declare that a vertex is present in a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
ValueError
|
If |
remove_presence(u, layer_tuple)
Remove presence (u, aa) if it exists.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
has_presence(u, layer_tuple)
Check whether (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
iter_layers()
Iterate over all aspect-tuples (Cartesian product).
Yields:
| Type | Description |
|---|---|
tuple[str, ...]
|
Layer tuples in configured order. |
iter_vertex_layers(u)
Iterate layer tuples where (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
Yields:
| Type | Description |
|---|---|
tuple[str, ...]
|
Layer tuples for |
ensure_vertex_layer_index(restrict_layers=None)
Build stable mapping between vertex–layer tuples and row indices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
restrict_layers
|
list[tuple[str, ...]] | None
|
If provided, index only these layers. |
None
|
Returns:
| Type | Description |
|---|---|
int
|
Number of indexed vertex–layer pairs. |
Notes
Ordering is lexicographic by vertex id, then by layer tuple.
nl_to_row(u, layer_tuple)
Map (u, aa) to row index.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
int
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If the vertex–layer pair is not indexed. |
row_to_nl(row)
Map row index to (u, aa).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
row
|
int
|
Row index. |
required |
Returns:
| Type | Description |
|---|---|
tuple[str, tuple[str, ...]]
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If the row is not indexed. |
_validate_layer_tuple(aa)
layer_id_to_tuple(layer_id)
Map legacy string layer id to aspect tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_id
|
str
|
Layer identifier (single-aspect only). |
required |
Returns:
| Type | Description |
|---|---|
tuple[str, ...]
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If not in single-aspect mode. |
_layer_id_to_tuple_cached(layer)
layer_tuple_to_id(aa)
Canonical string id for a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Canonical id (single label for 1 aspect, or |
_elem_layer_id(aspect, label)
Canonical id for an elementary Kivela layer (aspect, label).
This is the key used in layer_attributes.layer_id:
layer_id = "{aspect}_{label}"
_upsert_layer_attribute_row(layer_id, attrs)
Upsert a row in self.layer_attributes for layer_id.
Strategy (simple & robust): - convert current DF to list[dict] - find existing row for this layer_id (if any) - merge attrs into that row (override keys) - rebuild DataFrame from the updated list of rows
This avoids all schema/dtype headaches (Polars infers them).
set_elementary_layer_attrs(aspect, label, **attrs)
Attach attributes to an elementary Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_elementary_layer_attrs(aspect, label)
Get attributes for an elementary Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Attributes dict; empty if not set. |
set_aspect_attrs(aspect, **attrs)
Attach metadata to a Kivela aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_aspect_attrs(aspect)
Return a shallow copy of metadata for a Kivela aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_layer_attrs(layer_tuple, **attrs)
Attach metadata to a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_layer_attrs(layer_tuple)
Get metadata dict for a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Shallow copy; empty if not set. |
set_vertex_layer_attrs(u, layer_tuple, **attrs)
Attach metadata to a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
get_vertex_layer_attrs(u, layer_tuple)
Get metadata dict for a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Shallow copy; empty if not set. |
_layer_tuple_to_lid(aa)
set_edge_kivela_role(eid, role, layers)
Annotate an existing structural edge with Kivela semantics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
eid
|
str
|
Edge identifier. |
required |
role
|
str
|
One of |
required |
layers
|
tuple | list
|
|
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
ValueError
|
If |
add_intra_edge(u, v, layer, *, weight=1.0, eid=None)
Add an intra-layer edge in legacy single-aspect mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer
|
str
|
Layer id (single-aspect only). |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
add_intra_edge_nl(u, v, layer_tuple, *, weight=1.0, eid=None)
Add an intra-layer edge for a multi-aspect layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
Raises:
| Type | Description |
|---|---|
KeyError
|
If required vertex–layer presence is missing. |
ValueError
|
If |
Examples:
add_intra_edges_bulk(edges, layer_tuple, weight=1.0, fast_mode=True)
Bulk add intra-layer edges with direct matrix updates.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
edges
|
Iterable
|
|
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
weight
|
float
|
Default weight when |
1.0
|
fast_mode
|
bool
|
If True, skip validation/presence checks. |
True
|
Returns:
| Type | Description |
|---|---|
list[str]
|
Edge ids added. |
add_inter_edge_nl(u, layer_a, v, layer_b, *, weight=1.0, eid=None)
Add an inter-layer edge between two layer tuples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex in layer |
required |
layer_a
|
tuple[str, ...]
|
Source layer tuple. |
required |
v
|
str
|
Vertex in layer |
required |
layer_b
|
tuple[str, ...]
|
Target layer tuple. |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
Raises:
| Type | Description |
|---|---|
KeyError
|
If required vertex–layer presence is missing. |
ValueError
|
If layer tuples are invalid. |
Examples:
add_coupling_edge_nl(u, layer_a, layer_b, *, weight=1.0, eid=None)
Add a diagonal coupling edge between two layers for the same vertex.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_a
|
tuple[str, ...]
|
Layer tuple A. |
required |
layer_b
|
tuple[str, ...]
|
Layer tuple B. |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
layer_vertex_set(layer_tuple)
Vertices present in a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
layer_edge_set(layer_tuple, *, include_inter=False, include_coupling=False)
Edges associated with a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Aspect tuple layer. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
set[str]
|
|
add_inter_edge(u, v, layer_a, layer_b, *, weight=1.0, eid=None)
Add an inter-layer edge in legacy single-aspect mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer_a
|
str
|
Layer id (single-aspect only). |
required |
layer_b
|
str
|
Layer id (single-aspect only). |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
layer_union(layer_tuples, *, include_inter=False, include_coupling=False)
Union of several Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
layer_intersection(layer_tuples, *, include_inter=False, include_coupling=False)
Intersection of several Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
layer_difference(layer_a, layer_b, *, include_inter=False, include_coupling=False)
Set difference: elements in layer_a but not in layer_b.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
create_slice_from_layer(slice_id, layer_tuple, *, include_inter=False, include_coupling=False, **attributes)
Create a slice induced by a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuple
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
Examples:
create_slice_from_layer_union(slice_id, layer_tuples, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
create_slice_from_layer_intersection(slice_id, layer_tuples, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
create_slice_from_layer_difference(slice_id, layer_a, layer_b, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
subgraph_from_layer_tuple(layer_tuple, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_union(layer_tuples, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_intersection(layer_tuples, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_difference(layer_a, layer_b, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
_assert_presence(u, aa)
supra_adjacency(layers=None)
Build the supra adjacency matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. In single-aspect mode, string ids are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
Supra adjacency over the chosen vertex–layer index. |
Examples:
_normalize_layers_arg(layers)
Normalize layers argument to aspect tuples or None.
_build_block(include_kinds, layers=None)
Internal builder for supra block matrices.
build_intra_block(layers=None)
Supra matrix containing only intra-layer edges (diagonal blocks).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
build_inter_block(layers=None)
Supra matrix containing only inter-layer (non-diagonal) edges.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
build_coupling_block(layers=None)
Supra matrix containing only coupling edges.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
supra_degree(layers=None)
Degree vector over the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
supra_laplacian(kind='comb', layers=None)
Build supra-Laplacian.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
_aspect_index(aspect)
_layer_matches_filter(aa, layer_filter)
layer_filter: {aspect_name: {elem1, elem2, ...}}; a layer matches if aa[a] ∈ set for all keys.
add_layer_coupling_pairs(layer_pairs, *, weight=1.0)
Add diagonal couplings for explicit layer pairs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_pairs
|
list[tuple[tuple[str, ...], tuple[str, ...]]]
|
Layer tuple pairs |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
add_categorical_coupling(aspect, groups, *, weight=1.0)
Add categorical couplings along one aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect name to couple over. |
required |
groups
|
list[list[str]]
|
Groups of elementary labels to fully connect per vertex. |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
add_diagonal_coupling_filter(layer_filter, *, weight=1.0)
Add diagonal couplings within a filtered layer subspace.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_filter
|
dict[str, set]
|
Aspect filters (e.g., |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
tensor_index(layers=None)
adjacency_tensor_view(layers=None)
Sparse 4-index adjacency view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
Notes
Symmetric entries are emitted twice: (ui, ai, vi, bi) and (vi, bi, ui, ai).
flatten_to_supra(tensor_view)
Flatten a tensor view into a supra adjacency matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tensor_view
|
dict
|
Output of :meth: |
required |
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
unflatten_from_supra(A, layers=None)
Unflatten a supra adjacency matrix into a tensor view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
spmatrix
|
Supra adjacency matrix. |
required |
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Tensor view with the same schema as :meth: |
supra_adjacency_scaled(*, coupling_scale=1.0, include_inter=True, layers=None)
Build scaled supra adjacency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
coupling_scale
|
float
|
Scaling factor for coupling edges. |
1.0
|
include_inter
|
bool
|
Whether to include inter-layer edges. |
True
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
transition_matrix(layers=None)
Row-stochastic transition matrix P = D^{-1} A.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
random_walk_step(p, layers=None)
One random-walk step p' = p P.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
p
|
array - like
|
Row vector of length |
required |
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
diffusion_step(x, tau=1.0, kind='comb', layers=None)
One explicit Euler step of diffusion on the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
array - like
|
State vector of length |
required |
tau
|
float
|
Time step. |
1.0
|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
algebraic_connectivity(layers=None)
Algebraic connectivity of the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[float, ndarray | None]
|
|
k_smallest_laplacian_eigs(k=6, kind='comb', layers=None)
Return k smallest eigenvalues/eigenvectors of the supra-Laplacian.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
k
|
int
|
Number of eigenpairs to compute. |
6
|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[ndarray, ndarray]
|
|
dominant_rw_eigenpair(layers=None)
Dominant eigenpair of the random-walk operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[float, ndarray | None]
|
|
sweep_coupling_regime(scales, metric='algebraic_connectivity', layers=None)
Scan coupling scales and evaluate a metric.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scales
|
Iterable[float]
|
Coupling scales to evaluate. |
required |
metric
|
str | callable
|
|
'algebraic_connectivity'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
list[float]
|
Metric values aligned with |
_rows_for_layer(L)
Return row indices in the supra index that belong to aspect-tuple layer L.
layer_degree_vectors(layers=None)
Per-layer degree vectors (intra-layer only).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
participation_coefficient(layers=None)
Participation coefficient per vertex.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
|
versatility(layers=None)
Versatility proxy based on dominant eigenvector of supra adjacency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
|
multislice_modularity(partition, *, gamma=1.0, omega=1.0, include_inter=False, layers=None)
Mucha et al. multislice modularity (scorer only).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
partition
|
array - like
|
Community ids, length |
required |
gamma
|
float
|
Resolution parameter. |
1.0
|
omega
|
float
|
Coupling strength (binary coupling structure scaled by |
1.0
|
include_inter
|
bool
|
Whether to include inter-layer (non-diagonal) edges. |
False
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers to score on. |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Modularity score |
Examples:
Internal helpers
Manager for Kivela multi-layer operations.
Provides organized namespace for layer operations by delegating to AnnNet methods. All heavy lifting is done by the AnnNet class; this is just a clean API surface.
Attributes
_G = graph
instance-attribute
Functions
__init__(graph)
aspects()
List aspect names.
Returns:
| Type | Description |
|---|---|
list[str]
|
Aspect identifiers in configured order. |
elementary_layers()
Return elementary layer labels per aspect.
Returns:
| Type | Description |
|---|---|
dict[str, list[str]]
|
Mapping of aspect name to list of elementary labels. |
layer_tuples()
List all aspect-tuples (Cartesian product).
Returns:
| Type | Description |
|---|---|
list[tuple[str, ...]]
|
All layer tuples in configured order. |
tuple_id(aa)
Canonical string id for a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Aspect-tuple layer (e.g., |
required |
Returns:
| Type | Description |
|---|---|
str
|
Canonical id (single label for 1 aspect, or |
vertex_layers(u)
List all layer-tuples where vertex u is present.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
Returns:
| Type | Description |
|---|---|
list[tuple[str, ...]]
|
Layer tuples where |
has_presence(u, aa)
Check whether (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
set_aspect_attrs(aspect, **attrs)
Attach metadata to an aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
aspect_attrs(aspect)
Get metadata dict for an aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_layer_attrs(aa, **attrs)
Attach metadata to a Kivela layer (aspect tuple).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
layer_attrs(aa)
Get metadata dict for a Kivela layer (aspect tuple).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_vertex_layer_attrs(u, aa, **attrs)
Attach metadata to a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
vertex_layer_attrs(u, aa)
Get metadata dict for a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
elem_layer_id(aspect, label)
Canonical "{aspect}_{label}" id used in layer_attributes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
str
|
|
set_elem_layer_attrs(aspect, label, **attrs)
Upsert attributes for an elementary layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
elem_layer_attrs(aspect, label)
Read attributes for an elementary layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
vertex_set(aa)
Vertices present in a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
edge_set(aa, include_inter=False, include_coupling=False)
Edges associated with a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
set[str]
|
|
union(layer_tuples, include_inter=False, include_coupling=False)
Set-union over Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
intersection(layer_tuples, include_inter=False, include_coupling=False)
Set-intersection over Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
difference(layer_a, layer_b, include_inter=False, include_coupling=False)
Set-difference over two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
to_slice(aa, slice_id=None, include_inter=False, include_coupling=False, **attrs)
Create a slice from a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
slice_id
|
str
|
Slice identifier. Defaults to the canonical layer id. |
None
|
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
Examples:
union_to_slice(layer_tuples, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
intersection_to_slice(layer_tuples, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
difference_to_slice(layer_a, layer_b, slice_id, include_inter=False, include_coupling=False, **attrs)
Create a slice from a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
slice_id
|
str
|
Slice identifier. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attrs
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
subgraph(aa, include_inter=False, include_coupling=False)
Concrete subgraph induced by a single layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_union(layer_tuples, include_inter=False, include_coupling=False)
Subgraph induced by the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_intersection(layer_tuples, include_inter=False, include_coupling=False)
Subgraph induced by the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_difference(layer_a, layer_b, include_inter=False, include_coupling=False)
Subgraph induced by a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
intra_edges_tuple(aa)
Edge IDs of intra edges inside a layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
inter_edges_between(aa, bb)
Edge IDs of inter edges between two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple A. |
required |
bb
|
Iterable[str]
|
Layer tuple B. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
coupling_edges_between(aa, bb)
Edge IDs of coupling edges between two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
Iterable[str]
|
Layer tuple A. |
required |
bb
|
Iterable[str]
|
Layer tuple B. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
supra_adjacency(layers=None)
Proxy to full supra adjacency over selected layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Layer subset. In single-aspect mode, string IDs are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
blocks(layers=None)
Return supra block matrices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Layer subset. In single-aspect mode, string IDs are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
Functions
set_aspects(aspects, elem_layers)
Define multi-aspect structure.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspects
|
list[str]
|
Aspect identifiers (e.g., |
required |
elem_layers
|
dict[str, list[str]]
|
Elementary labels per aspect (e.g., |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Examples:
_rebuild_all_layers_cache()
add_presence(u, layer_tuple)
Declare that a vertex is present in a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
ValueError
|
If |
remove_presence(u, layer_tuple)
Remove presence (u, aa) if it exists.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
has_presence(u, layer_tuple)
Check whether (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
iter_layers()
Iterate over all aspect-tuples (Cartesian product).
Yields:
| Type | Description |
|---|---|
tuple[str, ...]
|
Layer tuples in configured order. |
iter_vertex_layers(u)
Iterate layer tuples where (u, aa) is in V_M.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
Yields:
| Type | Description |
|---|---|
tuple[str, ...]
|
Layer tuples for |
ensure_vertex_layer_index(restrict_layers=None)
Build stable mapping between vertex–layer tuples and row indices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
restrict_layers
|
list[tuple[str, ...]] | None
|
If provided, index only these layers. |
None
|
Returns:
| Type | Description |
|---|---|
int
|
Number of indexed vertex–layer pairs. |
Notes
Ordering is lexicographic by vertex id, then by layer tuple.
nl_to_row(u, layer_tuple)
Map (u, aa) to row index.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
int
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If the vertex–layer pair is not indexed. |
row_to_nl(row)
Map row index to (u, aa).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
row
|
int
|
Row index. |
required |
Returns:
| Type | Description |
|---|---|
tuple[str, tuple[str, ...]]
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If the row is not indexed. |
_validate_layer_tuple(aa)
layer_id_to_tuple(layer_id)
Map legacy string layer id to aspect tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_id
|
str
|
Layer identifier (single-aspect only). |
required |
Returns:
| Type | Description |
|---|---|
tuple[str, ...]
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If not in single-aspect mode. |
_layer_id_to_tuple_cached(layer)
layer_tuple_to_id(aa)
Canonical string id for a layer tuple.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aa
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
str
|
Canonical id (single label for 1 aspect, or |
_elem_layer_id(aspect, label)
Canonical id for an elementary Kivela layer (aspect, label).
This is the key used in layer_attributes.layer_id:
layer_id = "{aspect}_{label}"
_upsert_layer_attribute_row(layer_id, attrs)
Upsert a row in self.layer_attributes for layer_id.
Strategy (simple & robust): - convert current DF to list[dict] - find existing row for this layer_id (if any) - merge attrs into that row (override keys) - rebuild DataFrame from the updated list of rows
This avoids all schema/dtype headaches (Polars infers them).
set_elementary_layer_attrs(aspect, label, **attrs)
Attach attributes to an elementary Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_elementary_layer_attrs(aspect, label)
Get attributes for an elementary Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
label
|
str
|
Elementary layer label. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Attributes dict; empty if not set. |
set_aspect_attrs(aspect, **attrs)
Attach metadata to a Kivela aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_aspect_attrs(aspect)
Return a shallow copy of metadata for a Kivela aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect identifier. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
|
set_layer_attrs(layer_tuple, **attrs)
Attach metadata to a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
get_layer_attrs(layer_tuple)
Get metadata dict for a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Shallow copy; empty if not set. |
set_vertex_layer_attrs(u, layer_tuple, **attrs)
Attach metadata to a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
**attrs
|
Key-value metadata to store. |
{}
|
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
get_vertex_layer_attrs(u, layer_tuple)
Get metadata dict for a vertex–layer pair.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
dict
|
Shallow copy; empty if not set. |
_layer_tuple_to_lid(aa)
set_edge_kivela_role(eid, role, layers)
Annotate an existing structural edge with Kivela semantics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
eid
|
str
|
Edge identifier. |
required |
role
|
str
|
One of |
required |
layers
|
tuple | list
|
|
required |
Returns:
| Type | Description |
|---|---|
None
|
|
Raises:
| Type | Description |
|---|---|
KeyError
|
If |
ValueError
|
If |
add_intra_edge(u, v, layer, *, weight=1.0, eid=None)
Add an intra-layer edge in legacy single-aspect mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer
|
str
|
Layer id (single-aspect only). |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
add_intra_edge_nl(u, v, layer_tuple, *, weight=1.0, eid=None)
Add an intra-layer edge for a multi-aspect layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
Raises:
| Type | Description |
|---|---|
KeyError
|
If required vertex–layer presence is missing. |
ValueError
|
If |
Examples:
add_intra_edges_bulk(edges, layer_tuple, weight=1.0, fast_mode=True)
Bulk add intra-layer edges with direct matrix updates.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
edges
|
Iterable
|
|
required |
layer_tuple
|
tuple[str, ...]
|
Aspect tuple layer. |
required |
weight
|
float
|
Default weight when |
1.0
|
fast_mode
|
bool
|
If True, skip validation/presence checks. |
True
|
Returns:
| Type | Description |
|---|---|
list[str]
|
Edge ids added. |
add_inter_edge_nl(u, layer_a, v, layer_b, *, weight=1.0, eid=None)
Add an inter-layer edge between two layer tuples.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex in layer |
required |
layer_a
|
tuple[str, ...]
|
Source layer tuple. |
required |
v
|
str
|
Vertex in layer |
required |
layer_b
|
tuple[str, ...]
|
Target layer tuple. |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
Raises:
| Type | Description |
|---|---|
KeyError
|
If required vertex–layer presence is missing. |
ValueError
|
If layer tuples are invalid. |
Examples:
add_coupling_edge_nl(u, layer_a, layer_b, *, weight=1.0, eid=None)
Add a diagonal coupling edge between two layers for the same vertex.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Vertex identifier. |
required |
layer_a
|
tuple[str, ...]
|
Layer tuple A. |
required |
layer_b
|
tuple[str, ...]
|
Layer tuple B. |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
layer_vertex_set(layer_tuple)
Vertices present in a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Aspect tuple layer. |
required |
Returns:
| Type | Description |
|---|---|
set[str]
|
|
layer_edge_set(layer_tuple, *, include_inter=False, include_coupling=False)
Edges associated with a Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Aspect tuple layer. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
set[str]
|
|
add_inter_edge(u, v, layer_a, layer_b, *, weight=1.0, eid=None)
Add an inter-layer edge in legacy single-aspect mode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
u
|
str
|
Source vertex. |
required |
v
|
str
|
Target vertex. |
required |
layer_a
|
str
|
Layer id (single-aspect only). |
required |
layer_b
|
str
|
Layer id (single-aspect only). |
required |
weight
|
float
|
Edge weight. |
1.0
|
eid
|
str | None
|
Edge id override. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Edge id. |
layer_union(layer_tuples, *, include_inter=False, include_coupling=False)
Union of several Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
layer_intersection(layer_tuples, *, include_inter=False, include_coupling=False)
Intersection of several Kivela layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
layer_difference(layer_a, layer_b, *, include_inter=False, include_coupling=False)
Set difference: elements in layer_a but not in layer_b.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
dict
|
|
create_slice_from_layer(slice_id, layer_tuple, *, include_inter=False, include_coupling=False, **attributes)
Create a slice induced by a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuple
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
Examples:
create_slice_from_layer_union(slice_id, layer_tuples, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
create_slice_from_layer_intersection(slice_id, layer_tuples, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
create_slice_from_layer_difference(slice_id, layer_a, layer_b, *, include_inter=False, include_coupling=False, **attributes)
Create a slice as the difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
slice_id
|
str
|
Slice identifier. |
required |
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
**attributes
|
Slice attributes to store. |
{}
|
Returns:
| Type | Description |
|---|---|
str
|
The created slice id. |
subgraph_from_layer_tuple(layer_tuple, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by a single Kivela layer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuple
|
Iterable[str]
|
Layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_union(layer_tuples, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by the union of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to union. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the union. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the union. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_intersection(layer_tuples, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by the intersection of several layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_tuples
|
Iterable[Iterable[str]]
|
Layer tuples to intersect. |
required |
include_inter
|
bool
|
Include inter-layer edges touching any layer in the intersection. |
False
|
include_coupling
|
bool
|
Include coupling edges touching any layer in the intersection. |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
subgraph_from_layer_difference(layer_a, layer_b, *, include_inter=False, include_coupling=False)
Concrete subgraph induced by a set-difference of two layers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_a
|
Iterable[str]
|
Minuend layer tuple. |
required |
layer_b
|
Iterable[str]
|
Subtrahend layer tuple. |
required |
include_inter
|
bool
|
Include inter-layer edges touching |
False
|
include_coupling
|
bool
|
Include coupling edges touching |
False
|
Returns:
| Type | Description |
|---|---|
AnnNet
|
|
_assert_presence(u, aa)
supra_adjacency(layers=None)
Build the supra adjacency matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. In single-aspect mode, string ids are accepted. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
Supra adjacency over the chosen vertex–layer index. |
Examples:
_normalize_layers_arg(layers)
Normalize layers argument to aspect tuples or None.
_build_block(include_kinds, layers=None)
Internal builder for supra block matrices.
build_intra_block(layers=None)
Supra matrix containing only intra-layer edges (diagonal blocks).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
build_inter_block(layers=None)
Supra matrix containing only inter-layer (non-diagonal) edges.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
build_coupling_block(layers=None)
Supra matrix containing only coupling edges.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
supra_degree(layers=None)
Degree vector over the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
supra_laplacian(kind='comb', layers=None)
Build supra-Laplacian.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
_aspect_index(aspect)
_layer_matches_filter(aa, layer_filter)
layer_filter: {aspect_name: {elem1, elem2, ...}}; a layer matches if aa[a] ∈ set for all keys.
add_layer_coupling_pairs(layer_pairs, *, weight=1.0)
Add diagonal couplings for explicit layer pairs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_pairs
|
list[tuple[tuple[str, ...], tuple[str, ...]]]
|
Layer tuple pairs |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
add_categorical_coupling(aspect, groups, *, weight=1.0)
Add categorical couplings along one aspect.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aspect
|
str
|
Aspect name to couple over. |
required |
groups
|
list[list[str]]
|
Groups of elementary labels to fully connect per vertex. |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
add_diagonal_coupling_filter(layer_filter, *, weight=1.0)
Add diagonal couplings within a filtered layer subspace.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layer_filter
|
dict[str, set]
|
Aspect filters (e.g., |
required |
weight
|
float
|
Edge weight. |
1.0
|
Returns:
| Type | Description |
|---|---|
int
|
Number of edges added. |
tensor_index(layers=None)
adjacency_tensor_view(layers=None)
Sparse 4-index adjacency view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
Notes
Symmetric entries are emitted twice: (ui, ai, vi, bi) and (vi, bi, ui, ai).
flatten_to_supra(tensor_view)
Flatten a tensor view into a supra adjacency matrix.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tensor_view
|
dict
|
Output of :meth: |
required |
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
unflatten_from_supra(A, layers=None)
Unflatten a supra adjacency matrix into a tensor view.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
spmatrix
|
Supra adjacency matrix. |
required |
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
Tensor view with the same schema as :meth: |
supra_adjacency_scaled(*, coupling_scale=1.0, include_inter=True, layers=None)
Build scaled supra adjacency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
coupling_scale
|
float
|
Scaling factor for coupling edges. |
1.0
|
include_inter
|
bool
|
Whether to include inter-layer edges. |
True
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
transition_matrix(layers=None)
Row-stochastic transition matrix P = D^{-1} A.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
csr_matrix
|
|
random_walk_step(p, layers=None)
One random-walk step p' = p P.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
p
|
array - like
|
Row vector of length |
required |
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
diffusion_step(x, tau=1.0, kind='comb', layers=None)
One explicit Euler step of diffusion on the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
array - like
|
State vector of length |
required |
tau
|
float
|
Time step. |
1.0
|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
ndarray
|
|
algebraic_connectivity(layers=None)
Algebraic connectivity of the supra-graph.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[float, ndarray | None]
|
|
k_smallest_laplacian_eigs(k=6, kind='comb', layers=None)
Return k smallest eigenvalues/eigenvectors of the supra-Laplacian.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
k
|
int
|
Number of eigenpairs to compute. |
6
|
kind
|
str
|
|
'comb'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[ndarray, ndarray]
|
|
dominant_rw_eigenpair(layers=None)
Dominant eigenpair of the random-walk operator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
tuple[float, ndarray | None]
|
|
sweep_coupling_regime(scales, metric='algebraic_connectivity', layers=None)
Scan coupling scales and evaluate a metric.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
scales
|
Iterable[float]
|
Coupling scales to evaluate. |
required |
metric
|
str | callable
|
|
'algebraic_connectivity'
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
list[float]
|
Metric values aligned with |
_rows_for_layer(L)
Return row indices in the supra index that belong to aspect-tuple layer L.
layer_degree_vectors(layers=None)
Per-layer degree vectors (intra-layer only).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict
|
|
participation_coefficient(layers=None)
Participation coefficient per vertex.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
|
versatility(layers=None)
Versatility proxy based on dominant eigenvector of supra adjacency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers. |
None
|
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
|
multislice_modularity(partition, *, gamma=1.0, omega=1.0, include_inter=False, layers=None)
Mucha et al. multislice modularity (scorer only).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
partition
|
array - like
|
Community ids, length |
required |
gamma
|
float
|
Resolution parameter. |
1.0
|
omega
|
float
|
Coupling strength (binary coupling structure scaled by |
1.0
|
include_inter
|
bool
|
Whether to include inter-layer (non-diagonal) edges. |
False
|
layers
|
list[str] | list[tuple[str, ...]] | None
|
Optional subset of layers to score on. |
None
|
Returns:
| Type | Description |
|---|---|
float
|
Modularity score |
Examples: