OSCR

Opening the black box toward a modular approach to spike sorting.

Code ↔ Paper

23 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 23 matches · 3 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Methods › Real datasets ↔ notebooks/real_data_figure/generate_curation_data.py, the whole file · a weak match · score 0.90 · Bombcell mua, UnitRefine sua, UnitRefine mua, SLAy merges, Bombcell noise, UnitRefine noise
  2. [2] § Methods › Simulated datasets ↔ src/spikeinterface/core/generate.py, lines 1686–1764 · score 0.89 · propagation speed, spatial decay, positive amplitudes, channel positions, anisotropies, depolarization
  3. [3] § Methods › End-to-end spike sorter comparison on synthetic recordings › SpyKING-CIRCUS 2 ↔ src/spikeinterface/sorters/internal/spyking_circus2.py, lines 20–89 · score 0.86 · orthogonal matching pursuit, Circus OMP, SpyKING CIRCUS, matched filtering, SpikeInterface, peak detection
  4. [4] § Methods › Template matching › Circus-OMP ↔ src/spikeinterface/sortingcomponents/matching/circus.py, lines 102–155 · score 0.79 · Orthogonal Matching Pursuit, Cholesky decomposition, matching algorithm, reconstruction, internal, efficient
  5. [5] § Methods › Template matching › KS-matching ↔ src/spikeinterface/sortingcomponents/matching/circus.py, lines 102–155 · score 0.70 · scalar products, Matching Pursuit, sparsified, convolved, torch, precomputation
  6. [6] § Methods › Peak detection › Locally exclusive ↔ src/spikeinterface/preprocessing/detect_artifacts.py, lines 334–435 · score 0.70 · median absolute deviation, threshold crossings, detection threshold, zone, SpikeInterface, signal
  7. [7] § Methods › Peak detection › Locally exclusive ↔ src/spikeinterface/preprocessing/detect_bad_channels.py, lines 1–82 · score 0.67 · median absolute deviation, spatial radius, radius um, ms, threshold, signal
  8. [8] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Template matching ↔ src/spikeinterface/sorters/internal/spyking_circus2.py, lines 20–89 · score 0.66 · Circus OMP, slightly slower, Matching Pursuit, firing rates, motion corrected, reconstructing
  9. [9] § Methods › Real datasets ↔ notebooks/real_data_figure/generate_curation_data.py, the whole file · a weak match · score 0.65 · UnitRefine, curation, sorting analyzer, lightweight, sua, SLAy
  10. [10] § Methods › Real datasets ↔ src/spikeinterface/curation/train_manual_curation.py, lines 656–772 · score 0.64 · manual curation, quality metrics, sorting analyzer, curated, classifiers, trained
  11. [11] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Peak detection ↔ src/spikeinterface/preprocessing/detect_artifacts.py, lines 334–435 · score 0.63 · median absolute deviations, threshold crossings, detection threshold, events, amplitude, peak
  12. [12] § Methods › Clustering › Iterative clusterings (Iter-HDBSCAN and Iter-ISOSPLIT) ↔ src/spikeinterface/sortingcomponents/clustering/iterative_hdbscan.py, lines 80–220 · score 0.62 · duplicated clusters, small clusters, firing rate, HDBSCAN, neighborhood, split
  13. [13] § Methods › Clustering › Iterative clusterings (Iter-HDBSCAN and Iter-ISOSPLIT) ↔ src/spikeinterface/sortingcomponents/clustering/iterative_isosplit.py, lines 18–102 · score 0.60 · clustering algorithm, ISOSPLIT, firing rate, conquer, l1, dimensional
  14. [14] § Methods › Template matching › TDC-peeler drift aware ↔ src/spikeinterface/comparison/paircomparisons.py, lines 19–111 · score 0.59 · agreement score, ground truth comparison, spike trains, events, class, matching
  15. [15] § Methods › Template matching › TDC-peeler drift aware ↔ src/spikeinterface/widgets/collision.py, lines 185–298 · score 0.56 · Collision recalls, score, lag, metrics, ms, bin
  16. [16] § Methods › Clustering › Full graph sparse clustering (Global-Louvain) ↔ src/spikeinterface/sortingcomponents/clustering/graph_clustering.py, lines 10–66 · score 0.56 · local distances, graph, Louvain, connectivity, HDBSCAN, edge
  17. [17] § Methods › Simulated datasets ↔ src/spikeinterface/extractors/toy_example.py, the whole file · a weak match · score 0.54 · ground truth recordings, disk, lazy, fly, memory, seeded
  18. [18] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Template matching ↔ src/spikeinterface/sortingcomponents/matching/wobble.py, lines 353–404 · score 0.54 · super resolution, spike waveforms, Template matching, Wobble, temporal, trace
  19. [19] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Feature extraction and clustering ↔ src/spikeinterface/sortingcomponents/clustering/iterative_isosplit.py, lines 18–102 · score 0.53 · local clustering, clustering algorithms, firing rates, ISOSPLIT, sortingcomponents, iterative
  20. [20] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Peak detection ↔ src/spikeinterface/sortingcomponents/peak_detection/by_channel.py, lines 19–103 · score 0.53 · median absolute deviations, peak amplitude, peak detection, crossings, threshold
  21. [21] § Results › Benchmarking individual spike sorting steps improves overall spike sorting quality › Feature extraction and clustering ↔ src/spikeinterface/sortingcomponents/clustering/iterative_hdbscan.py, lines 15–78 · score 0.52 · local clustering, clustering algorithms, firing rates, HDBSCAN, sortingcomponents, iterative
  22. [22] § Results › End-to-end evaluation of component-based sorters ↔ src/spikeinterface/sorters/internal/lupin.py, lines 24–106 · score 0.52 · best sorter, peak detection, spike sorters, YASS, Lupin, template matching
  23. [23] § Results › End-to-end evaluation of component-based sorters ↔ src/spikeinterface/sorters/internal/lupin.py, lines 24–106 · score 0.51 · matching engine, spike sorters, Lupin, motion corrected, poses, Kilosort

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 73 lines · 3.4 KB · MIT · 2 matches

  1. """
  2. Generates curation results from computed analyzers.
  3. Once you have the analyzers, run this code by `cd`ing into the `real_data_figure`
  4. folder, then running
  5. >>> uv run generate_curation_data.py
  6. """
  7. import spikeinterface.full as si
  8. import numpy as np
  9. import pandas as pd
  10. from pathlib import Path
  11. repo_folder = Path("/home/nolanlab/fromgit/sorting_components_benchmark_paper/")
  12. real_data_figure_folder = repo_folder / "notebooks/real_data_figure"
  13. analyzers_folder = real_data_figure_folder / "analyzers"
  14. dataset_protocols = {
  15. 'IBL': ['kilosort4_motion_correction', 'lupin_motion_correction', 'tridesclous2_motion_correction','spykingcircus2_motion_correction'],
  16. 'ucl': ['kilosort4_no_motion_correction', 'lupin_no_motion_correction', 'tridesclous2_no_motion_correction','spykingcircus2_no_motion_correction'],
  17. 'Duszkiewicz': ['kilosort4_no_motion_correction', 'lupin_no_motion_correction', 'tridesclous2_no_motion_correction','spykingcircus2_no_motion_correction'],
  18. }
  19. bombcell_labels = ['good', 'mua', 'noise', 'non_soma_good', 'non_soma_mua']
  20. unitrefine_labels = ['sua', 'mua', 'noise']
  21. merge_presets = ['slay']
  22. for dataset_name, protocols in dataset_protocols.items():
  23. bombcell_results = []
  24. unitrefine_results = []
  25. all_protocols_data = []
  26. for protocol in protocols:
  27. analyzer_path = analyzers_folder / f"{dataset_name}_{protocol}_analyzer"
  28. if analyzer_path.is_dir():
  29. analyzer = si.load_sorting_analyzer(analyzer_path)
  30. else:
  31. analyzer = si.load_sorting_analyzer(str(analyzer_path) + '.zarr')
  32. bombcell_unit_label = si.bombcell_label_units(analyzer, split_non_somatic_good_mua=True)['bombcell_label'].values
  33. bombcell_results = {label: np.sum(bombcell_unit_label == label) for label in bombcell_labels}
  34. # You need to donwload the UnitRefine models `noise_neural_classifier_lightweight` and `sua_mua_classifier_lightweight` from
  35. # https://huggingface.co/AnoushkaJain3
  36. unitrefine_unit_label = si.unitrefine_label_units(analyzer, noise_neural_classifier='/home/nolanlab/Downloads/noise_neural_classifier_lightweight', sua_mua_classifier='/home/nolanlab/Downloads/sua_mua_classifier_lightweight')
  37. unitrefine_results = {label: np.sum(unitrefine_unit_label['unitrefine_label'] == label) for label in unitrefine_labels}
  38. merge_results = {merge_preset: len(si.compute_merge_unit_groups(analyzer, preset=merge_preset)) for merge_preset in merge_presets}
  39. protocol_data = [
  40. protocol,
  41. analyzer.get_num_units(),
  42. bombcell_results['good'] + bombcell_results['non_soma_good'],
  43. unitrefine_results['sua'],
  44. bombcell_results['mua'] + bombcell_results['non_soma_mua'],
  45. unitrefine_results['mua'],
  46. merge_results['slay'],
  47. bombcell_results['noise'],
  48. unitrefine_results['noise'],
  49. ]
  50. all_protocols_data.append(protocol_data)
  51. results = pd.DataFrame(all_protocols_data, columns=["sorter", "total units", "bombcell good", "unitrefine sua", "bombcell mua", "unitrefine mua", "# slay merges", "bombcell noise", "unitrefine noise"], index=None)
  52. results.to_csv(real_data_figure_folder / f"curation_results/{dataset_name}_results.csv", index=False)
  53. # render for typst rendering
  54. for row in results.iterrows():
  55. for cell in row[1]:
  56. print(f"[{cell}], ", end="")
  57. print("")

