def testGetAlignedSpikes(self): data = sp.zeros((1000, 2)) spike_start = sp.arange(50, 1000, 50) wf = sp.array([sp.sin(sp.linspace(0, 2 * sp.pi, 20))] * 2).T * 5 for ev in spike_start: data[ev:ev + 20] += wf spikes, st = get_aligned_spikes(data, spike_start, align_at=5, tf=30, mc=True, kind='max') eval_max = sp.array([spike[:, 0].argmax() for spike in spikes]) assert_equal(eval_max, sp.ones(spike_start.size) * 5)
finally: del trial_data print "done." print "retrieving multiunit spike set @tf=%d" % tf spks_info = [] spks = [] for id_trl in trial_ids: trial_st = None try: trial_st = db.get_unit_data(id_mu, id_trl)["spiketrain"] if trial_st.size == 0: print "\tno spiketrain for %s" % db.get_fname_for_id(id_trl) continue trial_spks, trial_st = get_aligned_spikes( data[id_trl], trial_st, tf, align_at=align_at, mc=False, kind="min" ) end = data[id_trl].shape[0] nep = epochs_from_spiketrain(trial_st, tf, end=end) nep = invert_epochs(nep, end=end) nep = merge_epochs(nep) ndet.update(data[id_trl], epochs=nep) spks.append(trial_spks) spks_info.append(sp.vstack([[id_trl] * trial_st.size, trial_st]).T) print "\tprocessed %s" % db.get_fname_for_id(id_trl) except Exception, e: raise RuntimeError("error processing %s\n%s" % (db.get_fname_for_id(id_trl), e)) finally: del trial_st spks_info = sp.vstack(spks_info) spks = sp.vstack(spks)