示例#1
0
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
示例#3
0
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
示例#4
0
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