def testSnrFuncs(self): """test for signal to noise ratio functions""" # trivial data_triv = sp.ones((3, 10)) snr_triv_test = sp.ones(3) assert_equal( snr_peak(data_triv, 1.0), snr_triv_test) assert_equal( snr_power(data_triv, 1.0), snr_triv_test) assert_equal( snr_maha(data_triv, sp.eye(data_triv.shape[1])), snr_triv_test) # application data = sp.array([ sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)), sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)) * 2, sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)) * 5, ]) assert_equal( snr_peak(data, 1.0), sp.absolute(data).max(axis=1)) assert_equal( snr_power(data, 1.0), sp.sqrt((data * data).sum(axis=1) / data.shape[1])) assert_almost_equal( snr_maha(data, sp.eye(data.shape[1])), sp.sqrt((data * data).sum(axis=1) / data.shape[1]))
def testSnrFuncs(self): """test for signal to noise ratio functions""" # trivial data_triv = sp.ones((3, 10)) snr_triv_test = sp.ones(3) assert_equal(snr_peak(data_triv, 1.0), snr_triv_test) assert_equal(snr_power(data_triv, 1.0), snr_triv_test) assert_equal(snr_maha(data_triv, sp.eye(data_triv.shape[1])), snr_triv_test) # application data = sp.array([ sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)), sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)) * 2, sp.sin(sp.linspace(0.0, 2 * sp.pi, 100)) * 5, ]) assert_equal(snr_peak(data, 1.0), sp.absolute(data).max(axis=1)) assert_equal(snr_power(data, 1.0), sp.sqrt((data * data).sum(axis=1) / data.shape[1])) assert_almost_equal(snr_maha(data, sp.eye(data.shape[1])), sp.sqrt((data * data).sum(axis=1) / data.shape[1]))
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) print "found %d spikes in total" % spks.shape[0] print "done." print "checking SNR of spikes" spks_snr = snr_maha(spks, ndet.get_icmx(tf=tf)) good_spks = spks_snr > snr n_spks = spks.shape[0] spks = spks[good_spks] spks_info = spks_info[good_spks].astype(int) print "keeping %d of %d spikes with SNR > %f" % (spks.shape[0], n_spks, snr) if save is True: ndet_pkl = cPickle.dumps(ndet) arc = openFile(ARC_PATH, "w") arc.createArray(arc.root, "spks", spks) arc.createArray(arc.root, "spks_info", spks_info) arc.createArray(arc.root, "ndet_pkl", ndet_pkl) arc.close() return spks, spks_info, ndet