act
provides tools for optimization-based parameter selection for biologically realistic cell models developed in NEURON. The project is inspired by the ASCT library.
act
relies on a simulation-based optimization, i.e., for a pipeline
Parameters -> Black-box simulator -> Simulated data
it tries to obtain parameter estimates indirectly by working with simulated data.
Currently, act
can be installed from GitHub using pip or locally with the standard pip
installation process.
pip install act-neuron
git clone https://github.com/V-Marco/ACT.git
cd ACT
pip install .
Conceptually, act
requires three components.
- A
.hoc
file which declares the cell's properties. - Modfiles for this
.hoc
file. - Target voltage data of shape (num_cur_inj, ...) to predict on OR parameters to simulate target data with.
act
operates in original and segregated modes. Original mode runs in the following steps:
- Generate a parameter set uniformly randomly from a (lower; upper) interval for each current injection.
- Simulate a voltage trace for each current injection and respective parameter set.
- Extract key summary features (e.g., inter-spike time), and keep parameter sets for those voltage traces which match the target voltage trace in these summary features.
- Repeat steps 1-3 until the specified number of current injections is matched.
- Train a neural network model to predict conductance values from a voltage trace using saved sets as targets.
- Predict conductance values by applying the trained model to the target voltage data. Take the maximum of each predicted value across all current injections.
Segregated mode changes step 5 so that the model is trained on regions of a voltage trace. The regions can be specified in terms of time (X-axis) or voltage (Y-axis) bounds.
Simulations' parameters are defined as python
classes in simulation/simulation_constants.py
.
- Names of parameters to optimize for are defined in the
params
property. The names must match the hoc file. Lower and upper bounds are specified inlows
andhighs
properties. - Segregated parameters and respective time/voltage bounds are specified as lists-of-lists in the respective
segr_...
properties.
simulation/simulation_configs.py
is an example of the simulation configs that can be read by ACT
simulation/run_simulation.py
is an example script of running act
on Pospichil's cells.
simulation/analyze_res.py
is an example script which gives a summary of the model's quality.
ACT can also generate traces over a large parameter space (#amps * #parameter-splits-between-low-high ^ #parameters) To do this you must generate a BMTK network, and run using MPI. Eg:
pip install -e .
module load mpich-x86_64-nopy
pip install mpi4py bmtk
cd simulation
python generate_traces.py build
sbatch batch_generate_traces.sh
# This will create:
# parameter_values.json which contains every permutation of parameters
# output/v_report.h5 which contains the resulting trace
python run_simulation.py
python analyze_res.py
See labinstall.sh for installation of core environment.
examples/Pospischil_sPYr/main.ipynb
example of running act
on Pospichil's cells
On Google Colab: