def _addExtracellularRegion(self, label, param): try: rxd.options.enable.extracellular = True except: print('Error enabling extracellular rxd') return -1 # (xlo, ylo, zlo, xhi, yhi, zhi, dx, volume_fraction=1, tortuosity=1) requiredArgs = ['xlo', 'ylo', 'zlo', 'xhi', 'yhi', 'zhi', 'dx'] for arg in requiredArgs: if arg not in param: print(' Error creating Extracellular object %s: %s parameter was missing'%(label, arg)) if 'volume_fraction' not in param: param['volume_fraction'] = 1 if 'tortuosity' not in param: param['tortuosity'] = 1 # call rxd method to create Region if 'extracellular' in self.rxd: self.rxd['extracellular']['hObj'] = rxd.Extracellular(**{k:v for k,v in param.items() if k != 'extracellular'}) else: self.rxd['regions'][label]['hObj'] = rxd.Extracellular(**{k:v for k,v in param.items() if k != 'extracellular'}) print(' Created Extracellular Region %s'%(label))
org = rxd.Region(h.allsec(), name="org", geometry=rxd.FractionalVolume(0.1)) cyt_org_membrane = rxd.Region(h.allsec(), name="mem", geometry=rxd.ScalableBorder( pi / 2.0, on_cell_surface=False)) cyt_ecs_membrane = rxd.Region(h.allsec(), name="cell_mem", geometry=rxd.membrane()) # the extracellular space ecs = rxd.Extracellular(-55, -55, -55, 55, 55, 55, dx=10, volume_fraction=0.2, tortuosity=1.6) # Who? x = rxd.Species( [cyt, org, cyt_org_membrane, cyt_ecs_membrane, ecs], name="x", d=1.0, charge=1, initial=0, ) Xcyt = x[cyt] Xorg = x[org]
somaB.nseg = 11 # mod version somaB.insert('hh') # rxd version # Where? # intracellular cyt = rxd.Region(h.allsec(), name='cyt', nrn_region='i') # membrane mem = rxd.Region(h.allsec(), name='cell_mem', geometry=rxd.membrane()) # extracellular ecs = rxd.Extracellular(-100, -100, -100, 100, 100, 100, dx=100) # Who? def init(ics, ecs): return lambda nd: ecs if isinstance(nd, rxd.node.NodeExtracellular ) else ics # ions k = rxd.Species([cyt, mem, ecs], name='k', d=1e3, charge=1, initial=init(54.4, 2.5), ecs_boundary_conditions=2.5)
for sec in h.allsec(): sec.nai = 4.297 #Create cell cell = Neuron() ''' stim = h.IClamp(cell.soma(0.5)) stim.delay = 50 stim.dur = 50 stim.amp = 1 ''' time = h.Vector().record(h._ref_t) print(5) ecs = rxd.Extracellular(-Lx/2.0, -Ly/2.0, -Lz/2.0, Lx/2.0, Ly/2.0, Lz/2.0, dx=1, volume_fraction=alpha, tortuosity=tort) print(6) k = rxd.Species(ecs, name='k', d=2.62, charge=1, initial=lambda nd: 50 if nd.x3d**2 + nd.y3d**2 + nd.z3d**2 < r0**2 else 3, ecs_boundary_conditions=3) na = rxd.Species(ecs, name='na', d=1.78, charge=1, initial=148, ecs_boundary_conditions=148) pc.set_maxstep(100) h.finitialize() sys.stdout.write('\ninit') sys.stdout.flush()
# mod version for sec in mycellB.all: sec.insert("hh") # rxd version # Where? # intracellular cyt = rxd.Region(h.allsec(), name="cyt", nrn_region="i") # membrane mem = rxd.Region(h.allsec(), name="cell_mem", geometry=rxd.membrane()) # extracellular ecs = rxd.Extracellular(xl, yl, zl, xh, yh, zh, dx=50) # Who? def init(ics, ecs): return lambda nd: ecs if isinstance(nd, rxd.node.NodeExtracellular) else ics # ions k = rxd.Species([cyt, mem, ecs], name="k", d=1, charge=1, initial=init(54.4, 2.5)) na = rxd.Species([cyt, mem, ecs], name="na", d=1, charge=1, initial=init(10.0, 140.0)) x = rxd.Species([cyt, mem, ecs], name="x", charge=1) ki, ko, nai, nao, xi, xo = k[cyt], k[ecs], na[cyt], na[ecs], x[cyt], x[ecs]
from scipy.special import erf h.load_file('stdrun.hoc') sec = h.Section() #NEURON requires at least 1 section # enable extracellular RxD rxd.options.enable.extracellular = True # simulation parameters dx = 1.0 # voxel size L = 9.0 # length of initial cube Lecs = 21.0 # lengths of ECS # define the extracellular region extracellular = rxd.Extracellular(-Lecs/2., -Lecs/2., -Lecs/2., Lecs/2., Lecs/2., Lecs/2., dx=dx, volume_fraction=0.2, tortuosity=lambda x,y,z: 1.6) # define the extracellular species k_rxd = rxd.Species(extracellular, name='k', d=2.62, charge=1, initial=lambda nd: 1.0 if abs(nd.x3d) <= L/2. and abs(nd.y3d) <= L/2. and abs(nd.z3d) <= L/2. else 0.0) # copy of the initial state to plot (figure 4a upper panel) states_init = k_rxd[extracellular].states3d.copy() # record the concentration at (0,0,0) ecs_vec = h.Vector() ecs_vec.record(k_rxd[extracellular].node_by_location(0, 0, 0)._ref_value) # record the time t_vec = h.Vector()
i.connect(rec_neurons4[random.randint(0,Nspinstel4-1)]) count_syn+=7 count_cells+=1 alpha = alpha1 tort = tort1 time = h.Vector().record(h._ref_t) ecs = rxd.Extracellular(-Lx / 2.0, -Ly / 2.0, -Lz / 2.0, Lx / 2.0, Ly / 2.0, Lz / 2.0, dx=(20, 20, 50), # dx - скорость распространнения в разные стороны - различны по осям volume_fraction=alpha, tortuosity=tort) k = rxd.Species(ecs, name='k', d=2.62, charge=1, initial=lambda nd: 100 if nd.x3d ** 2 + nd.y3d ** 2 + nd.z3d ** 2 < r0 ** 2 else 3.5, ecs_boundary_conditions=3.5) na = rxd.Species(ecs, name='na', d=1.78, charge=1, initial=142, ecs_boundary_conditions=142) kecs = h.Vector() kecs.record(k[ecs].node_by_location(0, 0, 0)._ref_value) pc.set_maxstep(100)