{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "2ee1d062", "metadata": {}, "outputs": [], "source": [ "# This code is written by Nooshin Abdollahi\n", "# Information about this code:\n", "# - Motor axons are not included\n", "# - there are not transverse connections between Boundary and Boundary" ] }, { "cell_type": "code", "execution_count": 2, "id": "af4c646e", "metadata": {}, "outputs": [], "source": [ "# show the time of execution\n", "from datetime import datetime\n", "start_time = datetime.now()\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "493e7e8a", "metadata": {}, "outputs": [], "source": [ "from neuron import h\n", "import netpyne \n", "from netpyne import specs, sim \n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from typing import Tuple, List\n", "import math\n", "import sys\n", "\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 4, "id": "d05a8722", "metadata": {}, "outputs": [], "source": [ "# Import nesseccery files from Matlab\n", "\n", "R = np.loadtxt(\"R.txt\") # All axons with different radius\n", "G = np.loadtxt(\"G.txt\") # Axon's groups\n", "C = np.loadtxt(\"C.txt\") # Coordinates of each axon (x,y)\n", "neighboringAxon = np.loadtxt(\"neighboringAxon.txt\")\n", "dist = np.loadtxt(\"dist.txt\") \n", "dist_edge = np.loadtxt(\"Distance_edge.txt\") \n", "AVE_area_around_axon = np.loadtxt(\"Ave_area_around_axon.txt\")\n", "\n", "unique_radius = np.loadtxt(\"unique_radius.txt\") # including different types\n", "Number_of_nodes = np.loadtxt(\"Number_of_nodes.txt\") # Number of nodes for the specified axon total length\n", "\n", "parameters = np.loadtxt(\"parameters.txt\") \n", "\n", "# importing all the connections\n", "import scipy.io as io\n", "\n", "for i in range(1,2):\n", " for j in range(1,2):\n", " if j>=i:\n", " l = [i, j]\n", " z = ''.join([str(n) for n in l])\n", " Input = io.loadmat('Connect_types_{}.mat'.format(z) , squeeze_me=True) \n", " I = Input['SAVE']; \n", " locals()[\"Connect_types_\"+str(z)]=[]\n", " for v in range(len(I)):\n", " D = I[v].strip() \n", " locals()[\"Connect_types_\"+str(z)].append(D) \n", "\n", "\n", "# Boundary connections\n", "for i in range(1,2):\n", " Input = io.loadmat('Boundary_to_{}.mat'.format(i) , squeeze_me=True) \n", " I = Input['SAVE']; \n", " locals()[\"Boundary_to_\"+str(i)]=[]\n", " for v in range(len(I)):\n", " D = I[v].strip() \n", " locals()[\"Boundary_to_\"+str(i)].append(D) \n", " \n", "\n", "\n", "#\n", "Boundary_coordinates = np.loadtxt(\"Boundary_coordinates.txt\")\n", "Boundary_neighboring = np.loadtxt(\"Boundary_neighboring.txt\")\n", "Boundary_dist = np.loadtxt(\"Boundary_dist.txt\") \n", "\n", "\n", "############## importing files related to transverse resistance (Rg) and Areas\n", "\n", "for i in range(1,2):\n", " for j in range(1,2):\n", " if j>=i:\n", " l = [i, j]\n", " z = ''.join([str(n) for n in l])\n", " Input = np.loadtxt('Rg_{}.txt'.format(z) ) \n", " locals()[\"Rg_\"+str(z)]=Input\n", " \n", "\n", "\n", " \n", "for i in range(1,2):\n", " Input = np.loadtxt('Boundary_Rg_{}.txt'.format(i) ) \n", " locals()[\"Boundary_Rg_\"+str(i)]=Input\n", "\n", " \n", " \n", " \n", " \n", "for i in range(1,2):\n", " for j in range(1,2):\n", " if j>i:\n", " l = [i, j]\n", " z = ''.join([str(n) for n in l])\n", " Input = np.loadtxt('Areas_{}.txt'.format(z) ) \n", " locals()[\"Areas_\"+str(z)]=Input\n", " \n", " \n", " \n", " \n" ] }, { "cell_type": "code", "execution_count": 5, "id": "cf1c9f69", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t1 \n", "\t1 \n" ] } ], "source": [ "# Network parameters\n", "netParams = specs.NetParams()\n", "\n", "netParams.sizeX=3000\n", "netParams.sizeY=3000\n", "netParams.sizeZ=3000\n", "\n", "\n", "################################# Importing Axons(including C fibers and the others) and Boundary ####################################\n", "\n", "netParams.importCellParams(\n", " cellInstance=True,\n", " label='Boundary', \n", " conds={'cellType': 'Boundary', 'cellModel': 'Boundary'},\n", " fileName='Boundarycable.hoc', \n", " cellName='Boundary', \n", " importSynMechs=True) ;\n", "\n", "\n", "\n", "\n", "# Myelinated axons have different types (i.e. diameters)\n", "# How many types... do I have? print(len(unique_radius)-1), -1 because the first eleman is for C fiber\n", "# each type is a specific diameter\n", "\n", "netParams.importCellParams(\n", " cellInstance=True,\n", " label='type1', \n", " conds={'cellType': 'type1', 'cellModel': 'type1'},\n", " fileName='type1.hoc', \n", " cellName='type1', \n", " importSynMechs=True) ;\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "d5ef8f97", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n" ] } ], "source": [ "###################################### Locating each axon in specific (x,y) #################################################\n", "\n", "\n", "\n", "netParams.popParams[\"Axon0\"] = {\n", " 'cellType': 'type1', \n", " 'numCells':1 , \n", " 'cellModel': 'type1', \n", " 'xRange':[C[0][0], C[0][0]], \n", " 'yRange':[0, 0], \n", " 'zRange':[C[0][1], C[0][1]]} \n", "\n", "netParams.popParams[\"Axon1\"] = {\n", " 'cellType': 'type1', \n", " 'numCells':1 , \n", " 'cellModel': 'type1', \n", " 'xRange':[C[1][0], C[1][0]], \n", " 'yRange':[0, 0], \n", " 'zRange':[C[1][1], C[1][1]]}\n", " \n", " \n", " \n", " \n", " \n", "########################################### Locating Boundary Cables ########################################################\n", "\n", "\n", "\n", " \n", "netParams.popParams[\"Boundary0\"] = {\n", " 'cellType': 'Boundary', \n", " 'numCells':1 , \n", " 'cellModel': 'Boundary', \n", " 'xRange':[Boundary_coordinates[0][0], Boundary_coordinates[0][0]], \n", " 'yRange':[0, 0], \n", " 'zRange':[Boundary_coordinates[0][1], Boundary_coordinates[0][1]]} \n", "\n", "\n", " \n", " \n", "netParams.popParams[\"Boundary1\"] = {\n", " 'cellType': 'Boundary', \n", " 'numCells':1 , \n", " 'cellModel': 'Boundary', \n", " 'xRange':[Boundary_coordinates[1][0], Boundary_coordinates[1][0]], \n", " 'yRange':[0, 0], \n", " 'zRange':[Boundary_coordinates[1][1], Boundary_coordinates[1][1]]} \n", "\n", " \n", " \n", "\n", "# in Total, how many Cells does Netpyne generate? Length(R)+len(Boundary_coordinates)\n", "print(len(R)+len(Boundary_coordinates))\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "4adc83be", "metadata": {}, "outputs": [], "source": [ "################################################### Stimulation ############################################################\n", "# Which group of axons do you want to stimulate?\n", "# Group1: motor axons Group2: C fibers Group3: Adelta Group4: Abeta\n", "\n", "\n", "#netParams.stimSourceParams['Input1'] = {'type': 'IClamp', 'del': 1, 'dur': 0.1, 'amp': 0.4}\n", "netParams.stimSourceParams['Input1'] = {'type': 'VClamp', 'dur': [1, 0.02, 0], 'amp':[-80, 0, 0]}\n", "\n", " \n", "netParams.stimTargetParams['Input1->Stim_1'] = {'source': 'Input1', 'sec':'node_0', 'loc': 0.5, 'conds': {'pop':\"Axon0\"}} \n", "#netParams.stimTargetParams['Input1->Stim_2'] = {'source': 'Input1', 'sec':'node_0', 'loc': 0.5, 'conds': {'pop':\"Axon1\"}} \n", "\n", "\n", "\n", "\n", "XG1 = 1e-9 # 1e-9: disconnect from ground 1e9: Connect to ground\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "id": "90a2f08b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Start time: 2023-01-05 10:41:41.921282\n", "\n", "Creating network of 4 cell populations on 1 hosts...\n", " Number of cells on node 0: 4 \n", " Done; cell creation time = 0.31 s.\n", "Making connections...\n", " Number of connections on node 0: 0 \n", " Done; cell connection time = 0.00 s.\n", "Adding stims...\n", " Number of stims on node 0: 1 \n", " Done; cell stims creation time = 0.00 s.\n", "Recording 6 traces of 2 types on node 0\n" ] } ], "source": [ "simConfig = specs.SimConfig()\n", "simConfig.hParams = {'celsius': 37 }\n", "\n", "simConfig.dt = 0.005 # Internal integration timestep to use default is 0.025\n", "simConfig.duration = 6\n", "simConfig.recordStim = True\n", "simConfig.recordStep = 0.005 # Step size in ms to save data (e.g. V traces, LFP, etc) default is 0.1\n", "#simConfig.cache_efficient = True\n", "#simConfig.cvode_active = True\n", "# simConfig.cvode_atol=0.0001\n", "# simConfig.cvode_rtol=0.0001\n", "\n", "\n", "simConfig.recordTraces = {'V_node_0' :{'sec':'node_0','loc':0.5,'var':'v'}}\n", "simConfig.analysis['plotTraces'] = {'include': ['allCells']} # ['Axon0','Axon1']\n", "\n", "simConfig.analysis['plot2Dnet'] = True\n", "simConfig.analysis['plot2Dnet'] = {'include': ['allCells'], 'view': 'xz'}\n", "\n", "\n", "\n", "#simConfig.recordLFP = [[56.39,-4000,51.74]] # Determine the location of the LFP electrode\n", "\n", "\n", "\n", "\n", "\n", "\n", "sim.create(netParams, simConfig)\n", "\n", "\n" ] }, { "cell_type": "markdown", "id": "9045099d", "metadata": {}, "source": [ "### xraxial and transverese conductances" ] }, { "cell_type": "code", "execution_count": 9, "id": "41af5705", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.0\n", "2705.075594165407\n", "3.0\n", "2705.075594165407\n" ] } ], "source": [ "# Since by default Netpyne does not insert the parameters of the extracellular mechanism, I insert them in this section\n", "# this section includes \"longitudinal\" resistivities (i.e. xraxial)\n", "\n", "#Total_Length=10000\n", "\n", "number_boundary = 4000 #Total_Length/Section_Length \n", "number_boundary = int(number_boundary)\n", "\n", "\n", "\n", "rhoa=0.7e6 \n", "mycm=0.1 \n", "mygm=0.001 \n", "\n", "space_p1=0.002 \n", "space_p2=0.004\n", "space_i=0.004\n", "\n", "\n", "\n", "\n", "############################# For Boundary Cables #################################################\n", "\n", "# soma section is just for LFP recording, LFP in Netpyne does not work if at least one section is not called soma \n", "\n", "\n", "for j in range(len(R),len(R)+len(Boundary_coordinates)):\n", " \n", " S = sim.net.cells[j].secs[\"soma\"][\"hObj\"] \n", " for seg in S:\n", " seg.xraxial[0] = 1e9\n", " seg.xraxial[1] = 1e9\n", " seg.xg[0] = 1e9\n", " seg.xg[1] = 1e9\n", " seg.xc[0] = 0\n", " seg.xc[1] = 0\n", "\n", "\n", " for i in range(number_boundary): \n", " S = sim.net.cells[j].secs[\"section_%s\" %i][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = 1e9\n", " seg.xraxial[1] = 1e9\n", " seg.xg[0] = 1e9\n", " seg.xg[1] = 1e9\n", " seg.xc[0] = 0\n", " seg.xc[1] = 0\n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", "############################## For myelinated sensory axons ##################################### \n", "\n", "\n", "rho2 = 1211 * 1e-6 # Mohm-cm\n", "\n", "\n", "\n", "\n", "for j in range(len(R)):\n", " if G[j]!=2: # if it is not a C fiber \n", " x = np.where(unique_radius == R[j]) \n", " x = int(x[0])\n", " nodes = Number_of_nodes\n", " nodes=int(nodes)\n", " \n", " \n", " nl = parameters[4]\n", " nodeD = parameters[1]\n", " paraD1 = nodeD\n", " axonD = parameters[0]\n", " paraD2 = axonD\n", " \n", " Rpn0 = (rhoa*.01)/((math.pi)*((((nodeD/2)+space_p1)**2)-((nodeD/2)**2)))\n", " Rpn1 = (rhoa*.01)/((math.pi)*((((paraD1/2)+space_p1)**2)-((paraD1/2)**2)))\n", " Rpn2 = (rhoa*.01)/((math.pi)*((((paraD2/2)+space_p2)**2)-((paraD2/2)**2)))\n", " Rpx = (rhoa*.01)/((math.pi)*((((axonD/2)+space_i)**2)-((axonD/2)**2)))\n", " \n", " \n", " ################### xraxial[1]\n", " \n", " radi = R[j]\n", " \n", " AVE = (AVE_area_around_axon[j]+0) /2\n", " \n", " xr = rho2 / ((math.pi)*(((radi+AVE)**2) - (radi**2)) * 1e-8) # Mohm/cm\n", " \n", " xr = xr /1\n", " \n", " print(AVE_area_around_axon[j]+0)\n", " print(xr)\n", " \n", " ##################\n", " \n", " \n", " \n", "\n", " S = sim.net.cells[j].secs[\"soma\"][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = Rpn1\n", " seg.xraxial[1] = xr \n", " seg.xg[0] = mygm/(nl*2)\n", " seg.xg[1] = XG1 # disconnect from ground\n", " seg.xc[0] = mycm/(nl*2)\n", " seg.xc[1] = 0\n", "\n", " \n", " for i in range(nodes):\n", " S = sim.net.cells[j].secs[\"node_%s\" %i][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = Rpn0\n", " seg.xraxial[1] = xr\n", " seg.xg[0] = 2.36e+03 ###2.36e+03 #####1e6\n", " seg.xg[1] = XG1\n", " seg.xc[0] = 0\n", " seg.xc[1] = 0\n", "\n", "\n", " for i in range(2*nodes):\n", " S = sim.net.cells[j].secs[\"MYSA_%s\" %i][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = Rpn1\n", " seg.xraxial[1] = xr\n", " seg.xg[0] = mygm/(nl*2)\n", " seg.xg[1] = XG1\n", " seg.xc[0] = mycm/(nl*2)\n", " seg.xc[1] = 0\n", "\n", "\n", " for i in range(10*nodes):\n", " S = sim.net.cells[j].secs[\"FLUT_%s\" %i][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = Rpn2\n", " seg.xraxial[1] = xr\n", " seg.xg[0] = mygm/(nl*2)\n", " seg.xg[1] = XG1\n", " seg.xc[0] = mycm/(nl*2)\n", " seg.xc[1] = 0 \n", "\n", "\n", " for i in range(40*nodes):\n", " S = sim.net.cells[j].secs[\"STIN_%s\" %i][\"hObj\"]\n", " for seg in S:\n", " seg.xraxial[0] = Rpx\n", " seg.xraxial[1] = xr\n", " seg.xg[0] = mygm/(nl*2)\n", " seg.xg[1] = XG1\n", " seg.xc[0] = mycm/(nl*2)\n", " seg.xc[1] = 0\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "afaf323f", "metadata": {}, "outputs": [], "source": [ "\n", "##############################This section is about transverse connections between axons #####################################\n", "# *** If you do not want to include ephaptic interaction, do not run this section\n", "# To model ephaptic effect, \"LinearMechanism\" in NEURON is used.\n", "\n", "\n", "\n", "rho = 1211 * 10000 # ohm-micron\n", "\n", "count = 0\n", "\n", "for i in range(len(R)): \n", "\n", " \n", " for j in range(len(R)): \n", " \n", " if neighboringAxon[i][j]==1:\n", " \n", "\n", " a1 = np.where(unique_radius == R[i]) # find type of R[i]\n", " a1 = a1[0][0]+1\n", " a2 = np.where(unique_radius == R[j]) # find type of R[j]\n", " a2 = a2[0][0]+1\n", "\n", "\n", " NSEG = 0\n", "\n", "\n", "\n", " if a1==a2:\n", " SEC = locals()[\"Connect_types_\"+str(a1)+str(a1)]\n", " RG = locals()[\"Rg_\"+str(a1)+str(a1)]\n", " area = (math.pi)*(parameters[1])*(np.ones((len(RG),1))) # micron^2\n", " area = area * 1e-8 #cm^2\n", " b1=i\n", " b2=j\n", " if a1==0:\n", " area = (math.pi)*0.8*10*(np.ones((len(RG),1))) # micron^2\n", " area = area * 1e-8 #cm^2\n", " \n", " \n", "\n", " if a1<a2:\n", " SEC = locals()[\"Connect_types_\"+str(a1)+str(a2)]\n", " RG = locals()[\"Rg_\"+str(a1)+str(a2)]\n", " b1=i\n", " b2=j\n", " if a1==0:\n", " area = (math.pi)*(parameters[a2][1])*(np.ones((len(RG),1)))\n", " area = area * 1e-8 #cm^2\n", " b1=j\n", " b2=i\n", " \n", " else:\n", " area = locals()[\"Areas_\"+str(a1)+str(a2)]\n", " area = area[ : , np.newaxis]\n", " area = area * 1e-8\n", " \n", " \n", "\n", " if a1>a2:\n", " SEC = locals()[\"Connect_types_\"+str(a2)+str(a1)]\n", " RG = locals()[\"Rg_\"+str(a2)+str(a1)]\n", " b1=j\n", " b2=i\n", " if a2==0:\n", " area = (math.pi)*(parameters[a1][1])*(np.ones((len(RG),1)))\n", " area = area * 1e-8 #cm^2\n", " b1=i\n", " b2=j\n", " \n", " else:\n", " area = locals()[\"Areas_\"+str(a2)+str(a1)]\n", " area = area[ : , np.newaxis]\n", " area = area * 1e-8\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", " locals()[\"sl\"+str(count)] = h.SectionList()\n", "\n", " for z1 in range(int(len(SEC)/2)): \n", "\n", " S = sim.net.cells[b1].secs[SEC[z1]][\"hObj\"]\n", " NSEG=NSEG+S.nseg\n", " locals()[\"sl\"+str(count)].append(S)\n", "\n", " for z2 in range(int(len(SEC)/2),int(len(SEC))):\n", "\n", " S = sim.net.cells[b2].secs[SEC[z2]][\"hObj\"]\n", " locals()[\"sl\"+str(count)].append(S) \n", " \n", " \n", "\n", " nsegs=int(NSEG)\n", "\n", " locals()[\"gmat\"+str(count)] =h.Matrix(2*nsegs, 2*nsegs)\n", " locals()[\"cmat\"+str(count)] =h.Matrix(2*nsegs, 2*nsegs)\n", " locals()[\"bvec\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"xl\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"layer\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"layer\"+str(count)].fill(2) # connect layer 2\n", " locals()[\"e\"+str(count)] = h.Vector(2*nsegs)\n", "\n", " for z3 in range(2*nsegs):\n", " locals()[\"xl\"+str(count)][z3] = 0.5\n", " \n", " \n", " \n", " \n", " \n", " \n", " d = dist_edge[i][j] + 0 #dist[i][j]\n", " rd = rho*d\n", " s = ((unique_radius*2)+(unique_radius*2))/2\n", " locals()[\"RG\"+str(count)] = np.array(RG)*s\n", " locals()[\"Resistance\"+str(count)] = rd/locals()[\"RG\"+str(count)]\n", " locals()[\"Conductance\"+str(count)]=[]\n", " for z4 in range(len(locals()[\"Resistance\"+str(count)])):\n", " locals()[\"Conductance\"+str(count)].append(1/(locals()[\"Resistance\"+str(count)][z4]*area[z4]))\n", " \n", "\n", " \n", " for z5 in range(0,nsegs,1):\n", "\n", " locals()[\"gmat\"+str(count)].setval(z5, z5, locals()[\"Conductance\"+str(count)][z5][0] )\n", " locals()[\"gmat\"+str(count)].setval(z5, nsegs+z5, -locals()[\"Conductance\"+str(count)][z5][0])\n", " locals()[\"gmat\"+str(count)].setval(nsegs+z5, z5, -locals()[\"Conductance\"+str(count)][z5][0])\n", " locals()[\"gmat\"+str(count)].setval(nsegs+z5, nsegs+z5, locals()[\"Conductance\"+str(count)][z5][0])\n", " \n", " \n", " locals()[\"GMAT\"+str(i)+str(j)] = locals()[\"gmat\"+str(count)]\n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "# geA= 1000\n", " \n", "# for z5 in range(0,nsegs,1):\n", "# locals()[\"gmat\"+str(count)].setval(z5, z5, geA)\n", "# locals()[\"gmat\"+str(count)].setval(z5, nsegs+z5, -geA)\n", "# locals()[\"gmat\"+str(count)].setval(nsegs+z5, z5, -geA)\n", "# locals()[\"gmat\"+str(count)].setval(nsegs+z5, nsegs+z5, geA)\n", "\n", "\n", "\n", "\n", " locals()[\"lm\"+str(count)] = h.LinearMechanism(locals()[\"cmat\"+str(count)], locals()[\"gmat\"+str(count)], locals()[\"e\"+str(count)], locals()[\"bvec\"+str(count)], locals()[\"sl\"+str(count)], locals()[\"xl\"+str(count)], locals()[\"layer\"+str(count)])\n", "\n", " count=count+1\n", " \n", " SEC.clear\n", " del RG\n", " del area\n", " \n", " \n", "\n", " \n", "#print(count) \n", " \n", " \n" ] }, { "cell_type": "code", "execution_count": 11, "id": "b71ff07f", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.18e+03\n", " -1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.36e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.36e+03 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.18e+03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.18e+03\n" ] }, { "data": { "text/plain": [ "0.0" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "GMAT01.printf() " ] }, { "cell_type": "code", "execution_count": 12, "id": "9f7204b0", "metadata": {}, "outputs": [], "source": [ " \n", " \n", " \n", "############################### Transverse connections between Boundary cables and Axons ######################################\n", "\n", "\n", "rho = 1.136e5 * 10000 * 4.7e-4 * 10000 # ohm-micron^2\n", "\n", "\n", "\n", "rows = len(Boundary_neighboring)\n", "\n", "for i in range(rows):\n", " \n", " for j in range(len(R)):\n", " \n", " if Boundary_neighboring[i][j]==1:\n", " \n", " NSEG = 0\n", "\n", " a2 = np.where(unique_radius == R[j]) # find type \n", " a2 = a2[0][0]+1\n", " \n", " Boundary_RG = locals()[\"Boundary_Rg_\"+str(a2)]\n", " area = (math.pi)*(parameters[1])*(np.ones((len(Boundary_RG),1)))\n", " area = area * 1e-8 #cm^2\n", " \n", "\n", " SEC = locals()[\"Boundary_to_\"+str(a2)]\n", "\n", "\n", " locals()[\"sl\"+str(count)] = h.SectionList()\n", "\n", " for z1 in range(int(len(SEC)/2)): \n", "\n", " S = sim.net.cells[j].secs[SEC[z1]][\"hObj\"]\n", " NSEG=NSEG+S.nseg\n", " locals()[\"sl\"+str(count)].append(S)\n", "\n", " for z2 in range(int(len(SEC)/2),int(len(SEC))):\n", "\n", " S = sim.net.cells[len(R)+i].secs[SEC[z2]][\"hObj\"]\n", " locals()[\"sl\"+str(count)].append(S) \n", "\n", "\n", "\n", "\n", " nsegs=int(NSEG)\n", "\n", " locals()[\"gmat\"+str(count)] =h.Matrix(2*nsegs, 2*nsegs)\n", " locals()[\"cmat\"+str(count)] =h.Matrix(2*nsegs, 2*nsegs)\n", " locals()[\"bvec\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"xl\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"layer\"+str(count)] =h.Vector(2*nsegs)\n", " locals()[\"layer\"+str(count)].fill(2) # connect layer 2\n", " locals()[\"e\"+str(count)] = h.Vector(2*nsegs)\n", "\n", " for z3 in range(2*nsegs):\n", " locals()[\"xl\"+str(count)][z3] = 0.5\n", "\n", "\n", " \n", " \n", " rd = rho\n", " s = (unique_radius*2)\n", " locals()[\"Boundary_RG\"+str(count)] = np.array(Boundary_RG)*s\n", " locals()[\"Resistance\"+str(count)] = rd/locals()[\"Boundary_RG\"+str(count)]\n", " locals()[\"Conductance\"+str(count)]=[]\n", " for z4 in range(len(locals()[\"Resistance\"+str(count)])):\n", " locals()[\"Conductance\"+str(count)].append(1/(locals()[\"Resistance\"+str(count)][z4]*area[z4]))\n", "\n", " \n", " for z5 in range(0,nsegs,1):\n", "\n", " locals()[\"gmat\"+str(count)].setval(z5, z5, locals()[\"Conductance\"+str(count)][z5][0] * 1)\n", " locals()[\"gmat\"+str(count)].setval(z5, nsegs+z5, - locals()[\"Conductance\"+str(count)][z5][0] * 1)\n", " locals()[\"gmat\"+str(count)].setval(nsegs+z5, z5, - locals()[\"Conductance\"+str(count)][z5][0] * 1)\n", " locals()[\"gmat\"+str(count)].setval(nsegs+z5, nsegs+z5, locals()[\"Conductance\"+str(count)][z5][0] * 1)\n", " \n", " \n", " \n", " locals()[\"GMAT_BOUNDARY\"+str(i)+str(j)] = locals()[\"gmat\"+str(count)]\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", "# geB= 1\n", " \n", "# for z6 in range(0,nsegs,1):\n", "\n", "# locals()[\"gmat\"+str(count)].setval(z6, z6, geB)\n", "# locals()[\"gmat\"+str(count)].setval(z6, nsegs+z6, -geB)\n", "# locals()[\"gmat\"+str(count)].setval(nsegs+z6, z6, -geB)\n", "# locals()[\"gmat\"+str(count)].setval(nsegs+z6, nsegs+z6, geB)\n", "\n", "\n", "\n", "\n", " locals()[\"lm\"+str(count)] = h.LinearMechanism(locals()[\"cmat\"+str(count)], locals()[\"gmat\"+str(count)], locals()[\"e\"+str(count)], locals()[\"bvec\"+str(count)], locals()[\"sl\"+str(count)], locals()[\"xl\"+str(count)], locals()[\"layer\"+str(count)])\n", "\n", " count=count+1\n", " \n", " \n", " SEC.clear\n", " del Boundary_RG\n", " del area\n", " \n", " \n", " \n", " \n", " \n", "\n", "#print(count) \n", " \n", " \n", " \n", "# from IPython.display import clear_output\n", "\n", "# clear_output(wait=True)\n", "\n", "\n", " \n", "#gmat0.printf() \n", "\n", "# for sec in sl0:\n", "# print(sec)" ] }, { "cell_type": "code", "execution_count": 13, "id": "2f2f0781", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(Boundary_neighboring)" ] }, { "cell_type": "code", "execution_count": 14, "id": "7808a6c6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.03 \n", " -8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -16.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16.1 0 \n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.03 \n" ] }, { "data": { "text/plain": [ "0.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "GMAT_BOUNDARY11.printf() " ] }, { "cell_type": "markdown", "id": "b2a6c256", "metadata": {}, "source": [ "#### Recordings" ] }, { "cell_type": "code", "execution_count": 15, "id": "d1494f97", "metadata": {}, "outputs": [], "source": [ "## Recording vext\n", "\n", "\n", "# v1 = sim.net.cells[45].secs[\"node_0\"][\"hObj\"]\n", "# ap1 = h.Vector()\n", "# t = h.Vector()\n", "# ap1.record(v1(0.5)._ref_v)\n", "\n", "# t.record(h._ref_t)" ] }, { "cell_type": "code", "execution_count": 16, "id": "5dbd4f4b", "metadata": {}, "outputs": [], "source": [ "# for i1 in range(36):\n", "\n", "# locals()[\"Abeta0_imembrane\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_imembrane_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_imembrane_node\"+str(i1)].record(locals()[\"Abeta0_imembrane\"+str(i1)](0.5)._ref_i_membrane)\n", " \n", " \n", " \n", "# for i1 in range(12):\n", "\n", "# locals()[\"Abeta0_icap\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_icap_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_icap_node\"+str(i1)].record(locals()[\"Abeta0_icap\"+str(i1)](0.5)._ref_i_cap) \n", " \n", "\n", " \n", " \n", "# for i1 in range(12):\n", "\n", "# locals()[\"Abeta0_ik\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_ik_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_ik_node\"+str(i1)].record(locals()[\"Abeta0_ik\"+str(i1)](0.5)._ref_ik_axnode) \n", " \n", " \n", " \n", "# for i1 in range(12):\n", "\n", "# locals()[\"Abeta0_il\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_il_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_il_node\"+str(i1)].record(locals()[\"Abeta0_il\"+str(i1)](0.5)._ref_il_axnode) \n", " \n", " \n", "\n", "# for i1 in range(36):\n", "\n", "# locals()[\"Abeta0_ina\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_ina_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_ina_node\"+str(i1)].record(locals()[\"Abeta0_ina\"+str(i1)](0.5)._ref_ina_axnode) \n", " \n", " \n", " \n", " \n", "# for i1 in range(12):\n", "\n", "# locals()[\"Abeta0_inap\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", "# locals()[\"Abeta0_inap_node\"+str(i1)] = h.Vector()\n", "# locals()[\"Abeta0_inap_node\"+str(i1)].record(locals()[\"Abeta0_inap\"+str(i1)](0.5)._ref_inap_axnode) \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 17, "id": "9faae9bd", "metadata": {}, "outputs": [], "source": [ "\n", "\n", "for i3 in range(15,16):\n", "\n", " locals()[\"Abeta0_node_vext0\"+str(i3)] = sim.net.cells[0].secs[\"node_%s\"%i3][\"hObj\"]\n", " locals()[\"Abeta0_vext0_05_node\"+str(i3)] = h.Vector()\n", " locals()[\"Abeta0_vext0_05_node\"+str(i3)].record(locals()[\"Abeta0_node_vext0\"+str(i3)](0.5)._ref_vext[0])\n", " \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 18, "id": "ca5603a0", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Vector[451]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## Recording v and vext[0], Abeta\n", "\n", "###################################################### Abeta0\n", "\n", "\n", "for i1 in range(36):\n", "\n", " locals()[\"Abeta0_v\"+str(i1)] = sim.net.cells[0].secs[\"node_%s\"%i1][\"hObj\"]\n", " locals()[\"Abeta0_v_node\"+str(i1)] = h.Vector()\n", " locals()[\"Abeta0_v_node\"+str(i1)].record(locals()[\"Abeta0_v\"+str(i1)](0.5)._ref_v)\n", "\n", "\n", "\n", "for i2 in range(36):\n", "\n", " locals()[\"Abeta0_vex\"+str(i2)] = sim.net.cells[0].secs[\"node_%s\"%i2][\"hObj\"]\n", " locals()[\"Abeta0_vext0_node05\"+str(i2)] = h.Vector()\n", " locals()[\"Abeta0_vext0_node05\"+str(i2)].record(locals()[\"Abeta0_vex\"+str(i2)](0.5)._ref_vext[0])\n", " \n", " \n", " \n", " \n", "\n", "\n", "for ii2 in range(36):\n", "\n", " locals()[\"Abeta0_vex\"+str(ii2)] = sim.net.cells[0].secs[\"node_%s\"%ii2][\"hObj\"]\n", " locals()[\"Abeta0_vext0_node1\"+str(ii2)] = h.Vector()\n", " locals()[\"Abeta0_vext0_node1\"+str(ii2)].record(locals()[\"Abeta0_vex\"+str(ii2)](1)._ref_vext[0]) \n", " \n", " \n", "for ij2 in range(36):\n", "\n", " locals()[\"Abeta0_vex\"+str(ij2)] = sim.net.cells[0].secs[\"node_%s\"%ij2][\"hObj\"]\n", " locals()[\"Abeta0_vext0_node0\"+str(ij2)] = h.Vector()\n", " locals()[\"Abeta0_vext0_node0\"+str(ij2)].record(locals()[\"Abeta0_vex\"+str(ij2)](0)._ref_vext[0]) \n", " \n", " \n", "for i3 in range(36):\n", "\n", " locals()[\"Abeta0_vex1\"+str(i3)] = sim.net.cells[0].secs[\"node_%s\"%i3][\"hObj\"]\n", " locals()[\"Abeta0_vext1_node05\"+str(i3)] = h.Vector()\n", " locals()[\"Abeta0_vext1_node05\"+str(i3)].record(locals()[\"Abeta0_vex1\"+str(i3)](0.5)._ref_vext[1]) \n", " \n", " \n", " \n", " \n", "for i5 in range(36):\n", "\n", " locals()[\"Abeta0_vexx\"+str(i5)] = sim.net.cells[0].secs[\"node_%s\"%i5][\"hObj\"]\n", " locals()[\"Abeta0_vext1_node0\"+str(i5)] = h.Vector()\n", " locals()[\"Abeta0_vext1_node0\"+str(i5)].record(locals()[\"Abeta0_vexx\"+str(i5)](0)._ref_vext[1])\n", " \n", "\n", " \n", "for i6 in range(36):\n", "\n", " locals()[\"Abeta0_vexg\"+str(i6)] = sim.net.cells[0].secs[\"node_%s\"%i6][\"hObj\"]\n", " locals()[\"Abeta0_vext1_node1\"+str(i6)] = h.Vector()\n", " locals()[\"Abeta0_vext1_node1\"+str(i6)].record(locals()[\"Abeta0_vexg\"+str(i6)](1)._ref_vext[1])\n", " \n", " \n", " \n", " \n", "\n", "for i4 in range(36):\n", "\n", " locals()[\"Abeta1_vex\"+str(i4)] = sim.net.cells[1].secs[\"node_%s\"%i4][\"hObj\"]\n", " locals()[\"Abeta1_vext1_node05\"+str(i4)] = h.Vector()\n", " locals()[\"Abeta1_vext1_node05\"+str(i4)].record(locals()[\"Abeta1_vex\"+str(i4)](0.5)._ref_vext[1])\n", "\n", " \n", "\n", "i8=1663 \n", "locals()[\"v1Mext\"+str(i8)] = sim.net.cells[2].secs[\"section_1663\"][\"hObj\"]\n", "locals()[\"boundary0_vext1_section\"+str(i8)] = h.Vector()\n", "locals()[\"boundary0_vext1_section\"+str(i8)].record(locals()[\"v1Mext\"+str(i8)](0.5)._ref_vext[1]) \n", "\n", " \n", " \n", "for ii3 in range(36*2):\n", "\n", " locals()[\"Abeta0_vexe\"+str(ii3)] = sim.net.cells[0].secs[\"MYSA_%s\"%ii3][\"hObj\"]\n", " locals()[\"Abeta0_vext0_MYSA05\"+str(ii3)] = h.Vector()\n", " locals()[\"Abeta0_vext0_MYSA05\"+str(ii3)].record(locals()[\"Abeta0_vexe\"+str(ii3)](0.5)._ref_vext[0])\n", " \n", " \n", "for ii4 in range(36*2):\n", "\n", " locals()[\"Abeta0_vexxx\"+str(ii4)] = sim.net.cells[0].secs[\"MYSA_%s\"%ii4][\"hObj\"]\n", " locals()[\"Abeta0_vext1_MYSA05\"+str(ii4)] = h.Vector()\n", " locals()[\"Abeta0_vext1_MYSA05\"+str(ii4)].record(locals()[\"Abeta0_vexxx\"+str(ii4)](0.5)._ref_vext[1])\n", " \n", " \n", " \n", "\n", " \n", " \n", "t = h.Vector()\n", "t.record(h._ref_t)" ] }, { "cell_type": "markdown", "id": "d83f15db", "metadata": {}, "source": [ "#### Simulate and Analyze" ] }, { "cell_type": "code", "execution_count": 19, "id": "cd6d9f09", "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Running simulation for 6.0 ms...\n", " Done; run time = 94.31 s; real-time ratio: 0.00.\n", "\n", "Gathering data...\n", " Done; gather time = 0.48 s.\n", "\n", "Analyzing...\n", " Cells: 4\n", " Connections: 0 (0.00 per cell)\n", " Spikes: 1 (41.67 Hz)\n", " Simulated time: 0.0 s; 1 workers\n", " Run time: 94.31 s\n", " Done; saving time = 0.00 s.\n", "Plotting recorded cell traces ... cell\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x576 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 720x576 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "<Figure size 720x576 with 0 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "<Figure size 720x576 with 0 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Plotting 2D representation of network cell locations and connections...\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAz8AAAK/CAYAAABHknMvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA4rElEQVR4nO3de5yddX3o++9vZnKZzOQKITcDCSQQkZALI90tFwPUzeW0CkaROxxBQKxS6iXgUVEUUXrK1k0RN1YoAgbYG6RcatFuqEIP3RJCQ4gKwQgm5EpIyCSTmczld/5IQiNNyACZtTL5vd+v17zIWutZz+87WRDmk+dZz0o55wAAANjT1VR7AAAAgEoQPwAAQBHEDwAAUATxAwAAFEH8AAAARair9gBvZu+9987jxo2r9hgAAOzBnnrqqVdyzsN39PjcuXOPr6uruzLnPDIcPNiddUbE4x0dHR8/7LDDNm1vg906fsaNGxdz5syp9hgAAOzBUkov7eixuXPnHt+vX7+/HTdu3Kb6+vo1NTU1PidmN9XV1ZVeeumlI9euXfuJiPjO9rZRrgAAsAN1dXVXjhs3blNDQ8NG4bN7q6mpyaNHj15fW1t73g63qeA8AADQq+ScR9bX17dWew66p2/fvu0558E7elz8AADAjtU44tN7pJQi3qRxxA8AAFAE8QMAABRB/AAAQC93+OGHHzRo0KCpGzduTD291nPPPdf3j/7ojw6sr6+fNn78+Pfcd999A3t6zV1F/AAAQC/23HPP9X3qqacaU0oxe/bsIT293kc/+tH9J0+e3LJq1ap/v/LKK18+++yzD1i6dOlu/RE6W4kfAADoxb7//e/vNWXKlA0f+chHXrntttv2iohobW1NkyZNOvjqq6/eJyKio6Mjpk+fPumzn/3sqIiIuXPn9j/88MMPGjhw4NQJEya854477nj9CmkzZ84cd/bZZ+87Y8aMCQ0NDdMOPfTQSQsWLOgXEfHMM8/0+9WvfjXgr//6r5c2Njbm8847b+2BBx648fbbbx9aje/9reoVhQYAALuD2+csHbvstbYBPbnGqMH9Ws5qGr24u9vffffde11yySUrjjjiiA3HHHPMpMWLF9eNHTu247bbblt03HHHTTrxxBPX3XXXXUM6Ozvjm9/85rK2trZ08sknTzjjjDNe+cUvfvH8T3/608bTTz99wiGHHPKrKVOmtEVE3H///cPuu+++54888siWmTNnjp81a9aYBx98cNG///u/17/rXe9qGzp0aNfW9d/znvdsXLBgQf+e+L3Y1Rz5AQCAXurhhx9uXLp0ad9zzz13zVFHHdUyduzYtptvvnlYRMR73/ve1ssuu2zZzJkzD7jxxhtH3n777b+rq6uLRx99tKGlpaX26quvXt6/f//8gQ98oPnYY49de+utt+61db8nnHDCmmOOOaalT58+ceaZZ766YMGC+oiI5ubmmoEDB3ZuO8PgwYM7169fX1vZ7/ztceQHAAC66a0ckamEW265Za8jjzxy3ahRozoiImbOnPnq7Nmz977yyitXRkRcfPHFq7/5zW+OOf7449dMnjy5LSJi8eLFfUaOHLmptvY/emXs2LGbli5d2mfr7REjRrRv/XVDQ0NXS0tLbUTEwIEDu94YOuvWratpbGz8gyDaXYkfAADohdavX58eeuihoZ2dnWnvvfeeEhGxadOm1NzcXPvEE0/U//Ef//HG888/f99jjjlm7WOPPTbo4Ycfbjz++OPXjx07tn358uV9Ozs7Y2sALV68uO/EiRPbdrbm1KlTNy5ZsqTfmjVrarae+rZgwYIBp5566qs9+s3uIk57AwCAXuiOO+4YWlNTE/PmzVswd+7cBXPnzl3w7LPPPnvYYYetv/nmm/e64YYbhs2fP3/AXXfd9eI111yz+IILLhj32muv1cyYMWNDfX1955e+9KWRbW1t6cEHHxz4yCOPDDn77LN3GjCHHnpo26RJk1pmzZo1uqWlJf3whz8c8txzz9WfddZZayrxPb9TjvwAAEAvdPvtt+916qmnvjJx4sRN295/8cUXr7zwwgv3HzRoUOfdd9+9cPDgwV0XX3zxqw888MCQiy66aOydd9750o9//OMXPvGJT+x3/fXXj9xnn33ab7zxxt9NmzattTvr3n333YvOPvvs8cOGDZs2cuTITbfddttvR48e3dEz3+WulXLO1Z5hh5qamvKcOXOqPQYAAHuwlNJTOeem7T02b968F6dMmfJKpWfi7Zs3b97eU6ZMGbe9x5z2BgAAFEH8AAAARRA/AABAEcQPAABQBPEDAAAUQfwAAABFED8AAEARxA8AAFCEumoPsDvJOcfydZtiY3tnjBjULxr61lZ7JACAPV7uaov2DfMiIkWfhimRavpWeyT2UOJni9+s2BA/empZrG/riJqaFB2dOaa9a2CcNn1U9KtzgAwAYFfLOceGJd+K9Yuv2ebeFI37fjkaxlwWKaWqzdbbHH744Qf95je/qV+xYsW8+vr63JNrXXrppaN/8pOfDFm0aFH9pz/96WXXXXfd0p5cb1eq2E/1KaVhKaUfp5Q2pJReSimdUam1d+aFVS3xP/6/xfFqS3ts6szR2t4VHV05nl7SHNf/4vfRlXv03x8AgCI1v/TlaP791yJ3rtvm67VofulLsf73X6/2eL3Gc8891/epp55qTCnF7Nmzh/T0ehMmTGj7+te/vuR973vf2p5ea1er5CGNGyJiU0SMiIgzI+LGlNJ7Krj+Dt0zb0W0d/7nwOnoyrFsXWs8v7KlClMBAOy5ujrWxoYl/29E13Z+zupqifVLromujubKD9YLff/7399rypQpGz7ykY+8ctttt+0VEdHa2pomTZp08NVXX71PRERHR0dMnz590mc/+9lRERFz587tf/jhhx80cODAqRMmTHjPHXfcMXjr/mbOnDnu7LPP3nfGjBkTGhoaph166KGTFixY0G/r45/61KdWn3rqqesaGxu7Kv29vlMVOe0tpdQQETMj4pCc8/qIeDyldH9EnB0Rl1dihh1p2dQZS19r3eHjbR05nlr8Wkwa0VDBqQAA9mxta34aqaZP5M7t/xyWUp/Y9Noj0X+vD1Z4sje39vmPje3Y8OyAnlyjruGQliEH3ry4u9vffffde11yySUrjjjiiA3HHHPMpMWLF9eNHTu247bbblt03HHHTTrxxBPX3XXXXUM6Ozvjm9/85rK2trZ08sknTzjjjDNe+cUvfvH8T3/608bTTz99wiGHHPKrKVOmtEVE3H///cPuu+++54888siWmTNnjp81a9aYBx98cFHPfdeVUakjPwdGRGfO+flt7psXEf/pyE9K6cKU0pyU0pxVq1b1+GCdXXmn55Nu2s5RIQAA3r6cN0XEm/2MlSN3tVVqnF7r4Ycfbly6dGnfc889d81RRx3VMnbs2Labb755WETEe9/73tbLLrts2cyZMw+48cYbR95+++2/q6uri0cffbShpaWl9uqrr17ev3///IEPfKD52GOPXXvrrbfutXW/J5xwwppjjjmmpU+fPnHmmWe+umDBgvrqfZe7TqUueNAYEa+94b7XImLgGzfMOd8UETdFRDQ1NfV4dTT2q40BfWtjXWvHdh/vV1cT73bUBwBgl+o78I8j5+3//BURkbs2Rd+B/6WCE3XPWzkiUwm33HLLXkceeeS6UaNGdUREzJw589XZs2fvfeWVV66MiLj44otXf/Ob3xxz/PHHr5k8eXJbRMTixYv7jBw5clNt7X9c2Xjs2LGbli5d2mfr7REjRrRv/XVDQ0NXS0vLHnEZ5Eod+VkfEYPecN+giKj6iZwppTjp4L2jb+32j/70qUkxfewbRwcA4J2oqz8g+g4+JiL1+88Ppv7Rb9iJUdt/38oP1ousX78+PfTQQ0N/+ctfDtx7772n7L333lNuuummEc8991z9E088UR8Rcf755+97zDHHrH3ssccGPfzww40REWPHjm1fvnx5387Oztf3tXjx4r6jR49u38FSe4xKHfl5PiLqUkoTc84Lt9w3JSIWVGj9N3XE+CGxekN7PLrw1UgR0d6Vo19dTfSvq4lPHb1v9K11qWsAgF1t6KS7Ys2CP49N65+M6Nq0+c6avtF30B/HkINuq+5wvcAdd9wxtKamJubOnbugX79+r1984EMf+tABN998815z585tmT9//oBnn332V7Nnzx5ywQUXjHv22Wd/NWPGjA319fWdX/rSl0ZeeeWVK372s581PvLII0OuuuqqX3dn3ba2ttTZ2RldXV3R0dERLS0tqW/fvrmubvf/FJ2KTJhz3pBSujcirkopXRARUyPigxHxJ5VYf2dSSvHByfvE+yYMjX9f0hytHV3xriH94uCRjVHj+vIAAD2ipm5g7DXlX6J9/dxoW/NwRKToN/SE6NM4tdqj9Qq33377XqeeeuorEydO3LTt/RdffPHKCy+8cP9BgwZ13n333QsHDx7cdfHFF7/6wAMPDLnooovG3nnnnS/9+Mc/fuETn/jEftdff/3IffbZp/3GG2/83bRp03Z8FbBtnHHGGfvde++9r78/6Prrrx/1ne9858VPf/rTq3f197irpVyhz7BJKQ2LiJsj4v0RsToiLs85/+jNntPU1JTnzJlTifEAAChUSumpnHPT9h6bN2/ei1OmTHml0jPx9s2bN2/vKVOmjNveYxU7NpVzfjUiTq7UegAAANvyZhYAAKAI4gcAACiC+AEAAIogfgAAgCKIHwAAoAjiBwAAKIL4AQAAiiB+AACAd2TMmDGT77vvvoHVnmNnxA8AAPRSY8aMmdy/f//pAwYMmDZo0KCpM2bMmPDCCy/0qfZcu9KKFStq3//+9x9QX18/bfTo0ZO/973vDXu7+xI/AADQi915550LW1panl6+fPm84cOHd1x88cX7Vnum7mpvb9/pNhdccMG+ffv2zcuXL593yy23/O5zn/vcvnPmzOn/dtYTPwAAsAcYMGBA/vCHP7zmhRdeqI+IWL16de0pp5wybujQoVNGjx49+fOf//yozs7OiIj4q7/6q9Ef/OAHx2997nPPPdc3pXTY1hg5/PDDD7r00ktHT58+fVJDQ8O0I444YuKyZcvqtm5/ww03DBs9evTkIUOGTJ01a9bIbed49NFHB0ydOnXSwIEDpw4fPvzQc845Z9/W1ta09fGU0mHXXHPN8P322++QcePGTT777LP3/fjHP/6ubfdx7LHHTrjqqqv2WbduXc0//dM/Db3mmmteHjx4cNfxxx+//rjjjnvt5ptv3uvt/B7V7XwTAAAgIuL2lx8du6zt1QE9ucaofsNazhpzzOK3+rzm5uaau+66a+i0adPWR0RccMEFY9etW1e7aNGi+StXrqw7/vjjDxw1alT7ZZdd9kp39nfvvfcOe+ihhxbuv//+m4499tgDv/a1r4347ne/+/JTTz3V/3Of+9x+99xzz8IZM2Zs+NSnPjVmxYoVfbc+r66uLv7mb/5m8dFHH71h0aJFfU888cSJ11577fAvf/nLK7du88ADDwz55S9/+euGhoauJ598sv6jH/3ohO9973tLamtrY9myZXVPPPHEwFtvvfXF+fPn96utrY1DDz20betzDz300JbHH3/8bb2/yJEfAADoxc4444wJAwcOnDp06NBpjz/++KArrrhiRUdHRzz00EPDrr322peHDh3addBBB2365Cc/uXz27NndPmJy+umnrz700EPbGhsb84c+9KFX58+fPyAiYvbs2UOPPfbY10488cT19fX1+brrrluaUspbn3fUUUe1HHfccRv69OkTBx100Kbzzjtv1WOPPfYHsXL55ZcvHzFiRGdjY2M+5phjWhobGzvvv//+QRERt9xyy9DDDz+8eezYsR3Nzc21jY2Nnds+d/DgwZ3r16+vfTu/V478AABAN72dIzI97Uc/+tELJ598cnNHR0fccccdQ97//vcf9OSTT/6qvb09TZw4cdPW7caPH79pxYoV3b4YwsiRI19/Q86AAQO6WlpaaiIili5d2mfMmDGv73fQoEFdQ4YM6dh6+5lnnul36aWXjp0/f35Da2trTWdnZxx88MEt2+57/Pjxm7a9fdppp62+7bbbhp1yyinr7rrrrr0uueSSlRERAwcO7NywYcMfHLBZt27dfwqi7nLkBwAA9gB1dXVx7rnnrq2pqck///nPG+rq6vLChQtfPx3txRdf7DtixIj2iIiGhobOjRs3vt4CS5Ys6XYUjRo1qv3ll19+fb/Nzc01a9euff2gykUXXbTfxIkTWxcuXDh//fr1T19xxRUvv3EfKaU/uH3++eev/tnPfjbkiSeeqF+0aFH/M888c01ExOTJk9s6OjrS/Pnz+23d9plnnqmfNGnSxu7Ouy3xAwAAe4Curq64/fbbhzQ3N9dNmzZt40knnbTm8ssvH7NmzZqa559/vu8NN9ww4rTTTlsdETF9+vSNTz75ZOPChQv7rl69uvYb3/jGyJ3tf6vTTz99zSOPPDL44YcfbmxtbU2f+cxnRuecX6+Z9evX1w4aNKhz8ODBXU8//XT/m2++eZ+d7fOAAw5onzx58oZzzz13/AknnLC2sbExR2w+qnT88cev/cIXvjB63bp1NT/96U8b/vmf/3nIxz72sdVv5/dI/AAAQC922mmnTRwwYMC0gQMHTvvqV7865vrrr/9dU1NT69/93d/9fsCAAV3777//5KOPPnrSzJkzX7300ktfiYg45ZRT1v3Zn/3ZmunTpx88bdq0d5900kmvdXe9pqam1m9961u/P++888aPHDlyytChQztGjBjx+mls11577eJ77rlnWGNj47QLLrhgv5NPPvnV7uz3rLPOWr1w4cL6c8455w/C5gc/+MFLGzdurBkxYsSUc889d/+//uu//n1TU1Nrd+fdVso573yrKmlqaspz5syp9hgAAOzBUkpP5ZybtvfYvHnzXpwyZUq3ro7GO/OTn/yk8WMf+9j4JUuWzK+tfVvXM4iIiHnz5u09ZcqUcdt7zJEfAACgqtra2tK3v/3tEWeeeeYr7yR8dkb8AAAAVTN37tz+Q4YMmbpy5co+X/jCF1b05FoudQ0AAFTN9OnTWzdu3Ph0JdZy5AcAACiC+AEAAIogfgAAgCKIHwAAoAjiBwAAKIL4AQAA3pExY8ZMvu+++wZWe46dET8AANBLjRkzZnL//v2nDxgwYNqgQYOmzpgxY8ILL7zQp9pz7Urf+MY3hh9yyCHv7tu37/SZM2eOeyf7Ej8AANCL3XnnnQtbWlqeXr58+bzhw4d3XHzxxftWe6buam9v3+k2Y8aMaZ81a9ayj3zkI6+80/XEDwAA7AEGDBiQP/zhD6954YUX6iMiVq9eXXvKKaeMGzp06JTRo0dP/vznPz+qs7MzIiL+6q/+avQHP/jB8Vuf+9xzz/VNKR22NUYOP/zwgy699NLR06dPn9TQ0DDtiCOOmLhs2bK6rdvfcMMNw0aPHj15yJAhU2fNmjVy2zkeffTRAVOnTp00cODAqcOHDz/0nHPO2be1tTVtfTyldNg111wzfL/99jtk3Lhxk88+++x9P/7xj79r230ce+yxE6666qp9IiLOPffctWefffbavfbaq+Od/h7V7XwTAAAgImLtDR8b2/H7Zwf05Bp1+x7SMuSTNy9+q89rbm6uueuuu4ZOmzZtfUTEBRdcMHbdunW1ixYtmr9y5cq6448//sBRo0a1X3bZZd06gnLvvfcOe+ihhxbuv//+m4499tgDv/a1r4347ne/+/JTTz3V/3Of+9x+99xzz8IZM2Zs+NSnPjVmxYoVfV+fv64u/uZv/mbx0UcfvWHRokV9TzzxxInXXnvt8C9/+csrt27zwAMPDPnlL3/564aGhq4nn3yy/qMf/eiE733ve0tqa2tj2bJldU888cTAW2+99cW3+nuwM478AABAL3bGGWdMGDhw4NShQ4dOe/zxxwddccUVKzo6OuKhhx4adu211748dOjQroMOOmjTJz/5yeWzZ8/eq7v7Pf3001cfeuihbY2NjflDH/rQq/Pnzx8QETF79uyhxx577Gsnnnji+vr6+nzdddctTSnlrc876qijWo477rgNffr0iYMOOmjTeeedt+qxxx77g4shXH755ctHjBjR2djYmI855piWxsbGzvvvv39QRMQtt9wy9PDDD28eO3bsOz7S80aO/AAAQDe9nSMyPe1HP/rRCyeffHJzR0dH3HHHHUPe//73H/Tkk0/+qr29PU2cOHHT1u3Gjx+/acWKFd2+GMLIkSNff0POgAEDulpaWmoiIpYuXdpnzJgxr+930KBBXUOGDHk9VJ555pl+l1566dj58+c3tLa21nR2dsbBBx/csu2+x48fv2nb26eddtrq2267bdgpp5yy7q677trrkksuWRk9wJEfAADYA9TV1cW55567tqamJv/85z9vqKurywsXLnz9dLQXX3yx74gRI9ojIhoaGjo3btz4egssWbKk21E0atSo9pdffvn1/TY3N9esXbv29YMqF1100X4TJ05sXbhw4fz169c/fcUVV7z8xn2klP7g9vnnn7/6Zz/72ZAnnniiftGiRf3PPPPMNd3+xt8C8QMAAHuArq6uuP3224c0NzfXTZs2beNJJ5205vLLLx+zZs2amueff77vDTfcMOK0005bHRExffr0jU8++WTjwoUL+65evbr2G9/4xsid7X+r008/fc0jjzwy+OGHH25sbW1Nn/nMZ0bnnF+vmfXr19cOGjSoc/DgwV1PP/10/5tvvnmfne3zgAMOaJ88efKGc889d/wJJ5ywtrGx8fXT6Nrb26OlpSV1dnamzs7O1NLSkrpzlbjtET8AANCLnXbaaRMHDBgwbeDAgdO++tWvjrn++ut/19TU1Pp3f/d3vx8wYEDX/vvvP/noo4+eNHPmzFcvvfTSVyIiTjnllHV/9md/tmb69OkHT5s27d0nnXTSa91dr6mpqfVb3/rW788777zxI0eOnDJ06NCOESNGvH4a27XXXrv4nnvuGdbY2Djtggsu2O/kk09+tTv7Peuss1YvXLiw/pxzzlm97f2zZs0a3dDQMP273/3uyH/4h38Y1tDQMH3WrFmjuzvvtlLOeedbVUlTU1OeM2dOtccAAGAPllJ6KufctL3H5s2b9+KUKVPe8efLsHM/+clPGj/2sY+NX7Jkyfza2tq3vZ958+btPWXKlHHbe8yRHwAAoKra2trSt7/97RFnnnnmK+8kfHZG/AAAAFUzd+7c/kOGDJm6cuXKPl/4whdW9ORaLnUNAABUzfTp01s3btz4dCXWcuQHAAAogvgBAIAd6+zq6ko734zdwZbXqmtHj4sfAADYscdfeumlIW1tbX1256skszl8Vq1aNTgint3RNt7zAwAAO9DR0fHxtWvXfqK5ufm8nPOwcPBgd9YVEc92dHRcsKMNxA8AAOzAYYcdtikivrPli15OuQIAAEUQPwAAQBHEDwAAUATxAwAAFEH8AAAARRA/AABAEcQPAABQBPEDAAAUQfwAAABFED8AAEARxA8AAFAE8QMAABRB/AAAAEUQPwAAQBHEDwAAUATxAwAAFEH8AAAARRA/AABAEcQPAABQBPEDAAAUQfwA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\n", "text/plain": [ "<Figure size 864x864 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " Done; plotting time = 0.44 s\n", "\n", "Total time = 96.25 s\n", "\n", "End time: 2023-01-05 10:43:18.169224\n" ] } ], "source": [ "sim.simulate()\n", "sim.analyze()" ] }, { "cell_type": "code", "execution_count": 20, "id": "ceb34061", "metadata": {}, "outputs": [], "source": [ "# plotting\n", "\n", "#sim.analysis.plotLFP( plots = ['timeSeries', 'locations'] , electrodes=[ 'all'], lineWidth=1000 , fontSize=14, saveFig=True)\n", "\n", "# from matplotlib import pyplot\n", "# %matplotlib inline\n", "# pyplot.plot(t, ap1 )\n", "# #pyplot.xlim((0, 10))\n", "# pyplot.show()\n" ] }, { "cell_type": "code", "execution_count": 21, "id": "ddb4904a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Duration: 0:01:39.495708\n" ] } ], "source": [ "# show the execution time\n", "\n", "end_time = datetime.now()\n", "print('Duration: {}'.format(end_time - start_time))" ] }, { "cell_type": "code", "execution_count": null, "id": "eb4751f0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 22, "id": "d18ce34b", "metadata": {}, "outputs": [], "source": [ "# Longitudinal Current: picoamp\n", "\n", "\n", "\n", "# xraxia = xr*1e6 #ohm/cm\n", "# xraxia = xraxia*2*1e-4 # ohm, length between node to MYSA is 2 micron\n", "\n", "\n", "# v_diff_00 = (Abeta0_vext1_node0-Abeta0_vext1_MYSA0)/1000 #volt\n", "# Longi_Current_node0_MYSA0 = v_diff_00/xraxia #amp\n", "# Longi_Current_node0_MYSA0 = Longi_Current_node0_MYSA0*1e12 #picoamp\n", "\n", "# v_diff_12 = (Abeta0_vext1_node1-Abeta0_vext1_MYSA2)/1000 #volt\n", "# Longi_Current_node1_MYSA2 = v_diff_12/xraxia \n", "# Longi_Current_node1_MYSA2 = Longi_Current_node1_MYSA2*1e12 \n", "\n", "# v_diff_24 = (Abeta0_vext1_node2-Abeta0_vext1_MYSA4)/1000 #volt\n", "# Longi_Current_node2_MYSA4 = v_diff_24/xraxia \n", "# Longi_Current_node2_MYSA4 = Longi_Current_node2_MYSA4*1e12 \n", "\n", "# v_diff_36 = (Abeta0_vext1_node3-Abeta0_vext1_MYSA6)/1000 #volt\n", "# Longi_Current_node3_MYSA6 = v_diff_36/xraxia \n", "# Longi_Current_node3_MYSA6 = Longi_Current_node3_MYSA6*1e12 \n", "\n", "# v_diff_48 = (Abeta0_vext1_node4-Abeta0_vext1_MYSA8)/1000 #volt\n", "# Longi_Current_node4_MYSA8 = v_diff_48/xraxia \n", "# Longi_Current_node4_MYSA8 = Longi_Current_node4_MYSA8*1e12 \n", "\n", "# v_diff_510 = (Abeta0_vext1_node5-Abeta0_vext1_MYSA10)/1000 #volt\n", "# Longi_Current_node5_MYSA10 = (v_diff_510/xraxia)*1e12 \n", "\n", "# v_diff_612 = (Abeta0_vext1_node6-Abeta0_vext1_MYSA12)/1000 #volt\n", "# Longi_Current_node6_MYSA12 = (v_diff_612/xraxia)*1e12 \n", "\n", "# v_diff_714 = (Abeta0_vext1_node7-Abeta0_vext1_MYSA14)/1000 #volt\n", "# Longi_Current_node7_MYSA14 = (v_diff_714/xraxia)*1e12 \n", "\n", "# v_diff_816 = (Abeta0_vext1_node8-Abeta0_vext1_MYSA16)/1000 #volt\n", "# Longi_Current_node8_MYSA16 = (v_diff_816/xraxia)*1e12 \n", "\n", "# v_diff_918 = (Abeta0_vext1_node9-Abeta0_vext1_MYSA18)/1000 #volt\n", "# Longi_Current_node9_MYSA18 = (v_diff_918/xraxia)*1e12 \n", "\n", "# v_diff_1020 = (Abeta0_vext1_node10-Abeta0_vext1_MYSA20)/1000 #volt\n", "# Longi_Current_node10_MYSA20 = (v_diff_1020/xraxia)*1e12 \n", "\n", "# v_diff_1122 = (Abeta0_vext1_node11-Abeta0_vext1_MYSA22)/1000 #volt\n", "# Longi_Current_node11_MYSA22 = (v_diff_1122/xraxia)*1e12 \n" ] }, { "cell_type": "code", "execution_count": 23, "id": "09bf554d", "metadata": {}, "outputs": [], "source": [ "# print(xraxia)" ] }, { "cell_type": "code", "execution_count": 24, "id": "d833f599", "metadata": {}, "outputs": [], "source": [ "# Transverse current: Picoamp/micron^2\n", "\n", "\n", "# TC = 2.3e+03\n", "\n", "\n", "# v_diff00 = (Abeta0_vext1_node0 - Abeta1_vext1_node0)/1000 #volt\n", "# Trans_Current_node0_node0 = (v_diff00 * TC )*1e12/1e8 #volt*S/cm2 = Amp/cm2 = PicoAMP/cm2 = PicoAMP/micron^2\n", "\n", "# v_diff11 = (Abeta0_vext1_node1 - Abeta1_vext1_node1)/1000 #volt\n", "# Trans_Current_node1_node1 = v_diff11 * TC *1e12/1e8 \n", "\n", "# v_diff22 = (Abeta0_vext1_node2 - Abeta1_vext1_node2)/1000 #volt\n", "# Trans_Current_node2_node2 = v_diff22 * TC *1e12/1e8 \n", "\n", "# v_diff33 = (Abeta0_vext1_node3 - Abeta1_vext1_node3)/1000 #volt\n", "# Trans_Current_node3_node3 = v_diff33 * TC *1e12/1e8 \n", "\n", "# v_diff44 = (Abeta0_vext1_node4 - Abeta1_vext1_node4)/1000 #volt\n", "# Trans_Current_node4_node4 = v_diff44 * TC *1e12/1e8 \n", "\n", "# v_diff55 = (Abeta0_vext1_node5 - Abeta1_vext1_node5)/1000 #volt\n", "# Trans_Current_node5_node5 = v_diff55 * TC *1e12/1e8 \n", "\n", "# v_diff66 = (Abeta0_vext1_node6 - Abeta1_vext1_node6)/1000 #volt\n", "# Trans_Current_node6_node6 = v_diff66 * TC *1e12/1e8 \n", "\n", "# v_diff77 = (Abeta0_vext1_node7 - Abeta1_vext1_node7)/1000 #volt\n", "# Trans_Current_node7_node7 = v_diff77 * TC *1e12/1e8 \n", "\n", "# v_diff88 = (Abeta0_vext1_node8 - Abeta1_vext1_node8)/1000 #volt\n", "# Trans_Current_node8_node8 = v_diff88 * TC *1e12/1e8 \n", "\n", "# v_diff99 = (Abeta0_vext1_node9 - Abeta1_vext1_node9)/1000 #volt\n", "# Trans_Current_node9_node9 = v_diff99 * TC *1e12/1e8 \n", "\n", "# v_diff1010 = (Abeta0_vext1_node10 - Abeta1_vext1_node10)/1000 #volt\n", "# Trans_Current_node10_node10 = v_diff1010 * TC *1e12/1e8 \n", "\n", "# v_diff1111 = (Abeta0_vext1_node11 - Abeta1_vext1_node11)/1000 #volt\n", "# Trans_Current_node11_node11 = v_diff1111 * TC *1e12/1e8 \n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "b812647a", "metadata": {}, "outputs": [], "source": [ "# import csv\n", "\n", "# with open('v_diff66_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , v_diff66 ))\n", " \n", " \n", " \n", " \n", "import csv\n", "\n", "\n", "\n", "\n", "\n", "\n", "# with open('ALLExtraVoltages_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_vext0_node0515 , Abeta0_vext1_node0515 , Abeta0_vext1_node015 , Abeta0_vext1_node115 , Abeta1_vext1_node0515 , boundary0_vext1_section1663 , Abeta0_vext0_node115 , Abeta0_vext0_MYSA0530 , Abeta0_vext1_MYSA0530 , Abeta0_vext0_node015))\n", "\n", " \n", " \n", "with open('node15_vext0_05_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", " csv.writer(f).writerows(zip( t ,Abeta0_vext0_05_node15 )) \n", " \n", "\n", "\n", "# with open('vext1_node15_MYSA30_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t ,Abeta0_vext1_node15 , Abeta0_vext1_MYSA30 )) " ] }, { "cell_type": "markdown", "id": "8f3b15f1", "metadata": {}, "source": [ "#### saving the data" ] }, { "cell_type": "code", "execution_count": 26, "id": "890baeb5", "metadata": {}, "outputs": [], "source": [ "## saving the data\n", "\n", "\n", "import csv\n", "\n", "\n", "\n", "\n", " \n", "# with open('v_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_v_node0 , Abeta0_v_node1 , Abeta0_v_node2 , Abeta0_v_node3 , Abeta0_v_node4 , Abeta0_v_node5 , Abeta0_v_node6 , Abeta0_v_node7 , Abeta0_v_node8 , Abeta0_v_node9 , Abeta0_v_node10 , Abeta0_v_node11 , Abeta0_v_node12 , Abeta0_v_node13 , Abeta0_v_node14 , Abeta0_v_node15 , Abeta0_v_node16 , Abeta0_v_node17 , Abeta0_v_node18 , Abeta0_v_node19 , Abeta0_v_node20 , Abeta0_v_node21 , Abeta0_v_node22 , Abeta0_v_node23 , Abeta0_v_node24 , Abeta0_v_node25 , Abeta0_v_node26 , Abeta0_v_node27 , Abeta0_v_node28 , Abeta0_v_node29 , Abeta0_v_node30 , Abeta0_v_node31 , Abeta0_v_node32 , Abeta0_v_node33 , Abeta0_v_node34 , Abeta0_v_node35 )) \n", "\n", "\n", " \n", " \n", "# with open('imembrane_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_imembrane_node0 , Abeta0_imembrane_node1 , Abeta0_imembrane_node2 , Abeta0_imembrane_node3 , Abeta0_imembrane_node4 , Abeta0_imembrane_node5 , Abeta0_imembrane_node6 , Abeta0_imembrane_node7 , Abeta0_imembrane_node8 , Abeta0_imembrane_node9 , Abeta0_imembrane_node10 , Abeta0_imembrane_node11 , Abeta0_imembrane_node12 , Abeta0_imembrane_node13 , Abeta0_imembrane_node14 , Abeta0_imembrane_node15 , Abeta0_imembrane_node16 , Abeta0_imembrane_node17 , Abeta0_imembrane_node18 , Abeta0_imembrane_node19 , Abeta0_imembrane_node20 , Abeta0_imembrane_node21 , Abeta0_imembrane_node22 , Abeta0_imembrane_node23 , Abeta0_imembrane_node24 , Abeta0_imembrane_node25 , Abeta0_imembrane_node26 , Abeta0_imembrane_node27 , Abeta0_imembrane_node28 , Abeta0_imembrane_node29 , Abeta0_imembrane_node30 , Abeta0_imembrane_node31 , Abeta0_imembrane_node32 , Abeta0_imembrane_node33 , Abeta0_imembrane_node34 , Abeta0_imembrane_node35 )) \n", " \n", " \n", "\n", "# #################################### Connected to ground \n", "\n", "# with open('ConnectGround_v_Abeta0_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_v_node0 , Abeta0_v_node1 , Abeta0_v_node2 , Abeta0_v_node3 , Abeta0_v_node4 , Abeta0_v_node5 , Abeta0_v_node6 , Abeta0_v_node7 , Abeta0_v_node8 , Abeta0_v_node9 , Abeta0_v_node10 , Abeta0_v_node11 )) \n", "\n", "\n", "# with open('NotConnectGround_vext1_Abeta0_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_vext1_node0 , Abeta0_vext1_node1 , Abeta0_vext1_node2 , Abeta0_vext1_node3 , Abeta0_vext1_node4 , Abeta0_vext1_node5 , Abeta0_vext1_node6 , Abeta0_vext1_node7 , Abeta0_vext1_node8 , Abeta0_vext1_node9 , Abeta0_vext1_node10 , Abeta0_vext1_node11 )) \n", "\n", "\n", "\n", "# with open('ConnectGround_LongiCurrent_Abeta0_NodetoMYSA_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Longi_Current_node0_MYSA0 , Longi_Current_node1_MYSA2 , Longi_Current_node2_MYSA4 , Longi_Current_node3_MYSA6 , Longi_Current_node4_MYSA8 , Longi_Current_node5_MYSA10 , Longi_Current_node6_MYSA12 , Longi_Current_node7_MYSA14 , Longi_Current_node8_MYSA16 , Longi_Current_node9_MYSA18 , Longi_Current_node10_MYSA20 , Longi_Current_node11_MYSA22 ))\n", " \n", " \n", "\n", "# with open('ConnectGround_TransCurrent_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Trans_Current_node0_node0 , Trans_Current_node1_node1 , Trans_Current_node2_node2 , Trans_Current_node3_node3 , Trans_Current_node4_node4 , Trans_Current_node5_node5 , Trans_Current_node6_node6 , Trans_Current_node7_node7 , Trans_Current_node8_node8 , Trans_Current_node9_node9 , Trans_Current_node10_node10 , Trans_Current_node11_node11 ))\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "# ##################################### Not connected to ground, Stimulate only one fiber \n", "\n", " \n", "# with open('v_Abeta0_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_v_node0 , Abeta0_v_node1 , Abeta0_v_node2 , Abeta0_v_node3 , Abeta0_v_node4 , Abeta0_v_node5 , Abeta0_v_node6 , Abeta0_v_node7 , Abeta0_v_node8 , Abeta0_v_node9 , Abeta0_v_node10 , Abeta0_v_node11 )) \n", "\n", "\n", " \n", "# with open('current_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_v_node0 , Abeta0_v_node1 , Abeta0_v_node2 , Abeta0_v_node3 , Abeta0_v_node4 , Abeta0_v_node5 , Abeta0_v_node6 , Abeta0_v_node7 , Abeta0_v_node8 , Abeta0_v_node9 , Abeta0_v_node10 , Abeta0_v_node11 )) \n", "\n", "\n", "\n", "# with open('LongiCurrent_Abeta0_NodetoMYSA_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Longi_Current_node0_MYSA0 , Longi_Current_node1_MYSA2 , Longi_Current_node2_MYSA4 , Longi_Current_node3_MYSA6 , Longi_Current_node4_MYSA8 , Longi_Current_node5_MYSA10 , Longi_Current_node6_MYSA12 , Longi_Current_node7_MYSA14 , Longi_Current_node8_MYSA16 , Longi_Current_node9_MYSA18 , Longi_Current_node10_MYSA20 , Longi_Current_node11_MYSA22 ))\n", " \n", " \n", "\n", "# with open('TransCurrent_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Trans_Current_node0_node0 , Trans_Current_node1_node1 , Trans_Current_node2_node2 , Trans_Current_node3_node3 , Trans_Current_node4_node4 , Trans_Current_node5_node5 , Trans_Current_node6_node6 , Trans_Current_node7_node7 , Trans_Current_node8_node8 , Trans_Current_node9_node9 , Trans_Current_node10_node10 , Trans_Current_node11_node11 ))\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", "# ##################################### Not connected to ground, Stimulate BOTH fibers \n", "\n", "\n", "# with open('v_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_v_node0 , Abeta0_v_node1 , Abeta0_v_node2 , Abeta0_v_node3 , Abeta0_v_node4 , Abeta0_v_node5 , Abeta0_v_node6 , Abeta0_v_node7 , Abeta0_v_node8 , Abeta0_v_node9 , Abeta0_v_node10 , Abeta0_v_node11 )) \n", "\n", "\n", "\n", "# with open('LongiCurrent_Abeta0_NodetoMYSA_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Longi_Current_node0_MYSA0 , Longi_Current_node1_MYSA2 , Longi_Current_node2_MYSA4 , Longi_Current_node3_MYSA6 , Longi_Current_node4_MYSA8 , Longi_Current_node5_MYSA10 , Longi_Current_node6_MYSA12 , Longi_Current_node7_MYSA14 , Longi_Current_node8_MYSA16 , Longi_Current_node9_MYSA18 , Longi_Current_node10_MYSA20 , Longi_Current_node11_MYSA22 ))\n", " \n", " \n", "\n", "# with open('TransCurrent_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Trans_Current_node0_node0 , Trans_Current_node1_node1 , Trans_Current_node2_node2 , Trans_Current_node3_node3 , Trans_Current_node4_node4 , Trans_Current_node5_node5 , Trans_Current_node6_node6 , Trans_Current_node7_node7 , Trans_Current_node8_node8 , Trans_Current_node9_node9 , Trans_Current_node10_node10 , Trans_Current_node11_node11 ))\n", " \n", " \n", " \n", " \n", " \n" ] }, { "cell_type": "code", "execution_count": 27, "id": "7a4d2e6a", "metadata": {}, "outputs": [], "source": [ "\n", "# with open('i_vext1_Abeta1_stimulateonlyAbeta0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta1_vext1_node0 , Abeta1_vext1_node1 , Abeta1_vext1_node2 , Abeta1_vext1_node3 , Abeta1_vext1_node4 , Abeta1_vext1_node5 , Abeta1_vext1_node6 , Abeta1_vext1_node7 , Abeta1_vext1_node8 , Abeta1_vext1_node9 , Abeta1_vext1_node10 , Abeta1_vext1_node11 )) \n" ] }, { "cell_type": "code", "execution_count": null, "id": "a594bc51", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 28, "id": "8e386b67", "metadata": {}, "outputs": [], "source": [ " \n", "# with open('icap_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_icap_node0 , Abeta0_icap_node1 , Abeta0_icap_node2 , Abeta0_icap_node3 , Abeta0_icap_node4 , Abeta0_icap_node5 , Abeta0_icap_node6 , Abeta0_icap_node7 , Abeta0_icap_node8 , Abeta0_icap_node9 , Abeta0_icap_node10 , Abeta0_icap_node11 )) \n", "\n", " \n", " \n", "# with open('ik_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_ik_node0 , Abeta0_ik_node1 , Abeta0_ik_node2 , Abeta0_ik_node3 , Abeta0_ik_node4 , Abeta0_ik_node5 , Abeta0_ik_node6 , Abeta0_ik_node7 , Abeta0_ik_node8 , Abeta0_ik_node9 , Abeta0_ik_node10 , Abeta0_ik_node11 )) \n", "\n", "\n", " \n", "# with open('il_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_il_node0 , Abeta0_il_node1 , Abeta0_il_node2 , Abeta0_il_node3 , Abeta0_il_node4 , Abeta0_il_node5 , Abeta0_il_node6 , Abeta0_il_node7 , Abeta0_il_node8 , Abeta0_il_node9 , Abeta0_il_node10 , Abeta0_il_node11 )) \n", "\n", "\n", "# with open('ina_Abeta0_stimulateonlyAbata0_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_ina_node0 , Abeta0_ina_node1 , Abeta0_ina_node2 , Abeta0_ina_node3 , Abeta0_ina_node4 , Abeta0_ina_node5 , Abeta0_ina_node6 , Abeta0_ina_node7 , Abeta0_ina_node8 , Abeta0_ina_node9 , Abeta0_ina_node10 , Abeta0_ina_node11 , Abeta0_ina_node12 , Abeta0_ina_node13 , Abeta0_ina_node14 , Abeta0_ina_node15 , Abeta0_ina_node16 , Abeta0_ina_node17 , Abeta0_ina_node18 , Abeta0_ina_node19 , Abeta0_ina_node20 )) \n", "\n", "\n", " \n", "# with open('inap_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_inap_node0 , Abeta0_inap_node1 , Abeta0_inap_node2 , Abeta0_inap_node3 , Abeta0_inap_node4 , Abeta0_inap_node5 , Abeta0_inap_node6 , Abeta0_inap_node7 , Abeta0_inap_node8 , Abeta0_inap_node9 , Abeta0_inap_node10 , Abeta0_inap_node11 )) \n", "\n", " \n", " \n", "# with open('imembrane_Abeta0_stimulateBOTH_edgedist3_.csv', 'w', newline='') as f:\n", "# csv.writer(f).writerows(zip( t , Abeta0_imembrane_node0 , Abeta0_imembrane_node1 , Abeta0_imembrane_node2 , Abeta0_imembrane_node3 , Abeta0_imembrane_node4 , Abeta0_imembrane_node5 , Abeta0_imembrane_node6 , Abeta0_imembrane_node7 , Abeta0_imembrane_node8 , Abeta0_imembrane_node9 , Abeta0_imembrane_node10 , Abeta0_imembrane_node11 )) \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 29, "id": "5bcb410c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "429128.527578172\n" ] } ], "source": [ "print(Rpn0)" ] }, { "cell_type": "code", "execution_count": null, "id": "564367b7", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8" } }, "nbformat": 4, "nbformat_minor": 5 }