I worked on implementing the HR model with nengo and created a new neuron class but got a problem with the gian_bias function. someone maybe can help me understand what am I doing wrong on the gain_bias function?
I implement another version with nengo but not defined it as a new neuron class and its working (more or less)
thanks in advance for all the helpers.
here is the function I created
def step(self, dt, J, output): X, Y, Z = output dXdt = Y - self.a * X**3 + self.b*X**2 - Z + self.I dYdt = self.c - self.d*X**2 - Y dZdt = self.R * (self.s*(X - self.Vt) - Z) output += dt * dXdt output += dt * dYdt output += dt * dZdt def rates(self, J, gain, bias): J = np.expand_dims(J, axis=1) # Add an extra dimension to J rates = np.maximum(0, self.max_rates * (J - self.intercepts)) return rates.flatten() # Flatten the rates array def gain_bias(self, max_rates, intercepts): J_thresholds = np.zeros_like(intercepts) J = np.linspace(-1, 1, len(intercepts))[:, None] rates = self.rates(J[:-1], max_rates, intercepts) for idx, rate in enumerate(rates.T): zero_indices = np.where(rate <= 0) if zero_indices.size > 0: last_zero_idx = zero_indices[-1] if last_zero_idx < J.shape -1: J_thresholds[idx] = J[zero_indices[last_zero_idx], 0] else: J_thresholds[idx] = J[-1, 0] else: J_thresholds[idx] = J[-1, 0] gain = np.ones_like(intercepts) / (J_thresholds - intercepts) bias = -intercepts * gain return gain, bias