Source code for sl2pm.bistable_bias

import numpy as np


[docs] def step(t, tau1, tau2, dI1, dI2): """ Part of the expression for bb_single and bb_double, describing an onset single bistable bias step. """ return np.where(t>=0, dI1*(1 - np.exp(-t/tau1)) + dI2*(1 - np.exp(-t/tau2)), np.zeros(shape=t.shape))
[docs] def step_diff(t, w, tau1, tau2, dI1, dI2): """ Part of the expression for bb_single and bb_double, describing a single bistable bias step. """ return step(t, tau1, tau2, dI1, dI2) - step(t-w, tau1, tau2, dI1, dI2)
[docs] def step_diff_periodic(t, t0, w, tau1, tau2, dI1, dI2, dt): """ Part of the expression for bb_single and bb_double, describing a single bistable bias step repeated periodically. """ step_start = np.arange(t0 - 3*dt, t[-1] + 4*dt, dt) return step_diff(t[np.newaxis, :] - step_start[:, np.newaxis], w, tau1, tau2, dI1, dI2).sum(axis=0)
[docs] def bb_single(t, t0, w, tau1, tau2, dI1, dI2, I0, dt): """ Model of bistable bias with a single step. """ return I0 - step_diff_periodic(t, t0, w, tau1, tau2, dI1, dI2, dt)
[docs] def bb_double(t, t01, w1, tau11, tau21, dI11, dI21, t02, w2, tau12, tau22, dI12, dI22, I0, dt): """ Model of bistable bias with two steps. """ return I0 - step_diff_periodic(t, t01, w1, tau11, tau21, dI11, dI21, dt) - step_diff_periodic(t, t02, w2, tau12, tau22, dI12, dI22, dt)