graph_kcore — GRAPH core op

• Data kinds: matrix → table

• Call: import fullseye as fs; fs.ledger.graph_kcore(adj, mode='total', weighted=False) (to call the implementation directly, import graphinv; graphinv.graph_kcore(adj, mode='total', weighted=False); from the registry, opsgraph.get("graph_kcore"))

Usage

k-core (or weighted s-core) decomposition of a wiring matrix — every node's core index.

A k-core is the maximal subgraph in which every node has degree at least k (Seidman

1983); a node's core index is the largest k of a core it belongs to. `mode` picks

the degree: `"in" (inputs a node receives), "out", "total"` (in + out; a

reciprocal pair counts twice, as in :func:conngraph.graph_rich_club) or

`"undirected"` (an edge in either direction counts once — this is what

`networkx.core_number computes on the symmetrised graph). With weighted=True` the

degree is the strength (sum of weights, e.g. synapse counts) and the result is the

s-core of Eidsaa & Almaas 2013: the index is the running maximum of the minimum

strength during peeling, so it is a real number with the units of the weights.

Self-loops are dropped.

Returns a dict: `core` (n,) — the index per node (int for k-core, float for s-core);

`kmax — the innermost index; inner` (n,) bool — nodes of the innermost core;

`n_inner; levels — the distinct indices in increasing order and counts` — how

many nodes have each (`sum(counts) == n); mode; weighted`.

Identities (the tests): a complete graph on n nodes has every index n−1; a tree 1;

a cycle 2; `undirected agrees with networkx.core_number` on random graphs;

the s-core of a 0/1 matrix equals the k-core; multiplying every weight by c multiplies

every s-core index by c; the innermost core is never empty and every one of its nodes

has at least `kmax` (weighted: strength) inside the core.

Raises `ValueError: as :func:graph_degree_summary` (non-square, negative,

non-finite, string / bool / complex / masked input); `mode` not one of

in / out / total / undirected.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_worm_core_persists — py -3.11 examples/poc_worm_core_persists.py

Ops the type connects to (they accept table as input)

graph_edge_consensus · graph_core_persistence · tree_morphometry · tree_sholl · tree_run_length

Same category (core)

graph_rich_club_curve


*Provenance: graphinv.py — GRAPH operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.