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
			)