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)
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
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)
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)
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)
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
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. #
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