This repository package contains a standalone NEURON simulation demonstrating the Cavitational Capacitive Drive (CCD) model applied to a cortical Regular Spiking (RS) neuron model, with ultrasound stimulation intensity recorded in mW/cm².
- Author: Dr. Mithun Padmakumar
- Publication Citation: Padmakumar, M., Rajan, D., & Steephen, J. E. (2026). Cavitational capacitive drive: A computationally efficient model for ultrasonic neuromodulation. Journal of Neural Engineering.
Focused Ultrasound Stimulation (FUSS) induces high-frequency acoustic cavitation within lipid bilayers, periodically modulating membrane capacitance (
The CCD model provides a computationally efficient alternative to differential-equation-based intramembrane cavitation models by utilizing pre-computed optimization parameter tables (
Ultrasound intensity (usi) is specified in mW/cm². The parameter tables accept intensity values in the range 10 to 2000 mW/cm².
Ultrasound frequency (usf) is specified in kHz. The accepted frequency range is from 100 to 1000 kHz.
-
main.hoc: Primary HOC entry point script. Constructs the RS neuron model, loads parameter tables, initializes recording vectors, opens GUI panels, and sets up voltage visualization. -
ccd.mod: NMODL mechanism implementing the CCD variable capacitance model. -
ccd_tables.hoc: HOC script initializing optimized parameter lookup tables ($k$ ,$s_e$ ,$s_c$ ) across ultrasound intensities (10–2000 mW/cm²) and frequencies (100–1000 kHz). -
HH_traub.mod: Hodgkin-Huxley fast$Na^+$ and$K^+$ channels for hippocampal/cortical pyramidal cells (Traub & Miles, 1991; Destexhe, 1992). -
IM_cortex.mod: Slow non-inactivating$M$ -current ($K^+$ ) responsible for spike-frequency adaptation (Yamada et al., 1989; Destexhe, 1995). -
GUI.hoc: Graphical User Interface for adjusting CCD parameters (usiin mW/cm²) and selecting output saving operations. -
processes.hoc: HOC helper functions managing mechanism insertion, parameter updates, signal pre-processing (window averaging & downsampling), and data exports.
- NEURON Simulation Environment (v7.8+ or v8.x) with Python support.
- C/C++ compiler (
gcc/clang) for compiling NMODL mechanisms vianrnivmodl.
Open a terminal in the ccd_model_demo directory and run:
nrnivmodlThis compiles ccd.mod, HH_traub.mod, and IM_cortex.mod, creating an x86_64 (or host architecture) binary library directory.
Execute main.hoc using NEURON's GUI wrapper:
nrngui main.hocUpon launching:
- The RunControl panel will automatically open.
- The CCD Parameters panel will open with FUSS enabled (
bFUSS = 1) and default intensityusi = 50 mW/cm². - The Manage Output panel and soma.v(0.5) voltage graph will be visible.
- Click Init & Run in the RunControl panel to execute the simulation.
Clicking buttons in the Manage Output panel exports data files into the ./Results/ directory:
-
Save Raw Vm: Saves time (
ts) and raw soma membrane potential (vsoma) recorded at the original simulation time step (dt = 0.025 / freqms) toResults/ccd_<usi>_<freq>.dat(orResults/baseline.datif FUSS is disabled). -
Save Processed Vm: Applies a 40-point centered moving window average and downsamples by the frequency factor (
freq) to convert the effective resolution todt = 0.025ms. Plots the processed trace in a new NEURON graph window and saves toResults/ccd_processed_<usi>_<freq>.datalong with metadataResults/ccd_processed_<usi>_<freq>_metadata.dat. -
Save Cm Waveform: Exports the full membrane capacitance vector ($C_m(t)$) from
$t=0$ to$t_{stop}$ toResults/ccd_Cm_<usi>_<freq>.dat. -
Save AP Times: Saves the action potential firing timestamps to
Results/APtimes_ccd_<usi>_<freq>.dat.
To integrate the CCD mechanism into your own custom neuron or network models in NEURON:
Always load ccd_tables.hoc before inserting the ccd mechanism:
load_file("ccd_tables.hoc")
Insert ccd into the target sections (e.g., soma) and immediately bind the mechanism's c pointer to NEURON's capacitance variable (cm) for all segments in the target section:
soma {
insert ccd
for (x, 0) {
setpointer c_ccd(x), cm(x)
}
}
Set the ultrasound stimulation parameters (intensity in mW/cm²):
usi_ccd = 100 // Ultrasound intensity in mW/cm2 (supported range: 10 to 2000 mW/cm2)
usf_ccd = 200 // Ultrasound frequency in kHz (supported range: 100 to 1000 kHz)
tbegin_ccd = 20 // FUSS start time in ms
tdur_ccd = 100 // FUSS duration in ms
Optionally, if it is intended to use pulse-width-modulation (PWM), set the following parameters also:
PWMperiod_ccd = 10 // PWM Period ( = 1000 / PRF) in ms, where PRF is the pulse-repetition frequency in Hz.
PWMdc_ccd = 0.2 // Duty Cycle
Because ultrasound oscillations occur at high frequencies (100–1000 kHz), the simulation time step dt MUST be scaled with frequency:
dt = 0.025 / usf_ccd