An artefact-resilient wide bandwidth bidirectional graphene neural interface.
The 3 matches
- [1] § Results › Device fabrication and characterization ↔ PhyREC/Calibration_old.py, lines 9–104 · score 0.54 · gate voltage, effective gate, offset, transfer, attribute, device
- [2] § Results › In vitro assessment of gSGFET recording performance during stimulation ↔ examples/spectrogram_plots.py, lines 1–15 · score 0.53 · power spectral density, baseline normalized, PSD, signals
- [3] § Methods › Data analysis ↔ examples/basic_plot.py, lines 1–21 · score 0.53 · PhyREC, Electrophysiological signals, library, Neo
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 · 318 lines · 11 KB · no license · 1 match
- import sys
- from neo.core import AnalogSignal
- import numpy as np
- import quantities as pq
- from scipy.interpolate import interpolate
- from PhyREC.SignalProcess import sliding_window
- def CalcVgeff(Sig, Tchar, VgsExp=None, Regim='hole', CalType='interp'):
- """
- Calibrate signal to gate voltage using transfer characteristics.
- Convert measured current signal to effective gate voltage using interpolation
- or linear approximation based on device transfer characteristics.
- Parameters
- ----------
- Sig : neo.core.AnalogSignal
- Input current signal to calibrate.
- Tchar : object
- Device transfer characteristics object with methods GetVgs(), GetIds(),
- GetGM(), GetUd0(), and IsOK attribute.
- VgsExp : float or array-like, optional
- Gate voltage value(s) for linear calibration method.
- Regim : str, optional
- Device regime ('hole' or 'electron', default: 'hole').
- CalType : str, optional
- Calibration method: 'interp' for interpolation or 'linear' for linear
- approximation (default: 'interp').
- Returns
- -------
- neo.core.AnalogSignal
- Calibrated signal in volts with annotations including calibration status,
- bias current, offset current, and device parameters.
- Notes
- -----
- The function adds several annotations to the returned signal:
- - Calibrated: Boolean indicating successful calibration
- - Working: Same as Calibrated
- - IdsOff: Offset current
- - VgsCal: Mean calibrated gate voltage
- - IdsBias: Bias current
- - IsOK: Device transfer characteristics status
- - Iname: Original signal name
- - GM: Conductance in Siemens
- """
- Vgs = Tchar.GetVgs()
- vgs = np.linspace(np.min(Vgs), np.max(Vgs), 10000)
- if Regim == 'hole':
- Inds = np.where(vgs < Tchar.GetUd0())[1]
- else:
- Inds = np.where(vgs > Tchar.GetUd0())[1]
- Ids = Tchar.GetIds(Vgs=vgs[Inds]) * pq.A
- GM = Tchar.GetGM(Vgs=VgsExp) * pq.S
- IdsExp = Tchar.GetIds(Vgs=VgsExp) * pq.A
- IdsOff = np.mean(Sig) - IdsExp
- IdsBias = np.mean(Sig)
- Calibrated = np.array((True,))
- try:
- if CalType == 'interp':
- fgm = interpolate.interp1d(Ids[:, 0], vgs[Inds])
- st = fgm(np.clip(Sig, np.min(Ids), np.max(Ids))) * pq.V
- elif CalType == 'linear':
- st = Sig / GM
- else:
- print('Calibration Not defined')
- except:
- print(Sig.name, "Calibration error:", sys.exc_info()[0])
- st = np.zeros(Sig.shape)
- Calibrated = np.array((False,))
- print(str(Sig.name), '-> ',
- 'IdsBias', IdsBias,
- 'IdsOff', IdsOff,
- 'Vgs', np.mean(st),
- Tchar.IsOK)
- annotations = {'Calibrated': Calibrated,
- 'Working': Calibrated,
- 'IdsOff': IdsOff.flatten()[0],
- 'VgsCal': np.mean(st),
- 'IdsBias': IdsBias.flatten()[0],
- 'IsOK': Tchar.IsOK,
- 'Iname': Sig.name,
- 'GM': GM,
- }
- CalSig = AnalogSignal(st,
- units='V',
- t_start=Sig.t_start,
- sampling_rate=Sig.sampling_rate,
- name=str(Sig.name),
- file_origin=Sig.file_origin)
- # CalSig.annotate(**annotations)
- CalSig.array_annotate(**annotations)
- return CalSig
- def CalcVgeff2(Sig, Tchar, VgsExp, Regim='hole', CalType='interp'):
- """
- Calibrate signal to gate voltage using transfer characteristics (alternative).
- Convert measured current signal to effective gate voltage using interpolation
- or linear approximation. This variant flattens arrays and handles units differently
- than CalcVgeff.
- Parameters
- ----------
- Sig : neo.core.AnalogSignal
- Input current signal to calibrate.
- Tchar : object
- Device transfer characteristics object with methods GetVgs(), GetIds(),
- GetGM(), GetUd0(), and IsOK attribute.
- VgsExp : float or array-like
- Gate voltage value(s) for calibration (required, not optional).
- Regim : str, optional
- Device regime ('hole' or 'electron', default: 'hole').
- CalType : str, optional
- Calibration method: 'interp' for interpolation or 'linear' for linear
- approximation (default: 'interp').
- Returns
- -------
- neo.core.AnalogSignal
- Calibrated signal in volts with array annotations including calibration
- status, bias current, offset current, and device parameters.
- Notes
- -----
- Similar to CalcVgeff but uses flattened arrays and stores annotations as
- Python floats rather than quantities objects. Used for compatibility with
- specific analysis workflows.
- """
- Vgs = Tchar.GetVgs()
- vgs = np.linspace(np.min(Vgs), np.max(Vgs), 10000)
- if Regim == 'hole':
- Inds = np.where(vgs < Tchar.GetUd0())[1]
- else:
- Inds = np.where(vgs > Tchar.GetUd0())[1]
- IdsBias = np.array((np.nan,)) * pq.A
- IdsOff = np.array((np.nan,)) * pq.A
- GM = np.nan * pq.S
- try:
- Ids = Tchar.GetIds(Vgs=vgs[Inds]).flatten()
- GM = Tchar.GetGM(Vgs=VgsExp).flatten()
- IdsExp = Tchar.GetIds(Vgs=VgsExp).flatten()
- IdsOff = np.mean(Sig) - IdsExp
- IdsBias = np.mean(Sig)
- Calibrated = np.array((True,))
- if CalType == 'interp':
- fgm = interpolate.interp1d(Ids, vgs[Inds])
- st = fgm(np.clip(Sig, np.min(Ids), np.max(Ids))) * pq.V
- elif CalType == 'linear':
- st = Sig / GM
- else:
- print('Calibration Not defined')
- except:
- print(Sig.name, "Calibration error:", sys.exc_info()[0])
- st = np.zeros(Sig.shape) * pq.V
- Calibrated = np.array((False,))
- print(str(Sig.name), '-> ',
- 'IdsBias', IdsBias,
- 'IdsOff', IdsOff,
- 'Vgs', np.mean(st),
- 'GM', GM,
- Tchar.IsOK)
- annotations = {'Calibrated': Calibrated[0],
- 'Working': Calibrated[0],
- 'IdsOff': float(IdsOff.flatten()[0].magnitude),
- 'VgsCal': float(np.mean(st).magnitude),
- 'IdsBias': float(IdsBias.flatten()[0].magnitude),
- 'IsOK': Tchar.IsOK,
- 'Iname': Sig.name,
- 'GM': float(GM.magnitude),
- }
- CalSig = AnalogSignal(st,
- units='V',
- t_start=Sig.t_start,
- sampling_rate=Sig.sampling_rate,
- name=str(Sig.name),
- file_origin=Sig.file_origin)
- CalSig.array_annotate(**annotations)
- # CalSig.array_annotate(**annotations)
- return CalSig
- def CalcVgeffNoInterp(Sig, Tchar, VgsExp=None, Regim='hole'):
- """
- Calibrate signal to gate voltage using linear approximation only.
- Convert measured current signal to effective gate voltage using conductance-based
- linear calibration. This simplified method does not use interpolation.
- Parameters
- ----------
- Sig : neo.core.AnalogSignal
- Input current signal to calibrate.
- Tchar : object
- Device transfer characteristics object with method GetGM() and IsOK attribute.
- VgsExp : float or array-like, optional
- Gate voltage value(s) for conductance calculation.
- Regim : str, optional
- Device regime ('hole' or 'electron', default: 'hole'). Not currently used.
- Returns
- -------
- neo.core.AnalogSignal
- Calibrated signal in volts with array annotations including calibration
- status, mean gate voltage, and device status.
- Notes
- -----
- This is a simplified calibration that only uses conductance (GM) for linear
- scaling. No interpolation is performed on transfer characteristics.
- """
- gm = Tchar.GetGM(Vgs=VgsExp)
- Calibrated = np.array((True,))
- try:
- st = Sig.magnitude / gm
- except:
- print(Sig.name, "Calibration error:", sys.exc_info()[0])
- st = np.zeros(Sig.shape)
- Calibrated = np.array((False,))
- print(str(Sig.name), '-> ', 'GM', gm, 'Vgs', np.mean(st), Tchar.IsOK)
- annotations = {'Calibrated': Calibrated,
- 'Working': Calibrated,
- # 'IdsOff': IdsOff.flatten(),
- 'VgsCal': np.array((np.mean(st),)),
- 'IsOK': np.array((Tchar.IsOK,)),
- 'Iname': np.array((Sig.name,)),
- }
- CalSig = AnalogSignal(st * pq.V,
- units='V',
- t_start=Sig.t_start,
- sampling_rate=Sig.sampling_rate,
- name=str(Sig.name),
- file_origin=Sig.file_origin)
- # CalSig.annotate(**annotations)
- CalSig.array_annotate(**annotations)
- return CalSig
- def NoiseBlanking(sig, NoiseLimitRMS=20 * pq.uV, MinNoiseFreeTime=5 * pq.s, timewidth=1 * pq.s, Value=0):
- """
- Remove high-noise sections from signal by blanking with a specified value.
- Identify periods where signal RMS exceeds a threshold and replace them with
- a constant value. Maintains breaks between noise blocks if they exceed minimum
- duration.
- Parameters
- ----------
- sig : neo.core.AnalogSignal
- Input signal to process.
- NoiseLimitRMS : quantities.Quantity, optional
- RMS threshold for noise detection (default: 20 µV).
- MinNoiseFreeTime : quantities.Quantity, optional
- Minimum time between noise blocks required to split into separate blocks
- (default: 5 s).
- timewidth : quantities.Quantity, optional
- Time window for sliding RMS calculation (default: 1 s).
- Value : float, optional
- Value to replace noise sections with (default: 0).
- Returns
- -------
- neo.core.AnalogSignal
- Signal with noise regions blanked with the specified value.
- Notes
- -----
- The function uses sliding window RMS analysis to identify noisy periods.
- Consecutive noise blocks separated by less than MinNoiseFreeTime are merged.
- """
- sRMS = sliding_window(sig, timewidth)
- noisets = sRMS.times[np.where(sRMS > NoiseLimitRMS)[0]]
- if len(noisets) == 0:
- return sig
- inds = np.where(np.diff(noisets) > MinNoiseFreeTime)[0]
- NoiseBlocks = []
- NoiseBlocks.append((noisets[0], noisets[inds[0]]))
- for ic, ind in enumerate(inds[:-1]):
- NoiseBlocks.append((noisets[ind + 1], noisets[inds[ic + 1]]))
- NoiseBlocks.append((noisets[inds[-1] + 1], noisets[-1]))
- for ti, te in NoiseBlocks:
- i1 = sig.time_index(ti)
- i2 = sig.time_index(te)
- sig[i1:i2] = np.ones((i2 - i1, 1)) * Value * sig.units
- return sig
Calibration_old.py at commit f469409, no license · at the source
Overview
- Catalan Institute of Nanoscience and Nanotechnology (ICN2), CSIC and BIST, Campus UAB, Barcelona, Spain
- University College London, Queen Square Institute of Neurology, London, UK
- INBRAIN Neuroelectronics SL, Barcelona, Spain
- Centro de Investigación Biomédica en Red de Bioingeniería, Biomateriales y Nanomedicina, Instituto de Salud Carlos III, Madrid, Spain
- Institute of Neurosciences, UAB Medical School, Bellaterra, Spain
- Institut de Microelectrònica de Barcelona, IMB-CNM (CSIC), Campus UAB, Bellaterra, Spain
- Institució Catalana de Recerca i Estudis Avançats (ICREA), Barcelona, Spain
- Centre for Nanotechnology in Medicine, Faculty of Biology Medicine & Health, AV Hill Building, University of Manchester, Manchester, UK
- Bernstein Center for Computational Neuroscience Munich, Faculty of Medicine, Ludwig-Maximilians Universität München, Planegg-Martinsried, Munich, Germany
- Division of Neuroscience, School of Biological Sciences, University of Manchester, Manchester, UK
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.
aguimera/PhyREC
f469409926f1f1acc91e7edf3a950d7e10114e65, 28 May 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
52 files
- PhyREC/
Calibration_old.py , Python, 318 lines, 1 match - PhyREC/
ImageSequence.py , Python, 425 lines - PhyREC/
PlotWaves.py , Python, 1,827 lines - PhyREC/
SignalAnalysis.py , Python, 628 lines - PhyREC/
SignalProcess.py , Python, 1,005 lines - PhyREC/
SupportFunctions.py , Python, 269 lines - PhyREC/
__init__.py , Python, 9 lines - PhyREC/
_version.py , Python, 2 lines - PhyREC/
style/ , Python, 1 line__init__.py - docs/
build/ , Python, 224 lineshtml/ _downloads/ 20a95d4caaf7a2adc022543b d42272a6/ plot_event_averaging_det ection.py - docs/
build/ , Python, 227 lineshtml/ _downloads/ 59609b8e04a3977451486752 9ce68577/ plot_event_averaging.py - docs/
build/ , Python, 299 lineshtml/ _downloads/ 661e661121b31c9190121acc 9b09b9f2/ plot_mapping_data.py - docs/
build/ , Python, 189 lineshtml/ _downloads/ 8c05769ad59e7fb97becbb4a d69bd958/ process_chain_example.py - docs/
build/ , Python, 146 lineshtml/ _downloads/ c59fe5f747535cc84700cc81 db8067b5/ basic_filter_example.py - docs/
build/ , Python, 106 lineshtml/ _downloads/ c5bc455a1567983051abb087 f4b6cb99/ basic_plot.py - docs/
build/ , Python, 333 lineshtml/ _downloads/ db2359fec9a03b3cb0503295 05af12cf/ plot_mapping_data_image_ sequence.py - docs/
build/ , Python, 220 lineshtml/ _downloads/ fa7fd7c256f155bf914924d8 b57dde35/ process_chain_example_ax is.py - docs/
build/ , Python, 280 lineshtml/ _downloads/ fd2a9f1b69f9067ea960aa0c 4dbacdeb/ spectrogram_plots.py - docs/
build/ , JavaScript, 123 lineshtml/ _static/ _sphinx_javascript_frame works_compat.js - docs/
build/ , JavaScript, 476 lineshtml/ _static/ base-stemmer.js - docs/
build/ , JavaScript, 150 lineshtml/ _static/ doctools.js - docs/
build/ , JavaScript, 13 lineshtml/ _static/ documentation_options.js - docs/
build/ , JavaScript, 1,066 lineshtml/ _static/ english-stemmer.js - docs/
build/ , JavaScript, 2 lineshtml/ _static/ jquery.js - docs/
build/ , JavaScript, 1 linehtml/ _static/ js/ badge_only.js - docs/
build/ , JavaScript, 1 linehtml/ _static/ js/ theme.js - docs/
build/ , JavaScript, 228 lineshtml/ _static/ js/ versions.js - docs/
build/ , JavaScript, 13 lineshtml/ _static/ language_data.js - docs/
build/ , JavaScript, 693 lineshtml/ _static/ searchtools.js - docs/
build/ , JavaScript, 159 lineshtml/ _static/ sphinx_highlight.js - docs/
build/ , JavaScript, 1 linehtml/ searchindex.js - docs/
examples/ , Python, 146 linesbasic_filter_example.py - docs/
examples/ , Python, 106 linesbasic_plot.py - docs/
examples/ , Python, 227 linesplot_event_averaging.py - docs/
examples/ , Python, 224 linesplot_event_averaging_det ection.py - docs/
examples/ , Python, 299 linesplot_mapping_data.py - docs/
examples/ , Python, 333 linesplot_mapping_data_image_ sequence.py - docs/
examples/ , Python, 189 linesprocess_chain_example.py - docs/
examples/ , Python, 220 linesprocess_chain_example_ax is.py - docs/
examples/ , Python, 280 linesspectrogram_plots.py - docs/
source/ , Python, 58 linesconf.py - examples/
basic_filter_example.py , Python, 146 lines - examples/
basic_plot.py , Python, 106 lines, 1 match - examples/
plot_event_averaging.py , Python, 227 lines - examples/
plot_event_averaging_det , Python, 224 linesection.py - examples/
plot_mapping_data.py , Python, 298 lines - examples/
plot_mapping_data_image_ , Python, 333 linessequence.py - examples/
process_chain_example.py , Python, 189 lines - examples/
process_chain_example_ax , Python, 220 linesis.py - examples/
spectrogram_plots.py , Python, 280 lines, 1 match - setup.py, Python, 12 lines
- README.md, Text, 1 line
Code availability statement
The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: aguimera/
PhyREC
Read it in the paper: doi.org/10.1038/s41467-026-73790-x.
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:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 51 scripts, each with its path and the digest of its content;
- 3 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
No dataset and no data link were found in the paper.
Data availability statement
The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- no repository, dataset or request procedure was recognized in it
Read it in the paper: doi.org/10.1038/s41467-026-73790-x.
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 2, 28 September 2026
- Funding: added Ministerio de Ciencia, Innovación y Universidades: 10.13039.501100011033, CEX2023, CEX2023-001397-M, PID2021-126117NA-I00, 100010434, PID2020‐113663RB‐I00, CEX2021‐001214‐S, PID2020, PLEC2022-009232, 10.13039, 13039/501100011033, SEV‐2017‐0706, 501100011033; Centres de Recerca de Catalunya: 501100011033; Institut Català de Nanociència i Nanotecnologia: CEX2021-001214-S; Graphene Flagship: 881603, Core3; European Commission: CEX2021-001214-S, 100010434, 101130650, 13039/501100011033, 501100011033, HORIZON2020, 881603, 101070865, SEV-2017-0706, ID 100010434, CEX2023-001397-M; Generalitat de Catalunya: SEV-2017-0706, 501100011033, CEX2021-001214-S; Ministerio de Ciencia e Innovación: SEV‐2017‐0706, 13039/501100011033, ID100010434, 10.13039, / AEI/10, PID2021-126117NA-I00, 10.13039/501100011033/, 100010434, 501100011033, PID2020, CEX2021‐001214‐S; Centro de Investigación Biomédica en Red en Bioingeniería, Biomateriales y Nanomedicina: CB06/01/0049; Fundación Bancaria Caixa d'Estalvis i Pensions de Barcelona: ID 100010434, 100010434; HORIZON EUROPE Framework Programme: 881603, 101070865; Instituto de Salud Carlos III: CB06/01/0049; Agencia Estatal de Investigación: CEX2023-001397-M, 501100011033, 13039, CEX2021‐001214‐S, 13039/501100011033, 10.13039, SEV‐2017‐0706, AEI/10, PID2020-113663RB-I00
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 13 authors, 3 keywords, 8 MeSH terms, 62 references, 2 RRIDs.
Cite
This paper
Prokop, M., Esparza-Iaizzo, M., Masvidal-Codina, E., Illa, X., Codadu, N. K., Rathore, D., Ria, N., Kostarelos, K., del Corro, E., Garcia-Cortadella, R., Wykes, R. C., Guimerà-Brunet, A., & Garrido, J. A. (2026). An artefact-resilient wide bandwidth bidirectional graphene neural interface. Nature communications, 17(1), 6536. https://
BibTeX
@article{prokop2026artef
author = {Prokop, Michał and Esparza-Iaizzo, Martín and Masvidal-Codina, Eduard and Illa, Xavi and Codadu, Neela K and Rathore, Daman and Ria, Nicola and Kostarelos, Kostas and del Corro, Elena and Garcia-Cortadella, Ramon and Wykes, Rob C and Guimerà-Brunet, Anton and Garrido, Jose A},
title = {{An artefact-resilient wide bandwidth bidirectional graphene neural interface}},
journal = {Nature communications},
year = {2026},
month = may,
volume = {17},
number = {1},
pages = {6536},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42203801},
pmcid = {PMC13379384}
}
RIS
TY - JOUR
AU - Prokop, Michał
AU - Esparza-Iaizzo, Martín
AU - Masvidal-Codina, Eduard
AU - Illa, Xavi
AU - Codadu, Neela K
AU - Rathore, Daman
AU - Ria, Nicola
AU - Kostarelos, Kostas
AU - del Corro, Elena
AU - Garcia-Cortadella, Ramon
AU - Wykes, Rob C
AU - Guimerà-Brunet, Anton
AU - Garrido, Jose A
TI - An artefact-resilient wide bandwidth bidirectional graphene neural interface
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 6536
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "An artefact-resilient wide bandwidth bidirectional graphene neural interface",
"container-title": "Nature communications",
"author": [
{
"family": "Prokop",
"given": "Michał"
},
{
"family": "Esparza-Iaizzo",
"given": "Martín"
},
{
"family": "Masvidal-Codina",
"given": "Eduard"
},
{
"family": "Illa",
"given": "Xavi"
},
{
"family": "Codadu",
"given": "Neela K"
},
{
"family": "Rathore",
"given": "Daman"
},
{
"family": "Ria",
"given": "Nicola"
},
{
"family": "Kostarelos",
"given": "Kostas"
},
{
"family": "del Corro",
"given": "Elena"
},
{
"family": "Garcia-Cortadella",
"given": "Ramon"
},
{
"family": "Wykes",
"given": "Rob C"
},
{
"family": "Guimerà-Brunet",
"given": "Anton"
},
{
"family": "Garrido",
"given": "Jose A"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "6536",
"DOI": "10.1038/
"PMID": "42203801",
"PMCID": "PMC13379384",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
28
]
]
}
}
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.1002/epi.70252
- Dual role of spreading depolarization in an epileptic focus.Journal: EpilepsiaIn common: 7 references
- [2] doi:10.1371/journal.pone.0353399
- Data driven multiscale modelling of paroxysmal brain transitions using DC-coupled electrophysiological data.Journal: PloS oneIn common: 2 references, author Rob C Wykes
- [3] doi:10.1038/s41531-026-01531-4 [code]
- Inconsistent subthalamic local field potential beta activity amid in- and antiphasic neuronal bursts.Journal: NPJ Parkinson's diseaseIn common: Neo, SciPy, Matplotlib, 1 other tool, extracellular electrophysiology (units, LFP), 1 reference
- [4] doi:10.1038/s41591-026-04434-2 [code]
- Adaptive deep brain stimulation for dynamic gait control in Parkinson's disease: a randomized feasibility trial.Journal: Nature medicineIn common: SciPy, Matplotlib, NumPy, 3 references
- [5] doi:10.1038/s41591-026-04432-4 [code]
- Activity-dependent adaptive deep brain stimulation improves gait in Parkinson's disease.Journal: Nature medicineIn common: SciPy, Matplotlib, NumPy, 3 references
- [6] doi:10.7554/elife.110588 [code]
- Opening the black box toward a modular approach to spike sorting.Journal: eLifeIn common: Neo, SciPy, Matplotlib, 1 other tool, extracellular electrophysiology (units, LFP)
- [7] 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: Neo, SciPy, Matplotlib, 1 other tool, extracellular electrophysiology (units, LFP)
- [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 reportsIn common: Neo, SciPy, Matplotlib, 1 other tool, extracellular electrophysiology (units, LFP)
- [9] doi:10.1007/s12021-026-09807-z [code]
- Optimal Size of Electrocorticography Grids for Classification of Hand Movements.Journal: NeuroinformaticsIn common: SciPy, Matplotlib, NumPy, 2 references
- [10] doi:10.64898/2026.08.12.26350419 [code]
- Volitional deep brain stimulation following brain-computer interface training for Parkinson’s diseaseJournal: medRxiv (preprint)In common: SciPy, Matplotlib, NumPy, 2 references
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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 51 scripts, and 3 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:317cfb10ee9ee820…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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.
