Exemple #1
0
    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]))
Exemple #2
0
    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