def test_find_spike_from_templates():
    repo = 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'
    remote_path = 'mearec/mearec_test_10s.h5'
    local_path = download_dataset(repo=repo,
                                  remote_path=remote_path,
                                  local_folder=None)
    recording, gt_sorting = read_mearec(local_path)

    folder = 'waveforms_mearec'
    we = extract_waveforms(recording,
                           gt_sorting,
                           folder,
                           load_if_exists=True,
                           ms_before=1,
                           ms_after=2.,
                           max_spikes_per_unit=500,
                           n_jobs=1,
                           chunk_size=30000)
    # ~ print(we)

    spikes = find_spike_from_templates(
        recording,
        we,
        method='simple',
    )
    print(spikes)
Ejemplo n.º 2
0
def test_run_sorter_singularity():
    mearec_filename = download_dataset(remote_path='mearec/mearec_test_10s.h5',
                                       unlock=True)
    output_folder = 'sorting_tdc_singularity'

    recording, sorting_true = read_mearec(mearec_filename)

    sorter_params = {'detect_threshold': 4.9}

    singularity_image = 'spikeinterface/tridesclous-base:1.6.4-1'

    sorting = run_sorter('tridesclous',
                         recording,
                         output_folder=output_folder,
                         remove_existing_folder=True,
                         delete_output_folder=False,
                         verbose=True,
                         raise_error=True,
                         singularity_image=singularity_image,
                         **sorter_params)
    print(sorting)

    # basic check to confirm sorting was successful
    assert 'Tridesclous' in sorting.to_dict()['class']
    assert len(sorting.get_unit_ids()) > 0
Ejemplo n.º 3
0
def test_run_sorter_local():
    local_path = download_dataset(remote_path='mearec/mearec_test_10s.h5')
    recording, sorting_true = read_mearec(local_path)

    sorter_params = {'detect_threshold': 4.9}

    sorting = run_sorter('tridesclous', recording, output_folder='sorting_tdc_local',
                         remove_existing_folder=True, delete_output_folder=False,
                         verbose=True, raise_error=True, docker_image=None,
                         **sorter_params)
    print(sorting)
Ejemplo n.º 4
0
def setup_module():
    for folder in ('mearec_waveforms'):
        if Path(folder).is_dir():
            shutil.rmtree(folder)
    
    local_path = download_dataset(remote_path='mearec/mearec_test_10s.h5')
    recording, sorting = read_mearec(local_path)
    print(recording)
    print(sorting)
    
    we = extract_waveforms(recording, sorting, 'mearec_waveforms',
        ms_before=3., ms_after=4., max_spikes_per_unit=500,
        load_if_exists=True,
        n_jobs=1, chunk_size=30000)
Ejemplo n.º 5
0
def test_export_report():
    repo = 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'
    remote_path = 'mearec/mearec_test_10s.h5'
    local_path = download_dataset(repo=repo,
                                  remote_path=remote_path,
                                  local_folder=None)
    recording, sorting = se.read_mearec(local_path)

    waveform_folder = Path('waveforms')
    output_folder = Path('mearec_GT_report')

    for f in (waveform_folder, output_folder):
        if f.is_dir():
            shutil.rmtree(f)

    waveform_extractor = extract_waveforms(recording, sorting, waveform_folder)

    job_kwargs = dict(n_jobs=1, chunk_size=30000, progress_bar=True)

    export_report(waveform_extractor, output_folder, **job_kwargs)
def test_find_spikes_from_templates():

    repo = 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'
    remote_path = 'mearec/mearec_test_10s.h5'
    local_path = download_dataset(repo=repo,
                                  remote_path=remote_path,
                                  local_folder=None)
    recording, gt_sorting = read_mearec(local_path)

    folder = 'waveforms_mearec'
    we = extract_waveforms(recording,
                           gt_sorting,
                           folder,
                           load_if_exists=True,
                           ms_before=1,
                           ms_after=2.,
                           max_spikes_per_unit=500,
                           return_scaled=False,
                           n_jobs=1,
                           chunk_size=10000)

    method_kwargs = {
        'waveform_extractor': we,
        'noise_levels': get_noise_levels(recording),
    }

    sampling_frequency = recording.get_sampling_frequency()

    result = {}

    for method in template_matching_methods.keys():
        spikes = find_spikes_from_templates(recording,
                                            method=method,
                                            method_kwargs=method_kwargs,
                                            n_jobs=1,
                                            chunk_size=30000,
                                            progress_bar=True)

        result[method] = NumpySorting.from_times_labels(
            spikes['sample_ind'], spikes['cluster_ind'], sampling_frequency)
Ejemplo n.º 7
0
def test_run_sorter_docker():
    mearec_filename = download_dataset(remote_path='mearec/mearec_test_10s.h5',
                                       unlock=True)
    output_folder = 'sorting_tdc_docker'

    recording, sorting_true = read_mearec(mearec_filename)

    sorter_params = {'detect_threshold': 4.9}

    docker_image = 'spikeinterface/tridesclous-base:1.6.4-1'

    sorting = run_sorter('tridesclous',
                         recording,
                         output_folder=output_folder,
                         remove_existing_folder=True,
                         delete_output_folder=False,
                         verbose=True,
                         raise_error=True,
                         docker_image=docker_image,
                         with_output=False,
                         **sorter_params)
    assert sorting is None
Ejemplo n.º 8
0
import numpy as np
import matplotlib.pyplot as plt

import spikeinterface as si
import spikeinterface.extractors as se
import spikeinterface.sorters as ss
import spikeinterface.comparison as sc
import spikeinterface.widgets as sw

##############################################################################
# First, let's download a simulated dataset
#  from the repo 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'

local_path = si.download_dataset(remote_path='mearec/mearec_test_10s.h5')
recording, sorting = se.read_mearec(local_path)
print(recording)
print(sorting)

#############################################################################
# Then run two spike sorters and compare their output.

sorting_HS = ss.run_herdingspikes(recording)
sorting_TDC = ss.run_tridesclous(recording)

#############################################################################
# The :code:`compare_two_sorters` function allows us to compare the spike
# sorting output. It returns a :code:`SortingComparison` object, with methods
# to inspect the comparison output easily. The comparison matches the
# units by comparing the agreement between unit spike trains.
#
Ejemplo n.º 9
0
print(isinstance(recording, si.BaseRecording))


##############################################################################
# This equivalent to do this
#
# The "old" (<=0.12) spikeinterface API use to have this "class approach reading"

recording = se.Spike2RecordingExtractor(spike2_file_path, stream_id='0')
print(recording)


##############################################################################
# Read MEArec give 2 object

recording, sorting = se.read_mearec(mearec_folder_path)
print(recording)
print(type(recording))
print()
print(sorting)
print(type(sorting))


##############################################################################
# This equivalent to do this

recording = se.MEArecRecordingExtractor(mearec_folder_path)
sorting = se.MEArecSortingExtractor(mearec_folder_path)

##############################################################################
# recording and sorting object can be plot quickly with the widgets submodule