示例#1
0
def test_max_chan():
    n_wf_samples = 100
    folder = 'test'
    if os.path.isdir(folder):
        shutil.rmtree(folder)
    rec, sort, waveforms, templates, max_chans, amps = create_signal_with_known_waveforms(
        n_waveforms=2, n_channels=4, n_wf_samples=n_wf_samples)
    rec, sort = create_dumpable_extractors_from_existing(folder, rec, sort)
    max_channels = get_unit_max_channels(rec,
                                         sort,
                                         save_property_or_features=False)
    assert np.allclose(np.array(max_chans), np.array(max_channels))
    assert 'max_channel' not in sort.get_shared_unit_property_names()

    max_channels = get_unit_max_channels(rec,
                                         sort,
                                         save_property_or_features=True,
                                         recompute_templates=True,
                                         peak='neg',
                                         recompute_info=True)
    assert np.allclose(np.array(max_chans), np.array(max_channels))
    assert 'max_channel' in sort.get_shared_unit_property_names()

    # multiple channels
    max_channels = get_unit_max_channels(rec,
                                         sort,
                                         max_channels=2,
                                         peak='neg',
                                         recompute_info=True)
    assert np.allclose(np.array(max_chans), np.array(max_channels)[:, 0])
    assert np.array(max_channels).shape[1] == 2
    shutil.rmtree('test')
def test_amplitudes():
    n_jobs = [0, 2]
    memmap = [True, False]
    for n in n_jobs:
        for m in memmap:
            print('N jobs', n, 'memmap', m)
            n_wf_samples = 100
            folder = 'test'
            if os.path.isdir(folder):
                shutil.rmtree(folder)
            rec, sort, waveforms, templates, max_chans, amps = create_signal_with_known_waveforms(
                n_waveforms=2, n_channels=4, n_wf_samples=n_wf_samples)
            rec, sort = create_dumpable_extractors_from_existing(
                folder, rec, sort)

            amp = get_unit_amplitudes(rec,
                                      sort,
                                      frames_before=50,
                                      frames_after=50,
                                      save_property_or_features=False,
                                      n_jobs=n,
                                      memmap=m)

            for (a, a_gt) in zip(amp, amps):
                assert np.allclose(a, np.abs(a_gt))
            assert 'amplitudes' not in sort.get_shared_unit_spike_feature_names(
            )

            amp = get_unit_amplitudes(rec,
                                      sort,
                                      frames_before=50,
                                      frames_after=50,
                                      save_property_or_features=True,
                                      peak='neg',
                                      n_jobs=n,
                                      memmap=m)

            for (a, a_gt) in zip(amp, amps):
                assert np.allclose(a, a_gt)
            assert 'amplitudes' in sort.get_shared_unit_spike_feature_names()

            # relative
            amp = get_unit_amplitudes(rec,
                                      sort,
                                      frames_before=50,
                                      frames_after=50,
                                      save_property_or_features=False,
                                      recompute_info=True,
                                      method='relative',
                                      n_jobs=n,
                                      memmap=m)

            amps_rel = [a / np.median(a) for a in amps]

            for (a, a_gt) in zip(amp, amps_rel):
                assert np.allclose(a, np.abs(a_gt), 0.02)
            shutil.rmtree('test')
