Exemplo n.º 1
0
def test_bandpass_filter_with_cache():
    rec, sort = se.example_datasets.toy_example(dump_folder='test',
                                                dumpable=True,
                                                duration=10,
                                                num_channels=4,
                                                seed=0)

    rec_filtered = bandpass_filter(rec,
                                   freq_min=5000,
                                   freq_max=10000,
                                   cache_to_file=True,
                                   chunk_size=10000)

    rec_filtered2 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_to_file=True,
                                    chunk_size=None)

    rec_filtered3 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_chunks=True,
                                    chunk_size=10000)
    rec_filtered3.get_traces()
    assert rec_filtered3._filtered_cache_chunks.get('0') is not None

    rec_filtered4 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_chunks=True,
                                    chunk_size=None)

    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered2.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)
    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered3.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)
    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered4.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)

    check_dumping(rec_filtered)
    check_dumping(rec_filtered2)
    check_dumping(rec_filtered3)
    check_dumping(rec_filtered4)

    shutil.rmtree('test')
def test_bandpass_filter():
    rec, sort = se.example_datasets.toy_example(duration=10, num_channels=4)

    rec_fft = bandpass_filter(rec, freq_min=5000, freq_max=10000, type='fft')

    assert check_signal_power_signal1_below_signal2(
        rec_fft.get_traces(),
        rec.get_traces(),
        freq_range=[1000, 5000],
        fs=rec.get_sampling_frequency())
    assert check_signal_power_signal1_below_signal2(
        rec_fft.get_traces(),
        rec.get_traces(),
        freq_range=[10000, 15000],
        fs=rec.get_sampling_frequency())

    rec_sci = bandpass_filter(rec,
                              freq_min=3000,
                              freq_max=6000,
                              type='butter',
                              order=3)

    assert check_signal_power_signal1_below_signal2(
        rec_sci.get_traces(),
        rec.get_traces(),
        freq_range=[1000, 3000],
        fs=rec.get_sampling_frequency())
    assert check_signal_power_signal1_below_signal2(
        rec_sci.get_traces(),
        rec.get_traces(),
        freq_range=[6000, 10000],
        fs=rec.get_sampling_frequency())

    rec_cache = bandpass_filter(rec,
                                freq_min=3000,
                                freq_max=6000,
                                type='butter',
                                order=3,
                                cache_to_file=True)

    assert check_signal_power_signal1_below_signal2(
        rec_cache.get_traces(),
        rec.get_traces(),
        freq_range=[1000, 3000],
        fs=rec.get_sampling_frequency())
    assert check_signal_power_signal1_below_signal2(
        rec_cache.get_traces(),
        rec.get_traces(),
        freq_range=[6000, 10000],
        fs=rec.get_sampling_frequency())
def test_highpass_filter():
    rec, sort = se.example_datasets.toy_example(dump_folder='test',
                                                dumpable=True,
                                                duration=2,
                                                num_channels=4,
                                                seed=0)

    rec_fft = highpass_filter(rec, freq_min=5000, filter_type='fft')

    assert check_signal_power_signal1_below_signal2(
        rec_fft.get_traces(),
        rec.get_traces(),
        freq_range=[1000, 5000],
        fs=rec.get_sampling_frequency())

    rec_sci = bandpass_filter(rec,
                              freq_min=3000,
                              freq_max=6000,
                              filter_type='butter',
                              order=3)

    assert check_signal_power_signal1_below_signal2(
        rec_sci.get_traces(),
        rec.get_traces(),
        freq_range=[1000, 3000],
        fs=rec.get_sampling_frequency())

    traces = rec.get_traces().astype('uint16')
    rec_u = se.NumpyRecordingExtractor(
        traces, sampling_frequency=rec.get_sampling_frequency())
    rec_fu = bandpass_filter(rec_u,
                             freq_min=5000,
                             freq_max=10000,
                             filter_type='fft')

    assert check_signal_power_signal1_below_signal2(
        rec_fu.get_traces(),
        rec_u.get_traces(),
        freq_range=[1000, 5000],
        fs=rec.get_sampling_frequency())
    assert check_signal_power_signal1_below_signal2(
        rec_fu.get_traces(),
        rec_u.get_traces(),
        freq_range=[10000, 15000],
        fs=rec.get_sampling_frequency())
    assert not str(rec_fu.get_dtype()).startswith('u')

    check_dumping(rec_fft)
    shutil.rmtree('test')
def test_bandpass_filter_with_cache():
    rec, sort = se.example_datasets.toy_example(duration=10, num_channels=4)

    rec_filtered = bandpass_filter(rec,
                                   freq_min=5000,
                                   freq_max=10000,
                                   cache_to_file=True,
                                   chunk_size=10000)

    rec_filtered2 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_to_file=True,
                                    chunk_size=None)

    rec_filtered3 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_chunks=True,
                                    chunk_size=10000)
    rec_filtered3.get_traces()
    assert rec_filtered3._filtered_cache_chunks.get('0') is not None

    rec_filtered4 = bandpass_filter(rec,
                                    freq_min=5000,
                                    freq_max=10000,
                                    cache_chunks=True,
                                    chunk_size=None)

    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered2.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)
    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered3.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)
    assert np.allclose(rec_filtered.get_traces(),
                       rec_filtered4.get_traces(),
                       rtol=1e-02,
                       atol=1e-02)
Exemplo n.º 5
0
    def _run(self, recording, output_folder):
        recording = recover_recording(recording)
        # Sort
        # alias to params
        p = self.params

        if recording.is_filtered and p['filter']:
            print(
                "Warning! The recording is already filtered, but Mountainsort4 filter is enabled. You can disable "
                "filters by setting 'filter' parameter to False")

        samplerate = recording.get_sampling_frequency()

        # Bandpass filter
        if p['filter'] and p['freq_min'] is not None and p[
                'freq_max'] is not None:
            recording = bandpass_filter(recording=recording,
                                        freq_min=p['freq_min'],
                                        freq_max=p['freq_max'])

        # Whiten
        if p['whiten']:
            recording = whiten(recording=recording)

        # Check location no more needed done in basesorter

        sorting = ml_ms4alg.mountainsort4(
            recording=recording,
            detect_sign=p['detect_sign'],
            adjacency_radius=p['adjacency_radius'],
            clip_size=p['clip_size'],
            detect_threshold=p['detect_threshold'],
            detect_interval=p['detect_interval'],
            num_workers=p['num_workers'],
            verbose=self.verbose)

        # Curate
        if p['noise_overlap_threshold'] is not None and p['curation'] is True:
            if self.verbose:
                print('Curating')
            sorting = ml_ms4alg.mountainsort4_curation(
                recording=recording,
                sorting=sorting,
                noise_overlap_threshold=p['noise_overlap_threshold'])

        se.MdaSortingExtractor.write_sorting(
            sorting, str(output_folder / 'firings.mda'))

        samplerate_fname = str(output_folder / 'samplerate.txt')
        with open(samplerate_fname, 'w') as f:
            f.write('{}'.format(samplerate))
Exemplo n.º 6
0
    def _run(self, recording, output_folder):

        # Sort
        # alias to params
        p = self.params

        samplerate = recording.get_sampling_frequency()

        # Bandpass filter
        if p['filter'] and p['freq_min'] is not None and p[
                'freq_max'] is not None:
            recording = bandpass_filter(recording=recording,
                                        freq_min=p['freq_min'],
                                        freq_max=p['freq_max'])
        # Whiten
        if p['whiten']:
            recording = whiten(recording=recording)

        # Check location
        if 'location' not in recording.get_shared_channel_property_names():
            for i, chan in enumerate(recording.get_channel_ids()):
                recording.set_channel_property(chan, 'location', [0, i])

        sorting = ml_ms4alg.mountainsort4(
            recording=recording,
            detect_sign=p['detect_sign'],
            adjacency_radius=p['adjacency_radius'],
            clip_size=p['clip_size'],
            detect_threshold=p['detect_threshold'],
            detect_interval=p['detect_interval'],
            num_workers=p['num_workers'],
            verbose=self.verbose)

        # Curate
        if p['noise_overlap_threshold'] is not None and p['curation'] is True:
            if self.verbose:
                print('Curating')
            sorting = ml_ms4alg.mountainsort4_curation(
                recording=recording,
                sorting=sorting,
                noise_overlap_threshold=p['noise_overlap_threshold'])

        se.MdaSortingExtractor.write_sorting(
            sorting, str(output_folder / 'firings.mda'))

        samplerate_fname = str(output_folder / 'samplerate.txt')
        with open(samplerate_fname, 'w') as f:
            f.write('{}'.format(samplerate))
Exemplo n.º 7
0
    def _run(self, recording, output_folder):
        # Sort
        # alias to params
        p = self.params
        print(p)

        ind = self.recording_list.index(recording)

        # Bandpass filter
        if p['filter'] and p['freq_min'] is not None and p[
                'freq_max'] is not None:
            recording = bandpass_filter(recording=recording,
                                        freq_min=p['freq_min'],
                                        freq_max=p['freq_max'])

        # Whiten
        if p['whiten']:
            recording = whiten(recording=recording)

        # Check location
        if 'location' not in recording.get_channel_property_names():
            for i, chan in enumerate(recording.get_channel_ids()):
                recording.set_channel_property(chan, 'location', [0, i])

        sorting = ml_ms4alg.mountainsort4(
            recording=recording,
            detect_sign=p['detect_sign'],
            adjacency_radius=p['adjacency_radius'],
            clip_size=p['clip_size'],
            detect_threshold=p['detect_threshold'],
            detect_interval=p['detect_interval'])

        # Curate
        if p['noise_overlap_threshold'] is not None and p['curation'] is True:
            print('Curating')
            sorting = ml_ms4alg.mountainsort4_curation(
                recording=recording,
                sorting=sorting,
                noise_overlap_threshold=p['noise_overlap_threshold'])

        se.MdaSortingExtractor.write_sorting(
            sorting, str(output_folder / 'firings.mda'))