{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tutorial: Point-Neuron Network Models (with PointNet)\n",
"\n",
"In this chapter we will create a heterogeneous network of point-model neurons and use the PointNet simulator which will run the network using the [NEST simulator](https://nest-simulator.readthedocs.io/en/stable/index.html). As with the previous BioNet examples, we will create both a internal recurrently-connected network of different node types and an external network of \"virtual\" neurons that will drive the internal neurons. We'll also show how to drive network activity by using a current clamp.\n",
"\n",
"PointNet, like BioNet and the other BMTK simulators, uses the [SONATA data format](https://github.com/AllenInstitute/sonata/tree/master) to represent networks, set up simulations, and save results. Thus the tools used to build and display biophysically detailed networks in the previous chapters will work very similarily but the parameters will differ a bit. \n",
"\n",
"Requirements:\n",
"* bmtk\n",
"* NEST 2.11+\n",
"\n",
"Scripts for running this tutorial can be found in the directory [sources/chapter05](https://github.com/AllenInstitute/bmtk/tree/develop/docs/tutorial/sources/chapter05).\n",
"\n",
"For more information on the PointNet Simulator, please see the [PointNet Overview](https://alleninstitute.github.io/bmtk/pointnet.html).\n",
"\n",
"For more information on BMTK and SONATA format, please see the [Overview of BMTK](https://alleninstitute.github.io/bmtk/user_guide.html) and [Network Builder](https://alleninstitute.github.io/bmtk/builder.html) pages."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Building the network\n",
"\n",
"There are two ways to generate a network of point neurons. We can either take the existing biophysical network created in the previous chapters and make some minor adjustments to the neuron models or we can build a new network from scratch using the BMTK Builder.\n",
"\n",
"### Converting networks\n",
"If we want to take the BioNet V1 network and change parameters so that the individual neurons are simulated as point neurons we can use the parameters stored in the node and edge \"types\" CSV files and easily change them with a simple text editor (emacs, vi, sublime-text, etc). Here is an example of the old *V1_node_types.csv*: "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
node_type_id
\n",
"
ei
\n",
"
morphology_file
\n",
"
model_processing
\n",
"
pop_name
\n",
"
location
\n",
"
model_template
\n",
"
model_type
\n",
"
dynamics_params
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
100
\n",
"
e
\n",
"
Scnn1a.swc
\n",
"
aibs_perisomatic
\n",
"
Scnn1a
\n",
"
L4
\n",
"
ctdb:Biophys1.hoc
\n",
"
biophysical
\n",
"
472363762_fit.json
\n",
"
\n",
"
\n",
"
1
\n",
"
101
\n",
"
i
\n",
"
Pvalb.swc
\n",
"
aibs_perisomatic
\n",
"
PV
\n",
"
L4
\n",
"
ctdb:Biophys1.hoc
\n",
"
biophysical
\n",
"
472912177_fit.json
\n",
"
\n",
"
\n",
"
2
\n",
"
102
\n",
"
e
\n",
"
NaN
\n",
"
NaN
\n",
"
LIF_exc
\n",
"
VisL4
\n",
"
nrn:IntFire1
\n",
"
point_process
\n",
"
IntFire1_exc_1.json
\n",
"
\n",
"
\n",
"
3
\n",
"
103
\n",
"
i
\n",
"
NaN
\n",
"
NaN
\n",
"
LIF_inh
\n",
"
VisL4
\n",
"
nrn:IntFire1
\n",
"
point_process
\n",
"
IntFire1_inh_1.json
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node_type_id ei morphology_file model_processing pop_name location \\\n",
"0 100 e Scnn1a.swc aibs_perisomatic Scnn1a L4 \n",
"1 101 i Pvalb.swc aibs_perisomatic PV L4 \n",
"2 102 e NaN NaN LIF_exc VisL4 \n",
"3 103 i NaN NaN LIF_inh VisL4 \n",
"\n",
" model_template model_type dynamics_params \n",
"0 ctdb:Biophys1.hoc biophysical 472363762_fit.json \n",
"1 ctdb:Biophys1.hoc biophysical 472912177_fit.json \n",
"2 nrn:IntFire1 point_process IntFire1_exc_1.json \n",
"3 nrn:IntFire1 point_process IntFire1_inh_1.json "
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"\n",
"pd.read_csv('sources/chapter05/converted_network/V1_node_types_bionet.csv', sep=' ')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and here is the *V1_node_types.csv* used for PointNet:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
node_type_id
\n",
"
model_type
\n",
"
model_template
\n",
"
ei
\n",
"
pop_name
\n",
"
location
\n",
"
model_processing
\n",
"
dynamics_params
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
100
\n",
"
point_process
\n",
"
nest:iaf_psc_alpha
\n",
"
e
\n",
"
Scnn1a
\n",
"
VisL4
\n",
"
NaN
\n",
"
472363762_point.json
\n",
"
\n",
"
\n",
"
1
\n",
"
101
\n",
"
point_process
\n",
"
nest:iaf_psc_alpha
\n",
"
i
\n",
"
PV
\n",
"
VisL4
\n",
"
NaN
\n",
"
472912177_point.json
\n",
"
\n",
"
\n",
"
2
\n",
"
102
\n",
"
point_process
\n",
"
nest:iaf_psc_alpha
\n",
"
e
\n",
"
LIF_exc
\n",
"
VisL4
\n",
"
NaN
\n",
"
IntFire1_exc_point.json
\n",
"
\n",
"
\n",
"
3
\n",
"
103
\n",
"
point_process
\n",
"
nest:iaf_psc_alpha
\n",
"
i
\n",
"
LIF_inh
\n",
"
VisL4
\n",
"
NaN
\n",
"
IntFire1_inh_point.json
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" node_type_id model_type model_template ei pop_name location \\\n",
"0 100 point_process nest:iaf_psc_alpha e Scnn1a VisL4 \n",
"1 101 point_process nest:iaf_psc_alpha i PV VisL4 \n",
"2 102 point_process nest:iaf_psc_alpha e LIF_exc VisL4 \n",
"3 103 point_process nest:iaf_psc_alpha i LIF_inh VisL4 \n",
"\n",
" model_processing dynamics_params \n",
"0 NaN 472363762_point.json \n",
"1 NaN 472912177_point.json \n",
"2 NaN IntFire1_exc_point.json \n",
"3 NaN IntFire1_inh_point.json "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv('sources/chapter05/converted_network/V1_node_types.csv', sep=' ')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Changes:\n",
"* **model_type** - PointNet will not support the \"biophysical\" model_type and only support \"point_process\" neuron models.\n",
"* **model_template** - nrn:IntFire1 and ctdb:Biophys1.hoc are special directives for running NEURON based models. Instead we replaced them with the \"nest:\\\" directive (note we can replace iaf_psc_alpha with any valid NEST model).\n",
"* **dynamics_params** - We have new json parameters files for the new NEST based models. These parameters are specific to both the cell type being modelled and the type of model used.\n",
"* **model_processing** - \"aibs_perisomatic\" is a special command for adjusting the morphology of biophysical models, and since our NEST-based models do not have a morphology we set it to none which tells the simulator to use the models as-is (note: you can implement custom model_processing functions for PointNet that will be explained later)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We must also adjust the *edges_types.csv* files:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
edge_type_id
\n",
"
target_query
\n",
"
source_query
\n",
"
syn_weight
\n",
"
model_template
\n",
"
delay
\n",
"
weight_sigma
\n",
"
weight_function
\n",
"
dynamics_params
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
100
\n",
"
pop_name=='Scnn1a'
\n",
"
ei=='e'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
50.0
\n",
"
wmax
\n",
"
ExcToExc.json
\n",
"
\n",
"
\n",
"
1
\n",
"
101
\n",
"
pop_name=='LIF_exc'
\n",
"
ei=='e'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
50.0
\n",
"
wmax
\n",
"
instantaneousExc.json
\n",
"
\n",
"
\n",
"
2
\n",
"
102
\n",
"
ei=='i'&model_type=='point_process'
\n",
"
ei=='i'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
InhToInh.json
\n",
"
\n",
"
\n",
"
3
\n",
"
103
\n",
"
ei=='i'&model_type=='point_process'
\n",
"
ei=='i'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
instantaneousInh.json
\n",
"
\n",
"
\n",
"
4
\n",
"
104
\n",
"
ei=='e'&model_type=='point_process'
\n",
"
ei=='i'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
InhToExc.json
\n",
"
\n",
"
\n",
"
5
\n",
"
105
\n",
"
ei=='e'&model_type=='point_process'
\n",
"
ei=='i'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
instantaneousInh.json
\n",
"
\n",
"
\n",
"
6
\n",
"
106
\n",
"
pop_name=='PV'
\n",
"
ei=='e'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
ExcToInh.json
\n",
"
\n",
"
\n",
"
7
\n",
"
107
\n",
"
pop_name=='LIF_inh'
\n",
"
ei=='e'
\n",
"
2
\n",
"
static_synapse
\n",
"
2
\n",
"
NaN
\n",
"
wmax
\n",
"
instantaneousExc.json
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" edge_type_id target_query source_query syn_weight \\\n",
"0 100 pop_name=='Scnn1a' ei=='e' 2 \n",
"1 101 pop_name=='LIF_exc' ei=='e' 2 \n",
"2 102 ei=='i'&model_type=='point_process' ei=='i' 2 \n",
"3 103 ei=='i'&model_type=='point_process' ei=='i' 2 \n",
"4 104 ei=='e'&model_type=='point_process' ei=='i' 2 \n",
"5 105 ei=='e'&model_type=='point_process' ei=='i' 2 \n",
"6 106 pop_name=='PV' ei=='e' 2 \n",
"7 107 pop_name=='LIF_inh' ei=='e' 2 \n",
"\n",
" model_template delay weight_sigma weight_function dynamics_params \n",
"0 static_synapse 2 50.0 wmax ExcToExc.json \n",
"1 static_synapse 2 50.0 wmax instantaneousExc.json \n",
"2 static_synapse 2 NaN wmax InhToInh.json \n",
"3 static_synapse 2 NaN wmax instantaneousInh.json \n",
"4 static_synapse 2 NaN wmax InhToExc.json \n",
"5 static_synapse 2 NaN wmax instantaneousInh.json \n",
"6 static_synapse 2 NaN wmax ExcToInh.json \n",
"7 static_synapse 2 NaN wmax instantaneousExc.json "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv('sources/chapter05/converted_network/V1_V1_edge_types.csv', sep=' ')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **model_template** has been changed to use a NEST based model type (static_synapse)\n",
"* Use different **dynamics_parameter** files \n",
"* It's important to readjust **syn_weight** as values appropriate for NEURON based models are oftern wrong for NEST based models. \n",
"\n",
"Notice we don't have to change any of the hdf5 files. The network topology remains the same. This demonstrates the power of such an approach for comparing networks at different levels of resolution."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Building a model from scratch\n",
"\n",
"We can use the BMTK Network Builder to create new network files just for point-based modeling.\n",
"\n",
"#### V1 Network\n",
"\n",
"First lets build a \"V1\" network of 400 cells, split into 4 different populations.\n",
"\n",
"##### Set nodes\n",
"\n",
"See [tutorial 2](tutorial_02_single_cell_syn.ipynb) and [tutorial 3](tutorial_03_single_pop.ipynb) for more details about .add_nodes() parameters."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from bmtk.builder.networks import NetworkBuilder\n",
"from bmtk.builder.auxi.node_params import positions_columinar\n",
"\n",
"net = NetworkBuilder(\"V1\")\n",
"net.add_nodes(N=80, # Create a population of 80 neurons\n",
" positions=positions_columinar(N=80, center=[0, 50.0, 0], max_radius=30.0, height=100.0),\n",
" pop_name='Scnn1a', location='VisL4', ei='e', # optional parameters\n",
" model_type='point_process', # Tells the simulator to use point-based neurons\n",
" model_template='nest:iaf_psc_alpha', # tells the simulator to use NEST iaf_psc_alpha models\n",
" dynamics_params='472363762_point.json' # File containing iaf_psc_alpha mdoel parameters\n",
" )\n",
"\n",
"net.add_nodes(N=20, pop_name='PV', location='VisL4', ei='i',\n",
" positions=positions_columinar(N=20, center=[0, 50.0, 0], max_radius=30.0, height=100.0),\n",
" model_type='point_process',\n",
" model_template='nest:iaf_psc_alpha',\n",
" dynamics_params='472912177_point.json')\n",
"\n",
"net.add_nodes(N=200, pop_name='LIF_exc', location='L4', ei='e',\n",
" positions=positions_columinar(N=200, center=[0, 50.0, 0], min_radius=30.0, max_radius=60.0, height=100.0),\n",
" model_type='point_process',\n",
" model_template='nest:iaf_psc_alpha',\n",
" dynamics_params='IntFire1_exc_point.json')\n",
"\n",
"net.add_nodes(N=100, pop_name='LIF_inh', location='L4', ei='i',\n",
" positions=positions_columinar(N=100, center=[0, 50.0, 0], min_radius=30.0, max_radius=60.0, height=100.0),\n",
" model_type='point_process',\n",
" model_template='nest:iaf_psc_alpha',\n",
" dynamics_params='IntFire1_inh_point.json')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Set edges"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from bmtk.builder.auxi.edge_connectors import distance_connector\n",
"\n",
"## E-to-E connections\n",
"net.add_edges(source={'ei': 'e'}, target={'pop_name': 'Scnn1a'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 0.34, 'd_max': 300.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=3.0,\n",
" delay=2.0,\n",
" dynamics_params='ExcToExc.json',\n",
" model_template='static_synapse')\n",
"\n",
"net.add_edges(source={'ei': 'e'}, target={'pop_name': 'LIF_exc'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 0.34, 'd_max': 300.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=3.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousExc.json',\n",
" model_template='static_synapse')\n",
"\n",
"\n",
"### Generating I-to-I connections\n",
"net.add_edges(source={'ei': 'i'}, target={'pop_name': 'PV'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 1.0, 'd_max': 160.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=-3.0,\n",
" delay=2.0,\n",
" dynamics_params='InhToInh.json',\n",
" model_template='static_synapse')\n",
"\n",
"net.add_edges(source={'ei': 'i'}, target={'ei': 'i', 'pop_name': 'LIF_inh'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 1.0, 'd_max': 160.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=-3.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousInh.json',\n",
" model_template='static_synapse')\n",
"\n",
"### Generating I-to-E connections\n",
"net.add_edges(source={'ei': 'i'}, target={'ei': 'e', 'pop_name': 'Scnn1a'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 1.0, 'd_max': 160.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=-3.0,\n",
" delay=2.0,\n",
" dynamics_params='InhToExc.json',\n",
" model_template='static_synapse')\n",
"\n",
"net.add_edges(source={'ei': 'i'}, target={'ei': 'e', 'pop_name': 'LIF_exc'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 1.0, 'd_max': 160.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=-3.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousInh.json',\n",
" model_template='static_synapse')\n",
"\n",
"### Generating E-to-I connections\n",
"net.add_edges(source={'ei': 'e'}, target={'pop_name': 'PV'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 1.0, 'd_max': 300.0, 'nsyn_min': 3, 'nsyn_max': 25},\n",
" syn_weight=6.0,\n",
" delay=2.0,\n",
" dynamics_params='ExcToInh.json',\n",
" model_template='static_synapse')\n",
"\n",
"\n",
"net.add_edges(source={'ei': 'e'}, target={'pop_name': 'LIF_inh'},\n",
" connection_rule=distance_connector,\n",
" connection_params={'d_weight_min': 0.0, 'd_weight_max': 0.26, 'd_max': 300.0, 'nsyn_min': 3, 'nsyn_max': 7},\n",
" syn_weight=3.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousExc.json',\n",
" model_template='static_synapse')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Build the main network"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"net.build()\n",
"net.save_nodes(output_dir='sim_ch05/network')\n",
"net.save_edges(output_dir='sim_ch05/network')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"source": [
"### Building external network\n",
"\n",
"Next we want to create an external network of \"virtual cells\" with spike-trains that will synapse onto our V1 cells and drive activity. We will call this external network \"LGN\" and it contains 500 excitatory cells."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"lgn = NetworkBuilder('LGN')\n",
"lgn.add_nodes(N=500, pop_name='tON', potential='exc', model_type='virtual')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use a special function for setting the number of synapses between the LGN --> V1 cells. The select_source_cells function will be called during the build process."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"def select_source_cells(sources, target, nsources_min=10, nsources_max=30, nsyns_min=3, nsyns_max=12):\n",
" total_sources = len(sources)\n",
" nsources = np.random.randint(nsources_min, nsources_max)\n",
" selected_sources = np.random.choice(total_sources, nsources, replace=False)\n",
" syns = np.zeros(total_sources)\n",
" syns[selected_sources] = np.random.randint(nsyns_min, nsyns_max, size=nsources)\n",
" return syns\n",
"\n",
"lgn.add_edges(source=lgn.nodes(), target=net.nodes(pop_name='Scnn1a'),\n",
" iterator='all_to_one',\n",
" connection_rule=select_source_cells,\n",
" connection_params={'nsources_min': 10, 'nsources_max': 25},\n",
" syn_weight=15.0,\n",
" delay=2.0,\n",
" dynamics_params='ExcToExc.json',\n",
" model_template='static_synapse')\n",
"\n",
"lgn.add_edges(source=lgn.nodes(), target=net.nodes(pop_name='PV'),\n",
" connection_rule=select_source_cells,\n",
" connection_params={'nsources_min': 15, 'nsources_max': 35},\n",
" iterator='all_to_one',\n",
" syn_weight=6.0,\n",
" delay=2.0,\n",
" dynamics_params='ExcToInh.json',\n",
" model_template='static_synapse')\n",
"\n",
"lgn.add_edges(source=lgn.nodes(), target=net.nodes(pop_name='LIF_exc'),\n",
" connection_rule=select_source_cells,\n",
" connection_params={'nsources_min': 10, 'nsources_max': 25},\n",
" iterator='all_to_one',\n",
" syn_weight= 10.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousExc.json',\n",
" model_template='static_synapse')\n",
"\n",
"lgn.add_edges(source=lgn.nodes(), target=net.nodes(pop_name='LIF_inh'),\n",
" connection_rule=select_source_cells,\n",
" connection_params={'nsources_min': 15, 'nsources_max': 30},\n",
" iterator='all_to_one',\n",
" syn_weight=10.0,\n",
" delay=2.0,\n",
" dynamics_params='instantaneousExc.json',\n",
" model_template='static_synapse')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we build and save our LGN network."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"lgn.build()\n",
"lgn.save_nodes(output_dir='sim_ch05/network')\n",
"lgn.save_edges(output_dir='sim_ch05/network')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Setting up the PointNet Environment\n",
"\n",
"### Directory Structure\n",
"\n",
"Before running a simulation, we will need to create the runtime environment, including parameter files, run-script and configuration files. If using the tutorial, these files will already be in place. Otherwise we can use the command-line:\n",
"```bash\n",
"$ python -m bmtk.utils.sim_setup \\\n",
" --network sim_ch05/network/ \\\n",
" --include-examples \\\n",
" --tstop 3000.0 \\\n",
" pointnet sim_ch05/\n",
"\n",
"```\n",
"\n",
"or"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"from bmtk.utils.sim_setup import build_env_pointnet\n",
"\n",
"build_env_pointnet(base_dir='sim_ch05', \n",
" network_dir='sim_ch05/network',\n",
" tstop=3000.0, \n",
" dt=0.01,\n",
" include_examples=True, # Copies components files\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The network files are written to **circuit_config.json** and the simulation parameters are written to **simulation_config.json**, which are both linked to the main **config.json** file. The simulation time is set to run for 3000.0 ms (tstop). In general, all the parameters needed to setup and start a simulation are found in the config JSON files, and adjusting network/simulation conditions can be done by editing these JSON files in a text editor."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### LGN input\n",
"\n",
"We need to provide our LGN external network cells with spike-trains so they can activate our recurrent network. Previously we showed how to do this by generating CSV files. We can also use SONATA spike files.\n",
"\n",
"First download the file:\n",
"```bash\n",
" $ cd sim_ch05\n",
" $ wget https://github.com/AllenInstitute/bmtk/raw/develop/examples/spikes_inputs/lgn_spikes.h5\n",
"```\n",
"Then we must edit the simulation_config.json file to tell the simulator to find the file and which network to associate it with.\n",
"\n",
"```json\n",
"{\n",
" \"inputs\": {\n",
" \"LGN_spikes\": {\n",
" \"input_type\": \"spikes\",\n",
" \"module\": \"h5\",\n",
" \"input_file\": \"$BASE_DIR/lgn_spikes.h5\",\n",
" \"node_set\": \"LGN\"\n",
" }\n",
" }\n",
"}\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Running the simulation\n",
"\n",
"The call to sim_setup created a file run_pointnet.py which we can run directly in a command line:\n",
"```bash\n",
"$ python run_pointnet.py config.json\n",
"```\n",
"or if you have MPI setup:\n",
"\n",
"```bash\n",
"$ mpirun -np $NCORES python run_pointnet.py config.json\n",
"```\n",
"\n",
"Or we can run it directly:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,631 [INFO] Created log file\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Created log file\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,651 [INFO] Batch processing nodes for V1/0.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Batch processing nodes for V1/0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,660 [INFO] Batch processing nodes for LGN/0.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Batch processing nodes for LGN/0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,693 [INFO] Setting up output directory\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Setting up output directory\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,694 [INFO] Building cells.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Building cells.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,710 [INFO] Building recurrent connections\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Building recurrent connections\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:58,776 [INFO] Build virtual cell stimulations for LGN_spikes\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Build virtual cell stimulations for LGN_spikes\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:57:59,970 [INFO] Network created.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Network created.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:58:00,001 [INFO] Starting Simulation\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Starting Simulation\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:58:03,008 [INFO] Simulation finished, finalizing results.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Simulation finished, finalizing results.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-10-25 08:58:03,284 [INFO] Done.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:NestIOUtils:Done.\n"
]
}
],
"source": [
"from bmtk.simulator import pointnet\n",
"\n",
"configure = pointnet.Config.from_json('sim_ch05/config.json')\n",
"configure.build_env()\n",
"network = pointnet.PointNetwork.from_config(configure)\n",
"sim = pointnet.PointSimulator.from_config(configure, network)\n",
"sim.run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Analyzing results\n",
"\n",
"Results of the simulation, as specified in the config file, are saved into the output directory. Using the analyzer functions, we can do things like generating a raster plot:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEWCAYAAABMoxE0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABAXklEQVR4nO2de/wXVZn4308IQqIiQvxQVMjwgiHfhNQyWxE1c91F+2lqWGqWbdlu2820fr9d7We7XTatXm21uhaabpqpi3kpb6itmQrITVyFDBaQFEEQBEX0+f0xM1+HYWY+c798vs/79fq8PjNnZs55zpkz5znnOTdRVQzDMAwjK2+pWwDDMAyj3ZgiMQzDMHJhisQwDMPIhSkSwzAMIxemSAzDMIxcmCIxDMMwcmGKxGgNInKxiFxbsJ9fFZF/L9LPpiEi94vIJ+qWw+heTJEYpSEiS0XkeRHZyef2CRG5v0axtkFV/0lVKy9kRWS6iFxadbidcN/ZaBG5UEQeDLk+TES2iMg7RWSkiNwqIs+KiIrI6MC994vIURWJbtSIKRKjbPoBn6tbiL6IOGT9xq8F3isiYwLupwMLVHUh8AbwG+B/5xDT6AJMkRhl8x3gSyIyJOyiiLxXRB4TkfXu/3t918aIyAMiskFE7gaGBZ49XER+LyLrRGSev/YrImeLyDPus38SkWkR4feay9yauIrIWSLyPyLygoh8LSpibqviX0XkdjecR0RkX9/1A0TkbhFZKyJPiciHXffzgGnABSKyUUR+LSLniMivfc8uFpEbfefLRaQnQZrdLyLfEJGHgE3A2wMyjxSR+SLy5ah4AajqCuA+4KOBSx8DrnHveU5VfwQ8FueX0QdQVfvZr5QfsBQ4BrgZuNR1+wRwv3s8FHgRp7DaATjDPd/dvf4wcBmwI/B+YANwrXttT2ANcAJOhehY93w4sBPwErC/e+9I4KAIGS/2+TkaUOBKYBAwAXgVODDi2elumIe68l8HXO9e2wlYDpzjXnsX8AIwzvfspT6/3g6sc+OyB7AMWOG79qJ7rVOa3Q/8D3CQe72/6/YJYAzwNHBewvc3DVjsO98f2AIMD9y3g5tuo+vOc/ar52ctEqMK/gH4WxEZHnD/S5yC6uequlVVfwH8N/BXIrI38G7g/6rqq6r6IPBr37NnAneo6h2q+oaq3g3MwlEs4Jhd3ikig1R1lao+kULeS1R1s6rOA+bhKJQoblHVR1V1K44i6XHdTwSWqurP3Lg9DtwEnBrmiao+g6Moe3CU5m+BZ0XkAOAvgN+p6hvEpJnPu+mq+oR7/TXXbRwwE/hHVb0iYTrcAozwtXg+BtypqqsTPm/0EUyRGKWjjj39NuDCwCWv5u1nGU5rYw/gRVV9OXDNYx/gVNestU5E1gHvA0a6z5wG/A2wyjU9HZBC5D/7jjcBgzPcuw9wWEC+acD/ivHrAeAoHEXyAE5L4i/c3wPuPXFp5rE8xO9pwErgVzHhb4OqbgJuBD4mIuL6cU3S542+gykSoyr+Efgk2xZ4z+IUuH72xinwVgG7+Ud8udc8lgM/V9Uhvt9OqvpNAFX9raoei2PW+m8cc1WVLAceCMg3WFU/7V4PW3bbUyRHuscPsL0iiUszjzC/L8Yxrf2HiPRLEY+rgQ/jmA53ZttWoWEApkiMilDVJcANwN/5nO8A9hORj4jIDiJyGo4J5jZVXYZjqrpERAaIyPvY1nxzLY4J7AMi0k9EBorIUSIySkRGiMhUVwm9CmzEMXVVyW1u3D4qIv3d37tF5ED3+nMEOsJxlMVkYJA6nd2/A44Hdgced++JTLMO8ryGY1bbCbgmxWiu3+H03VyB0/+zxX9RRAbi9GEB7OieG30MUyRGlXwdpyADQFXX4PQlfBGn0/oC4ERVfcG95SPAYcBanBbNNb5nlwNTga8Cq3FaAF/GydNvAb6AU3tfi1Oj91oClaCqG4DjcIbLPotjAvsWbxa6VwHjXLPXf7rPPI2j9H7nnr8EPAM8pKqvu26d0ixOpi3Ah4ARwE+TKBNVVZx034dws9ZmV2ZwWn6bO/lpdB/i5BPDMAzDyIa1SAzDMIxcVKJIXBv24yJym3s+xp28tUREbhCRAa77ju75Evf66CrkMwzDMLJTVYvkc8CTvvNvAZer6jtwJlOd67qfizPk8x3A5e59hmEYRoMpXZGIyCicSVT/7p4LcDRvjme/GjjJPZ7qnuNen+LebxiGYTSUHSoI43s4I0t2ds93B9a5M4EBVvDm3II9cSdTqepWEVnv3r/NiBR3raLzAHbaaaeJBxyQZq6Z0Xb+Z9My9n7rPtsdl+F/XTRBhrTULbM//PWvrWPX/kMK8TeJX3XHPQuzZ89+QVWDq01ko8z1V3CGKf7IPT4KZ6z7MGCJ7569gIXu8UJglO/aH4FhcWFMnDhRjb7FZ2Z9MvS4DP/rom4Zbls5I/UzdctcVr5I4lfdcc8CMEtbstbWEcBfi8hS4Hock9b3gSEi4rWGRvHmrNyVrmLBvb4rzlh5wyiN25+9tW4RGscdqzrNbzSMNylVkajqRao6SlVH40zMuk9Vp+EsHneKe9tZwAz3+Fb3HPf6fa7mNIxeThh5YuhxVoKFZhF+5qUJMqSlbpnrDL/uuNdNXfNIvgJ8QUSW4PSBXOW6XwXs7rp/ge0X+TNaTFE1/7/c469Dj4uiDD/bKENaypa5U/7xh19Ewe6FF/QrTI42vq8iqaKzHQBVvR9nNVNvyexDQ+55hYhlto32c8eq21r3wd3+7K2tkzkJneJVRw3bK6A9uYIyRuWf1157jRUrVvDKK6/0ur2dsTy5/snt7g2y+fVNDOr31tBrQ7YM5cn1T27nl+feBOLk9xg4cCCjRo3irtV3lpaXK1MkhtFU4grNNiq/JHSKVx1x9kyMXthJ037FihXsvPPOjB49mrSzBZa9vJR9dhqd6lrcM1XTSRZVZc2aNaxYsYI71paXl22JFKPP042KIi1tHnDwyiuvsPvuu6dWIn0BEWH33XffprVWBqZIjMro6x2STaYNo7Ti8k8ZSiRq7khR81OqogoFa4rEqIw21vy7VfkVHa+iWjRxI/LKyD9plcK6LesYMmAI67asK1yWLKSRv8y8bIrEMGJoo/JLQtHxKqpFU/aIvDSsf21dpFvYtToYMmBIovs2v76p1PQ0RWJ0DW2289dNE1pedchQlEIYPHhw77HXWrn44ov5l3/5FwDOPvtsxowZQ09PDz09PfzgBz8oJNykbH693P3GTJEYXVMAl2HnT5I2tz97ayFpWOd7qLv2HydDWely7T2rtjn3FIDfbJXFhBWlnL7zne8wd+5c5s6dy9/93d+F3lMVRaepKRKjFR2tdeFPm6iP745VtyVKw04fb5vfQ5mtibLS5bp7n9vmPGi22rX/kO2UgtcnUVaH+7ot67jrrrt4z3vewyGHHMKpp57Kxo0bWbZsGWPHjuWFF17gjTfe4Mgjj+Suu+4C4Fvf+hbjx49nwoQJXHhhsjncRaepKRIjlDJqgf6ae9W17yJaDWk/vmB4RX28wbhUlaZx/pfVogmLZ5EEFYK/BRLW/+C5Je2b8PPlL3+517S1YMGC7cJct2Udf1r1DJdeein33HMPc+bMYdKkSVx22WXss88+fOUrX+HTn/403/3udxk3bhzHHXccd955JzNmzOCRRx5h3rx5XHDBBaFh7yDlThk0RdJFFPmhlVEL9Nfco/zPE4dOEwurrvGXFV4wLp3StMhwqyYsnkUSVAheCyTPqKyo1orftDV+/Pjtwlz/2joef+xxFi1axBFHHEFPTw9XX301y5YtA+ATn/gEL730Ej/5yU96+17uuecezjnnHN76Vmd2+9ChQ0PD3tq7a0c5mCLpItpsGvHIE4cyasVJTDYnjDyxENNOEzq86yasIlF0ukQpCb8CyNMJn6W14qGqHHvssb0KZ9GiRVx1lbMU4aZNm1ixYgUAGzduzBxGGZgiMYwYkiwE+Jd7/HUiJdapQGxCh3fdhFUkik6XKCWRRwEUxeGHH85DDz3EnEVzAHj55Zd5+umnAfjKV77CtGnT+PrXv84nP/lJAI499lh+9rOfsWnTJgDWrl1bi9y21laLCVt4L8sig2EFnN+tqIULi17+PWvYWSkiXYsg6K93HrZKbZGFcB0tprR5xpswmIRpU0Zs5+a1Svwd7knYtGkTo0aN6j3/whe+kOg5fxi79h8CQ2H69Omc89Fz0NecHTQuvfRSVq1axWOPPcZDDz1Ev379uOmmm/jZz37GOeecw9y5c5k0aRIDBgzghBNO4J/+6Z+2C2NQv0HbnJ8w8kR+xJWJZexIUTtkhf2AgcCjwDzgCeAS13068Cdgrvvrcd0F+AGwBJgPHNIpjL68Q2JwV7bbVs5o/Y6BWXbmawtV76LXxl37ssi8aNGi3uOlG//U8f4k97z46oup5SgCT7YkMqbBn0YetGiHxFeBo1V1AtADHC8ih7vXvqyqPe5vruv2QWCs+zsP+HHJ8nUV3WAa6YY4GNmpotUzsN/Ajvc0wczVJsreIVFV1esV6u/+4nY8nApc4z73B5wteUeWKaPRLLplcmRS+lp8O1FFReKV14tZCTfvxMXDDjusdziw91vxlLPreNsWhiy9s11E+onIXOB54G5VfcS99A0RmS8il4vIjq7bnsBy3+MrXLegn+eJyCwRmbV69eoyxW80nfo2ygynLLph5FkUYelYZnz74iiwKgtgf6d9llFev/3db3tHZ3m/Iw45Amhfi6h0RaKqr6tqDzAKOFRE3glcBBwAvBsYirP1bho/r1DVSao6afjw4UWL3BrCam/duvVsN1B1OvbF99amAjhO+TRldeGkVDb8V1XXATOB41V1lWu+ehX4GW9uu7sS2Mv32CjXzTCMEuiLprU2mI2asrpwUkpVJCIyXESGuMeDgGOB//b6PcTZceUkYKH7yK3Ax8ThcGC9qq7azmOjFqoodPqaOabM+CZ5X201JebJi0W1WvwKqZNyWrdlXetaGWkou0UyEpgpIvOBx3D6SG4DrhORBcACYBhwqXv/HcAzOMN/rwQ+U7J8RgqqKHT6mjmmzPi2VUkkoQlx8yukTspp/WvrIheA7AbKHrU1X1XfpaoHq+o7VfXrrvvRqjredTvTG9nlmrvOV9V93euzypSvG+mLpoo0XP7UdzI/m3RJ+Sqx990M/PuRePj3I/nip77E+w46cpv9SKKUzwknnMD6dS/FhnfUUUcxa1ZzikdbIqXLaEJNrcks2bh4O7ekhXGStG3bwpB5TWtJ0y6rwitTUVathL966UWJ9iO544472HXILqn9r9N0ZorESPxBNbX/Ikr+pEuQd6vyTfK+8prWkqZd1jSOeq6IvFjlex/wlgG8dYedEt07evRo1r6wlqVLl3LggQfyyU9+koMOOojjjjuOzZvf3Onwxhtv5NBDD2W//fbjd7/7XSErF2fFFEkXUNU+G3X1X2TdEKrsJciLpugacjf3N7UtbgPeMoCLL7o4dD+SMHbpvysAixcv5vzzz+eJJ55gyJAh3HTTTb33bN26lUcffZTvfe97XHLJJb3udYz4MkXSBfgLyTQ1tTbY129/9tZClcA7Bo/N/GzSJeWzkiWeTW0ldgtF1u6j9iMJY9cBjiLx9nkHmDhxIkuXLu2950Mf+lCoex2YIuky0tTU8hbQXsd1mQqp6JbE5/f/8nZuSQrjpCvptmHSYZHvK6kiy6rw6laUdU8a3HHHHXuP+/Xrx9atW7e75rnXOQrMFImR+WP1Oq7rNhtFyZ90CfIkhXHebXabRJHvK6kiy6pgm2zCKsqE9NwrfwayKaawrYHrUCimSLqAvLW2Jn+skH1DKL971XFMUlg3WdkUQdPjV2Rrx9uPxPtddtlliZ/1FpHMopjCnqljmRjb2KoLyFpI1m02SMIJI09svKLLyh2rbuvauEH58cu7cVeSZ5PW7t94443Y69OnT0/kD8DSpUtZt2Udo4eNZuHChb3uX/rSl3qP77//fgCWvbyUYcOGWR+JUR95P3Kv47pMhdSUgrYKpVt0GFGTL9tQgQgj2MIp26TaabfFJEomaz9K29bashaJkRmv47ophX2ZVLHNbtHpGDb5soxwqqLqFtz61+IVSRITUpwfhx12GK+++ipbdSs7yA68rq/zH9f+R8cRXX6assyKKRLDKIEkBV5bWwZJSRu/oveYDyPYykizx3vRPPLII51v6kBTls0305axHU3vJO0W2toySEra+KU1VWVRxEGTURNMSGHmr6JbGptf31Sof0HKXkZ+oIg8KiLzROQJEbnEdR8jIo+IyBIRuUFEBrjuO7rnS9zro8uUzwin7uG8RjHkmXzZRIKKo2xFXERhnsSPKkZebX59c+ebclB2i+RV4GhVnQD0AMe7+4x8C7hcVd8BvAic695/LvCi6365e59h1EYTFxtMStjky6YTl25Vt+CKKMyDZjQ/3bQ/SdnLyKu3RDzQ3/0pcDTwK9f9apzNrQCmuue416e4m18ZRi0UvdigEc2ozUeFptu19xS3t12whdCpxbDmpS2J/O3Xrx89PT28853v5NRTT2XTpk1MnjyZ3/72t733rH9tHd/73vf49Kc/3XveLZTeRyIi/URkLvA8cDfwR2Cdqnpz/VcAe7rHewLLAdzr64Hdy5bR2JZu7wQ2msmDt48Ldb/u3ucKCyPYyujU6ljz0tbY6x6DBg1i7ty5LFy4kAEDBvCTn/yEM844g+uvv36b+66//nrOOOOMbdyqGHk1qN+gUv0vXZGo6uuq2oOz//qhwAF5/RSR80RklojMWr16dV7vjADd3AlcZO3WaDerb7mlFH+PPPJIlixZwimnnMLtt9/Oli1Oq2b5shU8++yzHHnkkdvcX8XIq0H93lqq/5WN2lLVdcBM4D3AEBHxhh6PAla6xyuBvQDc67sCa0L8ukJVJ6nqpOHDh5ctutFFpK3dtnWxQaMzL8yYUbifW7du5c4772T8+PEMHTqUQw89lDvvvBOAu2+5mw9/+MN41vqmzAEpgrJHbQ0XkSHu8SDgWOBJHIVyinvbWYD3Rm91z3Gv36eqWqaMhhFHNy42WDdRrcJpU0aEKuBpU0aULVIku++SbKrd5s2b6enpYdKkSey9996ce64zfshv3ppx44xtzFpNmQNSBGVPSBwJXC0i/XCU1i9V9TYRWQRcLyKXAo8DV7n3XwX8XESWAGuB00uWzzCMirnu3uc485iR27k7btsr4LB7q2L3XQYkus/rIwkydepUPv/5zzNnzhw2bdrExIkTC5awGZSqSFR1PvCuEPdncPpLgu6vAKeWKZPRt6mzdmv0PQYPHszkyZP5+Mc/vl0nezdhM9uNPkWdtVujb3LGGWcwb968rlYkttaWYRiV0pRW4bCpUwvza+PGjZHXTjrpJLq9q9daJH0UGwZr1EVTWoXDTz65bhG6BlMkfZQiJ3kZhtG3MUViGIZh5MIUiWEYhpELUyR9lE4dnt3Yh1JXnLoxLcskmF51pF/SxRoNB1MkfZROHZ5N7UPJU6jUFaempmVTCaZXHemXdLFGw8EUidEqrFA2mso3vvENDjroIA4++GB6enoK2UrX48EHH+SQQw5hhx124Fe/+lXnByrGFIlRCWbeqQ5L6+p5+OGHue2225gzZw7z58/nnnvuYa+99irM/7333pvp06fzkY98pBD/is4jpkiMUIqeNNaElkRdE+GqDrcJaZ2HYHqVlX5P37c88lrSxRo9Vq1axbBhw9hxxx0BGDZsGHvssQePPfYY733ve5kwYQKHHnooGzZsYPr06XzoQx/i+OOPZ+zYsVxwwQW9/gwePJivfe1rTJgwgcMPP5znnnPe5ejRozn44IN5y1u2LbI3btzIlClTOOSQQxg/fjwzEq5oXHQeMUVihNKUSWNB8hQqdcWp7HC7rQUSTK+y0m/xzJWR15Iu1uhx3HHHsXz5cvbbbz8+85nP8MADD7BlyxZOO+00vv/97zNv3jzuueceBg1yNpiaO3cuN9xwAwsWLOCGG25g+XJHqb388sscfvjhzJs3j/e///1ceeWVseEOHDiQW265hTlz5jBz5ky++MUv1jKL3hSJ0Qq8wrKpCq4IsiqEtrdAuoHBgwcze/ZsrrjiCoYPH85pp53Gv/3bvzFy5Eje/e53A7DLLruwww5OS2fKlCnsuuuuDBw4kHHjxrFs2TIABgwYwIknOkvpT5w4kaVLl8aGq6p89atf5eCDD+aYY45h5cqVva2YKil7P5K9RGSmiCwSkSdE5HOu+8UislJE5rq/E3zPXCQiS0TkKRH5QJnyGenIU/PNa57oC4VlUXGsw4RXZKuozhZWnmG//fr146ijjuKSSy7hhz/8ITfffHPkvZ4JzHtu61ZnlFj//v17N77yu0dx3XXXsXr1ambPns3cuXMZMWIEr7zySkdZi84jZbdItgJfVNVxwOHA+SLibcx8uar2uL87ANxrpwMHAccDP3L3MjESUtZHeO09qyILurgw41oS3WaSKYIi0iRpWheZ/lnyRtT9SRRqWXkn67Dfp556isWLF/eez507lwMPPJBVq1bx2GOPAbBhw4aOiiEt69ev521vexv9+/dn5syZvS2bThTdsi9VkajqKlWd4x5vwNkdcc+YR6YC16vqq6r6J2AJIfuWGNEUXXP3Ptg4f8u41lfJkiZJapdh/laR/mnDCLs/TGlUlXeStlA2btzIWWedxbhx4zj44INZtGgRX//617nhhhv427/9WyZMmMCxxx6bqLUQxmOPPcaoUaO48cYb+dSnPsVBBx0EwLRp05g1axbjx4/nmmuu4YADDsjkf14qW0ZeREbjbHL1CHAE8FkR+RgwC6fV8iKOkvmD77EVhCgeETkPOA+cYXFGeq69Z1XHWolXO8xae7ngisWdb0pIkpn4Zx4zMlG8ugUvrmXGtwnpmScPxjF2slO0rHlpS2Tn+pqXtibqeJ84cSK///3vt3MfNmwYt9/1YK8fa17awtlnn83ZZ5/de89tt93We+xfjv6UU07hlFOcHcnf/e53s2LFilD/H3744Y7yQbnvspLOdhEZDNwE/L2qvgT8GNgX6AFWAd9N45+qXqGqk1R10vDhw4sWt0+QpEYXvCetXXXBn15OdX8ccR+A3xxSZE217qU6OoXXpBZFU/YYCRLXotjv6L3ce940N6Ud9pskbL//ZcyYT9pqKjO/lK5IRKQ/jhK5TlVvBlDV51T1dVV9A7iSN81XKwH/LJ5RrpuRkLI+6GlTRkQW5nFhZr2WhrI+kKqX6pg2ZcQ2aVJkeGUX9FnyRtT9SZ5J6m/agjvtsN8iw256OHEkViQi8jkR2UUcrhKROSJyXIdnBLgKeFJVL/O5+3PdycBC9/hW4HQR2VFExgBjgUeTymjk60S79p5V29WCvQ82zt8k18Jq92WbZMLOq2pVhKVlJ/KaqfzhBcMuyt9O4QTJEq7/mWvvWRWqNIL+ljF3wjF5lWf9D2tJrHlpS+ELRgbTpoxvIE2L5OOuWeo4YDfgo8A3OzxzhHvf0YGhvt8WkQUiMh+YDHweQFWfAH4JLAJ+A5yvqq+nipGRCP/H6e9Q92rB3gdcVGFfdu3ei4/3HxVe2a2KsLQsi2AB6w+vyKHEce+u6DiGhdUpDw4cOJA1a9ZkViZRyiJp/0jWsMJaEmte2ur+ilEmqsqaNWsYOHBg5LdRBGnUrbj/JwA/V9UnxBvwHIGq/pfvOT93xDzzDeAbKeQyMuD/OMM+1uvufY47/7knVxhZzSlpWyt+hVdkKyfLUh1Fdgx3Ci9vOEnic+YxIxs/um7UqFGsWLGC1atXb3dt4yuv8+SGzjMIng8xoD//4hZe35BdkXhhB2Xwwgrz//kXHQWyCnjbbsnC7hTHgQMHMmrUKM4c0z9dBFKQRpHMFpG7gDHARSKyM/BGOWIZ3UDWgi5tYVyWiayqpTqSht82/6uif//+jBkzpnB/v3DRXO785wNLM8N6/gfdPILXmkwaRXIuziirZ1R1k4jsDpxTilRGLZTZIVvVQnydwqtqdFEdo5j8YRYZfpXvrup8koSyhh9HxS3MnNh0OioSETkk4PT2DhYto2WEdagX/QFXXbuPCq/scJMMTigLf5hFhl/lu6u7FeinrpFuVeXRIknSIvHmeAwEJgLzcfo9DsaZTPiewqUyKiUs43bzB1wm3WIuSkqb31Un6niXVVREyvC746gtVZ2sqpNx+n8muhMBJ+LMUrc5HkYsWYYaFjVUtciZ9WnC7Uai4tcXlsivUlm2tSKSZvjv/qq6wDtR1YVAe3qDjFqo2tbrD6/ImfVpwu1G+vJ+920t3KskjSKZLyL/LiJHub8rccxchlE4TaiJGoaRjDSK5BzgCeBz7m8RNmrLKIkm1EQNw0hG4uG/qvoKcLn7M4xEVN0Z6w9v/Jidagm3G+kr+90b2ZBOywqIyC9V9cMisgDY7mZVPbgs4ZIwadIknTVrVp0iGCXwwYvm5p5ZbxhGNCIyW1UnFeFXkhbJ59z/E4sI0DCS0MSaaBP25jC6m7bmsSTDf1e5/8vCft59IpJsdxWjETS9M7uJH5P12xhl09Y8VuR+JAML9MsombZmWMPwaHplKA9ti1uRimS7/hMR2UtEZorIIhF5QkQ+57oPFZG7RWSx+7+b6y4i8gMRWSIi80OWZzESUFQm7ORPlj03iqDsvUWaGKciZarrvfnDL4K4ylDV+88UHVanil6aPWGqoOwdErfi7Mc+DjgcOF9ExgEXAveq6ljgXvcc4IM4m1mNxdmT/ccly9eVFNXa6ORPFXtuRIXr/y/L/yBl9tt0ilORca3rvfnDryqMNGHlLZCLiFfSPFbmnjBZKFKRbLeSo6quUtU57vEG4ElgT2AqcLV729XASe7xVOAadfgDMCSwm6JREHn2CqmKJtS0/PSF5UD6Mk0okJvYN5iEVIpERPYRkWPc40HuniQeH+3w7Gic9bkeAUZ4nfjAnwGvVNsTWO57bIXrFvTrPBGZJSKzwjazMTqTZ6+QqmjCh10lfS2+eSmyhdg0Jd7EUYtxpNmz/ZPAr4B/c51GAf/pXXfX3op6djBwE/D37na9vagzkSXVHpmqeoW7eOSk4cOHp3m0T1BUJuzkz7QpI2rdd6NtH1scneJUdFzrTLuiwo6rDKXNI1WapZLQqaJX1t4zWUnTIjkfZw/2lwBUdTHwtk4PiUh/HCVynare7Do/55ms3P/nXfeVwF6+x0dhKwynpqjmcSd/zjxmZKVNca/WWNXeIlXSKU5Fx7XOtMsadppWQ5Y8krdArjJNy9p7JitpFMmrqtq7I72I7ECHloS7p/tVwJOqepnv0q3AWe7xWcAMn/vH3NFbhwPrfSYwowFUWfsJhlWV6afblwNpQg02C2W//yYUyG0lzVa7D4jIV4FBInIs8Bng1x2eOQKn72SBiMx13b4KfBP4pYicCywDPuxeuwM4AVgCbMIWhWwcddW6qqTbw7UCc3vaqlybQpoWyYXAamAB8CmcQv//xD2gqv+lqqKqB6tqj/u7Q1XXqOoUVR2rqseo6lr3flXV81V1X1Udr6q2iFaJNK2D0TDqypN1mGi7icSKRFXfUNUrVfVUVT3FPU7VSW40i7aNErJaY/cTlye75f237btLQkfTVtSqvx51r/5r9B3MJNN3CFu80N5/c0nSIjkR+CvgN+5vmvu7E8e8ZRi5CGvqd2Pzv2ranIbdWGvvZpKs/uut8nusql6gqgvc31eA48oX0SiLppgKwgqNOgqSqgvessNrY2HclDzZiTzvri1xTEOaznYRkSN8J+9N+bzRMMxUsC1VF7xtLOjLpi15Ms+7a0sc05BGEZwL/EhElorIMuBHwMfLEcswqqPNJqBupRtr7U2i6DyfZtTWbFWdAEwAvOG8cwqVxqiMJhWeYYVGlQVJk1oGTXovddKNtfYw6nrfRef5NGtt7Soil+Es+36viHxXRHYtVBqjMppUeIYVGmceM7Lyj6zqWnBYeEW+F6vVl0dRaduk7zAPaUxbPwU24MxC/zDOmls/K0Mow4DqP7Kqa8Flh9dXavV1YFsKbEsaRbKvqv6jqj7j/i4B3l6WYIaRhCI+uKbX3NtWqCSl6Hhl9a+K9E0bRtmVqKLzfBpFsllE3ueduCO4NhcqjVEZTS88k1LEB9ekmnvZ5q4mUXS8svpX5Y6NQer6DovO82kUyaeBf3VHbS0Ffoiz5pZRM1lqVE0qPKMo4yOLS6sya6ZJ9xAv8720sWXTRpnTEPa+o+Lc5LRIo0ieBL6N01dyM86mVifFPSAiPxWR50Vkoc/tYhFZKSJz3d8JvmsXicgSEXlKRD6QJiJ9mW6tsZZRqMalVZnpWPY+82lkaBNtlDkv1937XOtapmkUyQycpVJewdlsaiPwcodnpgPHh7hf7l8NGEBExgGnAwe5z/xIRPqlkM+oiTprSt1iooujW+PYlF0fq0jftGG0wWLgJ40iGaWqp6vqt1X1u94v7gFVfRBYm9D/qcD1qvqqqv4JZ0+SQ1PIZ9REkppSWcqmbR9cFro1jk3Z9bGK9K3rHVZVyUujSH4vIuMLCvezIjLfNX3t5rrtCSz33bPCddsOETlPRGaJyKzVq1cXJFJ7aUONtSnN8ri0KjMdm7DPfJKwm2aHb6PMfrLINm3KiNDnsuSdqr67NIrkfcBst/9ivogsEJH5GcL8MbAv0AOsAmJbNWGo6hWqOklVJw0fPjyDCN1Ft9ZYyyAurcpMxybsM58k7KYofI82yuwni2xnHjMy9Lkmf+dpttr9YBEBqmpvConIlcBt7ulKYC/fraNcN6PhtKFFZBhGeaRZa2tZ2C9tgCLiV6snA96IrluB00VkRxEZA4wFHk3rv1E9SWpKbVI2TTaVNJFuTq82DsX1U9V3V+oy8CLyC+BhYH8RWSEi5wLf9pnFJgOfB1DVJ4BfAotwNtA6X1VfL1M+ozqa0ixPUgA02VRSNk22w0fRSeY8hX5U3JLGue4KVFXfXamKRFXPUNWRqtpfVUep6lWq+lFVHa+qB6vqX6vqKt/931DVfVV1f1W9s0zZjGZimz3VS1MUfho6yVznO8+Snm1p7fixjamMRmEFvdHXaeM3YIrEMALUbY5oG92cXlFxKzvObUtTUyRGnyLJB9pG806dND298hTKUXGzLQC2xRSJ0SjKrom17QM18tO2d9621giYIul62tZx17aP3jCKpo3fgCmSLqeNHXdGMRRZiWhahaRp8vR1TJEYRpdSZCWiaRWSpsnT1zFFYjQWq3UaRjswRdLltLHjzsNqnYbRDkyRdDlt7LgziqHISkTTKiRNk6evY4rE2I66TEpmyiqWrJWIsPdQRYXEH26de9vXTd7voI7vyBSJsR11mZSC4Vqtsx6a8P77slkzb9zrSDtTJF1Ep5pI22r83VzrNIxuouxl5H8qIs+LyEKf21ARuVtEFrv/u7nuIiI/EJEl7g6Mh5QpWzfSqSbSl2t5hmGUR9ktkunA8QG3C4F7VXUscK97Ds4OjGPd33k4W/IaNVCXSclMWc2gCe/f8gKsvuWWTM/VkXZl70fyILA24DwVuNo9vho4yed+jTr8ARgS2E3RqIi6TEpmymoGTXj/fTkvTJsygtW33MILM2Zker6OtKujj2SEbzOrPwOe+twTWO67b4Xrth0icp6IzBKRWatXry5P0pbRqSaStqaStUbUNLolHkbf4MxjRmZWInVRa2e7qiqgGZ67QlUnqeqk4cOHlyBZO+lUE0lbU2lbZo6iW+JhGE2lDkXynGeycv+fd91XAnv57hvluhmG0YdpQouyDhmGTZ1aeZhZqUOR3Aqc5R6fBczwuX/MHb11OLDev5+7YRh9kya0KOuQYfjJJ1ceZlbKHv77C+BhYH8RWSEi5wLfBI4VkcXAMe45wB3AM8AS4ErgM2XKZnRm2NSpjagN5sVfs+uG+BjVUkeekUGDKg8zDzuU6bmqnhFxaUrIvQqcX6Y8RjqGn3wyT559dqtqRmH45X9hxozWx8eoljpaI7p5c+Vh5sFmthuRWO3daAJt6ivoq5giMSLxamJJFcrT9y3f5j/oXiRl+FmF322lijSJCqOqFmRY+J5bFmXWhHzkl6FMeUyR9HE6Za61u0zihRkzEmXCxTNX9v777/fciySNn35ZkhQIZchbF2kKj7h7o9IkqvKQhWC+ieLp+5aXUigG4/j0fct73fzKLGnYYf4lZcOYDyS+N6kMSdM3C6ZI+iBhhXywQPD+1+06aZv7kpK24CmztuSXpYzabZTsTaiRpnlv/nvTFpZFKd9Oha9XuJet7P1KJChH1rA7PedXkKu3jskURhIZysiXpkj6IGEZOlggLJ65shTbdFTB0+ZWQJTs3Rinqqkrn9QRbhUK0gunaEyRGNvh1VhedFsjSRXK2Ml7bvMfdM8qR1xYeQkLoyi/04RZhn9FhlN2mnQKI67/Iu6eIgjL/0nCqiLN0shQpjymSPoo3ocQlrmCrYbhJ58cel+UmWq/o/di6OidtznP8pHH1Zz2O3qv7cIOk6dTuGFhhPkd5X+QNH1JnZ7Pa4tfPHPlNu+hE2Mn7xkZppcmYc/4/8PkiKJTvvHjN8mMnbwnYyfvmanV8PBVTySWz4uTV6HyGDp650TvMJhmSQvyp+9bnlmpBvuPgnnZ87dopWuKpMuJqnF7H4KX0bxCJKpgCCtcw8xhHmuXbtjm+eCHV0TtKGjHDpNj8cyVmcMKK6iCYcK2H2fQBp32gw2LT1ri3kMc+x29V+owvXwRpmg6+RV2PSiv/91573K/o/eKVGyd8PvfKU/ud/Revd+K/1qnNI1S7J1k9ivIuHs7maajrnv+hinhvJgi6XLiatxBN38GjsrIRWXAMP/zFLpVEZeeUYqsDJrQke+nLHmC+SSrAskSlt8ta6sakueBPAoyijCZy0hDUyRdStpM77+/Kruqn7BaUjDsrENZ4z7kJPHLWoBE+V1EmvrjVPQ7ShrfNCOZsqZhnAk2SNl5tVOaVzkSMSlVVbZMkXQpnTJQ8EPw3++vscTVXuI+3KgO96hnwkxnwbDD4hSl9DwTUydllCR+acxy/mtRfhddI4yzxactXMNMOVEEh46H+RW8N+p6lJvfBNtpEEfadE2Tf4PX4kx5UfmmCLmSyBaVrmVWEE2RdDlhHahP37c89ENIW+uLKsDC/PdMA50+9jQfX/CDDlM8SZRRFGHxiypEvOv+f+846SS7NO5x+Pu90haunUybYUSlaSc/okxJSTv88yjkTnkx67UscqWp3HS6HmceS1pBzEJtikRElorIAhGZKyKzXLehInK3iCx2/3erS75uIawDNWpSUqdRJkk/vqzzKsoyTYydvOc2o3Wy0smGHexn8rt1Im2aJUmrqNFnHkmG1CZ1L/LdJR3VVlYYQbyRZHnjGCV7nhnwnfAqMmHxHbbL2/YoKpy6WySTVbVHVb3xdRcC96rqWOBe99zIQKdMH1QmYfcnrc0XVYgkGdUSlCdqVFpw+HGS0UudCta0w1mz3JvU/JCnxeAfHhx1b1C+KNNUcPRfGEETY5oWWnA4cF6bf9phyk/ft7w37/jjGDf/KKhcg6auLEPS44gbLhxXkRmy09DCNnevW5EEmQpc7R5fDZxUnyjtJurDjuogTVMwpW2KpyFp4RlXGIIzRDOJDd5PmGIKjsCKKwTSFABx5qCkw0WzkrSF1KnA85vQOvnlj0uUYgvLm0mHLydtSUX1bSRtLcS5B1vkUWbCojvAg+lbRyd/nYpEgbtEZLaInOe6jfDtivhnYEQ9onUXYWPxOxE3+a5IE1UwnKSFZ5wMcbXkvH00WeKedhJYESOy8hQmaTuL4wqxNBM0g53VachrGqxjKLlH2tZaJ+qIS52K5H2qegjwQeB8EXm//6K70ZWGPSgi54nILBGZtXr16gpEbTdhnZRJapH+f0j+gWcxu2Sxi6cpcNLM8M5DnPLKMgw5S6vEbxOPM3tEKb00AzGiCuROLcY4ksY5T6GbNV3zhttJljwTaNOy7uW1hW1lXpsiUdWV7v/zwC3AocBzIjISwP1/PuLZK1R1kqpOGj58eFUidxVJlEnRZC3M48xASQu495x7UKaw0wyZTJOeeYeuxhE0x6UZhhxlrko7lDmuApJmdGAnU2QRJB0GnKTS08m/JKTNC52+qyh5Xnjp+WdTBRRDLYpERHYSkZ29Y+A4YCFwK3CWe9tZQPV7XHY5ccN3k3YCZv1QogrzLDU8T4ao2nOSPqI4fz38yqqT8g0z8aRduypMhk6kTb+kI7463Zc03E7DdsOURrB/IbiGVJA8kz+zVKqyDIQIi2eakXNRxC0r48lTdqWxrhbJCOC/RGQe8Chwu6r+BvgmcKyILAaOcc+NAomzZyddJ6qo2rNndvGa850Ki6QyBIe9+v3tNHKmU79Kkrj7TUtpTYNJ5tpEhRUchZf3/WXpT8rS+ghbhiT47ry1orzad9IBH2niGtXpH1bjz/INhHW++9+d/3so02zn+d364b+q+oyqTnB/B6nqN1z3Nao6RVXHquoxqrq2Dvn6CnHDP6OuFx1+8KMK+4iSDtmMGnEVtpBdVOEbR5bO8rDn0o78Snq/v8XoDfssa+5D1HWvQI5rMcbhf2d+BeLh1b7j4pa1EI4yXa1duoGn71u+zXySuFFiacP3xzPYn1bGvBnvuJuH/xoNIc7uWsbwwjgFFrccRdRw5jA6jUArctZ98LlgKyVNGqYNt6z+lrjrwfdQhAydwo6aBZ+nAhTVIl88c+U280niRomlDT/JCMQ4qu7rDMMUidGLP0PGjd8vuqWS50MoYu5GFUS1iPKQZFZ5mXHutJZWWWH5KWNOhv+4yEK6rPkdZc03SoMpkj5GnCknb6dc1k5f/4dQ5IcbN+KqzHhGLZzX6dmwobqdzFpDR++8nTmpjGVLwii6APPHwfsfOnrnXlNdXLqG+ZUmXH+YcQNS0vrtJ65PKWncsoYdlq+6YvivUQxpM1YnU05cod5pAcIktUP/82knDEYpwbCCM9hpHRzWmqUQTDpRL7gml79QjKrleqavsFnQcQWMv88gamZ1HuImU3oFf1H9BcG8OXbynqxdumGbTuqg0gyG58mcpaUa1hkelrfi3kkaZeeF5SnKsKHXRU2cDObHxTNXtn/4r1EcZZkU/LVAj6QduFmUjf8DTGLG8NvHwwrOuLknWcmqfPyFoudPmgIij8xFzWmIGpgRlif8CjfP4IG4OSreNX9fXhEKNOy9RH0LYQQrEUmIGx7dBLNVEkyR9CHSjB6KWicoys1P1tnMcWFmCaeONYeC4UbFqcjWQhxVFURpCr8iKz9pthIOI24YcbD1mjctO7Xoq6KMyqcpkj5EsOYYlaGyLgVRx+iRJB3NftNS2WH6ww1Lv6SzqJPcH2WGrGo5mCB5C8mo+OeZsNqJNC3soJkrrVxxo72C5Jlgmcf/rJgiaTlpM0SSWlXcUhBZZvQmfT7Ls1EDBMLcwmqvWeTJ02KKm/WcpfUXdl/eWnoYYZ21ncxzWfsLgi26pHMqkpieosINw1Mywe8hztxXBHGTUvO0ispsDZkiaTnBWdxJyZqp8iqLpDPDw9yiltboVACX+cEXdW/W95iVLLVpP8GBAWH+RfUXdMofcXM04vwqw4xXhWkwaiJt3D1Z8LfQi/4mTJF0CWknLvmXJSmarMrCo9OM+6Th+E08cRPNspJmlFrScPJ+4Fln3+cljX9pl4Apyq8w0g7TLsN8l2SCapHvqwzlaIqkDxHW4RuWiauwsZc9ge3p+5ZvY+Lx28LL7KQPDlH2h1VFH1LRk+iS0Gm0XR6C8cnafxdFJ7NWcG5L3vcZF16QJnTMJ8UUiRG6thCUO2mvbLK0YOKeTYJ/GZSw8OoYQVUEnQYNFDWqKczvoL9x/XdZiVvc0m/Cy/I+8wwUSDsvq9M9cfNT8mKKpEtIMyO6aNKsd5RErrSjl/KQdDZxkhFYfht0nhnID1/1RKQcRZHGpJNEKeedlR0V56wkTaug8i/af/9AgaTPpOlXStK6Dg4SePiqJwqvbDROkYjI8SLylIgsEZEL65anLYR1hualDLt+cEhuGHlGL/mJqoGl7aCNmlgXN7KmUzzjasFRo67SjqKLI42JJY9/Sf0OmiE9wt5bkjiX1SeVprUQDCfumU5xylrwh4VZxqi+RikSEekH/CvO9rvjgDNEZFy9UnU/YUuhlE3SpVCyEhxO658J32m0UZHxD1v2AoozzQTTsepVm4smboIgbL/iQtQgiqIIpmcZ5kkvTkH565iXlZVGKRKc7XaXuPuVbAGuB6bWLFNXElcrr2rWdRRFFLJhk/WKGg0WRd5hz0VQxqrNVRZocTKG9VcEV+vNQpK1zLKSZvWBoPxFzcuq4v2JqpYeSFJE5BTgeFX9hHv+UeAwVf1s4L7zgPPc0/2BpyoVtAUM2+VteyRZlC3uviL8yHLvO0YeMHHJqv+encS/NIT5myQsbye5JHEctfs++69Ys+ypTvGMC9fzI0yOPGmXNK5FLuaX1G8vzu8YecDEdS+vXRV2X6f35z/Om3c996g0S5tOSfJQGfk+TE5f/tpHVYcXEc4ORXhSNap6BXBF3XIYhmEYzTNtrQT87blRrpthGIbRUJqmSB4DxorIGBEZAJwO3FqzTIZhGEYMjTJtqepWEfks8FugH/BTVS12gLlhGIZRKI3qbDcMwzDaR9NMW4ZhGEbLMEViGIZh5MIUiWEYhpELUySGYRhGLkyRGIZhGLkwRWIYhmHkwhSJYRiGkQtTJIZhGEYuTJEYhmEYuTBFYhiGYeTCFIlhGIaRC1MkhmEYRi5MkRiGYRi5MEViGIZh5KJR+5FkYdiwYTp69Oi6xTAMw2gVs2fPfqFP79nuZ/To0cyaNatuMQzDMHLzwYvmAnDnP/eUHpaILCvKLzNtGYZhGLkwRWIYhmHkwhSJYRiGkQtTJIZhGEYuWt/ZbhhG+/E6maGajmajWKxFYhiGEeCDF83dRrkZ8ViLxNgOqx0ahpEGa5EYXY/VLg2jXEyRGIZhGLkw05ZhGEYEZuZNhikSwyiQKpe46GtY2uanLBOvKRLDMBpLWMFnrYTmYX0khmEYJdIXBntYi6QP0ldrdH013kbfpgolZorEaAxpCvpO9vIiP54sCihLXNL4H/VclcqyrynmsuLbDa0VUyRGLNbB2V76WkFv1Icpkj5OUkVRRKEUFlZdtbGm1tzLlqsNyqXKPNENrYEmYIrEAOo3BTUBK1QcsrRC2/rOs5I3vt2W10yRdAl1fchlfRB5C7OmUmQ/kLEtll71YYqkj9AEE1KcW5LnwwqIIuKV1482KLBOFDlfo1N61GVKLPs9dfK/rHzfBFOxKZIW0yTl0M3hhsnQtFpv3YVkX6butKk7fABR1bplyMWkSZN01qxZdYtRC03IQIZhtJPffPNds1V1UhF+2cx2wzAMIxetb5GIyAbgqbrlKJFhwAt1C1Ei3Ry/bo4bWPzazv6qunMRHnVDH8lTRTXPmoiIzLL4tZNujhtY/NqOiBTWJ2CmLcMwDCMXpkgMwzCMXHSDIrmibgFKxuLXXro5bmDxazuFxa/1ne2GYRhGvXRDi8QwDMOoEVMkhmEYRi5arUhE5HgReUpElojIhXXLkwURWSoiC0RkrjccT0SGisjdIrLY/d/NdRcR+YEb3/kicki90m+PiPxURJ4XkYU+t9TxEZGz3PsXi8hZdcQljIj4XSwiK913OFdETvBdu8iN31Mi8gGfe+PyrojsJSIzRWSRiDwhIp9z3bvi/cXEr1ve30AReVRE5rnxu8R1HyMij7iy3iAiA1z3Hd3zJe710T6/QuMdiaq28gf0A/4IvB0YAMwDxtUtV4Z4LAWGBdy+DVzoHl8IfMs9PgG4ExDgcOCRuuUPic/7gUOAhVnjAwwFnnH/d3OPd6s7bjHxuxj4Usi949x8uSMwxs2v/Zqad4GRwCHu8c7A024cuuL9xcSvW96fAIPd4/7AI+57+SVwuuv+E+DT7vFngJ+4x6cDN8TFOy7sNrdIDgWWqOozqroFuB6YWrNMRTEVuNo9vho4yed+jTr8ARgiIiNrkC8SVX0QWBtwThufDwB3q+paVX0RuBs4vnThExARvyimAter6quq+idgCU6+bWTeVdVVqjrHPd4APAnsSZe8v5j4RdG296equtE97e/+FDga+JXrHnx/3nv9FTBFRIToeEfSZkWyJ7Dcd76C+EzRVBS4S0Rmi8h5rtsIVV3lHv8ZGOEetzXOaePTxnh+1jXv/NQz/dDi+Llmjnfh1Gq77v0F4gdd8v5EpJ+IzAWex1HgfwTWqepW9xa/rL3xcK+vB3YnQ/zarEi6hfep6iHAB4HzReT9/ovqtDW7Zox2t8XH5cfAvkAPsAr4bq3S5EREBgM3AX+vqi/5r3XD+wuJX9e8P1V9XVV7gFE4rYgDqgi3zYpkJbCX73yU69YqVHWl+/88cAvOy3/OM1m5/8+7t7c1zmnj06p4qupz7gf8BnAlb5oBWhc/EemPU8hep6o3u85d8/7C4tdN789DVdcBM4H34JgcvXUV/bL2xsO9viuwhgzxa7MieQwY645IGIDTWXRrzTKlQkR2EpGdvWPgOGAhTjy8kS5nATPc41uBj7mjZQ4H1vtMDk0mbXx+CxwnIru5ZobjXLdGEuinOhnnHYITv9Pd0TFjgLHAozQ077r28auAJ1X1Mt+lrnh/UfHrovc3XESGuMeDgGNx+oFmAqe4twXfn/deTwHuc1ucUfGOpu6RBnl+OKNGnsaxA36tbnkyyP92nNER84AnvDjg2CnvBRYD9wBD9c1RGf/qxncBMKnuOITE6Rc45oHXcGyr52aJD/BxnE6+JcA5dcerQ/x+7so/3/0IR/ru/5obv6eADzY57wLvwzFbzQfmur8TuuX9xcSvW97fwcDjbjwWAv/gur8dRxEsAW4EdnTdB7rnS9zrb+8U76ifLZFiGIZh5KLNpi3DMAyjAZgiMQzDMHJhisQwDMPIhSkSwzAMIxemSAzDMIxcmCIxWoeIDBGRz/jO9xCRX8U9kzO8Hv+KsHUiIoNE5AER6ZfTn/EiMr0gsYw+jikSo40MwVm5FABVfVZVT4m+PTc9OPMGmsDHgZtV9fU8nqjqAmCUiOxdjFhGX8YUidFGvgns6+4d8R0RGS3u/iAicraI/Kc4+2YsFZHPisgXRORxEfmDiAx179tXRH7jLpb5OxE5wHU/VUQWirOnw4PuzOWvA6e54Z0mIoeKyMOun78Xkf1Thn2/iHzf9W+hiBzquv+FvLknxuPeqgcBpuHOTBaRo9zWyQwReUZEviki08TZk2KBiOwbFiefX7/GmZVtGPmoezam/eyX9geMZtv9QHrPgbNxZuruDAzHWdH0b9xrl+Ms1AfOTO2x7vFhOMtDgDPDeU/3eIjPzx/6wtsF2ME9Pga4KWXY9wNXusfv98n+a+AI93iwF4Yv3AHAn33nRwHrcPbZ2BFnPaRL3GufA74XFSf3+Ajg13W/T/u1/+ct5GUY3cRMdfab2CAi63EKaHAK1IPFWf31vcCNzvJLgFMQAzwETBeRXwI3E86uwNUiMhZnyY3+ScP23fcLcPY3EZFd3DWSHgIuE5HrcMxXKwLhDsNRHH4eU3e9NRH5I3CXL7zJHeL0PLBHRBwNIzFm2jK6kVd9x2/4zt8AdsDJ9+tUtcf3OxBAVf8G+D84q5/OFpHdQ/z/fzgK453AX+GsWZQ0bI/g2kSqqt8EPgEMAh7yzG0+NgfCShReTJwGun4aRi5MkRhtZAOO+SgT6uxB8ScRORV69x6f4B7vq6qPqOo/AKtxCt9geLvy5rLaZ2cU4zQ3vPfhrJq73g17gap+C2eF2W0UiTq7DfYTkaAyiSUiTgD78eZKt4aRGVMkRutQ1TU4NfaFIvKdjN5MA84VEW/lZW+r1O+4HdULgd/jrMw8Exjndbbj7GH+zyLyOGQ2D7/iPv8TnBWEAf7ejdN8nNWF7wx57i6cVWzTEBYncExft6cX3TC2xVb/NYyKEZH7gS+p6qwMzx4CfF5VP5pThh2BB3B26Nza6X7DiMNaJIbRIlR1DjAz74REYG/gQlMiRhFYi8QwDMPIhbVIDMMwjFyYIjEMwzByYYrEMAzDyIUpEsMwDCMXpkgMwzCMXPx/dNh8LfL4Nm8AAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from bmtk.analyzer.spike_trains import plot_raster, plot_rates\n",
"\n",
"_= plot_raster(config_file='sim_ch05/config.json', group_by='pop_name', plt_style='seaborn-muted')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or we can plot the rates of the different populations:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_= plot_rates(config_file='sim_ch05/config.json', group_by='pop_name', plt_style='seaborn-muted')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In our simulation_config.json in the reports section, we can see we also record the membrane potential (V_m) of a select sample of cells. By default these files are written to an hdf5 file with the same name as the report (membrane_potential.h5), and we can use the analyzer to show the time course of some of these cells."
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"source": [
"## 5. Additional Information"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Recording membrane potential (and other cell properties)\n",
"\n",
"By default BMTK will automatically record and save the spike-trains of our (non-virtual) cells. Sometimes it can be useful to record other properties besides spikes, like the membrane voltage traces, of all or a subsection of the cells. To do so we only need to open the _simulation_config.json_ file with our prefered text editor and insert the following section:\n",
"\n",
"```json\n",
"{\n",
" \"reports\": {\n",
" \"membrane_potential\": {\n",
" \"cells\": {\n",
" \"population\": \"V1\", \n",
" \"node_id\": [0, 80, 100]\n",
" },\n",
" \"variable_name\": \"V_m\",\n",
" \"module\": \"multimeter_report\",\n",
" \"sections\": \"soma\"\n",
" }\n",
" }\n",
"}\n",
"```\n",
"\n",
"This will tell bmtk to record the \"V_m\" variable for selected cells with ids 0, 80, 100 and save the results in a file _output/membrane_potential.h5_. The cell model you use to simulate non-virtual cells will determine what other output variables you are able to record. After re-running the simulation the file will be generated, [according to the SONATA format](https://github.com/AllenInstitute/sonata/blob/master/docs/SONATA_DEVELOPER_GUIDE.md#frame-oriented-node-element-recordings), which we can read using hdf5 or bmtk like below:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAADAxklEQVR4nOy9d5wkR33+/66OkzZcDjqdTjkLgSSQwBiJaDBYgIUBA1+DMbYxxv45gDHYgEkmgwEHwOQkcjBIgEQOQggJ5azTnS6HzZM61u+PqurumZ0Nd7d7ezrN83rd62YndFeneuqTno+QUtJHH3300Ucf3bCWegB99NFHH30cmegTRB999NFHHz3RJ4g++uijjz56ok8QffTRRx999ESfIProo48++uiJPkH00UcfffTRE32C6ONBBSGEFEKctNTjeLBCCPFaIcT/zvO7nxRCvGWWz1cJIe4UQpQXaGy/FkKcuRDb6mNh0CeIPvo4grCQBCiEuFgIsb34npTybVLKP1uI7QOvAT4ppWwJIf5HCPHpHmN4mBAiEEIsF0KcJYT4nhBivxCiVwHWu4E3LdDY+lgA9Amij6MWQghnqcdwtEII4QN/AnxWv/Up4NlCiGrXV18EfFtKOQpEwJeAl86w2W8Blwgh1i7CkPs4CPQJoo8DhhBiixDiVUKIm4UQDSHEx4QQa4QQVwohpoQQVwshlhW+f6EQ4pdCiHEhxE1CiIsLn/1YCPEW/XldCPF/QogVQojPCSEmhRDXCSE2dQ3haUKIzXol+i4hhKW39WIhxC+EEO8TQowAbxRCnCiE+KEQYkR//3NCiOGuY/lHfSwTQogvCiFKhc+fLoS4UY/9l0KIc+Z5fv5ZCHG7EGJMCPGJrm2+TAhxrxBiVAjxLSHEev3+T/VXbtLn4rlzjWGm8euJ+kpgvd5WXQixXgjxRiHEZwu//7IQYrf+7U8PwMXzKGBcSrkdQEp5DbAD+MPCtm3gj4FP6+/cJaX8GHBbrw1KKdvA9cBT5jmGPhYbUsr+v/6/A/oHbAF+BawBjgH2AjcADwdKwA+BN+jvHgOMAE9DLUiepP9epT//MXAvcCIwBNwO3A08EXBQk8snCvuWwI+A5cBG/d0/05+9GIiBV+rfloGT9D59YBXwU+D9Xcfya2C93uYdwF/qzx6uj+1RgI1aMW8B/Hmcn1uBY/U2fwG8RX/2eGA/8Ag9pg8CP+06vpMKf886hjnGfzGwvWtsbwQ+W/j7T4EBPZb3AzcWPvukGXePY3wF8J2u914HXF34+ynAPsDt+t5JgJxhux8A3rvU93j/n/rXtyD6OFh8UEq5R0q5A/gZcK2U8rdSrQK/jprYAF4IXCGlvEJKmUoprwJ+gyIMg09IKe+TUk6gVr33SSmvllLGwJcL2zJ4h5RyVEr5AGpSe37hs51Syg9KKWMpZUtKea+U8iopZSCl3Ae8F3hc1/Y+IKXcKZUb5P+Ac/X7fw58WEp5rZQykVJ+CgiAC+dxfj4kpdymt/nWwhhfAHxcSnmDlDIA/hm4qIeVZDCfMcw0/jkhpfy4lHJKj+WNwMOEEEPz+OkwMNX13meAxwkhNui//x/weSllNN/x6G0OH8D3+1hE9Amij4PFnsLrVo+/a/r1ccBztHtkXAgxDvwOsO4gtmWwrfB6K2r13OsztOvrciHEDiHEJMpnvrJre7sLr5tdY/+HrrEf27W/mTDTGNfrvwGQUtZRFtUxM2xnPmOYafyzQghhCyHeLoS4T5+bLfqj7vPTC2MoyyODJuyfAi8UQtSAZ6LdSweAAWD8AH/TxyKhTxB9LDa2AZ+RUg4X/lWllG8/hG0eW3i9EdhZ+Ls7O+Zt+r2zpZSDKItGzHM/24C3do29IqX8wiGMcSdq0gdAxwpWoPz3Cz2GuaSa/xi4FOXOGwI2mWHNY9s3A6f0eP9TqMD0HwL3Symvn8e2ijgduOkAf9PHIqFPEH0sNj4LPEMI8RS9Yi0JlX65Yc5fzoxXCSGWCSGOBf4W+OIs3x0A6sCEEOIY4FUHsJ+PAn8phHiUUKgKIX5fCDEw5y/hFUKIDUKI5SjfvBnjF4CXCCHOFSoT6G0o99wW/fke4IQFGsMeYMUsLqMBlLtqBKjoscwXvwaG9Tkt4qsoQvw3FFlk0OMvAZ7+u6TPgfm8BJwHXHUA4+hjEdEniD4WFVLKbahV6mtRActtqEn6UO69b6KyXW4EvgN8bJbv/hsqIDyhv/u1+e5ESvkb4GXAh1AulXtRgfD54PPA94HNwH3AW/Q2rwb+FTWR7kIF559X+N0bgU9pd9IfHcoYpJR3oghps95et2vs0yh31w5UcsCv5nlsSClDVBD7hV3vN/SxbQA+1/Wz41AuQ5PF1ALuKnz+DODHUsqd9HFEQEjZbxjURx8LCSHEFlRm1dVLPZbFhBBiFSpB4eFSytYCbO9a4KVSylsPeXB9LAj6hUR99NHHQUFnhZ22gNt71EJtq4+FQZ8g+ujjACGE2IhyyfTCGYdzLH30sZjou5j66KOPPvroiX6Quo8++uijj544alxMK1eulJs2bVrqYfTRRx99PKhw/fXX75dSrur12VFDEJs2beI3v/nNUg+jjz766ONBBSHE1pk+67uY+uijjz766Ik+QfTRRx999NETfYLoo48++uijJ46aGEQvRFHE9u3babfbSz2UIxKlUokNGzbguu5SD6WPPvo4AnFUE8T27dsZGBhg06ZNCDFfAc+HBqSUjIyMsH37do4//vilHk4fffRxBOKodjG1221WrFjRJ4ceEEKwYsWKvnXVRx99zIijmiCAPjnMgv656aOPPmbDUU8QfSwMbt13M1vG71/qYfTRx5IgjEN+vO2HpGl6WPf7wOTWJX3ujuoYRB8Lh/9+4EMA/Od5H1nikfTRx+HHl+67nGvqP6fqVLlg3eETnX3HPW8Flu6561sQi4xabXp74De+8Y28+93vBuDFL34xxx9/POeeey7nnnsuH/jABw73EPvoo485MBLuByBIwyUeyeFF34I4AvCud72Lyy67bKmH0UcffcyAWEYA+Ja3xCM5vHjIEMT//N92Nu865KZXHThhXZm/fMahtFY+MHz/+9/nDW94A0EQcOKJJ/KJT3yCkZERnvjEJ3LNNdewfPlyHve4x/Gv//qvPPnJT+Yd73gHn/3sZ7Esi6c+9am8/e1vP2xj7aOPowmRjAFwrYdWzVDfxXQE4FWvelXmYrrlllt6fmf//v285S1v4eqrr+aGG27g/PPP573vfS/HHXcc//RP/8TLX/5y3vOe93DGGWfw5Cc/mSuvvJJvfvObXHvttdx00028+tWvPsxH1UcfRw+MBeHZ/hKP5PDiIWNBHM6V/oFiPi6mX/3qV9x+++085jGPASAMQy666CIA/uzP/owvf/nL/M///A833ngjAFdffTUveclLqFQqACxfvnzxDqCPPo5yJDIBls6CSNMUyzr86/mHDEE82CGl5ElPehJf+MIXpn3WbDbZvn07APV6nYGBgcM9vD76OKoREy/t/tMYbwniH30X04MEF154Ib/4xS+49957AWg0Gtx9990A/NM//RMveMELeNOb3sTLXvYyAJ70pCfx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",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from bmtk.analyzer.compartment import plot_traces\n",
"\n",
"_ = plot_traces(config_file='sim_ch05/config.json', group_by='pop_name', plt_style='seaborn-muted')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Perturbation simulations\n",
"\n",
"A common use case is to mimick a network where the firing rate of select cells are being supressed or stimulated using current clamps or optogenetic methods. The best way to do this is by applying a current clamp in a similar manner used in [Tutorial 1: Bionet](tutorial_01_single_cell_clamped.ipynb).\n",
"\n",
"The ['point_120cells' network](https://github.com/AllenInstitute/bmtk/tree/develop/examples/point_120cells) in the BMTK examples folder consists of 120 recurrently connected excitatory and inhibitory cells with randomized inputs. Normally the results without any type of perturbations will look as follows:\n",
"\n",
"\n",
"\n",
"\n",
"To stimulate some of the cells we can open the config.json file and add the following section to the \"inputs\":\n",
"```json\n",
"{\n",
" \"exc_perturbation\": {\n",
" \"input_type\": \"current_clamp\",\n",
" \"module\": \"IClamp\",\n",
" \"node_set\": {\n",
" \"population\": \"cortex\",\n",
" \"node_ids\": [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]\n",
" },\n",
" \"amp\": 230.0,\n",
" \"delay\": 1.0,\n",
" \"duration\": 3000.0\n",
" }\n",
"}\n",
"```\n",
"\n",
"This will apply a large step current for the duration of the simulation for cells 20 through 39. In this case we knew the exact node_ids of the cells we want to stimulate. However it is also possible to get a subset using a specific property - for example if we wanted to only select inhibitory L2/3 cells:\n",
"```json\n",
"{\n",
" \"node_set\": {\n",
" \"population\": \"cortex\",\n",
" \"ei\": \"i\",\n",
" \"location\": \"L2/3\"\n",
" }\n",
"}\n",
"```\n",
"\n",
"To simulate suppression of cells 40 to 49 we will add another current_clamp but with a large negative current:\n",
"```json\n",
"{\n",
" \"inh_perturbation\": {\n",
" \"input_type\": \"current_clamp\",\n",
" \"module\": \"IClamp\",\n",
" \"node_set\": {\n",
" \"population\": \"cortex\",\n",
" \"node_ids\": [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]\n",
" },\n",
" \"amp\": -230.0,\n",
" \"delay\": 1.0,\n",
" \"duration\": 3000.0\n",
" }\n",
"}\n",
"```\n",
"\n",
"After we rerun the simulation:\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
}
},
"nbformat": 4,
"nbformat_minor": 4
}