Skip to content

Cortical Pyramidal: enable slow Na inactivation (INaP sNaP, fast-Na sNa) for biological accuracy #327

@JCorson

Description

@JCorson

Observation

The cortical pyramidal preset registers INaP via ChannelConfig(make_inap_channel, g_max=0.1) at patch_sim/presets.py:236 without extra_kwargs={"slow_inactivation": True}. Fast Na uses make_pospischil_na_channel — which has no slow_inactivation code path at all, unlike make_stn_na_channel.

Real cortical pyramidal cells have both:

  • INaP slow inactivation (Magistretti & Alonso 1999 in entorhinal layer-II stellates; same Na-channel family in cortical pyramidal).
  • Fast-Na slow inactivation — directly demonstrated in cortical pyramidal cells by Fleidervish & Gutnick (1996), J. Physiol. 493:83.

Note: this same Fleidervish & Gutnick 1996 citation is currently used in the codebase to justify enabling slow inactivation on STN (patch_sim/core_channels.py:1819) — it should equally justify enabling it on the cell type the paper actually studied.

Why this matters

Without slow inactivation, the cell can enter pathological depol-block plateaus under sustained drive (the same mechanism #324 fixed in STN). Spike-frequency adaptation is also weaker than literature reports because slow Na inactivation contributes to SFA in cortical neurons.

The current opt-in design is calibration convenience, not biology — the make_inap_channel docstring (patch_sim/additional_channels.py:343-348) explicitly says opt-in exists to preserve the existing AP-shape calibration, not because cortical pyramidal cells lack the gate.

Approach

Mirror the #324 work:

  1. Set extra_kwargs={"slow_inactivation": True} on the INaP ChannelConfig at patch_sim/presets.py:236.
  2. Add a slow_inactivation: bool = False kwarg to make_pospischil_na_channel (mirroring make_stn_na_channel at patch_sim/core_channels.py:1893-1957); wire it on via na_channel_factory=functools.partial(make_pospischil_na_channel, slow_inactivation=True).
  3. Retune g_Na / g_K / g_NaP to keep AP shape and SFA bands within literature.
  4. Add a depol-block recovery test mirroring test_stn_recovers_from_sustained_suprathreshold_drive.
  5. Carry through the UI's _build_neuron round-trip (already fixed in STN: depolarization-block recovery missing — voltage stays pinned at ~−15 mV after high-stim step #324 to preserve extra_kwargs).

Acceptance criteria

  • AP peak ∈ [+20, +45] mV, half-width ∈ [1.0, 2.5] ms, AHP ∈ [−70, −50] mV (existing bands).
  • Spike-frequency adaptation test still passes.
  • Existing test_cp_recovers_from_sustained_suprathreshold_drive still passes.
  • New depol-block recovery test (e.g. +12 µA/cm² × 200 ms → mean V last 200 ms < −50 mV after settling) passes.
  • INaP-using neuron has sNaP and Pospischil Na has sNa columns in current-clamp output.

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions