Skip to content

Toric spines

Arbor simulations of barn-owl toric spines (Sanculi et al., 2020). These are large, hole-containing (genus > 0) spines on space-specific neurons (SSNs) in the external nucleus of the inferior colliculus (ICx). The scientific goal is to characterize how an isolated spine integrates synaptic input, including electrical leak into the rest of the cell.

This documentation is a collaborator-facing overview of the research project, not only the Python package. It covers reconstruction → skeleton → cable model → simulation, plus the software that sits around this repo.

What we are asking

An isolated toric-spine mesh is not a whole neuron. The working model is:

  1. Reconstruct the spine surface (and active zones) from EM.
  2. Fit a 1D cable (SWC) that preserves volume, surface area, and topological loops.
  3. Attach a cylindrical sink at the neck so charge can leak into a stand-in for dendrite/soma.
  4. Drive synapses from axon maps and record voltages (sink, compartments, Dash / PDF / k-matrix).

Sanculi et al. reconstructed 76 toric spines on Type I SSNs (Type II cells have ordinary spines). Individual toric spines can collect many active zones from many axons, while remaining unconnected to most nearby axons — a candidate locus of integration and learning.

A parallel comparison morphology — a synthetic dendrite with classical neck+head spines — lives in toric_spines_sim.geometry.dendrite (tutorial 21_spiny_dendrite; older demo: notebooks/misc/spiny_dendrite_demo). Neurosignature compares systems by descriptors of input–output dynamics rather than by geometry. A full “SSN whole-cell” reconstruction pipeline is not in this repo; work here is isolated spines plus a sink.

Pipeline

flowchart LR
  imod["IMOD .mod"] --> obj["OBJ mesh"]
  obj --> skel["MCFS skeleton"]
  skel --> swc["MASCAF SWC"]
  swc --> sink["append sink"]
  az["AZ / NFF"] --> syn["synpts"]
  sink --> sim["TSModel / TSSimulator"]
  syn --> sim
  axons["axon maps"] --> sim
  sim --> out["traces, k-matrix, Dash, PDF"]

Supported automation for skeletonization and cable fitting is in this repo via pymcfs and mascaf (uv sync, then scripts/skeletonize_meshes.py / scripts/fit_swc.py). CGAL / CGALLab remain valid for interactive mesh repair and for exploring mean-curvature skeletonization by hand; they are not required to run the current pipeline.

High-level path in code: mesh → skeleton → SWC (# CYCLE_BREAK / # MULTI_NECK) → sink → TSModel / TSRecipe → event generators → TSSimulator.run() → traces, k-matrix, Dash / PDF.

Where to go next