def run(self, signal): (K,H,Mu) = (self.K,self.H,self.Mu) trial = signal.trial stims = signal.signal self.Nx= signal.dims() bst = run_bases(self.stim_basis, stims) spikes = zeros((self.N,trial.length())) lams = zeros((self.N,trial.length())) raster = [] flipsp = fliplr(self.spike_basis) for t in xrange(1,trial.length()): bsp = self.rebase(flipsp,spikes[:,:t]) lams[:,t] = self.logI(K,H,Mu,bsp,bst[:,t,:]) spikes[:,t] = poisson(exp(lams[:,t])) spiked = flatnonzero(spikes[:,t]) raster = raster + zip(spiked, [trial.bin_to_time(t)]*len(spiked)) return Result(self.params, signal, [], raster, {'lambda': (lams)})
def test_lnp_simulator(): trial = Trial(t_start=0,t_stop=4,dt=1) stim = array([[1,3,5,7]]) sign = Signal(trial,stim) spike_basis = array([[2,1]]) stim_basis = spike_basis bst = run_bases(stim_basis, stim) N = 2 K = array([[[1]],[[1]]]) # both neurons driven by input H = array([[[0],[0]],[[1],[0]]]) # 0->1, no auto M = array([1,1]) # unit mean firing rates ps = s.LNPSimulator(spike_basis,stim_basis,N,K,H,M) bst2 = ps.rebase(stim_basis, stim) assert bst.ravel()[-1] == bst2 resu = ps.run(sign) resu.write_to_file("results/lnp_sim_test.pickle")