Neuron Quantification using AI

Iman Sabir Ezzat, Randa K Ismail, Ayden Chavez, Marisa Zallocchi, PhD, Steven Fernandes, PhD

Trace auditory-nerve fibers in confocal z-stacks and quantify them per frequency region, separating IHC-innervating from OHC-innervating fibers using the Myo7a hair-cell channel.

Channels expected: Neurofilament (traces the neuron) and Myo7a (hair cells — reference to split IHC vs OHC). Many dyes are recognised automatically (405 / 488 / 514 / 555 / 568 / 594 / 633 / 647 / ATTO / Cy…); every channel in the file is selectable. IHCs form a single row, OHCs form three rows, so the Myo7a band is used to place the IHC/OHC boundary — which you can move, tilt, curve, or switch to an X or Z split axis.

Input: Zeiss .czi z-stacks or generic .tif/.tiff stacks.

Neurofilament channel
Myo7a channel
Frequency region
Analysis scope — pick one to reveal the Myo7a (MIP) + boundary preview. Choose 'Inner hair cells only' when the image has no outer hair cells (no OHC region is created); the split controls below are then ignored

IHC / OHC region split (Myo7a-guided) — used only for 'Split IHC vs OHC'

Split axis (Y = radial, usual · Z = by depth)
Which side is OHC?
0 1
-45 45
-0.5 0.5

When the boundary isn't a straight or simply-bowed line: press Load Myo7a here, draw the boundary freehand across the whole width with the brush, then Apply drawn boundary. The analysis and overlays use your drawn curve (for the current split axis, Y or X). Clear drawn boundary reverts to the sliders above.

Detection is a visual assist: it marks hair cells and proposes a starting boundary. Confirm/adjust against the Myo7a overlay — it does not replace your judgement. Detection can over-mark the tunnel of Corti, so you can override the counts below.

Enter trusted hair-cell counts to normalize by (0 = use the detected count). Fibers-per-hair-cell and length-per-hair-cell are reported per region.

Tracing

0.5 1.5
0 20
0 3
0 10
0 15
Main image view (toggle trace on/off over the original)

Quantification


Method: the Neurofilament channel is smoothed, thresholded (Otsu, scaled by the sensitivity control) and skeletonised in 3D. Each fiber is a connected skeleton component kept only if it is longer than the minimum length and its mean diameter falls in the chosen min/max diameter band. Short terminal spurs and small isolated fragments below the clean-up length are pruned (junction points preserved) so the fiber lines stay clean.

Diameter is measured from the 3D Euclidean distance transform of the segmented Neurofilament mask: at every skeleton voxel the distance to the nearest background voxel (in microns, using the real voxel spacing) is the local radius, so diameter = 2 × that distance. The reported mean/median diameter is taken over all kept skeleton voxels in the region.

Fiber direction classifies each fiber by its principal (PCA) axis relative to the IHC→OHC (radial) axis: fibers aligned with it are radial (the expected innervation direction) and the rest are off-axis — the reviewers' 'majority correct / minority misdirected' split.

Normalization: enter trusted IHC/OHC hair-cell counts (or use detection) and the app reports fibers per hair cell and length per hair cell.

Hair-cell detection (Step 2) always runs Cellpose-SAM (the cpsam model shipped with cellpose 4.x; a fine-tuned model is used automatically if provided at models/hair_cell_cpsam) on the Myo7a max-projection. On dense fields this detection is often incomplete or over-marks the tunnel of Corti, so it is a visual assist: the numbers you trust come from the deterministic pipeline and the manual count override, and the boundary remains yours to set (position, tilt, curvature, or axis). Detection quality improves markedly on a GPU Space.