generate_curation_data.py at commit d93ca4e, under MIT · at the source

Overview

Authors: Samuel Garcia1, Chris Halcrow2, Charlie Windolf3, Zachary M McKenzie4,5, Paul Adkisson-Floro6, Heberto Ramon Mayorquin6, Benjamin K Dichter6, Alessio Paolo Buccino6,7, Pierre Yger8
  1. Centre de Recherche en Neuroscience de Lyon, CNRS Lyon France
  2. University of Edinburgh Edinburgh United Kingdom
  3. Columbia University New York United States
  4. Harvard Medical School Boston United States
  5. Massachusetts General Hospital Boston United States
  6. CatalystNeuro Casper United States
  7. Allen Institute for Neural Dynamics Seattle United States
  8. Lille Neurosciences & Cognition (LilNCog) – U1172 (INSERM, Lille), Univ Lille Lille France
Journal: eLife, volume 15, article RP110588
Dates: published online 25 September 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.7554/elife.110588 · PMID 42789325 · PMCID PMC13614784 · OpenAlex W7147728195
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: extracellular electrophysiology (units, LFP) (modality), human (organism), mouse (organism), methods / tools (subfield)
Methods: fMRI & imaging, Single-unit activity, calcium imaging, Spectral & time-frequency, Statistics
Keywords: electrophysiology, spike sorting, reproducible science, benchmark, high-density electrophysiology, Human, Mouse
MeSH: Action Potentials*, Algorithms*, Neurons*, Animals, Software (* major topic)
Journal subjects: Computational and Systems Biology, Neuroscience
Topic: Neural dynamics and brain function (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: Institut national de recherche en sciences et technologies du numérique (ANR-24-RRII-000); Agence Nationale de la Recherche (ANR-25-CE42-6535-03); National Institutes of Health (T32GM144273, U19NS123716-02, T32GM007753, F31129103); Biotechnology and Biological Science Research Council (BB/X01861X/1); National Science Foundation (DBI-1707398); Simons Foundation (344 543023)
Citations: not cited yet (Europe PMC); 71 references in the paper

Abstract

Spike sorting is an algorithmic process that extracts the activity of individual neurons from extracellular electrophysiology recordings. With the ballooning use of high-density probes, such as Neuropixels, this essential processing step is increasingly becoming time-consuming and computationally expensive. Although many software tools have been proposed to address spike sorting, they are usually constructed and benchmarked as monolithic ‘black boxes’, making it difficult to factor out the effects of individual algorithmic steps on the final outcome, especially when varying datasets and parameters. To address this issue, we developed a modular and common framework to develop, benchmark, and assemble the key computational steps that are used in state-of-the-art spike sorting algorithms. Relying on fast and efficient ground truth generation of biophysically plausible recordings, we show that we are able to individually benchmark and precisely quantify the performance of different steps in a spike sorting pipeline (i.e. peak detection, feature extraction, clustering, and template matching). We then leverage these results to create a modular, component-based spike sorter that can outperform Kilosort4 on dense and large simulated recordings, and produce similar quantitative results on real data. In addition, we find that the major bottleneck of all modern spike sorting pipelines is in the physical motion of probes, regardless of the drift-correction strategy. The component-based spike sorting framework presented here has the potential to foster community engagement in the field by lowering the barrier to contributions and providing a flexible yet powerful framework to construct end-to-end spike sorting solutions.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repositories

Its files are read in the Code ↔ Paper reader above, with 23 matches between paragraphs and lines of code.

Zenodo 20407862

License: CC-BY-4.0
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Data availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: SpikeInterface (19 files), NumPy (15 files), Matplotlib (12 files), pandas (1 file), scikit-learn (1 file), SciPy (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
  • 28 September 2026: the link answers (HTTP 200)
22 files

SpikeInterface/sorting_components_benchmark_paper

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: d93ca4e101c822dfe12b99cc59bdb9d0ca1045b1, 27 May 2026
Languages: Python (13), Jupyter (7)
Size: 28 files, 20 scripts
Software Heritage: not archived
Found in: “Data availability”
Holds: README, license file, environment (notebooks/real_data_figure/pyproject.toml), 7 notebooks
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: SpikeInterface (19 files), NumPy (15 files), Matplotlib (12 files), pandas (1 file), scikit-learn (1 file), SciPy (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
22 files

SpikeInterface/spikeinterface

License: MIT
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 80aa6436dfc203305859aef8430fb0c63f5cbc22, 23 September 2026
Languages: Python (615), MATLAB (9), Shell (2)
Size: 890 files, 626 scripts
Software Heritage: archived
Found in: “Data availability”
Holds: README, license file, environment (pyproject.toml), tests, continuous integration, documentation
Not found: CITATION.cff
Tools: SpikeInterface (519 files), NumPy (383 files), Matplotlib (83 files), SciPy (63 files), pandas (38 files), scikit-learn (24 files), h5py (15 files), Numba (14 files), PyTorch (10 files), Neo (9 files), Kilosort (6 files), NetworkX (4 files), MountainSort (2 files), Neurodata Without Borders (PyNWB, MatNWB) (2 files), seaborn (2 files), DataLad (1 file), igraph (1 file), imbalanced-learn (1 file), LightGBM (1 file), Pillow (1 file), scikit-image (1 file), TensorFlow (1 file), UMAP (1 file), XGBoost (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
628 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 666 scripts, each with its path and the digest of its content;
  • 23 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

Datasets cited

Data availability

All the figures available in this article can be regenerated from Jupyter notebooks that are available at https://zenodo.org/records/20407862 or https://github.com/SpikeInterface/sorting_components_benchmark_paper (copy archived at Samuel and Halcrow, 2026). All the methods and options evaluated in this work are readily available to the electrophysiology community within the SpikeInterface package https://github.com/SpikeInterface/spikeinterface (copy archived at Buccino et al., 2026a) and can be immediately deployed with a few lines of code. The implementations of the Kilosort clustering and matching are available at https://github.com/SpikeInterface/spikeinterface-kilosort-components (copy archived at Yger et al., 2026).

The following dataset was generated:

GarciaS YgerP BuccinoA HalcrowC 2026Script and notebook for the paper "Opening the black box: a modular approach to spike sorting"Zenodo10.5281/zenodo.20407862

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, pages, dates, 9 authors, 7 keywords, 5 MeSH terms, 6 funders, 64 references.

Cite

This paper

Garcia, S., Halcrow, C., Windolf, C., McKenzie, Z. M., Adkisson-Floro, P., Mayorquin, H. R., Dichter, B. K., Buccino, A. P., & Yger, P. (2026). Opening the black box toward a modular approach to spike sorting. eLife, 15, RP110588. https://doi.org/10.7554/elife.110588

BibTeX

@article{garcia2026opening,
author = {Garcia, Samuel and Halcrow, Chris and Windolf, Charlie and McKenzie, Zachary M and Adkisson-Floro, Paul and Mayorquin, Heberto Ramon and Dichter, Benjamin K and Buccino, Alessio Paolo and Yger, Pierre},
title = {{Opening the black box toward a modular approach to spike sorting}},
journal = {eLife},
year = {2026},
month = sep,
volume = {15},
pages = {RP110588},
publisher = {eLife Sciences Publications, Ltd},
issn = {2050-084X},
doi = {10.7554/elife.110588},
url = {https://doi.org/10.7554/elife.110588},
pmid = {42789325},
pmcid = {PMC13614784}
}

RIS

TY - JOUR
AU - Garcia, Samuel
AU - Halcrow, Chris
AU - Windolf, Charlie
AU - McKenzie, Zachary M
AU - Adkisson-Floro, Paul
AU - Mayorquin, Heberto Ramon
AU - Dichter, Benjamin K
AU - Buccino, Alessio Paolo
AU - Yger, Pierre
TI - Opening the black box toward a modular approach to spike sorting
T2 - eLife
J2 - Elife
PY - 2026
DA - 2026/09/25
VL - 15
SP - RP110588
SN - 2050-084X
PB - eLife Sciences Publications, Ltd
DO - 10.7554/elife.110588
UR - https://doi.org/10.7554/elife.110588
LA - en
ER -

CSL-JSON

{
"id": "10.7554/elife.110588",
"type": "article-journal",
"title": "Opening the black box toward a modular approach to spike sorting",
"container-title": "eLife",
"author": [
{
"family": "Garcia",
"given": "Samuel"
},
{
"family": "Halcrow",
"given": "Chris"
},
{
"family": "Windolf",
"given": "Charlie"
},
{
"family": "McKenzie",
"given": "Zachary M"
},
{
"family": "Adkisson-Floro",
"given": "Paul"
},
{
"family": "Mayorquin",
"given": "Heberto Ramon"
},
{
"family": "Dichter",
"given": "Benjamin K"
},
{
"family": "Buccino",
"given": "Alessio Paolo"
},
{
"family": "Yger",
"given": "Pierre"
}
],
"container-title-short": "Elife",
"volume": "15",
"page": "RP110588",
"DOI": "10.7554/elife.110588",
"PMID": "42789325",
"PMCID": "PMC13614784",
"ISSN": "2050-084X",
"publisher": "eLife Sciences Publications, Ltd",
"URL": "https://doi.org/10.7554/elife.110588",
"language": "en",
"issued": {
"date-parts": [
[
2026,
9,
25
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.7554/elife.110170 [code]
Efficient and reproducible pipelines for spike sorting large-scale electrophysiology data.
Journal: eLife
In common: SpikeInterface, Neurodata Without Borders (PyNWB, MatNWB), pandas, 1 other tool, extracellular electrophysiology (units, LFP), methods / tools, mouse, 18 references, author Alessio Paolo Buccino
[2] doi:10.1016/j.patter.2026.101590 [code]
Density-based longitudinal neuron tracking in high-density electrophysiological recordings.
Journal: Patterns (New York, N.Y.)
In common: Kilosort, Neo, SpikeInterface, 10 other tools, extracellular electrophysiology (units, LFP), 11 references
[3] doi:10.1038/s41593-026-02232-0 [code]
Entorhinal cortex represents task-relevant remote locations independently of CA1.
Journal: Nature neuroscience
In common: Kilosort, SpikeInterface, Neurodata Without Borders (PyNWB, MatNWB), 12 other tools, mouse, 4 references
[4] doi:10.1038/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: imbalanced-learn, XGBoost, UMAP, 13 other tools, mouse
[5] doi:10.1038/s41592-026-03076-z [code]
Neuropixels Opto: combining high-resolution electrophysiology and optogenetics.
Journal: Nature methods
In common: Kilosort, SpikeInterface, Neurodata Without Borders (PyNWB, MatNWB), 6 other tools, extracellular electrophysiology (units, LFP), mouse, 5 references
[6] doi:10.1523/jneurosci.1594-25.2026 [code]
KIASORT: Knowledge-Integrated Automated Spike Sorting for Geometry-Free Neuron Tracking.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: extracellular electrophysiology (units, LFP), methods / tools, mouse, 13 references
[7] doi:10.1038/s41467-026-76939-w [code]
HIPPIE: a generative model for electrophysiological analysis across species, technologies, and modalities.
Journal: Nature communications
In common: SpikeInterface, Neurodata Without Borders (PyNWB, MatNWB), imbalanced-learn, 10 other tools, methods / tools, mouse, 1 reference
[8] doi:10.1038/s41598-026-41561-9 [code]
Hybrid knowledge- and data-driven modelling for robust spike detection and sorting in human C-fiber microneurography.
Journal: Scientific reports
In common: Neo, XGBoost, scikit-learn, 4 other tools, extracellular electrophysiology (units, LFP), methods / tools, 7 references
[9] doi:10.3389/fnsys.2026.1822122 [code]
Convergence-divergence circuits for multimodal integration of innate and learned opponent valences.
Journal: Frontiers in systems neuroscience
In common: UMAP, igraph, Numba, 12 other tools, 1 reference
[10] doi:10.1016/j.isci.2026.116825 [code]
Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice.
Journal: iScience
In common: imbalanced-learn, XGBoost, UMAP, 12 other tools, mouse

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.