예제 #1
0
  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)})
예제 #2
0
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")