def do_neurongroup( self ): #/########################/# # Import brian # adapt the shape of the NeurongroupingBrianDict #debug ''' self.debug( [ 'We adapt the shape of NeurongroupingBrianDict', ('self.',self,[ 'NeurongroupingBrianDict' ]) ] ) ''' #Check if 'N' not in self.NeurongroupingBrianDict: self.NeurongroupingBrianDict['N']=self.SimulatingUnitsInt else: self.SimulatingUnitsInt=self.NeurongroupingBrianDict['N'] #Check if 'model' not in self.NeurongroupingBrianDict: self.NeurongroupingBrianDict['model']='' #/##################/# # Set finally the Neurongroup # #Check if self.NeurongroupingBrianDict['model']!="" or self.NeurongroupingBrianDict['N']>0: #maybe should import from brian2 import NeuronGroup #debug self.debug( [ 'We set the Neurongroup', ('self.',self,[ 'NeurongroupingBrianDict' ]) ] ) #init self.NeurongroupedBrianVariable=NeuronGroup( **self.NeurongroupingBrianDict ) else: #return return #/##################/# # team Traces first all the brian variables # #debug self.debug( [ 'We simulate with neurongroup', 'adapt the initial conditions of all the brian variables', 'so first we team Traces and put Tracers inside' ] ) #Check if 'Traces' not in self.TeamDict: NeurongroupedTracesDeriveTeamer=self.team( 'Traces' ).TeamedValueVariable else: NeurongroupedTracesDeriveTeamer=self.TeamDict[ 'Traces' ] #map self.NeurongroupedDeriveTracersList=map( lambda __TraceStr: NeurongroupedTracesDeriveTeamer.manage( Tracer.TracerPrefixStr+__TraceStr, { 'TracingKeyVariable':getattr( self.NeurongroupedBrianVariable, __TraceStr ), 'TraceKeyStr':__TraceStr } ).ManagedValueVariable, self.NeurongroupedBrianVariable.equations._equations.keys() ) #/##################/# # Now analyze the NeurongroupingStatesDict to set Moniters # #debug self.debug( [ 'We analyze the NeurongroupingStatesDict', ('self.',self,['NeurongroupingStatesDict']) ] ) #get NeurongroupedTracesMoniterKeyStrsList=Moniter.MoniterClass.DoingAttributeVariablesOrderedDict.keys() #map self.NeurongroupedDeriveMonitersList=SYS.flat( map( lambda __DeriveMoniter,__SampleTuplesList: map( lambda __SampleTuple: __DeriveMoniter.manage( __SampleTuple[0], SYS.match( NeurongroupedTracesMoniterKeyStrsList, __SampleTuple[1:] ) ).ManagedValueVariable, __SampleTuplesList ), map( lambda __KeyStr: NeurongroupedTracesDeriveTeamer.ManagementDict[ Tracer.TracerPrefixStr+__KeyStr ].team('Samples').TeamedValueVariable, self.NeurongroupingStatesDict.keys() ), self.NeurongroupingStatesDict.values() ) ) #/##################/# # Set Monitors inside # #Check if len(NeurongroupedTracesMoniterKeyStrsList)>0: #debug self.debug( [ 'We set the brian monitor inside' ] ) #import from brian2 import StateMonitor #map self.NeurongroupedDeriveStateMonitorsList=map( lambda __NeurongroupedDeriveMoniter: __NeurongroupedDeriveMoniter.set( 'MonitBrianVariable', StateMonitor( #NeuronGroup self.NeurongroupedBrianVariable, #varname __NeurongroupedDeriveMoniter.ParentDeriveTeamerVariable.ParentDeriveTeamerVariable.TraceKeyStr, #record __NeurongroupedDeriveMoniter.MoniteringLabelIndexIntsArray ) ).MonitBrianVariable, self.NeurongroupedDeriveMonitersList )