Linking movement-related beta oscillations to cortical excitability, structural damage, and fatigue in multiple sclerosis.
The 8 matches · 2 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
- [1] § Materials and methods › Statistical analysis ↔ nested_lasso_ms_fatigue.m, the whole file · a weak match · score 0.98 · full nested CV, PR AUC, Brier score, logistic regression, selection frequencies, balanced accuracy
- [2] § Materials and methods › Statistical analysis ↔ nested_lasso_ms_fatigue.m, the whole file · a weak match · score 0.93 · odds ratios, pseudo R2, logistic regression, descriptive penalized, ridge, coefficients
- [3] § Materials and methods › EEG data collection and analysis ↔ Compute_TFR_TAPPING_MS.m, lines 1–62 · score 0.88 · 0.5–1.5 s, 1–90 Hz, 10–20, cap, amplifier, FieldTrip
- [4] § Materials and methods › Movement-related beta ERD and ERS analysis ↔ plot_beta_roi_topography.m, lines 1–31 · score 0.81 · ERS ERD, beta power, Right ROIs, movement related beta, topography, maximal
- [5] § Results › EMG activity during motor performance and movement-Related Beta ERD and ERS Modulation ↔ plot_beta_roi_topography.m, lines 1–31 · score 0.76 · scalp topography, beta band, ERS ERD, beta power, movement related beta, beta modulation
- [6] § Materials and methods › Movement-related beta ERD and ERS analysis ↔ Compute_TFR_TAPPING_MS.m, lines 1–62 · score 0.63 · Morlet Wavelets, 1–90 Hz, ft, preprocessed, EEG, Movement
- [7] § Materials and methods › EEG data collection and analysis ↔ Fix_chanlocs_order.m, lines 1–40 · score 0.62 · 10–20, cap, ICA, amplifier, FieldTrip, notch
- [8] § Materials and methods › Movement-related beta ERD and ERS analysis ↔ extract_beta_modulation.m, lines 161–183 · score 0.56 · Morlet Wavelets, 3–10 cycles, resolution, ft, 90 Hz, beta
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
MATLAB · 138 lines · 5.6 KB · MIT · 2 matches
- function nested_lasso_ms_fatigue()
- % NESTED_LASSO_MS_FATIGUE
- %
- % Nested elastic-net / LASSO logistic regression for MS fatigue classification.
- %
- % - Outcome coding (IMPORTANT):
- % y = 1 -> fatigued (MS_F)
- % y = 0 -> non-fatigued (MS_NF)
- % - Theory-driven candidate predictors; NO outcome-based pre-screening
- % - Stratified Kouter x Kinner nested CV for unbiased performance
- % - Repeated nested CV for confidence intervals and selection stability
- % - Descriptive penalized (near-ridge) refit on features with selection
- % frequency >= 0.50
- % - Reports β, odds ratios (per 1 SD), 95% bootstrap CIs, and pseudo-R²
- %
- % This script was used in:
- % Tatti et al., "Insights into Central Fatigue in Multiple Sclerosis:
- % Movement-Related Beta Oscillatory Activity and its Association with
- % Brain Neurophysiology and Structure" (Brain Communications).
- %
- % DEPENDENCIES
- % - Statistics and Machine Learning Toolbox (for lassoglm, cvpartition, perfcurve)
- %
- % USAGE (typical):
- % 1. Place your analysis CSV in: data/lasso_with_caudateandSLF.csv
- % 2. Edit the 'dataFile' path below if needed.
- % 3. From MATLAB: run nested_lasso_ms_fatigue
- %
- % The script prints performance metrics and writes:
- % - ElasticNet_Firth_Wald.csv : Firth refit coefficients, SEs, z, p, OR, CIs
- clear; clc; rng(7,'twister');
- %% 1) Load data -----------------------------------------------------------
- % Relative or absolute path to the CSV file (edit for your machine)
- dataFile = fullfile('data','lasso_with_caudateandSLF.csv');
- if ~exist(dataFile, 'file')
- error('Data file not found: %s. Please check the path.', dataFile);
- end
- data = readtable(dataFile, 'VariableNamingRule','preserve');
- % Outcome (assumes first column is the binary label)
- outcomeVar = data.Properties.VariableNames{1}; % e.g., 'Dummy MS'
- y_all = data{:, outcomeVar}; % REQUIRED coding: 1=fatigued, 0=non-fatigued
- assert(all(ismember(unique(y_all(~isnan(y_all))), [0 1])), ...
- 'Outcome must be coded 0/1 (0=non-fatigued, 1=fatigued).');
- % Candidate predictors (must match CSV headers exactly)
- clin_vars = {'age','sex_num','disease_duration','education','MADRS', ...
- 'MSQOL_54_PH','MSQOL_54_MH','9-HPT_right','NUM_LES','VOL_LES'};
- vol_vars = {'WM','CAU','THAL'};
- tms_vars = {'CSP','SICI','ICF','RMT','MEP latency'};
- eeg_vars = {'Bp2p_left_pow_avg','Bp2p_right_pow_avg','Bp2p_front_pow_avg'};
- fa_vars = {'FA_CST_R','FA_CST_L','FA_SLF_R','FA_SLF_L'};
- predictorNames = [clin_vars, vol_vars, tms_vars, eeg_vars, fa_vars];
- % Keep only predictors that exist in the file
- existsMask = ismember(predictorNames, data.Properties.VariableNames);
- if ~all(existsMask)
- warning('Missing predictors removed: %s', ...
- strjoin(predictorNames(~existsMask), ', '));
- predictorNames = predictorNames(existsMask);
- end
- % Design matrix
- Xmat_all = data{:, predictorNames};
- % ---- COMPLETE-CASE (listwise deletion), as in the primary analysis ------
- rowKeep = all(isfinite(Xmat_all), 2) & isfinite(y_all);
- Xmat = Xmat_all(rowKeep, :);
- y = y_all(rowKeep);
- fprintf('N included after listwise deletion: %d (of %d total)\n', numel(y), numel(y_all));
- % -------------------------------------------------------------------------
- %% 2) CV configuration ----------------------------------------------------
- Kouter = 5; % outer folds
- Kinner = 5; % inner folds for tuning
- AlphaGrid = [0.1 0.3 0.5 0.7 0.9 1]; % elastic-net to LASSO (α=1)
- NumLambda = 100;
- useWeights = false; % set true for class weighting
- %% 3) One full nested CV run (pooled held-out metrics + selection) --------
- res = run_one_cv(Xmat, y, Kouter, Kinner, AlphaGrid, NumLambda, useWeights);
- fprintf('\n=== Single nested-CV run (pooled outer folds) ===\n');
- fprintf('Overall AUC: %.3f\n', res.AUC);
- fprintf('PR-AUC: %.3f\n', res.PRAUC);
- fprintf('Accuracy: %.3f, Balanced accuracy: %.3f\n', res.accuracy, res.bal_accuracy);
- fprintf('Brier score: %.4f\n', res.Brier);
- selFreq = res.selFreq(:);
- tblSel = table(predictorNames(:), selFreq, ...
- 'VariableNames', {'Predictor','SelectionFreq'});
- disp(tblSel);
- %% 4) Repeated outer CV for CIs and stability -----------------------------
- nRepeats = 50; % increase for tighter CIs
- metrics = zeros(nRepeats,5); % [AUC PRAUC acc balacc Brier]
- selMat = zeros(nRepeats, numel(predictorNames));
- rng(7,'twister');
- for r = 1:nRepeats
- rr = run_one_cv(Xmat, y, Kouter, Kinner, AlphaGrid, NumLambda, useWeights);
- metrics(r,:) = [rr.AUC, rr.PRAUC, rr.accuracy, rr.bal_accuracy, rr.Brier];
- selMat(r,:) = rr.selFreq(:)'; % selection freq for this run
- end
- avg = mean(metrics,1);
- ci = prctile(metrics,[2.5 97.5],1); % 95% CI
- fprintf('\n=== Repeated nested-CV (n=%d repeats) ===\n', nRepeats);
- fprintf('AUC mean=%.3f [%.3f, %.3f]\n', avg(1), ci(1,1), ci(2,1));
- fprintf('PR-AUC mean=%.3f [%.3f, %.3f]\n',avg(2), ci(1,2), ci(2,2));
- fprintf('Acc mean=%.3f BalAcc mean=%.3f Brier mean=%.3f\n', ...
- avg(3), avg(4), avg(5));
- meanSel = mean(selMat,1)'; % average selection frequency across repeats
- selTable = table(predictorNames(:), meanSel, ...
- 'VariableNames', {'Predictor','MeanSelFreq'});
- selTable = sortrows(selTable, 'MeanSelFreq', 'descend');
- disp(selTable);
- %% 5) Descriptive penalized refit on ≥50% selection frequency ------------
- % Outcome coding reminder:
- % y = 1 -> fatigued (MS_F)
- % y = 0 -> non-fatigued (MS_NF)
- % So OR < 1 corresponds to lower odds of fatigue (potentially "protective").
- % Choose selection vector:
- % keep single-run frequencies if you wan
nested_lasso_ms_fatigue.m at commit a70acd9, under MIT · at the source
Overview
and 7 other authors
Francesco Lomi2, Adriano Scoccia2, Giuseppe Lai9, Monica Ulivelli3, Maria Felice Ghilardi1, Nicola De Stefano3, Simone Rossi2,7- Department of Molecular, Cellular and Biomedical Sciences, City University of NewYork, School of Medicine, New York, NY 10031, United States
- Department of Medicine, Surgery and Neuroscience, Siena Brain Investigation and Neuromodulation Lab (Si-BIN Lab), Unit of Neurology and Clinical Neurophysiology, University of Siena, Siena 53100, Italy
- Department of Medicine, Surgery and Neuroscience, University of Siena, Siena 53100, Italy
- Siena Imaging SRL, Siena 53100, Italy
- Department of Physiotherapy, Medicine and Biomedical Sciences, NEUROcom (Neuroscience and Motor Control Group), Universidade da Coruña, Biomedical Institute of A Coruña (INIBIC), and Galician Brain Stimulation Center, A Coruña 15006, Spain
- Department of Mental Health, The First Affiliated Hospital, Guangxi Medical University, Nanning 530021, China
- Oto-Neuro-Tech Conjoined Lab, Policlinico Le Scotte, University of Siena, Siena 53100, Italy
- Department of Information Engineering and Mathematics, University of Siena, Siena 53100, Italy
- Goldsmiths, University of London, London SE14 6NW, UK
Abstract
Fatigue is one of the most disabling symptoms of multiple sclerosis (MS), yet its neurobiology remains unclear, and there are no objective biomarkers. Previous studies using electroencephalography alone have revealed altered movement-related beta Event-Related Desynchronization (ERD) and Synchronization (ERS) dynamics in fatigued patients, but without providing mechanistic insight. In this cross-sectional study, we combined electroencephalography with transcranial magnetic stimulation, structural magnetic resonance imaging with diffusion tensor imaging (DTI), and clinical measures to probe the mechanistic basis of movement-related beta modulation depth (ERS-ERD) and its link with fatigue. Based on the Fatigue Severity Scale score (FSS), we enrolled 41 relapsing-remitting MS patients, 19 with clinically significant fatigue, 22 without (aged 25–55 years, 25 females), alongside 18 age- and sex-matched healthy volunteers. Participants underwent neuropsychological assessment, blood sampling for inflammatory and neurodegeneration-relate
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 8 matches between paragraphs and lines of code.
ElisaT-Neuro/MS_beta_fatigue
a70acd9d4786e9906e2aaa0f328c48b241e3b308, 2 December 2025Availability: 1 check, the latest on 30 September 2026: the link answers
- 30 September 2026: the link answers
8 files
- Compute_TFR_TAPPING_MS.m
, MATLAB, 285 lines, 2 matches - EMG_data_extraction.m, MATLAB, 339 lines
- Fix_chanlocs_order.m, MATLAB, 1,196 lines, 1 match
- extract_beta_modulation.
m , MATLAB, 431 lines, 1 match - nested_lasso_ms_fatigue.
m , MATLAB, 138 lines, 2 matches - plot_beta_roi_topography
.m , MATLAB, 274 lines, 2 matches - LICENSE, License, 21 lines
- README.md, Text, 26 lines
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:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 6 scripts, each with its path and the digest of its content;
- 8 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
Due to privacy and consent restrictions, the individual-level EEG and clinical datasets are not publicly available but can be shared in anonymized form upon request to the corresponding authors and subject to institutional approvals. The MATLAB scripts used for data analysis in this study are deposited in a public GitHub repository (https://
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, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 27 authors, 5 keywords, 2 funders, 104 references.
Cite
This paper
Tatti, E., Benelli, A., Cinti, A., Cortese, R., Serbina, A., Kulapurathazhe, A. J., Saed, S., Luchetti, L., Cudeiro, J., Zhang, J., de Mauro, A., Neri, F., Stromillo, M. L., Baldi, T. L., d'Aurizio, N., Battaglini, M., Plantone, D., Righi, D., Massucco, E., . . . Rossi, S. (2026). Linking movement-related beta oscillations to cortical excitability, structural damage, and fatigue in multiple sclerosis. Brain communications, 8(2), fcag043. https://
BibTeX
@article{tatti2026linkin
author = {Tatti, Elisa and Benelli, Alberto and Cinti, Alessandra and Cortese, Rosa and Serbina, Anna and Kulapurathazhe, Anna J and Saed, Sophia and Luchetti, Ludovico and Cudeiro, Javier and Zhang, Jian and de Mauro, Anna and Neri, Francesco and Stromillo, Maria Laura and Baldi, Tommaso Lisini and d'Aurizio, Nicole and Battaglini, Marco and Plantone, Domenico and Righi, Delia and Massucco, Elisa and Giannotta, Alessandro and Lomi, Francesco and Scoccia, Adriano and Lai, Giuseppe and Ulivelli, Monica and Ghilardi, Maria Felice and De Stefano, Nicola and Rossi, Simone},
title = {{Linking movement-related beta oscillations to cortical excitability, structural damage, and fatigue in multiple sclerosis}},
journal = {Brain communications},
year = {2026},
month = mar,
volume = {8},
number = {2},
pages = {fcag043},
publisher = {Oxford University Press},
issn = {2632-1297},
doi = {10.1093/
url = {https://
pmid = {41835133},
pmcid = {PMC12980577}
}
RIS
TY - JOUR
AU - Tatti, Elisa
AU - Benelli, Alberto
AU - Cinti, Alessandra
AU - Cortese, Rosa
AU - Serbina, Anna
AU - Kulapurathazhe, Anna J
AU - Saed, Sophia
AU - Luchetti, Ludovico
AU - Cudeiro, Javier
AU - Zhang, Jian
AU - de Mauro, Anna
AU - Neri, Francesco
AU - Stromillo, Maria Laura
AU - Baldi, Tommaso Lisini
AU - d'Aurizio, Nicole
AU - Battaglini, Marco
AU - Plantone, Domenico
AU - Righi, Delia
AU - Massucco, Elisa
AU - Giannotta, Alessandro
AU - Lomi, Francesco
AU - Scoccia, Adriano
AU - Lai, Giuseppe
AU - Ulivelli, Monica
AU - Ghilardi, Maria Felice
AU - De Stefano, Nicola
AU - Rossi, Simone
TI - Linking movement-related beta oscillations to cortical excitability, structural damage, and fatigue in multiple sclerosis
T2 - Brain communications
J2 - Brain Commun
PY - 2026
DA - 2026/
VL - 8
IS - 2
SP - fcag043
SN - 2632-1297
PB - Oxford University Press
DO - 10.1093/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1093/
"type": "article-journal",
"title": "Linking movement-related beta oscillations to cortical excitability, structural damage, and fatigue in multiple sclerosis",
"container-title": "Brain communications",
"author": [
{
"family": "Tatti",
"given": "Elisa"
},
{
"family": "Benelli",
"given": "Alberto"
},
{
"family": "Cinti",
"given": "Alessandra"
},
{
"family": "Cortese",
"given": "Rosa"
},
{
"family": "Serbina",
"given": "Anna"
},
{
"family": "Kulapurathazhe",
"given": "Anna J"
},
{
"family": "Saed",
"given": "Sophia"
},
{
"family": "Luchetti",
"given": "Ludovico"
},
{
"family": "Cudeiro",
"given": "Javier"
},
{
"family": "Zhang",
"given": "Jian"
},
{
"family": "de Mauro",
"given": "Anna"
},
{
"family": "Neri",
"given": "Francesco"
},
{
"family": "Stromillo",
"given": "Maria Laura"
},
{
"family": "Baldi",
"given": "Tommaso Lisini"
},
{
"family": "d'Aurizio",
"given": "Nicole"
},
{
"family": "Battaglini",
"given": "Marco"
},
{
"family": "Plantone",
"given": "Domenico"
},
{
"family": "Righi",
"given": "Delia"
},
{
"family": "Massucco",
"given": "Elisa"
},
{
"family": "Giannotta",
"given": "Alessandro"
},
{
"family": "Lomi",
"given": "Francesco"
},
{
"family": "Scoccia",
"given": "Adriano"
},
{
"family": "Lai",
"given": "Giuseppe"
},
{
"family": "Ulivelli",
"given": "Monica"
},
{
"family": "Ghilardi",
"given": "Maria Felice"
},
{
"family": "De Stefano",
"given": "Nicola"
},
{
"family": "Rossi",
"given": "Simone"
}
],
"container-title-short":
"volume": "8",
"issue": "2",
"page": "fcag043",
"DOI": "10.1093/
"PMID": "41835133",
"PMCID": "PMC12980577",
"ISSN": "2632-1297",
"publisher": "Oxford University Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
12
]
]
}
}
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.1093/braincomms/fcag134 [code]
- Neurophysiological, imaging and neurobiological markers of central fatigue in multiple sclerosis.Journal: Brain communicationsIn common: FieldTrip, Statistics and Machine Learning Toolbox, multiple sclerosis, structural MRI / diffusion, 15 references, 9 authors
- [2] doi:10.1038/s41467-026-75799-8 [code]
- Behaviourally driven closed-loop beta-tACS enhances beta activity and motor behaviour.Journal: Nature communicationsIn common: EEGLAB, FieldTrip, Statistics and Machine Learning Toolbox, 7 references
- [3] doi:10.1002/hbm.70480 [code]
- Time-Varying Brain Functional Reconfiguration Patterns Associated With Fatigue in Multiple Sclerosis.Journal: Human brain mappingIn common: multiple sclerosis, structural MRI / diffusion, 7 references
- [4] doi:10.1093/braincomms/fcag077 [code]
- Roles of beta synchronization for motor skill acquisition change after stroke.Journal: Brain communicationsIn common: FieldTrip, Statistics and Machine Learning Toolbox, 7 references
- [5] doi:10.1002/ejsc.70205
- A Single Session of Slackline Training Induces Rapid, Task-Specific Balance Improvements and Elevated Resting-State Beta Band Power.Journal: European journal of sport scienceIn common: EEG, 7 references
- [6] doi:10.1016/j.isci.2025.113806 [code]
- Beta-band frequency shifts signal decisions in human prefrontal cortexJournal: n/aIn common: FieldTrip, Statistics and Machine Learning Toolbox, 6 references
- [7] doi:10.1111/psyp.70271 [code]
- Disentangling Respiratory Phase-Dependent and Phase-Independent Components of Anticipatory Cardiac Deceleration.Journal: PsychophysiologyIn common: EEGLAB, FieldTrip, Signal Processing Toolbox, 1 other tool, EEG, 3 references
- [8] doi:10.1007/s00221-026-07342-6 [code]
- A portable solution for simultaneous human movement and mobile EEG acquisition: readiness potential for basketball free-throw shooting.Journal: Experimental brain researchIn common: EEGLAB, FieldTrip, Signal Processing Toolbox, 1 other tool, EEG, 2 references
- [9] doi:10.1038/s41467-026-71502-z [code]
- Neurons of the human subthalamic nucleus engage with local delta frequency processes during action cancellation.Journal: Nature communicationsIn common: EEGLAB, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 4 references
- [10] doi:10.1162/imag.a.1353 [code]
- Model-based cardiac field artefact correction for OP-MEG.Journal: Imaging neuroscience (Cambridge, Mass.)In common: EEGLAB, FieldTrip, Signal Processing Toolbox, 1 other tool, EEG, 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, 6 scripts, and 8 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:53a25f75cdf5cd84…
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.
