-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinit_net.py
146 lines (104 loc) · 4.63 KB
/
init_net.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
"""
init.py
Starting script to run NetPyNE-based cortical network model to study epilepsy.
Usage:
python init.py # Run simulation, optionally plot a raster
MPI usage:
mpiexec -n 4 nrniv -python -mpi init.py
Contributors: salvadordura@gmail.com
"""
import matplotlib; matplotlib.use('Agg') # to avoid graphics error in servers
from netpyne import sim
import random as random
import time
random.seed(1072)
import os
import pickle
#import math
# read parameter files
cfg, netParams = sim.readCmdLineArgs(simConfigDefault='cfg_net.py', netParamsDefault='netParams_net.py')
# create network, run simulation and analyze output
#sim.createSimulateAnalyze(netParams, cfg)
sim.pc.timeout(0)
sim.initialize(netParams, cfg) # create network object and set cfg and net params
sim.net.createPops() # instantiate network populations
sim.net.createCells() # instantiate network cells based on defined populations
sim.net.defineCellShapes()
sim.net.connectCells() # create connections between cells based on params
sim.net.addStims() # add external stimulation to cells (IClamps etc)
sim.net.addRxD() # add reaction-diffusion (RxD)
sim.setupRecording() # setup variables to record for each cell (spikes, V traces, etc)
for cell in sim.net.cells:
for sec in cell.secs.values():
sec['vinit'] = random.uniform(-90.0,+10.0)
cell.initV()
# simConfig.filename = 'rectified'
#Ncells_E2_to_E2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E2','E2']]
#Ncells_E2_to_E5 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E2','E5']]
#Ncells_E5_to_E2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E5','E2']]
#Ncells_E5_to_E5 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E5','E5']]
#Ncells_E2_to_I2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E2','I2']]
#Ncells_E5_to_I2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['E5','I2']]
#Ncells_I2_to_I2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['I2','I2']]
#Ncells_I2_to_E2 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['I2','E2']]
#Ncells_I2_to_E5 = [n for n in range(len(sim.net.cells)) if sim.net.cells[n].tags['pop'] in ['I2','E5']]
def adjust_gap_junction_configs(syn_type):
for n in range(len(sim.net.cells)):
conn_as_pre = [nc for nc in range(len(sim.net.cells[n].conns)) if sim.net.cells[n].conns[nc]['synMech']==syn_type and sim.net.cells[n].conns[nc]['gapJunction']=='pre']
conn_as_post = [nc for nc in range(len(sim.net.cells[n].conns)) if sim.net.cells[n].conns[nc]['synMech']==syn_type and sim.net.cells[n].conns[nc]['gapJunction']=='post']
print('Cell '+str(n))
print(conn_as_pre, conn_as_post)
for nc in conn_as_pre:
sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].weight = 0.0
#for nc in conn_as_post:
# sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].esyn = esyn
# sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].vslope = 10.0
# sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].weight = weight
# sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].vth = vth
# sim.net.cells[n].secs['soma']['synMechs'][nc]['hObj'].tau = tau
adjust_gap_junction_configs('gradsynAMPA')
adjust_gap_junction_configs('gradsynGABA')
# Interval
#sim.runSimIntervalSaving(100000)
#sim.pc.barrier()
#sim.gatherData()
#sim.pc.barrier()
#sim.saveData()
#sim.pc.barrier()
#sim.analysis.plotData()
# Normal
#sim.simulate()
#sim.pc.barrier()
#sim.analyze()
#sim.pc.barrier()
# Nodes
# sim.runSim()
# sim.runSimWithIntervalFunc(1000000, sim.saveDataInNodes)
sim.runSimWithIntervalFunc(500000, sim.saveDataInNodes)
print("File names!\n")
sim.pc.barrier()
print("A. sim rank is "+str(sim.rank)+"\n")
if sim.rank==0:
os.rename('./output','./node_interval_results')
sim.pc.barrier()
sim.saveDataInNodes()
sim.pc.barrier()
if sim.rank==0:
os.rename('./output','./data_net_data')
print("B. sim rank is "+str(sim.rank)+"\n")
sim.pc.barrier()
sim.gatherDataFromFiles()
sim.pc.barrier()
print("C. sim rank is "+str(sim.rank)+"\n")
if sim.rank==0:
os.rename('./data_net_data','./output')
x = {'simData':sim.allSimData}
#print(x['simData'])
with open("./output/data_net_data.pkl", 'wb') as fileObj:
pickle.dump(x,fileObj)
sim.pc.barrier()
sim.analysis.plotData()
print("D. sim.rank is "+str(sim.rank)+"\n")
#if sim.rank!=0:
# time.sleep(20)
quit()