DD023: Proprioceptive Feedback and Motor Coordination (Stretch Receptors)¶
- Status: Proposed (Phase 2, after DD019)
- Author: OpenWorm Core Team
- Date: 2026-02-19
- Supersedes: None
- Related: DD001 (Neural Circuit), DD003 (Body Physics), DD019 (Touch Response — established bidirectional coupling pattern)
TL;DR¶
B-class motor neurons (DB1-7, VB1-11) have stretch-sensitive ion channels that detect local body curvature, providing proprioceptive feedback for stable undulatory locomotion. This feedback loop (Wen et al. 2012) complements the touch response (DD019) and likely stabilizes the locomotion wave by coupling adjacent body segments. Success: locomotion wavelength stability improves to ±10% (vs. ±15% without proprioception), and ablating stretch receptors degrades coordination by >30%.
Quick Action Reference¶
| Question | Answer |
|---|---|
| Phase | Phase 2 |
| Layer | Motor Coordination — see Phase Roadmap |
| What does this produce? | Stretch-sensitive channels on B-class motor neurons (DB, VB), proprioceptive feedback from body curvature to motor pattern, stable undulatory wave propagation |
| Success metric | DD010 Tier 3: locomotion wavelength stability improved (±10% vs. ±15% baseline), proprioceptive ablation (disable stretch receptors) degrades coordination by >30% |
| Repository | openworm/c302 (stretch receptor channel model) + openworm/sibernetic (body curvature readout) — issues labeled dd023 |
| Config toggle | sensory.proprioception: true / neural.stretch_receptors: true in openworm.yml |
| Build & test | docker compose run quick-test with proprioception: true (wave propagates?), docker compose run validate (wavelength stability) |
| Visualize | DD014 sensory/curvature/ layer — body curvature heatmap; neural/ layer — B-class motor neurons with proprioceptive input highlighted |
| CI gate | Tier 3 wavelength validation (±10% with proprioception) blocks merge; backward compat with proprioception: false required |
| --- |
Mission Alignment¶
OpenWorm Mission: "Creating the world's first virtual organism."
DD023 serves this by: Proprioception (self-sensing body position) is how the nervous system knows what the body is doing. Without it, the motor pattern is open-loop (neurons fire blindly). With it, the worm adjusts motor output based on actual body curvature — closed-loop motor control. This is essential for stable, adaptive locomotion.
Goal & Success Criteria¶
| Criterion | Target | DD010 Tier |
|---|---|---|
| Primary: Wavelength stability | ±10% of baseline (improved from ±15% without proprioception) | Tier 3 (blocking) |
| Secondary: Proprioceptive ablation effect | Disabling stretch receptors degrades coordination by >30% (wider wavelength variance) | Tier 3 (blocking) |
| Tertiary: Motor neuron stretch response | B-class neuron calcium increases during local body bending (matches Wen et al. 2012 imaging) | Tier 1 (non-blocking) |
Before: Motor pattern is generated by command interneurons (AVA backward, AVB forward) with no feedback from body state. Wave propagation relies purely on neural connectivity, not mechanical coupling.
After: B-class motor neurons sense local body curvature via stretch-sensitive channels, adjusting their output to maintain smooth wave propagation. Proprioceptive-motor coupling stabilizes locomotion.
Deliverables¶
| Artifact | Path | Format | Example |
|---|---|---|---|
| Stretch receptor channel model | c302/channel_models/stretch_receptor_chan.channel.nml |
NeuroML 2 XML | Curvature-gated cation channel |
| B-class motor neuron templates | cells/DB01Cell.cell.nml, VB01Cell.cell.nml, etc. |
NeuroML 2 XML | Add stretch receptor channel to DD001/DD005 HH models |
| Body curvature readout module | sibernetic/coupling/curvature_readout.py |
Python | Computes local curvature from SPH particle positions |
| Extended bidirectional coupling | sibernetic_c302_closedloop.py (extend DD019's script) |
Python | Add body→motor neuron proprioceptive path |
| Curvature time series (viewer) | OME-Zarr: sensory/curvature/, shape (n_timesteps, n_segments) |
OME-Zarr | Per-segment curvature angle over time |
Repository & Issues¶
| Item | Value |
|---|---|
| Primary repository | openworm/c302 (proprioceptive circuits, stretch receptor channel model) |
| Secondary repository | openworm/sibernetic (body mechanics, curvature readout) |
| Issue label | dd023, proprioception |
| Related DDs | DD001 (Neural Circuit), DD003 (Body Physics), DD002 (Muscle Model) |
How to Build & Test¶
Getting Started (Environment Setup)¶
This DD builds on two repositories: the c302 neural circuit framework (DD001) for stretch receptor channel models on B-class motor neurons, and Sibernetic (DD003) for body curvature readout that feeds proprioceptive signals back to motor neurons.
If you have already completed both DD001 Getting Started and DD003 Getting Started, you are ready for the steps below.
If starting fresh, follow both setup guides first, then return here:
- DD001 Getting Started — clone c302, install neural circuit dependencies
- DD003 Getting Started — clone Sibernetic, install body physics dependencies
Path A — Docker (recommended for newcomers):
cd OpenWorm
docker compose build
This builds both the neural and body Docker stages needed for bidirectional proprioceptive coupling. Then skip to step 2 below.
Path B — Native (for development):
Complete both DD001 native setup and DD003 native setup. No additional pip installs are required beyond what DD001 and DD003 provide. Verify that the B-class motor neuron stretch receptor channel model is present:
# Stretch receptor channel (curvature-gated cation conductance)
ls c302/channel_models/stretch_receptor_chan.channel.nml
# Body curvature readout module
ls sibernetic/coupling/curvature_readout.py
# Note: both files are [TO BE CREATED] — see Deliverables table
Step-by-step¶
- Prerequisites: Neural circuit (DD001) and body physics (DD003) running in simulation stack (DD013)
- Enable proprioceptive feedback: Set
sensory.proprioception: trueinopenworm.ymlto activate the feedback channel between Sibernetic body curvature and B-class motor neurons - Run forward locomotion: Execute simulation for 60 seconds with proprioception enabled
- Measure wave propagation: Body wave should show posterior-to-anterior coordination with wavelength stability ±10%
- Ablation control: Disable proprioceptive feedback (
sensory.proprioception: false) — wave coordination should degrade by >30% - Green light: Wave speed within ±15% of biological value (~0.5 Hz)
- Test scripts:
[TO BE CREATED]
Technical Approach¶
Proprioceptive Feedback Model¶
Proprioceptive feedback is modeled as stretch-sensitive conductance in B-class motor neurons (VB1-VB11, DB1-DB7). The mechanism:
- Curvature readout: Body curvature from Sibernetic SPH particles is converted to local strain at each body segment via
curvature_readout.py - Strain-to-current transduction: Local strain is fed back to ipsilateral B-class motor neurons as a stretch-dependent current (
I_stretch), creating a curvature-gated cation conductance - Traveling wave generation: This coupling creates a traveling wave of motor activation without requiring a central pattern generator — bending at one segment stretches the next posterior segment, activating its motor neurons
- Key parameters: Stretch sensitivity gain (nS/rad), signal propagation delay (ms), segment coupling strength (dimensionless)
- Basis: Wen et al. 2012 proprioceptive coupling model
Code Reuse Opportunities (HIGH-IMPACT)¶
CE_locomotion Stretch Receptor Model¶
- Repository:
openworm/CE_locomotion(pushed 2026-02-18, VERY ACTIVE) - Authors: Dr. Erick Olivares, Prof. Randall Beer
This repo already implements proprioceptive feedback!
What It Contains:
CE_locomotion/
├── StretchReceptor.cpp/h # Proprioceptive model (Wen et al. 2012)
├── NervousSystem.cpp # Neural circuit
├── Muscles.cpp # Muscle model
└── WormBody.cpp # Body mechanics
StretchReceptor Algorithm:
- Detects local body curvature
- Generates stretch-dependent current on B-class motor neurons
- Stabilizes undulatory locomotion wave
Reuse Plan:
# Test CE_locomotion
git clone https://github.com/openworm/CE_locomotion.git
cd CE_locomotion
make
./main # Runs evolution, ~2 minutes
# Inspect StretchReceptor source
cat StretchReceptor.cpp
# Extract: How does it compute stretch? What's the current-curvature relationship?
# Port to Python/NeuroML
# Option A: Rewrite in Python for sibernetic_c302_closedloop.py
# Option B: Convert to NeuroML ComponentType (curvature-gated channel)
Contact Authors: This model is ACTIVE (2026-02-18). Reach out to Erick Olivares and Randall Beer:
- Collaboration opportunity: Integrate their proprioceptive model into c302/Sibernetic
- Compare approaches: CE_locomotion (C++, evolutionary fit) vs. OpenWorm (NeuroML, mechanistic)
- Potential joint publication: "Two Approaches to Whole-Organism Neuromechanical Modeling"
Estimated Time Savings: 30-50 hours (stretch receptor model + validation already done)
CelegansNeuromechanicalGaitModulation¶
- Repository:
openworm/CelegansNeuromechanicalGaitModulation(pushed 2025-08-01)
Neuromechanical gait modulation model that likely incorporates proprioceptive or body-state feedback. May contain curvature-based motor control logic directly applicable to the stretch receptor implementation in this DD.
NicolettiEtAl2024_MN_IN¶
- Repository:
openworm/NicolettiEtAl2024_MN_IN(pushed 2025-11-04)
Motor neuron (MN) and interneuron (IN) HH models (Nicoletti et al. 2024). The B-class motor neurons (DB, VB) are the target cells for stretch receptor channels — these pre-fitted templates provide the starting point to which stretch_receptor_chan.channel.nml gets added.
Alternatives Considered¶
1. No Proprioceptive Feedback (Motor Pattern Only)¶
Rejected: Wen et al. 2012 demonstrated that B-class motor neurons have stretch-sensitive properties essential for undulatory locomotion. Ablating proprioception in real worms degrades wave propagation.
2. Simplified: Use Body Curvature Directly (No Channel Model)¶
Rejected: Skip the stretch receptor channel, directly modulate motor neuron excitability based on curvature. Loses biophysical interpretability (which channels mediate stretch sensing?).
Quality Criteria¶
- Locomotion stability: Wavelength variance reduces from ±15% (no proprioception) to ±10% (with proprioception).
- Proprioceptive ablation: Disabling stretch receptors increases wavelength variance by >30%.
- Stretch-response match: B-class calcium increases during local bending matches Wen et al. 2012 imaging.
Boundaries (Explicitly Out of Scope)¶
- Central pattern generator models: This DD uses proprioceptive feedback for wave propagation, not a CPG.
- Head movement coordination: Head oscillations and foraging movements are handled separately from body wave propagation.
- Omega turns and reversal initiation: Handled by DD019 command interneuron circuits (AVA/AVB/AVD).
- Detailed mechanotransduction channel kinetics: Uses a phenomenological stretch-sensitive conductance rather than modeling individual ion channel gating kinetics.
Context & Background¶
C. elegans locomotion requires coordination of 95 body wall muscle cells along the anterior-posterior axis. Unlike vertebrates, C. elegans may not use a central pattern generator; evidence suggests proprioceptive feedback drives wave propagation (Wen et al. 2012).
B-class motor neurons (VB1-VB11, DB1-DB7) are the primary forward locomotion drivers. The proprioceptive mechanism works as follows: body bending at one segment stretches the next posterior segment, activating motor neurons there, creating a self-propagating traveling wave. This means the body's mechanical state directly drives the neural pattern — a fundamentally different architecture from CPG-based locomotion in larger organisms.
The DD019 bidirectional coupling framework (body-to-neuron feedback channel) provides the infrastructure for this proprioceptive loop. DD023 extends that framework from touch-evoked responses to continuous motor coordination.
References¶
- Wen Q, Po MD, Hulme E, Chen S, Liu X, Bhatt R, et al. (2012). "Proprioceptive coupling within motor neurons drives C. elegans forward locomotion." Neuron 76:750-761. Demonstrates stretch-sensitive properties of B-class motor neurons and proprioceptive wave propagation.
- Fouad AD, Teng S, Mark JR, Liu A, Alvarez-Illera P, et al. (2018). "Distributed rhythm generators underlie Caenorhabditis elegans forward locomotion." eLife 7:e29913. Evidence for distributed oscillators in body segments, complementing proprioceptive coupling.
- Nicoletti M, et al. (2024). Motor neuron and interneuron HH models. Pre-fitted B-class motor neuron templates used as the starting point for stretch receptor channel integration.
Integration Contract¶
Inputs¶
| Input | Source DD | Variable | Format |
|---|---|---|---|
| Body curvature per segment | DD003 | Local curvature from SPH particle positions | Computed via curvature_readout.py |
| B-class motor neuron models | DD001 / DD005 | HH cell templates | NeuroML |
Outputs¶
| Output | Consumer DD | Variable | Format |
|---|---|---|---|
| Stretch receptor current | DD001 | I_stretch on B-class motor neurons |
NeuroML state variable |
| Motor neuron excitability | DD002 | Modulates motor output → muscle activation | Indirect (via DD001→DD002 chain) |