Skip to content
Snippets Groups Projects
Commit e06ecfec authored by Didi Hou's avatar Didi Hou
Browse files

update multi-area-model.ipynb

parent ce7733de
No related branches found
No related tags found
1 merge request!35Pre-release MAM v1.1.0
%% Cell type:markdown id:b1331599 tags: %% Cell type:markdown id:b1331599 tags:
# Down-scaled multi-area model # Down-scaled multi-area model
%% Cell type:markdown id:d782e527 tags: %% Cell type:markdown id:d782e527 tags:
### Create config file ### Create config file
%% Cell type:code id:9b985084 tags: %% Cell type:code id:9b985084 tags:
``` python ``` python
with open('config.py', 'w') as fp: with open('config.py', 'w') as fp:
fp.write( fp.write(
'''import os '''import os
base_path = os.path.abspath(".") base_path = os.path.abspath(".")
data_path = os.path.abspath("simulations") data_path = os.path.abspath("simulations")
jobscript_template = "python {base_path}/run_simulation.py {label}" jobscript_template = "python {base_path}/run_simulation.py {label}"
submit_cmd = "bash -c" submit_cmd = "bash -c"
''') ''')
``` ```
%% Cell type:markdown id:4a853b97 tags: %% Cell type:markdown id:4a853b97 tags:
### Import dependencies ### Import dependencies
%% Cell type:code id:96517739 tags: %% Cell type:code id:96517739 tags:
``` python ``` python
%matplotlib inline %matplotlib inline
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import os import os
import nest import nest
from multiarea_model import MultiAreaModel from multiarea_model import MultiAreaModel
from config import base_path from config import base_path
``` ```
%% Cell type:code id:7e07b0d0 tags: %% Cell type:code id:7e07b0d0 tags:
``` python ``` python
!pip install nested_dict dicthash !pip install nested_dict dicthash
``` ```
%% Cell type:markdown id:2f429063 tags: %% Cell type:markdown id:2f429063 tags:
### Jupyter notebook display format setting ### Jupyter notebook display format setting
%% Cell type:code id:1d440c07-9b69-4e52-8573-26b13493bc5a tags: %% Cell type:code id:1d440c07-9b69-4e52-8573-26b13493bc5a tags:
``` python ``` python
# specify the format the table in output # specify the format the table in output
%%html %%html
<style> <style>
table {float:left} table {float:left}
</style> </style>
``` ```
%% Cell type:markdown id:89d4866d tags: %% Cell type:markdown id:89d4866d tags:
<br> <br>
%% Cell type:markdown id:df83f5ea-1c4b-44d3-9926-01786aa46e14 tags: %% Cell type:markdown id:df83f5ea-1c4b-44d3-9926-01786aa46e14 tags:
## Specify paramters of model ## Specify paramters of model
%% Cell type:markdown id:2cedd26b tags: %% Cell type:markdown id:2cedd26b tags:
### 1. Scaling factor (scale_down_to) ### 1. Scaling factor (scale_down_to)
**Scaling factor** (scale_down_to) is the parameter which defines the the ratio of the full scale multi-area model being down-scaled to a model with fewer neurons and indegrees so as to be simulated on machines with lower computational ability and the simulation results can be obtained within relative shorter period of time.<br> <br> **Scaling factor** (scale_down_to) is the parameter which defines the the ratio of the full scale multi-area model being down-scaled to a model with fewer neurons and indegrees so as to be simulated on machines with lower computational ability and the simulation results can be obtained within relative shorter period of time.<br> <br>
Neurons and indegrees are both scaled down to 0.5%, where the model can usually be simulated on a local machine.<br> **Warning**: This will not yield reasonable dynamical results from the network and is only meant to demonstrate the simulation workflow.** Neurons and indegrees are both scaled down to 0.5%, where the model can usually be simulated on a local machine.<br> **Warning**: This will not yield reasonable dynamical results from the network and is only meant to demonstrate the simulation workflow.**
%% Cell type:markdown id:f66dbf02 tags: %% Cell type:markdown id:f66dbf02 tags:
|Parameter |Parameter description |Variable |Value |Value description | |Parameter |Parameter description |Variable |Value |Value description |
|:-------------:|:----------------------|:---------------------------:|:------------------:|:------------------| |:-------------:|:----------------------|:---------------------------:|:------------------:|:------------------|
|Scaling factor | | scale_down_to |0.005 | | |Scaling factor | | scale_down_to |0.005 | |
%% Cell type:code id:e940bb6b tags: %% Cell type:code id:e940bb6b tags:
``` python ``` python
scale_down_to = 0.005 # Change it to 1. for running the fullscale network scale_down_to = 0.005 # Change it to 1. for running the fullscale network
``` ```
%% Cell type:markdown id:d53f1eab tags: %% Cell type:markdown id:d53f1eab tags:
### 2. Model and simulation parameters ### 2. Model, simulation and theory parameters
%% Cell type:markdown id:e779c727 tags:
The parameters fall into 3 categories: Model parameters, Simulation parameters, Theory parameters.<br>
**Model parameters**<br>
Model paramters are the most important among all the paramters, it directly affect the model itself and thus have a great impact on the simulation results. Model paramters define the connection, input, neuron, and network charateristics of the model.
* Connection paramters
* Input parameters
* Neuron parameters
* Network parameters<br>
**Simualation parameters**<br>
Simulation parameters define the paramters that influence the process of simulation, inlcuding the simulation time, the number of processes and theads used to run the simulation.<br>
**Theory parameters**<br>
Theory parameters defines ...
%% Cell type:markdown id:14bac1ce-4ba0-47ec-84b2-9d3c72bc96ec tags: %% Cell type:markdown id:14bac1ce-4ba0-47ec-84b2-9d3c72bc96ec tags:
#### 2.1 Connection parameters (conn_params) #### 2.1 Model parameters
%% Cell type:markdown id:106a6a5e tags:
* Connection parameters (conn_params)
%% Cell type:markdown id:41d80271-f60e-49f4-9759-f8ad26097b2d tags: %% Cell type:markdown id:41d80271-f60e-49f4-9759-f8ad26097b2d tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------:|:----------------------|:---------------------------:|:------------------:|:------------------| |:---------:|:----------------------|:---------------------------:|:------------------:|:------------------|
| | | replace_non_simulated_areas | 'het_poisson_stat' | | | | | replace_non_simulated_areas | 'het_poisson_stat' | |
| | | g | -11. | | | | | g | -11. | |
| | | K_stable | 'K_stable.npy' | | | | | K_stable | 'K_stable.npy' | |
| | | fac_nu_ext_TH | 1.2 | | | | | fac_nu_ext_TH | 1.2 | |
| | | fac_nu_ext_5E | 1.125 | | | | | fac_nu_ext_5E | 1.125 | |
| | | fac_nu_ext_6E | 1.41666667 | | | | | fac_nu_ext_6E | 1.41666667 | |
| | | av_indegree_V1 | 3950. | | | | | av_indegree_V1 | 3950. | |
%% Cell type:code id:7af3a191 tags:
``` python
conn_params = {'replace_non_simulated_areas': 'het_poisson_stat',
'g': -11.,
'K_stable': 'K_stable.npy',
'fac_nu_ext_TH': 1.2,
'fac_nu_ext_5E': 1.125,
'fac_nu_ext_6E': 1.41666667,
'av_indegree_V1': 3950.}
```
%% Cell type:markdown id:1688ef55-2fdb-4800-97af-7ea62442c684 tags: %% Cell type:markdown id:1688ef55-2fdb-4800-97af-7ea62442c684 tags:
#### 2.2 Input parameters (input_params) * Input parameters (input_params)
%% Cell type:markdown id:5127920c-2a89-42d0-9d87-889f7b7474d9 tags: %% Cell type:markdown id:5127920c-2a89-42d0-9d87-889f7b7474d9 tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------:|:----------------------|:-----------------------------:|:--------------------:|:------------------| |:---------:|:----------------------|:-----------------------------:|:--------------------:|:------------------|
| | | rate_ext | 10. | | | | | rate_ext | 10. | |
%% Cell type:code id:2195cddb-bd82-47a8-ba74-cf0169a6801d tags:
``` python
input_params = {'rate_ext': 10.}
```
%% Cell type:markdown id:aefa84c8-baaa-4afa-96c6-5d57d174b286 tags: %% Cell type:markdown id:aefa84c8-baaa-4afa-96c6-5d57d174b286 tags:
#### 2.3 Neuron parameters (neuron_params) * Neuron parameters (neuron_params)
%% Cell type:markdown id:ab5eb287-e638-401f-9e2c-892f88c3ee90 tags: %% Cell type:markdown id:ab5eb287-e638-401f-9e2c-892f88c3ee90 tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------:|:----------------------|:---------------------------:|:------------------:|:------------------| |:---------:|:----------------------|:---------------------------:|:------------------:|:------------------|
| | | V0_mean | -150. | | | | | V0_mean | -150. | |
| | | V0_sd | 50. | | | | | V0_sd | 50. | |
%% Cell type:code id:f69ad836-70b8-4ebe-b46a-25f48dc3ca7c tags: %% Cell type:markdown id:ea4e01aa tags:
``` python * Network parameters (network_params)
neuron_params = {'V0_mean': -150.,
'V0_sd': 50.}
```
%% Cell type:markdown id:cdb50fb3-4bb9-446a-ab1c-d008b7e5bfa4 tags:
#### 2.4 Network parameters (network_params) %% Cell type:markdown id:dc4ce111 tags:
%% Cell type:markdown id:3e437aca-1fd0-4296-a0f6-a346b1319903 tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------------------------------------:|:----------------------|:---------------------:|:-----------------------------:|:------------------| |:---------------------------------------:|:----------------------|:---------------------:|:-----------------------------:|:------------------|
| Scaling factor of the number of neurons | | N_scaling | scale_down_to | | | Scaling factor of the number of neurons | | N_scaling | scale_down_to | |
| Scaling factor of the number of synapses| | K_scaling | scale_down_to | | | Scaling factor of the number of synapses| | K_scaling | scale_down_to | |
| Fullscale rates | | fullscale_rates | 'tests/fullscale_rates.json' | | | Fullscale rates | | fullscale_rates | 'tests/fullscale_rates.json' | |
| Input parameters | | input_params | input_params | | | Input parameters | | input_params | input_params | |
| Connections parameters | | connection_params | conn_params | | | Connections parameters | | connection_params | conn_params | |
| Neuron parameters | | neuron_params | neuron_params | | | Neuron parameters | | neuron_params | neuron_params | |
%% Cell type:code id:6e4bed8d tags:
``` python
conn_params = {'replace_non_simulated_areas': 'het_poisson_stat',
'g': -11.,
'K_stable': 'K_stable.npy',
'fac_nu_ext_TH': 1.2,
'fac_nu_ext_5E': 1.125,
'fac_nu_ext_6E': 1.41666667,
'av_indegree_V1': 3950.}
```
%% Cell type:code id:7e4ede2c tags:
``` python
input_params = {'rate_ext': 10.}
```
%% Cell type:code id:f69ad836-70b8-4ebe-b46a-25f48dc3ca7c tags:
``` python
neuron_params = {'V0_mean': -150.,
'V0_sd': 50.}
```
%% Cell type:code id:0aa9a9bf-b95d-4643-82a0-e29a49bb58df tags: %% Cell type:code id:0aa9a9bf-b95d-4643-82a0-e29a49bb58df tags:
``` python ``` python
network_params = {'N_scaling': scale_down_to, network_params = {'N_scaling': scale_down_to,
'K_scaling': scale_down_to, 'K_scaling': scale_down_to,
'fullscale_rates': 'tests/fullscale_rates.json', 'fullscale_rates': 'tests/fullscale_rates.json',
'input_params': input_params, 'input_params': input_params,
'connection_params': conn_params, 'connection_params': conn_params,
'neuron_params': neuron_params} 'neuron_params': neuron_params}
``` ```
%% Cell type:markdown id:a0730f70-ed9b-4664-b677-3dda965a01ef tags: %% Cell type:markdown id:a0730f70-ed9b-4664-b677-3dda965a01ef tags:
### 2.5 Simulation paramters (sim_params) ### 2.2 Simulation paramters (sim_params)
%% Cell type:markdown id:c989ee79-fa3d-405c-a1bf-da8ec884d878 tags: %% Cell type:markdown id:c989ee79-fa3d-405c-a1bf-da8ec884d878 tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------------------:|:----------------------|:--------------------:|:------------------:|:------------------| |:---------------------:|:----------------------|:--------------------:|:------------------:|:------------------|
|Simulation time | |t_sim |2000. | | |Simulation time | |t_sim |2000. | |
|Number of processes | |num_processes |1 | | |Number of processes | |num_processes |1 | |
|Number of local threads| |local_num_threads |1 | | |Number of local threads| |local_num_threads |1 | |
| | |recording_dict |input_params | | | | |recording_dict |input_params | |
| | |record_vm |False | | | | |record_vm |False | |
%% Cell type:code id:21484ed3-295f-4d06-b757-2969aac429a4 tags: %% Cell type:code id:21484ed3-295f-4d06-b757-2969aac429a4 tags:
``` python ``` python
sim_params = {'t_sim': 2000., sim_params = {'t_sim': 2000.,
'num_processes': 1, 'num_processes': 1,
'local_num_threads': 1, 'local_num_threads': 1,
'recording_dict': {'record_vm': False}, 'recording_dict': {'record_vm': False},
'rng_seed': 1} # global random seed 'rng_seed': 1} # global random seed
``` ```
%% Cell type:markdown id:79596d77-c105-45d0-9a57-2d15e31f1189 tags: %% Cell type:markdown id:79596d77-c105-45d0-9a57-2d15e31f1189 tags:
### 2.6. Theory paramters (theory_params) ### 2.3. Theory paramters (theory_params)
%% Cell type:markdown id:18e0deda-1dec-4df8-b994-ef641b3c5aac tags: %% Cell type:markdown id:18e0deda-1dec-4df8-b994-ef641b3c5aac tags:
| Parameter | Parameter description | Variable | Value | Value description | | Parameter | Parameter description | Variable | Value | Value description |
|:---------:|:----------------------|:---------------------:|:-----------------------------:|:------------------| |:---------:|:----------------------|:---------------------:|:-----------------------------:|:------------------|
| | | dt | 0.1 | | | | | dt | 0.1 | |
%% Cell type:code id:41edb350-36c3-4e19-829e-40d6ca9633a0 tags: %% Cell type:code id:41edb350-36c3-4e19-829e-40d6ca9633a0 tags:
``` python ``` python
theory_params = {'dt': 0.1} theory_params = {'dt': 0.1}
``` ```
%% Cell type:markdown id:1472e9c5 tags: %% Cell type:markdown id:1472e9c5 tags:
<br> <br>
%% Cell type:markdown id:de4a6703 tags: %% Cell type:markdown id:de4a6703 tags:
## Instantiate a multi-area model and analyse ## Instantiate a multi-area model and analyse
%% Cell type:markdown id:1fd58841 tags: %% Cell type:markdown id:1fd58841 tags:
### 1. Insantiate a multi-area model ### 1. Insantiate a multi-area model
%% Cell type:code id:ab25f9f8 tags: %% Cell type:code id:ab25f9f8 tags:
``` python ``` python
M = MultiAreaModel(network_params, simulation=True, M = MultiAreaModel(network_params, simulation=True,
sim_spec=sim_params, sim_spec=sim_params,
theory=True, theory=True,
theory_spec=theory_params) theory_spec=theory_params)
``` ```
%% Cell type:markdown id:91649c30 tags: %% Cell type:markdown id:91649c30 tags:
### 2. Predict firing rates from theory ### 2. Predict firing rates from theory
%% Cell type:code id:6a7ddf0e tags: %% Cell type:code id:6a7ddf0e tags:
``` python ``` python
p, r = M.theory.integrate_siegert() p, r = M.theory.integrate_siegert()
print("Mean-field theory predicts an average " print("Mean-field theory predicts an average "
"rate of {0:.3f} spikes/s across all populations.".format(np.mean(r[:, -1]))) "rate of {0:.3f} spikes/s across all populations.".format(np.mean(r[:, -1])))
``` ```
%% Cell type:markdown id:2062ddf3 tags: %% Cell type:markdown id:2062ddf3 tags:
### 3. Extract connectivity ### 3. Extract connectivity
%% Cell type:markdown id:8a7c09e0 tags: %% Cell type:markdown id:8a7c09e0 tags:
The connectivity and neuron numbers are stored in the attributes of the model class. Neuron numbers are stored in `M.N` as a dictionary (and in `M.N_vec` as an array), indegrees in `M.K` as a dictionary (and in `M.K_matrix` as an array). Number of synapses can also be access via `M.synapses` (and in `M.syn_matrix` as an array). The connectivity and neuron numbers are stored in the attributes of the model class. Neuron numbers are stored in `M.N` as a dictionary (and in `M.N_vec` as an array), indegrees in `M.K` as a dictionary (and in `M.K_matrix` as an array). Number of synapses can also be access via `M.synapses` (and in `M.syn_matrix` as an array).
%% Cell type:markdown id:b7396606 tags: %% Cell type:markdown id:b7396606 tags:
#### 3.1 Node indegrees #### 3.1 Node indegrees
%% Cell type:code id:6316ac24 tags: %% Cell type:code id:6316ac24 tags:
``` python ``` python
# Dictionary of nodes indegrees organized as: # Dictionary of nodes indegrees organized as:
# {<source_area>: {<source_pop>: {<target_area>: {<target_pop>: indegree_values}}}} # {<source_area>: {<source_pop>: {<target_area>: {<target_pop>: indegree_values}}}}
M.K M.K
``` ```
%% Cell type:markdown id:253a2aba tags: %% Cell type:markdown id:253a2aba tags:
#### 3.2 Synapses #### 3.2 Synapses
%% Cell type:code id:445a722a tags: %% Cell type:code id:445a722a tags:
``` python ``` python
# Dictionary of synapses that target neurons receive, it is organized as: # Dictionary of synapses that target neurons receive, it is organized as:
# {<source_area>: {<source_pop>: {<target_area>: {<target_pop>: number_of_synapses}}}} # {<source_area>: {<source_pop>: {<target_area>: {<target_pop>: number_of_synapses}}}}
M.synapses M.synapses
``` ```
%% Cell type:markdown id:6c01820e tags: %% Cell type:markdown id:6c01820e tags:
<br> <br>
%% Cell type:markdown id:0c1cad59-81d0-4e24-ac33-13c4ca8c6dec tags: %% Cell type:markdown id:0c1cad59-81d0-4e24-ac33-13c4ca8c6dec tags:
## Run the simulation ## Run the simulation
%% Cell type:code id:15778e9c tags: %% Cell type:code id:15778e9c tags:
``` python ``` python
# run the simulation, depending on the model parameter and downscale ratio, the running time varies largely. # run the simulation, depending on the model parameter and downscale ratio, the running time varies largely.
M.simulation.simulate() M.simulation.simulate()
``` ```
%% Cell type:markdown id:fd6e3232 tags: %% Cell type:markdown id:fd6e3232 tags:
<br> <br>
%% Cell type:markdown id:28e071f8 tags: %% Cell type:markdown id:28e071f8 tags:
## Simulation results analysis ## Simulation results analysis
%% Cell type:markdown id:89c7b7cf tags: %% Cell type:markdown id:89c7b7cf tags:
The following instructions will work when the `simulate` parameter is set to `True` during the creation of the MultiAreaModel object, and the `M.simulation.simulate()` method is executed. The following instructions will work when the `simulate` parameter is set to `True` during the creation of the MultiAreaModel object, and the `M.simulation.simulate()` method is executed.
%% Cell type:code id:dc3b1820 tags: %% Cell type:code id:dc3b1820 tags:
``` python ``` python
# Uncomment the lines in this code cell below to test if the number of synapses created by NEST matches the expected values # Uncomment the lines in this code cell below to test if the number of synapses created by NEST matches the expected values
# """ # """
# Test if the correct number of synapses has been created. # Test if the correct number of synapses has been created.
# """ # """
# print("Testing synapse numbers") # print("Testing synapse numbers")
# for target_area_name in M.area_list: # for target_area_name in M.area_list:
# target_area = M.simulation.areas[M.simulation.areas.index(target_area_name)] # target_area = M.simulation.areas[M.simulation.areas.index(target_area_name)]
# for source_area_name in M.area_list: # for source_area_name in M.area_list:
# source_area = M.simulation.areas[M.simulation.areas.index(source_area_name)] # source_area = M.simulation.areas[M.simulation.areas.index(source_area_name)]
# for target_pop in M.structure[target_area.name]: # for target_pop in M.structure[target_area.name]:
# target_nodes = target_area.gids[target_pop] # target_nodes = target_area.gids[target_pop]
# for source_pop in M.structure[source_area.name]: # for source_pop in M.structure[source_area.name]:
# source_nodes = source_area.gids[source_pop] # source_nodes = source_area.gids[source_pop]
# created_syn = nest.GetConnections(source=source_nodes, # created_syn = nest.GetConnections(source=source_nodes,
# target=target_nodes) # target=target_nodes)
# syn = M.synapses[target_area.name][target_pop][source_area.name][source_pop] # syn = M.synapses[target_area.name][target_pop][source_area.name][source_pop]
# assert(len(created_syn) == int(syn)) # assert(len(created_syn) == int(syn))
``` ```
%% Cell type:markdown id:57401110 tags: %% Cell type:markdown id:57401110 tags:
To obtain the connections information, you can extract the lists of connected sources and targets. Moreover, you can access additional synaptic details, such as synaptic weights and delays. To obtain the connections information, you can extract the lists of connected sources and targets. Moreover, you can access additional synaptic details, such as synaptic weights and delays.
%% Cell type:code id:e7eb052e tags: %% Cell type:code id:e7eb052e tags:
``` python ``` python
conns = nest.GetConnections() conns = nest.GetConnections()
conns_sparse_matrix = conns.get(['source', 'target', 'weight']) conns_sparse_matrix = conns.get(['source', 'target', 'weight'])
srcs = conns_sparse_matrix['source'] srcs = conns_sparse_matrix['source']
tgts = conns_sparse_matrix['target'] tgts = conns_sparse_matrix['target']
weights = conns_sparse_matrix['weight'] weights = conns_sparse_matrix['weight']
``` ```
%% Cell type:markdown id:ef4b2e4b tags: %% Cell type:markdown id:ef4b2e4b tags:
You can determine the area and subpopulation to which the neuron ID ranges belong by referring to the file `network_gids.txt`, which is automatically generated during network creation. You can determine the area and subpopulation to which the neuron ID ranges belong by referring to the file `network_gids.txt`, which is automatically generated during network creation.
%% Cell type:code id:902f2800 tags: %% Cell type:code id:902f2800 tags:
``` python ``` python
# Open the file using a with statement # Open the file using a with statement
with open(os.path.join(M.simulation.data_dir,"recordings/network_gids.txt"), "r") as file: with open(os.path.join(M.simulation.data_dir,"recordings/network_gids.txt"), "r") as file:
# Read the contents of the file # Read the contents of the file
gids = file.read() gids = file.read()
# Print the contents # Print the contents
print(gids) print(gids)
``` ```
%% Cell type:markdown id:875263c1 tags: %% Cell type:markdown id:875263c1 tags:
<br> <br>
%% Cell type:markdown id:9be9287d-4891-4b4b-bd19-cfc2ebed02ac tags: %% Cell type:markdown id:9be9287d-4891-4b4b-bd19-cfc2ebed02ac tags:
## Load and process data of simulation results ## Load and process data of simulation results
%% Cell type:markdown id:8726a93d tags: %% Cell type:markdown id:8726a93d tags:
### 1. Load spike data ### 1. Load spike data
%% Cell type:code id:cb8e3edd tags: %% Cell type:code id:cb8e3edd tags:
``` python ``` python
data = np.loadtxt(M.simulation.data_dir + '/recordings/' + M.simulation.label + "-spikes-1-0.dat", skiprows=3) data = np.loadtxt(M.simulation.data_dir + '/recordings/' + M.simulation.label + "-spikes-1-0.dat", skiprows=3)
``` ```
%% Cell type:markdown id:8793e033 tags: %% Cell type:markdown id:8793e033 tags:
### 2. Compute instantaneous rate per neuron across all populations ### 2. Compute instantaneous rate per neuron across all populations
%% Cell type:code id:9590223b tags: %% Cell type:code id:9590223b tags:
``` python ``` python
tsteps, spikecount = np.unique(data[:,1], return_counts=True) tsteps, spikecount = np.unique(data[:,1], return_counts=True)
rate = spikecount / M.simulation.params['dt'] * 1e3 / np.sum(M.N_vec) rate = spikecount / M.simulation.params['dt'] * 1e3 / np.sum(M.N_vec)
``` ```
%% Cell type:markdown id:ca603daf tags: %% Cell type:markdown id:ca603daf tags:
<br> <br>
%% Cell type:markdown id:57ff902c-d6ce-4f96-9e4f-8e3e7166ab66 tags: %% Cell type:markdown id:57ff902c-d6ce-4f96-9e4f-8e3e7166ab66 tags:
## Simulation results visualization ## Simulation results visualization
%% Cell type:markdown id:38ddd973 tags: %% Cell type:markdown id:38ddd973 tags:
### 1. Instantaneous and mean rate ### 1. Instantaneous and mean rate
%% Cell type:code id:bea30fc8 tags: %% Cell type:code id:bea30fc8 tags:
``` python ``` python
fig, ax = plt.subplots() fig, ax = plt.subplots()
ax.plot(tsteps, rate) ax.plot(tsteps, rate)
ax.plot(tsteps, np.average(rate)*np.ones(len(tsteps)), label='mean') ax.plot(tsteps, np.average(rate)*np.ones(len(tsteps)), label='mean')
ax.set_title('instantaneous rate across all populations') ax.set_title('instantaneous rate across all populations')
ax.set_xlabel('time (ms)') ax.set_xlabel('time (ms)')
ax.set_ylabel('rate (spikes / s)') ax.set_ylabel('rate (spikes / s)')
ax.set_xlim(0, sim_params['t_sim']) ax.set_xlim(0, sim_params['t_sim'])
ax.set_ylim(0, 50) ax.set_ylim(0, 50)
ax.legend() ax.legend()
``` ```
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment