A Quick Start Guide To Running Models in Cerebmodels¶
Before proceeding it should be pointed out that CerebUnit is based on Python3 and no longer supports Python2.7.
1. Set-up¶
1.1. Getting cerebmodels and cerebunit (cerebtests)¶
- For obvious reasons getting cerebmodels is essential for following the steps given below.
- To get cerebmodels do
git clone https://github.com/cerebunit/cerebmodels.git. - Although, not essential to install cerebtests especially if you have not intention to run validation tests it is recommended to install cerebtests.
- To install cerebtests do
pip install git+https://github.com/cerebunit/cerebtests.git.
1.2. Set working directory to the root of ~/cerebmodels/¶
- To do this in console terminal or jupyter notebook do
cd cerebmodels.
1.3. Import ExecutiveControl of cerebmodels¶
from executive import ExecutiveControl as ec
2. Search for models and picking a model¶
Apart from going through the sub-directories of cerebmodels and searching for models, the ExecutiveControl can provide them to you.
2.1. Get model scales¶
Models available in cerebmodels ranges across various modelling scales, from sub-cellular models, cellular models to network models. So, to see the modelling scales available in the current cerebmodels do
ec.list_modelscales()
2.2. Get available models for a particular scale¶
Based on the model scale currently available within cerebmodels one can get the list of available model for that particular scale with
ec.list_models( modelscale = <string> )
For example ec.list_models( mdoelscale = "cells" ) will return the list of available models for “cells.”
2.3. Picking a desired model¶
To choose a desired model for a particular model scale, one has to call
ec.choose_model( modelscale = <string>, modelname = <string> )
An example is desired_model = ec.choose_model( modelscale = "cells", modelname = "PC2003Khaliq" ).
3. Launching (executing) the desired model¶
3.1. Setting the parameters¶
Let us consider three scenarios:
- launch without stimulation
- launch with stimulation
- launch with capability
The first two examples will be demonstrated with “raw” launch, i.e., launching without capability. The third example with “capability”; note that it may also be launched with or without stimulation, but with capability. Here, capability with stimulation will be the example.
3.1.1. Parameters for case-1 (without stimulation)¶
Only one set of parameter is needed for this scenario, the run-time parameters. Say,
runtimeparam_c1 = { "dt": 0.025, "celsius": 37, "tstop": 500, "v_init": -65 }
3.2. Executing the model¶
The following commands for respective three scenarios
for scenario 1
exc1 = ExecutiveControl()
desired_model_c1 = exc1.launch_model( parameters = runtimeparam_c1,
onmodel = desired_model )
which is the same as
desired_model_c1 = exc1.launch_model( parameters = runtimeparam_c1,
onmodel = desired_model,
mode = "raw" )
for scenario 2
exc2 = ExecutiveControl()
desired_model_c2 = exc2.launch_model( parameters = runtimeparam_c2,
onmodel = desired_model,
stimparameters = stimparam,
stimloc = desired_model.soma )
for scenario 3
exc3 = ExecutiveControl()
desired_model_c3 = exc3.launch_model( parameters = runtimeparam_c3,
onmodel = desired_model,
stimparameters = stimparam,
stimloc = desired_model.soma,
capabilities = {"model": "produce_soma_restVm",
"vtest": ProducesEphysMeasurement},
mode = "capability" )
3.3. Saving the responses¶
The ExecutiveControl for cerebmodels can also save response. It saves it in a HDF5 file (.h5 extension). The file is saved based on NWB 2.0 scheme.
To save response the required response is excN.save_response(). Thus, for the each of the above three scenarios just replace the N with 1, 2 or 3 as shown below
desired_model_c1.fullfilename = exc1.save_response()desired_model_c2.fullfilename = exc2.save_response()desired_model_c3.fullfilename = exc3.save_response()
4. Visualizing the response¶
4.1. List available model regions¶
ec.list_modelregions( chosenmodel = desired_model )
4.2. Visualize all events (defined by epochs)¶
exc1.visualize_all( chosenmodel = desired_model_c1, roi = "soma v" )
exc2.visualize_all( chosenmodel = desired_model_c2, roi = "soma v" )
exc3.visualize_all( chosenmodel = desired_model_c3, roi = "soma v" )
4.3. Visualize all events in one plot¶
exc1.visualize_aio( chosenmodel = desired_model_c1, roi = "soma v" )
exc2.visualize_aio( chosenmodel = desired_model_c2, roi = "soma v" )
exc3.visualize_aio( chosenmodel = desired_model_c3, roi = "soma v" )