A BBP Simulation Control application for NEURON
Project description
Neurodamus
Neurodamus is a BBP Simulation Control application for Neuron.
The Python implementation offers a comprehensive Python API for fine tuning of the simulation, initially defined by a BlueConfig file.
Description
Neurodamus is the BBP in-house developed application for setting up large-scale neuronal simulations. It has traditionally been implemented as a set of extensions to Neuron, in the form of .hoc and .mod files. The parameters of the simulation are loaded from a configuration file, by default BlueConfig.
To address several limitations of the Hoc implementation, including development effort, the high-level layers of Neurodamus have been reimplemented in Python. Such implementation effectively makes available to the user a Python module with a comprehensive API, suitable to fine control simulation aspects, as well as inspect and eventually adapt the simulations as intended.
Install
Prerequisites
hdf5
libsonatareport https://github.com/BlueBrain/libsonatareport
neuron with MPI https://github.com/neuronsimulator/nrn
Install neurodamus
git clone https://github.com/BlueBrain/neurodamus.git
cd neurodamus
pip install .
Build special with mod files
Once neuron and neurodamus are installed, you can build special with your mod files:
mkdir mods
cp -r <your-mod-files> mods/
export DATADIR=$(python -c "import neurodamus; from pathlib import Path; print(Path(neurod)mus.__file__).parent / 'data')")
cp -r $DATADIR/mod/* mods/
nrnivmodl -incflags '-I <include-paths-of-our-dependencies>' -loadflags '-L <libs-paths-for-linking>' mods
To use the Blue Brain open models, you can build neurodamus-models. It will also produce a handy build_neurodamus.sh script that calls nrnivmodl with all dependencies to compile your future mod files
build_neurodamus mods/
Examples
Once neurodamus is installed, you should be able to find the executable neurodamus in your path:
$ neurodamus
Usage:
neurodamus <ConfigFile> [options]
neurodamus --help
Among the options you will find flags to tune run behavior.
Neurodamus explicitly depends on MPI libraries for parallel execution. Therefore please use “srun” or “mpiexec” to launch it, according to your platform. If you don’t, complicated error messages may show up. Please remember it.
Even though a neurodamus launcher is provided, for production runs we suggest using special instead. This way has proven to take advantage of optimized math libraries. We hope to bring the same advantages to the launcher script soon.
export NEURODAMUS_PYTHON=$(python -c "import neurodamus; from pathlib import Path; print(Path(neurod)mus.__file__).parent / 'data')")
export HOC_LIBRARY_PATH=<hoc_files_folder>
srun <srun params> <your_built_special> -mpi -python $NEURODAMUS_PYTHON/init.py <neurodamus params>
An example of a full installation with a simulation run can be found in the workflow test simulation_test.yaml.
Docker container
Alternatively, you can start directly a neurodamus docker container where all the packages are built. With the container, you can build your mod files and run simulations. See instructions in docker/README.md.
Building the docker container
The docker container image is built automatically when a new tag is created in the repository, if a container with the specified version doesn’t already exist. On manual pipeline runs, the container image is also built but not automatically pushed to docker-hub; you’ll have to manually start the job in the pipeline you created if you want this to happen. Keep in mind that this is optional, the container image is always pushed to the gitlab registry!
The docker images will be built in the regular gitlab pipeline - if triggered under the right conditions (either manually or through git tag creation) the container jobs will be added to this pipeline.
- If you run the pipeline manually, you can also set versions for the dependencies:
LIBSONATAREPORT_TAG: git tag for libsonata-report
LIBSONATA_TAG: git tag for libsonata
NEURON_COMMIT_ID: commit ID for neuron
REGISTRY_IMAGE_TAG: this will be the container version. Must be specified if you specify one of the others.
Acknowledgment
The development of this software was supported by funding to the Blue Brain Project, a research center of the École polytechnique fédérale de Lausanne (EPFL), from the Swiss government’s ETH Board of the Swiss Federal Institutes of Technology.
Copyright (c) 2005-2023 Blue Brain Project/EPFL
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neurodamus-3.7.1-py3-none-any.whl.
File metadata
- Download URL: neurodamus-3.7.1-py3-none-any.whl
- Upload date:
- Size: 223.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87aa96fb68d84d46fa57faa484e298c494db2886b1ba6f3d858406cc16aafc3d
|
|
| MD5 |
1c2d738bf1113741ade54f77a57b4de6
|
|
| BLAKE2b-256 |
31c677ed1e7216ea0445b52784191c91ff711e67433c4509a23ad9b31485def2
|
Provenance
The following attestation bundles were made for neurodamus-3.7.1-py3-none-any.whl:
Publisher:
publish_wheels.yml on BlueBrain/neurodamus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
neurodamus-3.7.1-py3-none-any.whl -
Subject digest:
87aa96fb68d84d46fa57faa484e298c494db2886b1ba6f3d858406cc16aafc3d - Sigstore transparency entry: 153781875
- Sigstore integration time:
-
Permalink:
BlueBrain/neurodamus@94daa43ece58eeb8a44b8b56846f081e21ee7d7a -
Branch / Tag:
refs/tags/3.7.1 - Owner: https://github.com/BlueBrain
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish_wheels.yml@94daa43ece58eeb8a44b8b56846f081e21ee7d7a -
Trigger Event:
push
-
Statement type: