This repository contains the olfactory bulb network model and the current OBGPU workflow for running it with NEURON/CoreNEURON locally or through remote Slurm jobs.
The maintained path is no longer Docker. Use the conda-based OBGPU setup, a
patched source build of NEURON/CoreNEURON, and the notebook helper layer in
obgpu_experiment_helpers.py.
GPU/CoreNEURON build:
ENABLE_GPU=1 ENV_NAME=OBGPU ./install-obgpu.sh
source tools/setup/activate_obgpu.sh OBGPU
jupyter labPortable CPU-only build:
ENV_NAME=OBGPU-portable ENABLE_GPU=0 OBGPU_CPU_TARGET=portable ./install-obgpu.sh
source tools/setup/activate_obgpu.sh OBGPU-portable
jupyter labThe active notebook is:
notebooks/obgpu-working-experiment.ipynb
See INSTALL.md for host prerequisites, GPU/CUDA notes, smoke tests, and Slurm/Phoenix/Sol setup details.
For a curated maintained-surface health pass after setup or refactors, run:
source tools/setup/activate_obgpu.sh OBGPU
python tools/run_audit.py repo_health --profile maintainedThe modern workflow is:
install-obgpu.shdelegates totools/setup/setup_ob_modern.sh.- The setup script creates or updates the
OBGPUconda environment fromenvironments/environment-modern.yml. - It resets
external/nrn-9.0.1to the pinned upstream ref inthird_party_patches/nrn/manifest.json. - It applies the repo patch stack from
third_party_patches/nrn/. - It builds NEURON/CoreNEURON and compiles the Birgiolas mechanisms.
- Runs are launched by the notebook helper or by
tools/benchmarks/benchmark_ob.py.
The important active files are:
obgpu_experiment_helpers.pytools/benchmarks/benchmark_ob.pytools/remote/olfactorybulb/model.pyolfactorybulb/paramsets/prev_ob_models/Birgiolas2020/Mechanisms/olfactorybulb/result_artifacts.py
Remote notebook runs use Paramiko over SSH and Slurm on the remote host. The old OpenSSH multiplex/rsync path has been removed from the maintained notebook backend because it caused repeated authentication and stale control-socket failures during sweeps.
Use:
build_slurm_remote_config(...)for generic clusters such as Phoenixbuild_sol_remote_config(...)for Sol-specific activation defaults
The notebook auto-publishes the current local HEAD commit to the remote repo
when needed, submits through Slurm, streams live progress, and syncs results
back into local results/notebook_runs/....
See notes/porting/SOL_REMOTE_WORKFLOW.md for the current remote workflow.
Modern runs write timestamped directories under results/notebook_runs/.
Remote sweeps use results/sweeps/. Large soma trace payloads may be stored in
compact NPZ form and loaded lazily by the notebook helper.
Generated results, profiles, temporary archives, and compiled mechanism outputs should not be committed.
olfactorybulb/: core model, parameter sets, database access, and result artifact helpers.prev_ob_models/: historical published models and the active Birgiolas2020 cell/mechanism source used by the network.tools/setup/: OBGPU environment, NEURON/CoreNEURON build, and activation helpers.tools/remote/: Slurm submit/poll/batch helpers used by the notebook.tools/benchmarks/: maintained command-line benchmark/smoke runner.notes/porting/: current porting, setup, and remote workflow notes.blender-files/andmedia/: archival construction/visualization assets; not required for normal notebook runs.
If you use this model or parts of it in your project, please cite:
@phdthesis{birgiolas2019towards,
title={Towards Brains in the Cloud: A Biophysically Realistic Computational Model of Olfactory Bulb},
author={Birgiolas, Justas},
year={2019},
school={Arizona State University}
}