Source code for norse.torch.functional.test.test_tsodyks_makram

import torch

from norse.torch.functional.tsodyks_makram import (
    stp_step,
    TsodyksMakramState,
    TsodyksMakramParameters,
)


[docs]def example(p): dt = 0.001 z = torch.zeros(1000) z[::100] = 1.0 z[0:10] = 0.0 s = TsodyksMakramState(x=1.0, u=0.0) i = 0.0 xs = [] us = [] current = [] for ts in range(1000): x, s = stp_step(z[ts], s, p) di = -p.tau_s_inv * i i = i + dt * di + x xs += [s.x] us += [s.u] current += [i] xs = torch.stack(xs) us = torch.stack(us) current = torch.stack(current) return xs, us, current
[docs]def test_depressing(): p = TsodyksMakramParameters( tau_f_inv=1 / (50.0e-3), tau_s_inv=1 / (20.0e-3), tau_d_inv=1 / (750.0e-3), U=0.45, ) _, _, current = example(p) assert torch.allclose(current[100], torch.as_tensor(p.U)) assert current[500:1000].max() < current[0:500].max()
[docs]def test_facilitating(): p = TsodyksMakramParameters( tau_f_inv=1 / (750.0e-3), tau_s_inv=1 / (20.0e-3), tau_d_inv=1 / (50.0e-3), U=0.15, ) _, _, current = example(p) assert torch.allclose(current[100], torch.as_tensor(p.U)) assert current[500:1000].max() > current[0:500].max()