Skip to content

Commit

Permalink
Merge pull request #2103 from zm711/curation-tutorial
Browse files Browse the repository at this point in the history
Fix the `curation` tutorial
  • Loading branch information
samuelgarcia authored Oct 16, 2023
2 parents 05419fc + 4d83610 commit bedaafc
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions examples/modules_gallery/qualitymetrics/plot_4_curation.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
quality metrics.
"""
#############################################################################
# Import the modules and/or functions necessary from spikeinterface

import spikeinterface as si
import spikeinterface.extractors as se
Expand All @@ -15,22 +17,21 @@


##############################################################################
# First, let's download a simulated dataset
# from the repo 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'
# Let's download a simulated dataset
# from the repo 'https://gin.g-node.org/NeuralEnsemble/ephy_testing_data'
#
# Let's imagine that the ground-truth sorting is in fact the output of a sorter.
#

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

##############################################################################
# First, we extract waveforms and compute their PC scores:
# First, we extract waveforms (to be saved in the folder 'wfs_mearec') and
# compute their PC scores:

folder = 'wfs_mearec'
we = si.extract_waveforms(recording, sorting, folder,
we = si.extract_waveforms(recording, sorting, folder='wfs_mearec',
ms_before=1, ms_after=2., max_spikes_per_unit=500,
n_jobs=1, chunk_size=30000)
print(we)
Expand All @@ -47,12 +48,15 @@
##############################################################################
# We can now threshold each quality metric and select units based on some rules.
#
# The easiest and most intuitive way is to use boolean masking with dataframe:
# The easiest and most intuitive way is to use boolean masking with a dataframe.
#
# Then create a list of unit ids that we want to keep

keep_mask = (metrics['snr'] > 7.5) & (metrics['isi_violations_ratio'] < 0.2) & (metrics['nn_hit_rate'] > 0.90)
print(keep_mask)

keep_unit_ids = keep_mask[keep_mask].index.values
keep_unit_ids = [unit_id for unit_id in keep_unit_ids]
print(keep_unit_ids)

##############################################################################
Expand All @@ -61,4 +65,5 @@

curated_sorting = sorting.select_units(keep_unit_ids)
print(curated_sorting)
se.NpzSortingExtractor.write_sorting(curated_sorting, 'curated_sorting.npz')

se.NpzSortingExtractor.write_sorting(sorting=curated_sorting, save_path='curated_sorting.npz')

0 comments on commit bedaafc

Please sign in to comment.