Code description

Version 7.1 by galluzziandrea on 2021/12/09 14:49

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 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)

Define necessary classes to import the Initialization Files:

 
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

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],
#             [.....],[],...]

Results