Code description
Version 6.1 by galluzziandrea on 2021/12/09 14:47
Introduction (path and modules):
First of all we check the path and import the necessary modules .
Check where I am and place myself in the right folder:
# Import the os module
import os
#Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
# Change the current working directory
os.chdir('/mnt/user/shared/Slow waves in fading anesthesia/Nest3Python3')
# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
import os
#Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
# Change the current working directory
os.chdir('/mnt/user/shared/Slow waves in fading anesthesia/Nest3Python3')
# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))
Import the modules necessary for the simulation:
import nest
import time
from numpy import exp
import numpy
import math
import random
import multiprocessing
Inizio=time.time()
print('tempo di Inizio:',Inizio)
import time
from numpy import exp
import numpy
import math
import random
import multiprocessing
Inizio=time.time()
print('tempo di Inizio:',Inizio)
Define necessary classes to import the Initialization Files:
120%
class ImportIniLIFCA():
#initialize the information to look for in perseo.ini
inf=["NeuronType", #still fixed value
"DelayDistribType", #still fixed value
"SynapticExtractionType", #still fixed value
"Life"]
def __init__(self,files):
self.files=files
def FilesControllo(self):
import sys
for i in range(0,len(self.files)):
if self.FileControllo(self.files[i]):
sys.exit(0)
def FileControllo(self,file1):
try:
f1=open(file1,"r")
f1.close()
return 0
except ValueError:
print("ValueError")
return 1
except IOError as err:
print("OS error: {0}".format(err))
return 1
except:
print("Unexpected error:", sys.exc_info()[0])
return 1
def Estrai_inf(self,stampa=0):
InfoPerseo=self.EstraiInfoPerseo() #extract info from perseo.ini
AppoggioTempM=self.EstraiInfoModuli() #extract info from modules.ini
AppoggioTempC=self.EstraiInfoConnectivity() #extract info from connectivity.ini
AppoggioTempP=self.EstraiProtocol() #extract info from protocol.ini
def getKey(item):
return item[0]
InfoProtocol=AppoggioTempP
# I convert the extracted information into a suitable format from tuple to list
InfoBuildT=[AppoggioTempM[0]]
for i in range(0,AppoggioTempM[0]):
app1=[int(AppoggioTempM[2][i][0])]
app=(app1+list(AppoggioTempM[2][i][3:9])+list(AppoggioTempM[2][i][12])+list(AppoggioTempM[2][i][9:12]))
InfoBuildT.append(app)
del app
InfoBuild=[float(InfoBuildT[0])]
for i in range(0,int(InfoBuildT[0])):
app=[]
for j in range(0,11):
app.append(float(InfoBuildT[i+1][j]))
InfoBuild=InfoBuild+[app]
del app
InfoConnectPop=[AppoggioTempM[0]]
for i in range(0,len(AppoggioTempC[1][:])):
app=list(AppoggioTempC[1][i])
InfoConnectPop.append(app)
del app
InfoConnectNoise=[AppoggioTempM[0]]
for i in range(0,AppoggioTempM[0]):
app=list(AppoggioTempM[2][i][1:3])
InfoConnectNoise.append(app)
if stampa==1: #Print on screen of saved data
for i,j in enumerate(InfoPerseo):
print(self.inf[i],"=",j)
print("\n")
print("the network consists of ", AppoggioTempM[0], " neuronal population" )
print(AppoggioTempM[1])
for i in range(0,AppoggioTempM[0]):
print(AppoggioTempM[2][i])
print("\n")
print(AppoggioTempC[0])
for i in range(0,AppoggioTempM[0]**2):
print(AppoggioTempC[1][i])
print("\n")
for i in InfoProtocol:
print("SET_PARAM"+str(i))
return InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise,InfoProtocol
def EstraiProtocol(self):
import string
f1=open(self.files[3],"r")
ProtocolList= []
for x in f1.readlines():
y=x.split()
if len(y):
if x[0]!="#" and y[0]=="SET_PARAM":
try:
ProtocolList.append([float(y[1]),int(y[2]),float(y[3]),float(y[4])])
except ValueError:
pass
f1.close()
return ProtocolList
def EstraiInfoPerseo(self):
import string
f1=open(self.files[0],"r")
InfList= []
for x in f1.readlines():
y=x.split()
if len(y):
if x[0]!="#":
for findinf in self.inf:
try:
temp=y.index(findinf)
InfList.append(y[temp+2])
except ValueError:
pass
f1.close()
return InfList
def EstraiInfoModuli(self):
import string
f1=open(self.files[2],"r")
NumPop=0
for i,x in enumerate(f1.readlines()):
y=x.split()
if len(y):
if x[0]!="#":
NumPop=NumPop+1
if i==2:
ParamList=[]
for j in range(1,14):
ParamList.append(y[j])
f1.close()
PopsParamList=[]
f1=open(self.files[2],"r")
x=f1.readlines()
for j in range(0,NumPop):
appo=x[4+j];
PopsParamList.append(appo.split())
f1.close()
return NumPop,ParamList,PopsParamList
def EstraiInfoConnectivity(self):
import string
f1=open(self.files[1],"r")
PopConParamList=[]
for i,x in enumerate(f1.readlines()):
y=x.split()
if len(y):
if x[0]!="#":
PopConParamList.append(y)
if i==1:
ParamList=[]
for j in range(1,9):
ParamList.append(y[j])
f1.close()
return ParamList,PopConParamList
#initialize the information to look for in perseo.ini
inf=["NeuronType", #still fixed value
"DelayDistribType", #still fixed value
"SynapticExtractionType", #still fixed value
"Life"]
def __init__(self,files):
self.files=files
def FilesControllo(self):
import sys
for i in range(0,len(self.files)):
if self.FileControllo(self.files[i]):
sys.exit(0)
def FileControllo(self,file1):
try:
f1=open(file1,"r")
f1.close()
return 0
except ValueError:
print("ValueError")
return 1
except IOError as err:
print("OS error: {0}".format(err))
return 1
except:
print("Unexpected error:", sys.exc_info()[0])
return 1
def Estrai_inf(self,stampa=0):
InfoPerseo=self.EstraiInfoPerseo() #extract info from perseo.ini
AppoggioTempM=self.EstraiInfoModuli() #extract info from modules.ini
AppoggioTempC=self.EstraiInfoConnectivity() #extract info from connectivity.ini
AppoggioTempP=self.EstraiProtocol() #extract info from protocol.ini
def getKey(item):
return item[0]
InfoProtocol=AppoggioTempP
# I convert the extracted information into a suitable format from tuple to list
InfoBuildT=[AppoggioTempM[0]]
for i in range(0,AppoggioTempM[0]):
app1=[int(AppoggioTempM[2][i][0])]
app=(app1+list(AppoggioTempM[2][i][3:9])+list(AppoggioTempM[2][i][12])+list(AppoggioTempM[2][i][9:12]))
InfoBuildT.append(app)
del app
InfoBuild=[float(InfoBuildT[0])]
for i in range(0,int(InfoBuildT[0])):
app=[]
for j in range(0,11):
app.append(float(InfoBuildT[i+1][j]))
InfoBuild=InfoBuild+[app]
del app
InfoConnectPop=[AppoggioTempM[0]]
for i in range(0,len(AppoggioTempC[1][:])):
app=list(AppoggioTempC[1][i])
InfoConnectPop.append(app)
del app
InfoConnectNoise=[AppoggioTempM[0]]
for i in range(0,AppoggioTempM[0]):
app=list(AppoggioTempM[2][i][1:3])
InfoConnectNoise.append(app)
if stampa==1: #Print on screen of saved data
for i,j in enumerate(InfoPerseo):
print(self.inf[i],"=",j)
print("\n")
print("the network consists of ", AppoggioTempM[0], " neuronal population" )
print(AppoggioTempM[1])
for i in range(0,AppoggioTempM[0]):
print(AppoggioTempM[2][i])
print("\n")
print(AppoggioTempC[0])
for i in range(0,AppoggioTempM[0]**2):
print(AppoggioTempC[1][i])
print("\n")
for i in InfoProtocol:
print("SET_PARAM"+str(i))
return InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise,InfoProtocol
def EstraiProtocol(self):
import string
f1=open(self.files[3],"r")
ProtocolList= []
for x in f1.readlines():
y=x.split()
if len(y):
if x[0]!="#" and y[0]=="SET_PARAM":
try:
ProtocolList.append([float(y[1]),int(y[2]),float(y[3]),float(y[4])])
except ValueError:
pass
f1.close()
return ProtocolList
def EstraiInfoPerseo(self):
import string
f1=open(self.files[0],"r")
InfList= []
for x in f1.readlines():
y=x.split()
if len(y):
if x[0]!="#":
for findinf in self.inf:
try:
temp=y.index(findinf)
InfList.append(y[temp+2])
except ValueError:
pass
f1.close()
return InfList
def EstraiInfoModuli(self):
import string
f1=open(self.files[2],"r")
NumPop=0
for i,x in enumerate(f1.readlines()):
y=x.split()
if len(y):
if x[0]!="#":
NumPop=NumPop+1
if i==2:
ParamList=[]
for j in range(1,14):
ParamList.append(y[j])
f1.close()
PopsParamList=[]
f1=open(self.files[2],"r")
x=f1.readlines()
for j in range(0,NumPop):
appo=x[4+j];
PopsParamList.append(appo.split())
f1.close()
return NumPop,ParamList,PopsParamList
def EstraiInfoConnectivity(self):
import string
f1=open(self.files[1],"r")
PopConParamList=[]
for i,x in enumerate(f1.readlines()):
y=x.split()
if len(y):
if x[0]!="#":
PopConParamList.append(y)
if i==1:
ParamList=[]
for j in range(1,9):
ParamList.append(y[j])
f1.close()
return ParamList,PopConParamList
Import the initialization files:
in this section we...
Salva=1
file1="perseo35.ini"
file2="c_cortsurf_Pot1.43PotStr148v3.ini"
file3="m_cortsurf_Pot1.43.ini"
file4="ProtocolExploration36.ini"
files=[file1,file2,file3,file4]
#define the name of the Output file
FileName="dati/Rates_Nest_Run_Milano_Test36_13x13_"+str(nest.Rank())+"_Pot1.43PotStr148v3Long3.dat"
#check the existence of the files being read
ImpFil=ImportIniLIFCA(files);
ImpFil.FilesControllo()
#extract the information of interest from the files.ini and transfer them to the files:
#InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise
stampa=0; #stampa=1 print output simulation data on screen stampa=0 dont
InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise,InfoProtocol=ImpFil.Estrai_inf(stampa)
# InfoPerseo=["NeuronType","DelayDistribType","SynapticExtractionType","Life" ]
# InfoBuild=[numero di popolazioni,
# [N,C_ext,\nu_ext,\tau,\tetha,H,\tau_arp,NeuronInitType,\alpha_c,\tau_c,g_c],
# [.....],[],...]
# InfoConnectPop=[numero di popolazioni,
# [post,pre,c,Dmin,Dmax,syn typ,J,DJ],
# [.....],[],...]
# InfoConnectNoise=[numero di popolazioni,
# [J_ext,DJ_ext],
# [.....],[],...]
# InfoProtocol=[[time,population,param_num,value],
# [.....],[],...]
file1="perseo35.ini"
file2="c_cortsurf_Pot1.43PotStr148v3.ini"
file3="m_cortsurf_Pot1.43.ini"
file4="ProtocolExploration36.ini"
files=[file1,file2,file3,file4]
#define the name of the Output file
FileName="dati/Rates_Nest_Run_Milano_Test36_13x13_"+str(nest.Rank())+"_Pot1.43PotStr148v3Long3.dat"
#check the existence of the files being read
ImpFil=ImportIniLIFCA(files);
ImpFil.FilesControllo()
#extract the information of interest from the files.ini and transfer them to the files:
#InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise
stampa=0; #stampa=1 print output simulation data on screen stampa=0 dont
InfoPerseo,InfoBuild,InfoConnectPop,InfoConnectNoise,InfoProtocol=ImpFil.Estrai_inf(stampa)
# InfoPerseo=["NeuronType","DelayDistribType","SynapticExtractionType","Life" ]
# InfoBuild=[numero di popolazioni,
# [N,C_ext,\nu_ext,\tau,\tetha,H,\tau_arp,NeuronInitType,\alpha_c,\tau_c,g_c],
# [.....],[],...]
# InfoConnectPop=[numero di popolazioni,
# [post,pre,c,Dmin,Dmax,syn typ,J,DJ],
# [.....],[],...]
# InfoConnectNoise=[numero di popolazioni,
# [J_ext,DJ_ext],
# [.....],[],...]
# InfoProtocol=[[time,population,param_num,value],
# [.....],[],...]
Results
- Introduction (path and modules):
- Check where I am and place myself in the right folder:
- Import the modules necessary for the simulation:
- Define necessary classes to import the Initialization Files:
- Import the initialization files:
- Defining general and nest.kernel parameters
- Building the network: neuronal populations , Poisson processes and spike detectors
- Connecting the network nodes: neuronal populations, Poisson processes and spike detectors
- Simulating: neuronal time evolution.
- Results: