tree_sholl — GRAPH tree op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.tree_sholl(tree, radii=None, n_radii=50, plane=None, center=None) (to call the implementation directly, import treemorph; treemorph.tree_sholl(tree, radii=None, n_radii=50, plane=None, center=None); from the registry, opsgraph.get("tree_sholl"))

Usage

Sholl analysis: segments crossing spheres (3-D) or circles (a projection) around the root.

`radii are the shell radii (ascending, positive); if omitted, n_radii` shells at

the mid-points of equal steps up to the largest distance from the centre (never exactly

on a node's distance). A shell passing exactly through a node is ambiguous under

rounding — a rotation may move that node by one ulp to either side. `plane=None` measures in 3-D;

`plane="xy" | "xz" | "yz"` drops the third axis first — what a single image sees.

`center` defaults to the root position.

A segment (parent-child) crosses radius `r` when its end points lie strictly on

opposite sides of `r (the endpoint rule). Returns radii, crossings` (int array),

`max_crossings, radius_at_max and integral` — the exact area under the whole

continuous Sholl curve, computed from the segments' intervals (independent of where

the shells are placed).

Identities: in 3-D the crossings are invariant, integer for integer, under any rotation

about the centre; and `integral equals sum |d_child - d_parent|` (the tests also

check that the mid-point sum of the sampled crossings converges to it — a second

implementation).

Raises `ValueError: not a tree table; plane` not one of None/xy/xz/yz;

radii not 1-D, not finite, not positive or not strictly increasing; `n_radii < 1`.

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_swc_tree_truth — py -3.11 examples/poc_swc_tree_truth.py

• poc_worm_neurites_grow — py -3.11 examples/poc_worm_neurites_grow.py

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

graph_edge_consensus · graph_core_persistence · tree_morphometry · tree_run_length

Same category (tree)

tree_from_swc · tree_morphometry · tree_run_length


*Provenance: treemorph.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.