示例#3
0
def test_templates():
    n_wf_samples = 100
    folder = 'test'
    if os.path.isdir(folder):
        shutil.rmtree(folder)
    rec, sort, waveforms, templates, max_chans, amps = create_signal_with_known_waveforms(
        n_waveforms=2, n_channels=4, n_wf_samples=n_wf_samples)
    rec, sort = create_dumpable_extractors_from_existing(folder, rec, sort)
    # get num samples in ms
    ms_cut = n_wf_samples // 2 / rec.get_sampling_frequency() * 1000

    # no group
    temp = get_unit_templates(rec,
                              sort,
                              ms_before=ms_cut,
                              ms_after=ms_cut,
                              save_property_or_features=False,
                              save_wf_as_features=False,
                              recompute_info=True)

    for (t, t_gt) in zip(temp, templates):
        assert np.allclose(t, t_gt, atol=1)
    assert 'template' not in sort.get_shared_unit_property_names()
    assert 'waveforms' not in sort.get_shared_unit_spike_feature_names()

    # change cut ms
    temp = get_unit_templates(rec,
                              sort,
                              ms_before=2,
                              ms_after=2,
                              save_property_or_features=True,
                              recompute_waveforms=True,
                              recompute_info=True)

    for (t, t_gt) in zip(temp, templates):
        _, samples = t.shape
        assert np.allclose(t[:, samples // 2 - n_wf_samples // 2:samples // 2 +
                             n_wf_samples // 2],
                           t_gt,
                           atol=1)
    assert 'template' in sort.get_shared_unit_property_names()
    assert 'waveforms' in sort.get_shared_unit_spike_feature_names()

    # by group
    rec.set_channel_groups([0, 0, 1, 1])
    temp = get_unit_templates(rec,
                              sort,
                              ms_before=ms_cut,
                              ms_after=ms_cut,
                              grouping_property='group',
                              recompute_info=True)

    for (t, t_gt) in zip(temp, templates):
        assert np.allclose(t, t_gt[:2], atol=1) or np.allclose(
            t, t_gt[2:], atol=1)
    shutil.rmtree('test')
示例#4
0
def test_waveforms():
    n_wf_samples = 100
    n_jobs = [0, 2]
    for n in n_jobs:
        for m in memmaps:
            print('N jobs', n, 'memmap', m)
            folder = 'test'
            if os.path.isdir(folder):
                shutil.rmtree(folder)
            rec, sort, waveforms, templates, max_chans, amps = create_signal_with_known_waveforms(
                n_waveforms=2, n_channels=4, n_wf_samples=n_wf_samples)
            rec, sort = create_dumpable_extractors_from_existing(
                folder, rec, sort)
            # get num samples in ms
            ms_cut = n_wf_samples // 2 / rec.get_sampling_frequency() * 1000

            # no group
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     save_property_or_features=False,
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)

            for (w, w_gt) in zip(wav, waveforms):
                assert np.allclose(w, w_gt)
            assert 'waveforms' not in sort.get_shared_unit_spike_feature_names(
            )

            # small chunks
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     save_property_or_features=False,
                                     n_jobs=n,
                                     memmap=m,
                                     chunk_mb=5,
                                     recompute_info=True)

            for (w, w_gt) in zip(wav, waveforms):
                assert np.allclose(w, w_gt)
            assert 'waveforms' not in sort.get_shared_unit_spike_feature_names(
            )

            # change cut ms
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=2,
                                     ms_after=2,
                                     save_property_or_features=True,
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)

            for (w, w_gt) in zip(wav, waveforms):
                _, _, samples = w.shape
                assert np.allclose(
                    w[:, :, samples // 2 - n_wf_samples // 2:samples // 2 +
                      n_wf_samples // 2], w_gt)
            assert 'waveforms' in sort.get_shared_unit_spike_feature_names()

            # by group
            rec.set_channel_groups([0, 0, 1, 1])
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     grouping_property='group',
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)

            for (w, w_gt) in zip(wav, waveforms):
                assert np.allclose(w, w_gt[:, :2]) or np.allclose(
                    w, w_gt[:, 2:])

            # test compute_property_from_recordings
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     grouping_property='group',
                                     compute_property_from_recording=True,
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)
            for (w, w_gt) in zip(wav, waveforms):
                assert np.allclose(w, w_gt[:, :2]) or np.allclose(
                    w, w_gt[:, 2:])

            # test max_spikes_per_unit
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     max_spikes_per_unit=10,
                                     save_property_or_features=False,
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)
            for w in wav:
                assert len(w) <= 10

            # test channels
            wav = get_unit_waveforms(rec,
                                     sort,
                                     ms_before=ms_cut,
                                     ms_after=ms_cut,
                                     channel_ids=[0, 1, 2],
                                     n_jobs=n,
                                     memmap=m,
                                     recompute_info=True)

            for (w, w_gt) in zip(wav, waveforms):
                assert np.allclose(w, w_gt[:, :3])
    shutil.rmtree('test')