Skip to content

Commit f3c4099

Browse files
authored
Refactor metrics into its own module (#4183)
1 parent cb7da18 commit f3c4099

File tree

79 files changed

+3453
-3162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+3453
-3162
lines changed

.github/scripts/determine_testing_environment.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
plexon2_changed = False
2121
preprocessing_changed = False
2222
postprocessing_changed = False
23-
qualitymetrics_changed = False
23+
metrics_changed = False
2424
sorters_changed = False
2525
sorters_external_changed = False
2626
sorters_internal_changed = False
@@ -58,8 +58,8 @@
5858
preprocessing_changed = True
5959
elif "postprocessing" in changed_file.parts:
6060
postprocessing_changed = True
61-
elif "qualitymetrics" in changed_file.parts:
62-
qualitymetrics_changed = True
61+
elif "metrics" in changed_file.parts:
62+
metrics_changed = True
6363
elif "comparison" in changed_file.parts:
6464
comparison_changed = True
6565
elif "curation" in changed_file.parts:
@@ -89,12 +89,12 @@
8989
run_extractor_tests = run_everything or extractors_changed or plexon2_changed
9090
run_preprocessing_tests = run_everything or preprocessing_changed
9191
run_postprocessing_tests = run_everything or postprocessing_changed
92-
run_qualitymetrics_tests = run_everything or qualitymetrics_changed
92+
run_metrics_tests = run_everything or metrics_changed
9393
run_curation_tests = run_everything or curation_changed
9494
run_sortingcomponents_tests = run_everything or sortingcomponents_changed
9595

9696
run_comparison_test = run_everything or run_generation_tests or comparison_changed
97-
run_widgets_test = run_everything or run_qualitymetrics_tests or run_preprocessing_tests or widgets_changed
97+
run_widgets_test = run_everything or run_metrics_tests or run_preprocessing_tests or widgets_changed
9898
run_exporters_test = run_everything or run_widgets_test or exporters_changed
9999

100100
run_sorters_test = run_everything or sorters_changed
@@ -109,7 +109,7 @@
109109
"RUN_EXTRACTORS_TESTS": run_extractor_tests,
110110
"RUN_PREPROCESSING_TESTS": run_preprocessing_tests,
111111
"RUN_POSTPROCESSING_TESTS": run_postprocessing_tests,
112-
"RUN_QUALITYMETRICS_TESTS": run_qualitymetrics_tests,
112+
"RUN_METRICS_TESTS": run_metrics_tests,
113113
"RUN_CURATION_TESTS": run_curation_tests,
114114
"RUN_SORTINGCOMPONENTS_TESTS": run_sortingcomponents_tests,
115115
"RUN_GENERATION_TESTS": run_generation_tests,

.github/scripts/import_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"import spikeinterface",
66
"import spikeinterface.core",
77
"import spikeinterface.extractors",
8-
"import spikeinterface.qualitymetrics",
8+
"import spikeinterface.metrics",
99
"import spikeinterface.preprocessing",
1010
"import spikeinterface.comparison",
1111
"import spikeinterface.postprocessing",

.github/workflows/all-tests.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
echo "RUN_EXTRACTORS_TESTS=${RUN_EXTRACTORS_TESTS}"
7070
echo "RUN_PREPROCESSING_TESTS=${RUN_PREPROCESSING_TESTS}"
7171
echo "RUN_POSTPROCESSING_TESTS=${RUN_POSTPROCESSING_TESTS}"
72-
echo "RUN_QUALITYMETRICS_TESTS=${RUN_QUALITYMETRICS_TESTS}"
72+
echo "RUN_METRICS_TESTS=${RUN_METRICS_TESTS}"
7373
echo "RUN_CURATION_TESTS=${RUN_CURATION_TESTS}"
7474
echo "RUN_SORTINGCOMPONENTS_TESTS=${RUN_SORTINGCOMPONENTS_TESTS}"
7575
echo "RUN_GENERATION_TESTS=${RUN_GENERATION_TESTS}"
@@ -175,13 +175,13 @@ jobs:
175175
pip list
176176
./.github/run_tests.sh postprocessing --no-virtual-env
177177
178-
- name: Test quality metrics
178+
- name: Test metrics
179179
shell: bash
180-
if: env.RUN_QUALITYMETRICS_TESTS == 'true'
180+
if: env.RUN_METRICS_TESTS == 'true'
181181
run: |
182-
pip install -e .[qualitymetrics]
182+
pip install -e .[metrics]
183183
pip list
184-
./.github/run_tests.sh qualitymetrics --no-virtual-env
184+
./.github/run_tests.sh metrics --no-virtual-env
185185
186186
- name: Test comparison
187187
shell: bash

doc/api.rst

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -226,19 +226,31 @@ spikeinterface.postprocessing
226226
.. autofunction:: compute_correlograms
227227
.. autofunction:: compute_acgs_3d
228228
.. autofunction:: compute_isi_histograms
229-
.. autofunction:: get_template_metric_names
230229
.. autofunction:: align_sorting
231230

232231

233-
spikeinterface.qualitymetrics
234-
-----------------------------
232+
spikeinterface.metrics
233+
----------------------
235234

236-
.. automodule:: spikeinterface.qualitymetrics
235+
.. automodule:: spikeinterface.metrics.quality
237236

238237
.. autofunction:: compute_quality_metrics
239238
.. autofunction:: get_quality_metric_list
240239
.. autofunction:: get_quality_pca_metric_list
241-
.. autofunction:: get_default_qm_params
240+
.. autofunction:: get_default_quality_metrics_params
241+
242+
.. automodule:: spikeinterface.metrics.template
243+
244+
.. autofunction:: compute_template_metrics
245+
.. autofunction:: get_template_metric_list
246+
.. autofunction:: get_default_template_metrics_params
247+
.. autofunction:: get_single_channel_template_metric_names
248+
.. autofunction:: get_multi_channel_template_metric_names
249+
250+
.. automodule:: spikeinterface.metrics.spiketrain
251+
252+
.. autofunction:: get_spiketrain_metric_list
253+
.. autofunction:: get_default_spiketrain_metrics_params
242254

243255

244256
spikeinterface.sorters
@@ -419,7 +431,7 @@ Drift
419431
~~~~~
420432

421433
.. automodule:: spikeinterface.generation
422-
:no-index:
434+
:noindex:
423435

424436
.. autofunction:: generate_drifting_recording
425437
.. autofunction:: generate_displacement_vector
@@ -434,7 +446,7 @@ Hybrid
434446
~~~~~~
435447

436448
.. automodule:: spikeinterface.generation
437-
:no-index:
449+
:noindex:
438450

439451
.. autofunction:: generate_hybrid_recording
440452
.. autofunction:: estimate_templates_from_recording
@@ -451,7 +463,6 @@ Noise
451463
~~~~~
452464

453465
.. automodule:: spikeinterface.generation
454-
:no-index:
455466

456467
.. autofunction:: generate_noise
457468

@@ -508,9 +519,6 @@ spikeinterface.benchmark
508519
.. automodule:: spikeinterface.benchmark.benchmark_peak_localization
509520

510521
.. autoclass:: PeakLocalizationStudy
511-
512-
.. automodule:: spikeinterface.benchmark.benchmark_peak_localization
513-
514522
.. autoclass:: UnitLocalizationStudy
515523

516524
.. automodule:: spikeinterface.benchmark.benchmark_motion_estimation

doc/conf.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
'../examples/tutorials/core/analyzer_some_units',
3636
'../examples/tutorials/core/analyzer.zarr',
3737
'../examples/tutorials/curation/my_folder',
38-
'../examples/tutorials/qualitymetrics/curated_sorting',
39-
'../examples/tutorials/qualitymetrics/clean_analyzer.zarr',
38+
'../examples/tutorials/metrics/curated_sorting',
39+
'../examples/tutorials/metrics/clean_analyzer.zarr',
4040
'../examples/tutorials/widgets/waveforms_mearec',
4141

4242
]
@@ -129,7 +129,7 @@
129129
'../examples/tutorials/core',
130130
'../examples/tutorials/extractors',
131131
'../examples/tutorials/curation',
132-
'../examples/tutorials/qualitymetrics',
132+
'../examples/tutorials/metrics',
133133
'../examples/tutorials/comparison',
134134
'../examples/tutorials/widgets',
135135
'../examples/tutorials/forhowto',

