{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\ND653384\\AppData\\Local\\Temp\\1\\ipykernel_29656\\3939036807.py:54: RuntimeWarning: overflow encountered in exp\n",
      "  sec.g_pas = 1e-5 * np.exp(distance / 100)                                                              # Set leak conductance (S/cm2)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Apical 420: Distance from soma = 57.37 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 57.45 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Soma soma: Distance from soma = 20.08 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Soma soma: Distance from soma = 23.20 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 52.81 µm\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1955: Distance from soma = 76.72 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Section Soma soma: Distance from soma = 37.49 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Apical 6: Distance from soma = 39.48 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Section Apical 1798: Distance from soma = 61.66 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 52.81 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 3: Distance from soma = 35.42 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Soma soma: Distance from soma = 52.81 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Soma soma: Distance from soma = 37.49 µm\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 57.45 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 23.20 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Section Apical 420: Distance from soma = 57.37 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Soma soma: Distance from soma = 37.49 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Section Soma soma: Distance from soma = 52.81 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1955: Distance from soma = 76.72 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Section Apical 6: Distance from soma = 39.48 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 23.20 µm\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 3: Distance from soma = 35.42 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Section Apical 420: Distance from soma = 57.37 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 6: Distance from soma = 39.48 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Section Apical 6: Distance from soma = 39.48 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 3: Distance from soma = 35.42 µm\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1962: Distance from soma = 86.39 µm\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 14.02 µm\n",
      "Section Soma soma: Distance from soma = 57.45 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Soma soma: Distance from soma = 57.45 µm\n",
      "Section Apical 419: Distance from soma = 56.38 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 52.81 µm\n",
      "Section Soma soma: Distance from soma = 43.02 µm\n",
      "Section Apical 409: Distance from soma = 42.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Apical 420: Distance from soma = 57.37 µm\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 43.02 µm\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Section Apical 3: Distance from soma = 35.42 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1972: Distance from soma = 97.44 µm\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Section Soma soma: Distance from soma = 20.08 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 43.02 µm\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Section Soma soma: Distance from soma = 57.45 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 29.89 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Apical 1973: Distance from soma = 98.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Section Soma soma: Distance from soma = 21.28 µm\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 420: Distance from soma = 57.37 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Soma soma: Distance from soma = 47.10 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 37.49 µm\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Apical 1966: Distance from soma = 91.15 µm\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 43.02 µm\n",
      "Section Soma soma: Distance from soma = 14.02 µm\n",
      "Section Soma soma: Distance from soma = 51.28 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Apical 3: Distance from soma = 35.42 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 12: Distance from soma = 48.18 µm\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Section Apical 411: Distance from soma = 45.71 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1963: Distance from soma = 87.76 µm\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Apical 1958: Distance from soma = 80.86 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Section Apical 18: Distance from soma = 56.19 µm\n",
      "Section Soma soma: Distance from soma = 33.56 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 410: Distance from soma = 44.34 µm\n",
      "Section Apical 1: Distance from soma = 34.04 µm\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 431: Distance from soma = 66.97 µm\n",
      "Section Apical 407: Distance from soma = 40.37 µm\n",
      "Section Soma soma: Distance from soma = 48.26 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1955: Distance from soma = 76.72 µm\n",
      "Section Soma soma: Distance from soma = 20.08 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Section Apical 1968: Distance from soma = 93.07 µm\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 54.35 µm\n",
      "Section Apical 17: Distance from soma = 55.11 µm\n",
      "Section Apical 1960: Distance from soma = 83.62 µm\n",
      "Soma mechanisms: ['pas']\n",
      "Section Soma soma: Distance from soma = 31.07 µm\n",
      "Section Soma soma: Distance from soma = 20.08 µm\n",
      "Section Apical 1790: Distance from soma = 56.25 µm\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB85UlEQVR4nO3dd3gU5frG8XvTAyEJJSRBeu+IoRhAUECqFEUFRIqiKIIeLMdz+FkQG3awoKhHUY8oimJDEZGm0qRKkypNIPQk1CQk7++PObtkSWFDNplN8v1c1147mZndfXYngdx533nGYYwxAgAAAABIkvzsLgAAAAAAfAkhCQAAAAAyISQBAAAAQCaEJAAAAADIhJAEAAAAAJkQkgAAAAAgE0ISAAAAAGRCSAIAAACATAhJAAAAAJAJIQkAioEPPvhADodDu3btsrWOXbt2yeFw6KWXXrrovk888YQcDofbOofDodGjR1/0sb7yfuF7HA6HnnjiCbvLAFDEEZKAYurNN9+Uw+FQ69at7S7F56SmpurVV19V8+bNFR4ersjISDVq1EgjRozQ5s2b7S4vV88++6y+/vrrAn0NZwBZuXJlgb6Ot7355pv64IMP7C4jC2dwdN78/f1VtWpVXX/99Vq7dm2BvKavfhbe8sMPPxRaEDp79qwmTpyo1q1bKyIiQiEhIapbt65Gjx6trVu3FkoNBWH//v164oknCux7ECjqHMYYY3cRALyvbdu22r9/v3bt2qVt27apdu3adpfkM3r16qXZs2dr4MCBio+PV1pamjZv3qxZs2bpqaee0rBhw+wuMUdhYWG68cYbs/wCnJ6errS0NAUHB2cZncmrDz74QLfddptWrFihFi1a5Omxu3btUo0aNfTiiy/qoYceynXfc+fO6dy5cwoJCXGtczgcGjVqlN54441cH5vd+23cuLEqVKighQsX5qnmgub8TAYOHKgePXooPT1df/75p9566y2lpKRo2bJluvzyy736mr76WXjL6NGjNXnyZGX3K8zZs2cVEBCggICAfL/OkSNH1K1bN61atUrXXXedOnfurLCwMG3ZskXTp09XQkKCUlNT8/06dli5cqVatmypqVOn+vS/eYBd8v8vCACfs3PnTi1ZskQzZ87UXXfdpWnTpmncuHGFWkNGRoZSU1PdfgH2BStWrNCsWbP0zDPP6P/+7//ctr3xxhtKTEy0p7B88vf3l7+/v91l5El+fpEtrPd79uxZBQUFyc8v/xMvrrjiCt16662ur9u2bavevXvrrbfe0ttvv53v54fFm//mDBs2TGvWrNEXX3yhfv36uW176qmn9Mgjj3jldc6dO6eMjAwFBQVl2Xbq1CmVLl3aK68DwHNMtwOKoWnTpqls2bLq2bOnbrzxRk2bNs21LS0tTeXKldNtt92W5XHJyckKCQlxGwFISUnRuHHjVLt2bQUHB6tKlSp6+OGHlZKS4vZY57kk06ZNU6NGjRQcHKwff/xRkvTSSy+pTZs2Kl++vEJDQxUXF6cvvvgiy+ufOXNG9913nypUqKAyZcqod+/e2rdvX7bnGOzbt0+33367oqOjFRwcrEaNGun999+/6GezY8cOSdYvqBfy9/dX+fLl3datWbNG3bt3V3h4uMLCwtSpUyctW7bMbR/n9LTffvtN9913n6KiohQZGam77rpLqampSkxM1JAhQ1S2bFmVLVtWDz/8cJa/gHvyGTkcDp06dUoffviha+qW8y/AOZ2jM3v2bHXo0EFlypRReHi4WrZsqU8++eSin9OFhg0bprCwMO3bt099+/ZVWFiYoqKi9NBDDyk9PT3bx7zzzjuqVauWgoOD1bJlS61YscJte3bnJDlNmzZN9erVU0hIiOLi4vTLL7+4bb/w/VavXl0bN27UokWLXJ/N1Vdf7dr/r7/+0k033aRy5cqpVKlSuvLKK/X999+7PefChQvlcDg0ffp0Pfroo7rssstUqlQprV27Vg6HQxMnTsxS55IlS+RwOPTpp59e7CPMomPHjpKsP2o4zZgxQ3FxcQoNDVWFChV06623at++fW6PS0hI0G233abKlSsrODhYsbGx6tOnj0efRVpamsaPH686deooJCRE5cuXV7t27TR37lxJ0tSpU+VwOLRmzZos9T777LPy9/d31XP11VercePG2rRpk6655hqVKlVKl112mV544QW3x6Wmpurxxx9XXFycIiIiVLp0aV111VVasGCB236Zz2ebOHGiqlWrptDQUHXo0EEbNmxw7Tds2DBNnjxZktymMTrl9O/F8OHDValSJQUHB6tGjRoaOXJkrqNAy5cv1/fff6/hw4dnCUiSFBwc7Hbu3dVXX+32PZe53urVq2f7PidNmuT6Gdm0aZPrZ2LTpk265ZZbVLZsWbVr18712I8//tj1/VGuXDkNGDBAe/fudXs9T47LwoUL1bJlS0nSbbfd5voMi/MUTSCvGEkCiqFp06bphhtuUFBQkAYOHKi33npLK1asUMuWLRUYGKjrr79eM2fO1Ntvv+32l8uvv/5aKSkpGjBggCRrNKh379767bffNGLECDVo0EDr16/XxIkTtXXr1iznxsyfP1+ff/65Ro8erQoVKrh+MXj11VfVu3dvDRo0SKmpqZo+fbpuuukmzZo1Sz179nQ9ftiwYfr88881ePBgXXnllVq0aJHbdqeDBw/qyiuvdAWzqKgozZ49W8OHD1dycrLGjBmT42dTrVo112fUtm3bXEcyNm7cqKuuukrh4eF6+OGHFRgYqLfffltXX321Fi1alOV8r3vvvVcxMTEaP368li1bpnfeeUeRkZFasmSJqlatqmeffVY//PCDXnzxRTVu3FhDhgxxPdaTz+i///2v7rjjDrVq1UojRoyQJNWqVSvH+j/44APdfvvtatSokcaOHavIyEitWbNGP/74o2655ZYcH5eT9PR0de3aVa1bt9ZLL72kn3/+WS+//LJq1aqlkSNHuu37ySef6MSJE7rrrrvkcDj0wgsv6IYbbtBff/2lwMDAXF9n0aJF+uyzz3TfffcpODhYb775prp166bff/9djRs3zvYxkyZN0r333quwsDDXX/ejo6MlWd8vbdq00enTp3XfffepfPny+vDDD9W7d2998cUXuv76692e66mnnlJQUJAeeughpaSkqH79+mrbtq2mTZum+++/323fadOmqUyZMurTp0+ePkvpfGB3BnPnNMeWLVtqwoQJOnjwoF599VUtXrxYa9asUWRkpCSpX79+2rhxo+69915Vr15dhw4d0ty5c7Vnzx5Vr14918/iiSee0IQJE1zfR8nJyVq5cqVWr16ta6+9VjfeeKNGjRqladOmqXnz5lne69VXX63LLrvMte748ePq1q2bbrjhBt1888364osv9K9//UtNmjRR9+7dJVl/fPnPf/6jgQMH6s4779SJEyf03nvvqWvXrvr999+zTDX86KOPdOLECY0aNUpnz57Vq6++qo4dO2r9+vWKjo7WXXfdpf3792vu3Ln673//e9HPef/+/WrVqpUSExM1YsQI1a9fX/v27dMXX3yh06dPZzt6I0nffvutJGnw4MEXfY1LMXXqVJ09e1YjRoxQ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P7Vu3Tq3fa699lrFxsa6AmFGRoY+/fRT9enTJ0tgqFy5cpagkd33xIcffqimTZu6zoOKiorS999/n+33d07H/1KuiXX48GElJydf0s9BeHi4JOnEiRN5fqwncvr3Mrtt27ZtkzFGderUyfLv3p9//pnl3zxPjwuAnHFOElCMzJ8/XwcOHND06dM1ffr0LNunTZumLl26SJIGDBigt99+W7Nnz1bfvn31+eefq379+mrWrJlr/4yMDDVp0kSvvPJKtq934S//F/71XZJ+/fVX9e7dW+3bt9ebb76p2NhYBQYGaurUqZfUQCAjI0OSdOutt2ro0KHZ7tO0aVOPny82NlYDBgxQv3791KhRI33++eeXfPJyTt3WsltvMjVu8PZnVFDy0k0up31NEbjqRHbfx5I1wjJjxgwtWbJETZo00bfffqt77rnH4853derUUefOnfNd35gxY9SrVy99/fXXmjNnjh577DFNmDBB8+fPz3Ie0YXat2+vHTt26JtvvtFPP/2k//znP5o4caKmTJmiO+64Q5J17G655Ra9++67evPNN7V48WLt378/2xEzT47zxx9/rGHDhqlv37765z//qYoVK8rf318TJkxwhXlfVL9+fUnS+vXrXSOhuXE4HNl+f+c0+pnT91l22zIyMuRwODR79uxsP/OwsDC3r4vyzx/gKwhJQDEybdo0VaxY0dX5KbOZM2fqq6++0pQpUxQaGqr27dsrNjZWn332mdq1a6f58+dnaWdbq1Yt/fHHH+rUqdMlT9H68ssvFRISojlz5ig4ONi1furUqW77VatWTRkZGdq5c6fbX5K3b9/utl9UVJTKlCmj9PR0r/zC6RQYGKimTZtq27ZtOnLkiKKiolSqVClt2bIly76bN2+Wn59flpB4qTz9jCTPp8o5Gzps2LChyF0jK7upYFu3blWpUqVynJ4k5fzZVKtWLcfj6NzuiW7duikqKkrTpk1T69atdfr0aa+d1O+sYcuWLVlGprZs2ZKlxlq1aunBBx/Ugw8+qG3btunyyy/Xyy+/rI8//lhS7t8nzu6Wt912m06ePKn27dvriSeecIUkyQqEL7/8sr777jvNnj1bUVFR6tq16yW9ty+++EI1a9bUzJkz3erK6bIEOR3/zB3iPP05iIqKUnh4uFt3PE/16tVLEyZM0Mcff+xRSCpbtmy209kuHKm8FLVq1ZIxRjVq1HCN5OdXfq+nBhR3TLcDiokzZ85o5syZuu6663TjjTdmuY0ePVonTpxwdWzy8/PTjTfeqO+++07//e9/de7cObepdpJ1Hsa+ffv07rvvZvt6p06dumhd/v7+cjgcbn9N3bVrV5bOeM5fwN5880239a+//nqW5+vXr5++/PLLbH/xudh0rG3btmnPnj1Z1icmJmrp0qUqW7asoqKi5O/vry5duuibb75xm+Zz8OBBffLJJ2rXrp1rOk5+efoZSVLp0qU9upZTly5dVKZMGU2YMEFnz5512+brf01eunSp27kqe/fu1TfffKMuXbrkOpqV02fTo0cP/f7771q6dKlr3alTp/TOO++oevXq2Z5Hl52AgAANHDjQNdrYpEmTPI1a5qZFixaqWLGipkyZ4tZef/bs2frzzz9dHQ5Pnz6d5XjWqlVLZcqUcXtcTp/F0aNH3b4OCwtT7dq1s7T0b9q0qZo2bar//Oc/+vLLLzVgwIB8XdNKcv++W758udvxyOzrr792a3v++++/a/ny5a5ueZJc1w262M+Cn5+f+vbtq++++04rV67Msj23n4X4+Hh169ZN//nPf7L9WUxNTXW7XEKtWrW0efNmt3+D/vjjDy1evDjXGj1xww03yN/fX+PHj89SszEmy3H1hKefIVBSMZIEFBPffvutTpw4od69e2e7/corr3T9FdwZhvr376/XX39d48aNU5MmTVznaDgNHjxYn3/+ue6++24tWLBAbdu2VXp6ujZv3qzPP/9cc+bMyfZk6Mx69uypV155Rd26ddMtt9yiQ4cOafLkyapdu7bbuRBxcXHq16+fJk2apKNHj7pagG/dulWS+189n3vuOS1YsECtW7fWnXfeqYYNG+rYsWNavXq1fv75Zx07dizHev744w/dcsst6t69u6666iqVK1dO+/bt04cffqj9+/dr0qRJrl/qnn76ac2dO1ft2rXTPffco4CAAL399ttKSUnJci2Y/PD0M3J+Tj///LNeeeUVVapUSTVq1MjSilyyzqeYOHGi7rjjDrVs2dJ1zZU//vhDp0+f1ocffui1+r2tcePG6tq1q1sLcEkaP358ro+Li4vTW2+9paefflq1a9dWxYoV1bFjR/373//Wp59+qu7du+u+++5TuXLl9OGHH2rnzp368ssv83Sh2CFDhui1117TggUL9Pzzz+fr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2bLFTJ061YSGhpqpU6e69qlWrZopV66cmTJlitm6dasZOXKkCQ8PN926dTOff/652bJli+nbt69p0KCB6/P8+++/zYsvvmjWrFljduzYYV577TXj7+9vli9fbowxJjEx0cTHx5s777zTHDhwwBw4cMCcO3cuS0has2aNCQ4ONiNHjjRr1641GzZsMK+//ro5fPhwtu+nd+/epl69ejm+XydPQ1J4eLh56aWXzPbt28327dvN1KlTTWBgoGnTpo1ZvHix2bx5szl16pS54447TJs2bcwvv/xitm/fbl588UUTHBxstm7daowxrsd17tzZrFixwqxatco0aNDA3HLLLcYYK8DffPPNplu3bq7PIyUlJUvdhCQPEJIAAEBhKuohqU2bNmbSpEnGGGPS0tJMhQoVXH+td3790UcfufYfOHCg6d+/vzHGmLNnz5pSpUqZJUuWuD3n8OHDzcCBA40x50NSdqMYF2rUqJF5/fXXjTHG/Pnnn0aS20jMtm3bjCRXSPr1119NeHi4OXv2rNvz1KpVy7z99tvZvsa5c+fMsGHDjCQTExNj+vbta15//XW33x1vueUWc+2117o97p///Kdp2LCh6+tq1aqZW2+91fX1gQMHjCTz2GOPudYtXbrUSDIHDhzI8T337NnTPPjgg66vswsqF4akgQMHmrZt2+b4nBdq0KCB6d2790X38zQk9e3b122fqVOnGkluI3i7d+82/v7+Zt++fW77durUyYwdO9btcdu3b3dtnzx5somOjnZ9PXToUNOnT59c6/ZGSAoonEl9AIBsHTkirVghNWokVa1qdzUACkqpUtLJk/a9toe2bNmi33//XV999ZUkKSAgQP3799d7772nq6++WgEBAbr55ps1bdo0DR48WKdOndI333yj6dOnS5K2b9+u06dP69prr3V73tTUVDVv3txtXYsWLdy+PnnypJ544gl9//33OnDggM6dO6czZ85oz549rtoCAgJ0xRVXuB5Tu3ZtlS1b1vX1H3/8oZMnT6p8+fJuz33mzBnt2LEj2/fs7++vqVOn6umnn9b8+fO1fPlyPfvss3r++ef1+++/KzY2Vn/++af69Onj9ri2bdtq0qRJSk9Pl7+/vySpadOmru3R0dGSpCZNmmRZd+jQIcXExCg9PV3PPvusPv/8c+3bt0+pqalKSUlRqTwcM0lau3atbrrp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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Created by Namit Dwivedi (Scimemi Lab) on 09/19/2024\n",
    "# Please contact Namit (namitdwivedi08@gmail.com) or Dr Annalisa Scimemi (scimemia@gmail.com) for questions\n",
    "# The goal of this code is to identify the number of active inhibitory synaptic inputs in DHK that allow us to reproduce the amplitude of oIPSCs from PV-INs recorded experimentally\n",
    "\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from neuron import h\n",
    "import pandas as pd\n",
    "import random\n",
    "\n",
    "# Save the average soma current to a CSV file\n",
    "output_file_path = 'C:/Users/ND653384/Documents/Namit/CSV file/nrnez_2024_10_08_11_13_44/PV_dhk108.csv'\n",
    "\n",
    "# Function to calculate distance from soma\n",
    "def calculate_distance(section):\n",
    "    h.distance(sec=h.soma[0])                                                                                   # Set soma as reference\n",
    "    return h.distance(0.5, sec=section)\n",
    "\n",
    "# Function to run a single simulation and return the somatic current\n",
    "def run_simulation():\n",
    "    # Load morphology and hoc files\n",
    "    h.load_file('C:/Users/ND653384/Documents/Namit/PV/nrnez_2024_09_12_16_49_35/run_1/CA1PC.nrn')\n",
    "\n",
    "    # Define file path for the NRN-EZ location file\n",
    "    syn_loc_file = 'C:/Users/ND653384/Documents/Namit/PV/nrnez_2024_09_12_16_49_35/run_1/Inhibitory/syn_loc_dhk.dat'\n",
    "    #syn_loc_dhk.dat is a .dat file created once the active number of synapses are known with reduced total synapses (from 40 to 30) to keep release probability constant\n",
    "\n",
    "    # Read synapse location data\n",
    "    with open(syn_loc_file, 'r') as file:\n",
    "        synapse_data = [line.strip().split() for line in file.readlines()]\n",
    "\n",
    "    \n",
    "    selected_synapses = random.sample(synapse_data, 3)\n",
    "\n",
    "    soma = h.soma[0]\n",
    "    axon = h.axon\n",
    "\n",
    "    # Create empty lists \n",
    "    recorders = []                                                                                              # Store the voltage recordings from the selected synapses\n",
    "    Rec_id = []                                                                                                 # Store the identifiers of the sections (e.g., soma, apical) where the recorders are placed\n",
    "    sections = []                                                                                               # Store the actual sections (compartments) of the selected synapses\n",
    "    distances = []                                                                                              # Store the calculated distances of the synapses from the soma\n",
    "    h.dt= 0.025\n",
    "\n",
    "    # Set axial resistance for all sections \n",
    "    for sec in h.allsec():\n",
    "        sec.Ra = 150                                                                                            # ohm.cm\n",
    "\n",
    "    # Introduce leak channels to all sections \n",
    "    for sec in h.allsec():\n",
    "        sec.insert('pas')                                                                                      # Insert leak channel\n",
    "        distance = calculate_distance(sec)\n",
    "        sec.g_pas = 1e-5 * np.exp(distance / 100)                                                              # Set leak conductance (S/cm2)\n",
    "        sec.e_pas = 0                                                                                          # Set leak reversal potential\n",
    "\n",
    "    soma_mechs = [mech.name() for seg in soma for mech in seg]\n",
    "    print(f\"Soma mechanisms: {soma_mechs}\")\n",
    "    \n",
    "    # Iterate through the selected synapse data\n",
    "    for section_type, section_number in selected_synapses:\n",
    "        section_type = int(section_type)\n",
    "        section_number = int(section_number)\n",
    "\n",
    "        if section_type == 0:\n",
    "            section = h.soma[section_number]\n",
    "        elif section_type == 3:\n",
    "            section = h.apical[section_number]\n",
    "        else:\n",
    "            continue\n",
    "\n",
    "        # Calculate and store distance\n",
    "        distance = calculate_distance(section)\n",
    "        if distance <= 100:                                                                                    # Only include sections at <50 um in radial distance from the soma and <100 um in geodesic distance from the soma\n",
    "            distances.append(distance)\n",
    "            \n",
    "            # Record membrane potential\n",
    "            rec = h.Vector()\n",
    "            rec.record(section(0.5)._ref_v)\n",
    "            recorders.append(rec)\n",
    "            sections.append(section)\n",
    "            Rec_id.append(section_number if section_type == 3 else \"soma\")\n",
    "\n",
    "    # Print distances for each selected section\n",
    "    for idx, distance in enumerate(distances):\n",
    "        section_type = \"Soma\" if Rec_id[idx] == \"soma\" else \"Apical\"\n",
    "        print(f\"Section {section_type} {Rec_id[idx]}: Distance from soma = {distance:.2f} µm\")\n",
    "    \n",
    "    # Access the soma\n",
    "    soma_rec = h.Vector()\n",
    "    soma_rec.record(h.soma[0](0.5)._ref_v)\n",
    "\n",
    "    # Create SEClamp\n",
    "    seclamp1 = h.SEClamp(0.5, sec=soma)\n",
    "    seclamp1.dur1 = 1e9\n",
    "    seclamp1.amp1 = 0\n",
    "    seclamp1.rs = 12\n",
    "\n",
    "    t = h.Vector().record(h._ref_t)\n",
    "\n",
    "    # Run simulation\n",
    "    h.load_file(\"stdrun.hoc\")\n",
    "    h.finitialize(0)\n",
    "    h.continuerun(300)\n",
    "\n",
    "    # Parameters for the inhibitory synapses\n",
    "    syn_tau1 = 3                                                                                                  # Rise time constant in ms\n",
    "    syn_tau2 = 24                                                                                                # Decay time constant in ms\n",
    "    syn_e = -70                                                                                                  # GABA reversal potential\n",
    "\n",
    "    # List to hold synapses and netstims\n",
    "    synapses = []                                                                                                # Store the inhibitory synapses created for each selected section\n",
    "    netstims = []                                                                                                # Store the NetStims used to trigger the synaptic events\n",
    "    netcons = []                                                                                                 # Store the NetCons (connections between NetStim and synapse)\n",
    "    syn_voltage = []                                                                                             # Store the voltage recordings of the synapse for each section\n",
    "    syn_currents = []                                                                                            # Store the synaptic current values recorded for each synapse\n",
    "\n",
    "    # Release probability\n",
    "    release_probability = 0.1\n",
    "\n",
    "    for section in sections:\n",
    "        syn = h.Exp2Syn(0.5, sec=section)\n",
    "        syn.tau1 = syn_tau1\n",
    "        syn.tau2 = syn_tau2\n",
    "        syn.e = syn_e\n",
    "\n",
    "        # Create a NetStim to activate the synapse\n",
    "        stim = h.NetStim()\n",
    "        stim.number = 1                                                                                          # Number of spikes\n",
    "        stim.start = 100                                                                                         # Start time in ms\n",
    "        stim.interval = 0                                                                                        # Interval between spikes in ms\n",
    "\n",
    "        # Connect the NetStim to the synapse\n",
    "        nc = h.NetCon(stim, syn)\n",
    "        nc.weight[0] = 0.485e-3                                                                                  # Synaptic weight in uS\n",
    "\n",
    "        # Record the synaptic current\n",
    "        syn_current = h.Vector()\n",
    "        syn_current.record(syn._ref_i)\n",
    "        \n",
    "        synapses.append(syn)\n",
    "        netstims.append(stim)\n",
    "        netcons.append(nc)\n",
    "        syn_currents.append(syn_current)\n",
    "        syn_voltage.append(rec)\n",
    "\n",
    "    h.finitialize(0)\n",
    "    h.continuerun(300)\n",
    "\n",
    "    # Record the current at soma\n",
    "    soma_current = h.Vector()\n",
    "    soma_current.record(seclamp1._ref_i)\n",
    "\n",
    "    h.finitialize(0)\n",
    "    h.continuerun(300)\n",
    "\n",
    "    return soma_current, t\n",
    "\n",
    "# Run simulation 100 times and collect results\n",
    "soma_currents = []\n",
    "times = None\n",
    "\n",
    "for i in range(100):\n",
    "    soma_current, t = run_simulation()\n",
    "    soma_currents.append(np.array(soma_current))\n",
    "    if times is None:\n",
    "        times = np.array(t)\n",
    "\n",
    "# Calculate average soma current\n",
    "average_soma_current = np.mean(soma_currents, axis=0) * 1000                                                      # Convert to pA\n",
    "\n",
    "# Calculate the rise time of the soma current recorded wave\n",
    "peak_index = np.argmax(average_soma_current)\n",
    "peak_value = average_soma_current[peak_index]\n",
    "\n",
    "# Find 20% and 80% of the peak value\n",
    "threshold_20 = 0.2 * peak_value\n",
    "threshold_80 = 0.8 * peak_value\n",
    "\n",
    "# Find indices where the current crosses these thresholds\n",
    "crossing_20 = np.where(average_soma_current[:peak_index] >= threshold_20)[0][0]\n",
    "crossing_80 = np.where(average_soma_current[:peak_index] >= threshold_80)[0][0]\n",
    "\n",
    "rise_time_20_80 = times[crossing_80] - times[crossing_20]\n",
    "\n",
    "# Calculate half-decay time (t50)\n",
    "half_value = 0.5 * peak_value\n",
    "crossing_50 = np.where(average_soma_current[peak_index:] <= half_value)[0][0]\n",
    "half_decay_time = times[peak_index + crossing_50] - times[peak_index]\n",
    "\n",
    " \n",
    "df = pd.DataFrame({\n",
    "    'Time (ms)': times,\n",
    "    'Average Somatic Current (pA)': average_soma_current\n",
    "})\n",
    "df.to_csv(output_file_path, index=False)\n",
    "\n",
    "# Plot average somatic current\n",
    "plt.figure(figsize=(10, 6))\n",
    "plt.plot(times, average_soma_current, label='Average Somatic Current', color='red')\n",
    "plt.xlabel('Time (ms)')\n",
    "plt.ylabel('Current (pA)')\n",
    "plt.title('Average Somatic Inhibitory Postsynaptic Current')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "51.88503211241948\n",
      "4.175000000000949\n",
      "21.1749999999992\n"
     ]
    }
   ],
   "source": [
    "print(max(average_soma_current))\n",
    "print(rise_time_20_80)\n",
    "print(half_decay_time)\n",
    "\n",
    "#Release probability= No.of active synapses/Total SST synapses\n",
    "# Release_probability= 5/50= 0.1\n",
    "\n",
    "#Values for oIPSC recorded experimentally at soma for PV_DHK (Figure 5)\n",
    "#Amplitude:           51.1                              \n",
    "#Rise_time:           3.3                               \n",
    "#Half_decay_time:     21.1                              \n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "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.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
