def Add_NMDA_SingleSynapticEventToSegment(segment, activationTime, synapseWeight, exc_inh): if exc_inh == 0: # inhibitory synapse = h.ProbGABAAB_EMS(segment) #GABAA/B synapse.tau_r_GABAA = 0.2 synapse.tau_d_GABAA = 8 synapse.tau_r_GABAB = 3.5 synapse.tau_d_GABAB = 260.9 # synapse.gmax = .001 synapse.e_GABAA = -80 synapse.e_GABAB = -97 synapse.GABAB_ratio = 0.0 else: # excitatory synapse = h.ProbAMPANMDA2(segment) synapse.gmax = .0004 synapse.Use = 1.0 synapse.Dep = 0 synapse.Fac = 0 netStimulation = h.NetStim() netStimulation.number = 1 netStimulation.start = activationTime netConnection = h.NetCon(netStimulation, synapse) netConnection.delay = 0 netConnection.weight[0] = synapseWeight return netStimulation, netConnection, synapse
def DefineSynapse_NMDA(segment, gMax=0.0004): synapse = h.ProbAMPANMDA2(segment) synapse.tau_r_AMPA = 0.3 synapse.tau_d_AMPA = 3.0 synapse.tau_r_NMDA = 2.0 synapse.tau_d_NMDA = 70.0 synapse.gmax = gMax synapse.e = 0 synapse.Use = 1 synapse.u0 = 0 synapse.Dep = 0 synapse.Fac = 0 return synapse
def Add_NMDA_SingleSynapticEventToSegment(segment, activationTime, synapseWeight): # synapse = h.ProbAMPANMDA_EMS(segLoc,sec=section) synapse = h.ProbAMPANMDA2(segment) synapse.gmax = .0004 synapse.Use = 1.0 synapse.Dep = 0 synapse.Fac = 0 netStimulation = h.NetStim() netStimulation.number = 1 netStimulation.start = activationTime netConnection = h.NetCon(netStimulation, synapse) netConnection.delay = 0 netConnection.weight[0] = synapseWeight return netStimulation, netConnection, synapse
def AMPANMDA(syn_params, sec_x, sec_id): """Create a bg2pyr synapse :param syn_params: parameters of a synapse :param sec_x: normalized distance along the section :param sec_id: target section :return: NEURON synapse object """ lsyn = h.ProbAMPANMDA2(sec_x, sec=sec_id) if syn_params.get('tau_r_AMPA'): lsyn.tau_r_AMPA = float(syn_params['tau_r_AMPA']) if syn_params.get('tau_d_AMPA'): lsyn.tau_d_AMPA = float(syn_params['tau_d_AMPA']) if syn_params.get('tau_r_NMDA'): lsyn.tau_r_NMDA = float(syn_params['tau_r_NMDA']) if syn_params.get('tau_d_NMDA'): lsyn.tau_d_NMDA = float(syn_params['tau_d_NMDA']) if syn_params.get('Use'): lsyn.Use = float(syn_params['Use']) if syn_params.get('Dep'): lsyn.Dep = float(syn_params['Dep']) if syn_params.get('Fac'): lsyn.Fac = float(syn_params['Fac']) if syn_params.get('e'): lsyn.e = float(syn_params['e']) if syn_params.get('initW'): h.distance(sec=sec_id.cell().soma[0]) dist = h.distance(sec_id(sec_x)) fullsecname = sec_id.name() sec_type = fullsecname.split(".")[1][:4] sec_id = int(fullsecname.split("[")[-1].split("]")[0]) # if pyrWeight_s == 0: # base = float(pyrWeight_m) # else: # base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) ####OLD # dend = lambda x: 0.9278403931213186 * ( 1.0022024845737223 ** x ) # close_apic = lambda x: 0.9131511669645764 * ( 1.0019436631560847 ** x ) # far_apic = lambda x: 0.16857988107990907 * ( 1.0039628707324273 ** x ) ############# #distance based conductance scaling functions. #dend = lambda x: 0.9475625702815389 * ( 1.001318965242205 ** x ) #close_apic = lambda x: 0.8522367331040966 * ( 1.0020433032052223 ** x ) #far_apic = lambda x: 0.09043087364217033 * ( 1.004632615014859 ** x ) dend = lambda x: (1.001**x) close_apic = lambda x: (1.002**x) #far_apic = lambda x: ( 1.002 ** x ) far_apic = lambda x: 1 if sec_type == "dend": base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) lsyn.initW = base * dend(dist) elif sec_type == "apic": if dist < 750: base = float(np.clip(lognormal(pyrWeight_m, pyrWeight_s), 0, 5)) lsyn.initW = base * close_apic(dist) else: base = float(np.clip(lognormal(0.17, 0.2), 0, 5)) lsyn.initW = base * far_apic(dist) lsyn.initW = np.clip(float(lsyn.initW), 0, 5) if syn_params.get('u0'): lsyn.u0 = float(syn_params['u0']) return lsyn