doc/get_started/import.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ to import the :code:`core` module followed by:
2626
import spikeinterface.extractors as se
2727
import spikeinterface.preprocessing as spre
2828
import spikeinterface.sorters as ss
29-
import spikinterface.postprocessing as spost
30-
import spikeinterface.qualitymetrics as sqm
29+
import spikeinterface.postprocessing as spost
30+
import spikeinterface.metrics as sm
3131
import spikeinterface.exporters as sexp
32-
import spikeinterface.comparsion as scmp
32+
import spikeinterface.comparison as scmp
3333
import spikeinterface.curation as scur
3434
import spikeinterface.sortingcomponents as sc
3535
import spikeinterface.widgets as sw

doc/get_started/quickstart.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ We need to import one by one different submodules separately
4242
import spikeinterface.preprocessing as spre
4343
import spikeinterface.sorters as ss
4444
import spikeinterface.postprocessing as spost
45-
import spikeinterface.qualitymetrics as sqm
45+
import spikeinterface.metrics.quality as sqm
4646
import spikeinterface.comparison as sc
4747
import spikeinterface.exporters as sexp
4848
import spikeinterface.curation as scur
@@ -627,7 +627,7 @@ compute quality metrics (some quality metrics require certain extensions
627627

628628
.. code:: ipython3
629629
630-
qm_params = sqm.get_default_qm_params()
630+
qm_params = sqm.get_default_quality_metrics_params()
631631
pprint(qm_params)
632632
633633

doc/how_to/analyze_neuropixels.rst

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -699,15 +699,14 @@ make a copy of the analyzer and all computed extensions.
699699
Quality metrics
700700
---------------
701701

702-
We have a single function ``compute_quality_metrics(SortingAnalyzer)``
703-
that returns a ``pandas.Dataframe`` with the desired metrics.
702+
The ``analyzer.compute("quality_metrics").get_data()`` returns a ``pandas.Dataframe`` with the desired metrics.
704703

705704
Note that this function is also an extension and so can be saved. And so
706-
this is equivalent to do :
705+
this is equivalent to do:
707706
``metrics = analyzer.compute("quality_metrics").get_data()``
708707

709708
Please visit the `metrics
710-
documentation <https://spikeinterface.readthedocs.io/en/latest/modules/qualitymetrics.html>`__
709+
documentation <https://spikeinterface.readthedocs.io/en/latest/modules/metrics/quality.html>`__
711710
for more information and a list of all supported metrics.
712711

713712
Some metrics are based on PCA (like
@@ -721,20 +720,12 @@ PCA for their computation. This can be achieved with:
721720
metric_names=['firing_rate', 'presence_ratio', 'snr', 'isi_violation', 'amplitude_cutoff']
722721
723722
724-
# metrics = analyzer.compute("quality_metrics").get_data()
725-
# equivalent to
726-
metrics = si.compute_quality_metrics(analyzer, metric_names=metric_names)
723+
metrics_ext = analyzer.compute("quality_metrics", metric_names=metric_names)
724+
metrics = metrics_ext.get_data()
727725
728726
metrics
729727
730728
731-
.. parsed-literal::
732-
733-
/home/samuel.garcia/Documents/SpikeInterface/spikeinterface/src/spikeinterface/qualitymetrics/misc_metrics.py:846: UserWarning: Some units have too few spikes : amplitude_cutoff is set to NaN
734-
warnings.warn(f"Some units have too few spikes : amplitude_cutoff is set to NaN")
735-
736-
737-
738729
739730
.. raw:: html
740731

doc/images/overview.png

-3.19 KB
Loading

doc/modules/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Modules documentation
99
preprocessing
1010
sorters
1111
postprocessing
12-
qualitymetrics
12+
metrics
1313
comparison
1414
exporters
1515
widgets

0 commit comments

Comments
 (0)