{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tutorial 5: 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. As with the previous BioNet examples will create both a internal recurrently-connected network of different node types, and an external network of \"virtual\" neurons that will drive the firing of the internal neurons. And we'll show how to drive network activity by using a current clamp.\n",
    "\n",
    "PointNet, like BioNet and the other simulators, use the SONATA data format for representing networks, setting up simulations and saving results. Thus the tools used to build and display biophysically detailed networks in the previous chapters will work just the same. \n",
    "\n",
    "Requirements:\n",
    "* bmtk\n",
    "* NEST 2.11+"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Building the network\n",
    "\n",
    "There are two ways of generating a network of point-neurons. Either we can take the existing biophysical network created in the previous chapters and make some minor adjustments to the neuron models being used. Or we can build a new network from scratch using the BMTK Builder.\n",
    "\n",
    "### Converting networks\n",
    "We want to take the BioNet V1 network and change parameters so that the individual neurons are using point models. Luckily there parameters are stored in the node and edge \"types\" csv files, thus we can 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": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>node_type_id</th>\n",
       "      <th>ei</th>\n",
       "      <th>morphology_file</th>\n",
       "      <th>model_processing</th>\n",
       "      <th>pop_name</th>\n",
       "      <th>location</th>\n",
       "      <th>model_template</th>\n",
       "      <th>model_type</th>\n",
       "      <th>dynamics_params</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100</td>\n",
       "      <td>e</td>\n",
       "      <td>Scnn1a.swc</td>\n",
       "      <td>aibs_perisomatic</td>\n",
       "      <td>Scnn1a</td>\n",
       "      <td>L4</td>\n",
       "      <td>ctdb:Biophys1.hoc</td>\n",
       "      <td>biophysical</td>\n",
       "      <td>472363762_fit.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>101</td>\n",
       "      <td>i</td>\n",
       "      <td>Pvalb.swc</td>\n",
       "      <td>aibs_perisomatic</td>\n",
       "      <td>PV</td>\n",
       "      <td>L4</td>\n",
       "      <td>ctdb:Biophys1.hoc</td>\n",
       "      <td>biophysical</td>\n",
       "      <td>472912177_fit.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>102</td>\n",
       "      <td>e</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LIF_exc</td>\n",
       "      <td>VisL4</td>\n",
       "      <td>nrn:IntFire1</td>\n",
       "      <td>point_process</td>\n",
       "      <td>IntFire1_exc_1.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>103</td>\n",
       "      <td>i</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LIF_inh</td>\n",
       "      <td>VisL4</td>\n",
       "      <td>nrn:IntFire1</td>\n",
       "      <td>point_process</td>\n",
       "      <td>IntFire1_inh_1.json</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "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": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>node_type_id</th>\n",
       "      <th>ei</th>\n",
       "      <th>morphology_file</th>\n",
       "      <th>model_processing</th>\n",
       "      <th>pop_name</th>\n",
       "      <th>location</th>\n",
       "      <th>model_template</th>\n",
       "      <th>model_type</th>\n",
       "      <th>dynamics_params</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100</td>\n",
       "      <td>e</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Scnn1a</td>\n",
       "      <td>L4</td>\n",
       "      <td>nest:iaf_psc_alpha</td>\n",
       "      <td>point_process</td>\n",
       "      <td>472363762_point.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>101</td>\n",
       "      <td>i</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>PV</td>\n",
       "      <td>L4</td>\n",
       "      <td>nest:iaf_psc_alpha</td>\n",
       "      <td>point_process</td>\n",
       "      <td>472912177_point.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>102</td>\n",
       "      <td>e</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LIF_exc</td>\n",
       "      <td>VisL4</td>\n",
       "      <td>nest:iaf_psc_alpha</td>\n",
       "      <td>point_process</td>\n",
       "      <td>IntFire1_exc_point.json</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>103</td>\n",
       "      <td>i</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>LIF_inh</td>\n",
       "      <td>VisL4</td>\n",
       "      <td>nest:iaf_psc_alpha</td>\n",
       "      <td>point_process</td>\n",
       "      <td>IntFire1_inh_point.json</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   node_type_id ei  morphology_file  model_processing pop_name location  \\\n",
       "0           100  e              NaN               NaN   Scnn1a       L4   \n",
       "1           101  i              NaN               NaN       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  nest:iaf_psc_alpha  point_process     472363762_point.json  \n",
       "1  nest:iaf_psc_alpha  point_process     472912177_point.json  \n",
       "2  nest:iaf_psc_alpha  point_process  IntFire1_exc_point.json  \n",
       "3  nest:iaf_psc_alpha  point_process  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:\\<nest-model\\>\" 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.\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": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>edge_type_id</th>\n",
       "      <th>target_query</th>\n",
       "      <th>source_query</th>\n",
       "      <th>syn_weight</th>\n",
       "      <th>dynamics_params</th>\n",
       "      <th>distance_range</th>\n",
       "      <th>delay</th>\n",
       "      <th>target_sections</th>\n",
       "      <th>weight_function</th>\n",
       "      <th>model_template</th>\n",
       "      <th>weight_sigma</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>100</td>\n",
       "      <td>pop_name=='Scnn1a'</td>\n",
       "      <td>ei=='e'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>ExcToExc.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>gaussianLL</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>50.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>101</td>\n",
       "      <td>pop_name=='LIF_exc'</td>\n",
       "      <td>ei=='e'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>instanteneousExc.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>gaussianLL</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>50.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>102</td>\n",
       "      <td>model_type=='biophysical'&amp;ei=='i'</td>\n",
       "      <td>ei=='i'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>InhToInh.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>103</td>\n",
       "      <td>model_type=='point_process'&amp;ei=='i'</td>\n",
       "      <td>ei=='i'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>instanteneousInh.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>104</td>\n",
       "      <td>model_type=='biophysical'&amp;ei=='e'</td>\n",
       "      <td>ei=='i'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>InhToExc.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>105</td>\n",
       "      <td>model_type=='point_process'&amp;ei=='e'</td>\n",
       "      <td>ei=='i'</td>\n",
       "      <td>30.00000</td>\n",
       "      <td>instanteneousInh.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>106</td>\n",
       "      <td>pop_name=='PV'</td>\n",
       "      <td>ei=='e'</td>\n",
       "      <td>0.00035</td>\n",
       "      <td>ExcToInh.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>107</td>\n",
       "      <td>pop_name=='LIF_inh'</td>\n",
       "      <td>ei=='e'</td>\n",
       "      <td>50.00000</td>\n",
       "      <td>instanteneousExc.json</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>wmax</td>\n",
       "      <td>static_synapse</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   edge_type_id                         target_query source_query  syn_weight  \\\n",
       "0           100                   pop_name=='Scnn1a'      ei=='e'    50.00000   \n",
       "1           101                  pop_name=='LIF_exc'      ei=='e'    50.00000   \n",
       "2           102    model_type=='biophysical'&ei=='i'      ei=='i'    50.00000   \n",
       "3           103  model_type=='point_process'&ei=='i'      ei=='i'    50.00000   \n",
       "4           104    model_type=='biophysical'&ei=='e'      ei=='i'    50.00000   \n",
       "5           105  model_type=='point_process'&ei=='e'      ei=='i'    30.00000   \n",
       "6           106                       pop_name=='PV'      ei=='e'     0.00035   \n",
       "7           107                  pop_name=='LIF_inh'      ei=='e'    50.00000   \n",
       "\n",
       "         dynamics_params  distance_range  delay  target_sections  \\\n",
       "0          ExcToExc.json             NaN    2.0              NaN   \n",
       "1  instanteneousExc.json             NaN    2.0              NaN   \n",
       "2          InhToInh.json             NaN    2.0              NaN   \n",
       "3  instanteneousInh.json             NaN    2.0              NaN   \n",
       "4          InhToExc.json             NaN    2.0              NaN   \n",
       "5  instanteneousInh.json             NaN    2.0              NaN   \n",
       "6          ExcToInh.json             NaN    2.0              NaN   \n",
       "7  instanteneousExc.json             NaN    2.0              NaN   \n",
       "\n",
       "  weight_function  model_template  weight_sigma  \n",
       "0      gaussianLL  static_synapse          50.0  \n",
       "1      gaussianLL  static_synapse          50.0  \n",
       "2            wmax  static_synapse           NaN  \n",
       "3            wmax  static_synapse           NaN  \n",
       "4            wmax  static_synapse           NaN  \n",
       "5            wmax  static_synapse           NaN  \n",
       "6            wmax  static_synapse           NaN  \n",
       "7            wmax  static_synapse           NaN  "
      ]
     },
     "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 appropiate 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 making it a powerful tool for comparing networks of 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 "
   ]
  },
  {
   "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": [
    "We can now go ahead and created synaptic connections then build and save our network."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bmtk.builder.connection_map.ConnectionMap at 0x7fd8900d4370>"
      ]
     },
     "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='instanteneousExc.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='instanteneousInh.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='instanteneousInh.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='instanteneousExc.json',\n",
    "              model_template='static_synapse')"
   ]
  },
  {
   "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
   },
   "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 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": [
       "<bmtk.builder.connection_map.ConnectionMap at 0x7fd88a03c5e0>"
      ]
     },
     "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='instanteneousExc.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='instanteneousExc.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 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 a 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 set in **simulation_config**, 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 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 NWB files, which are a common format for saving electrophysiological data in neuroscience.\n",
    "\n",
    "We can use any NWB file generated experimentally or computationally, but for this example we will use a preexsting one. First download the file:\n",
    "```bash\n",
    " $ cd sim_ch05\n",
    " $ wget https://github.com/AllenInstitute/bmtk/raw/develop/docs/examples/spikes_inputs/lgn_spikes.h5\n",
    "```\n",
    "Then we must edit the simulation_config.json file to tell the simulator to find the nwb 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": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[INFO] [2022.6.2 11:9:48 /home/ping/bmtk_proj/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:217 @ Network::create_rngs_] : Creating default RNGs\n",
      "[INFO] [2022.6.2 11:9:48 /home/ping/bmtk_proj/nest-simulator-2.20.1/nestkernel/rng_manager.cpp:260 @ Network::create_grng_] : Creating new default global RNG\n",
      "\n",
      "              -- N E S T --\n",
      "  Copyright (C) 2004 The NEST Initiative\n",
      "\n",
      " Version: nest-2.20.1\n",
      " Built: Jan  1 2022 23:06:15\n",
      "\n",
      " This program is provided AS IS and comes with\n",
      " NO WARRANTY. See the file LICENSE for details.\n",
      "\n",
      " Problems or suggestions?\n",
      "   Visit https://www.nest-simulator.org\n",
      "\n",
      " Type 'nest.help()' to find out more about NEST.\n",
      "\n",
      "2022-06-02 11:09:48,533 [INFO] Created log file\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NestIOUtils:Created log file\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-06-02 11:09:48,548 [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-06-02 11:09:48,559 [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-06-02 11:09:48,593 [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-06-02 11:09:48,595 [INFO] Building cells.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NestIOUtils:Building cells.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-06-02 11:09:48,609 [INFO] Building recurrent connections\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NestIOUtils:Building recurrent connections\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-06-02 11:09:48,667 [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-06-02 11:09:49,716 [INFO] Network created.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NestIOUtils:Network created.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-06-02 11:09:49,744 [INFO] Starting Simulation\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:NestIOUtils:Starting Simulation\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-06-02 11:09:52,965 [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-06-02 11:09:53,213 [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, are saved into the output directory. Using the analyzer functions, we can do things like plot the raster plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "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": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "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 V_m (i.e membrane potential) 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
   },
   "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_ 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_. 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": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "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 depressed 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 [bionet](http://localhost:32000/notebooks/Workspace/bmtk/docs/tutorial/01_single_cell_clamped.ipynb).\n",
    "\n",
    "The point_120cells network in the bmtk examples 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",
    "<img src=\"_static/_tutorial_images/raster_120cells_orig.png\">\n",
    "\n",
    "To artifically excite 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 excite. 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 depression 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",
    "<img src=\"_static/_tutorial_images/raster_120cells_perturbed.png\">\n",
    "\n",
    "\n"
   ]
  }
 ],
 "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.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
