Module adseq.synapse2

Functions

def mk_synapse2(Q: type[BaseQueue],
*a,
dt_ms,
vthres,
tau_syn1_ms,
tau_syn2_ms,
**k)
Expand source code
def mk_synapse2(Q: type[BaseQueue], *a, dt_ms, vthres, tau_syn1_ms, tau_syn2_ms, **k):
    '''
    Construct a single double exponential synapse

    >>> syn = adseq.mk_synapse2(
            adseq.SingleSpike,
            dt_ms=1.0,
            vthres=1.0,
            tau_syn1_ms=1.0,
            tau_syn2_ms=10.0,
            max_delay_ms=100.,
            )
    >>> a = 1.0
    >>> syn = syn.timestep_spike_detect_pre(0, 1.0-a*0.1, 1.0+a*0.1, 1.0)
    >>> print(syn.isyn)
    0.0
    >>> syn = syn.timestep_spike_detect_pre(1, 0.9, 0.9, 0.0)
    >>> print(syn.isyn)
    0.0
    >>> syn = syn.timestep_spike_detect_pre(2, 0.9, 0.9, 0.0)
    >>> print(syn.isyn)
    0.7705642

    If taking gradient w.r.t. delay_ms, put max_delay_ms and give delay_ms in the detection call
    '''
    return _mk_synapse(Q, *a, dt_ms=dt_ms, vthres=vthres, tau_syn1_ms=tau_syn1_ms, tau_syn2_ms=tau_syn2_ms, **k).init()

Construct a single double exponential synapse

>>> syn = adseq.mk_synapse2(
        adseq.SingleSpike,
        dt_ms=1.0,
        vthres=1.0,
        tau_syn1_ms=1.0,
        tau_syn2_ms=10.0,
        max_delay_ms=100.,
        )
>>> a = 1.0
>>> syn = syn.timestep_spike_detect_pre(0, 1.0-a*0.1, 1.0+a*0.1, 1.0)
>>> print(syn.isyn)
0.0
>>> syn = syn.timestep_spike_detect_pre(1, 0.9, 0.9, 0.0)
>>> print(syn.isyn)
0.0
>>> syn = syn.timestep_spike_detect_pre(2, 0.9, 0.9, 0.0)
>>> print(syn.isyn)
0.7705642

If taking gradient w.r.t. delay_ms, put max_delay_ms and give delay_ms in the detection call

def mk_synapse2s(Q: type[BaseQueue],
*a,
dt_ms,
vthres,
tau_syn1_ms,
tau_syn2_ms,
n: int,
**k)
Expand source code
def mk_synapse2s(Q: type[BaseQueue], *a, dt_ms, vthres, tau_syn1_ms, tau_syn2_ms, n: int, **k):
    return _mk_multi_synapse(Q, *a, dt_ms=dt_ms, vthres=vthres, tau_syn1_ms=tau_syn1_ms, tau_syn2_ms=tau_syn2_ms, n=n, **k).init()