OSCR

Theta beta ratio in attention deficit hyperactivity disorder using a multiverse analysis.

Code ↔ Paper

13 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 13 matches
  1. [1] § Methods › Multiverse analyses ↔ scripts/a4_extract_featuresHBN.m, lines 18–60 · score 0.81 · 2–30 Hz, 13–30 Hz, left frontal, right frontal, midline, 4–8 Hz
  2. [2] § Methods › Multiverse analyses ↔ scripts/a5_extract_features_validation.m, lines 18–61 · score 0.81 · 2–30 Hz, 13–30 Hz, left frontal, right frontal, midline, 4–8 Hz
  3. [3] § Methods › Feature extraction ↔ scripts/a2_tf_analysisHBN.m, lines 184–214 · score 0.79 · 1–40 Hz, cfg.output, power spectra, FieldTrip, Hanning, periodic
  4. [4] § Methods › Feature extraction ↔ scripts/a3_tf_analysis_validation.m, lines 154–196 · score 0.79 · 1–40 Hz, cfg.output, power spectra, FieldTrip, Hanning, periodic
  5. [5] § Methods › Feature extraction ↔ scripts/a4_extract_featuresHBN.m, lines 18–60 · score 0.77 · 7–14 Hz, E62, E70, E71, E72, E75
  6. [6] § Methods › EEG preprocessing ↔ scripts/a2_tf_analysisHBN.m, lines 110–182 · score 0.74 · pop_eegfiltnew, EEGLAB, noise, amplitudes, preprocessed, window
  7. [7] § Methods › Multiverse analyses › Proportions plots and possibility space ↔ scripts/a13_Proportions_SWAN.R, lines 172–234 · score 0.62 · binom.test, H0, H1, binomial, aperiodic signal, uncorrected
  8. [8] § Methods › Feature extraction ↔ scripts/a5_extract_features_validation.m, lines 18–61 · score 0.62 · 2–30 Hz, 13–30 Hz, Klimesch, sub, 4–8 Hz, 13 Hz
  9. [9] § Methods › Multiverse analyses › Proportions plots and possibility space ↔ scripts/a17_Proportions_validation.R, lines 177–240 · score 0.61 · binom.test, H0, H1, binomial, aperiodic signal, uncorrected
  10. [10] § Methods › EEG preprocessing ↔ scripts/a2_tf_analysisHBN.m, lines 110–182 · score 0.59 · amplitude threshold, linked mastoid, segments, preprocessing, EEG, HBN
  11. [11] § Methods › EEG preprocessing ↔ scripts/a3_tf_analysis_validation.m, lines 86–152 · score 0.59 · amplitude threshold, linked mastoid, segments, preprocessing, EEG, validation
  12. [12] § Methods › Feature extraction ↔ scripts/a2_tf_analysisHBN.m, lines 32–107 · score 0.56 · E62, E70, E71, E72, E75, E76
  13. [13] § Methods › EEG preprocessing ↔ scripts/a3_tf_analysis_validation.m, lines 86–152 · score 0.55 · EEGLAB, pop, amplitudes, preprocessed, window, segments

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 · 385 lines · 13 KB · no license · 4 matches

  1. %% all analysis performed on Matlab 2023b
  2. % Requirements:
  3. % eeglab2025.0.0
  4. % eye-eeg-master
  5. % pop_epoch_methlab
  6. clc
  7. clear
  8. restoredefaultpath
  9. %% merge EEG, BD and ET data, epoch and remove trials with bad ET
  10. %% start parpool
  11. % try
  12. % delete(gcp('nocreate'))
  13. % catch
  14. % end
  15. % c = parcluster;
  16. % parpool(c.NumWorkers)
  17. %% init paths
  18. a0_initPaths
  19. %% folder with functions
  20. addpath(functions)
  21. initTools
  22. %% prepare to load EEG data
  23. dataDir = automagicdataHBN;
  24. pathEEG = dir([dataDir, filesep, '*p*EEG.mat']);
  25. %% compute power
  26. noisy_chan = [1 8 14 17 21 25 32 48 49 56 63 68 73 81 88 94 99 107 113 119 125 126 127 128];
  27. % chans of interest
  28. chan_of_interest = unique({'Cz', 'E11', 'E22', 'E24', 'E33', 'E9', 'E124', 'E122', 'E11', 'E62', 'E36', 'E104', 'E62', 'E75', 'E70', 'E83', 'E72', 'E71', 'E76'});
  29. for sub = 1 : size(pathEEG, 1)
  30. % dont process bad ratings
  31. if startsWith(pathEEG(sub).name, 'b')
  32. continue;
  33. end
  34. % subject id
  35. xxx = strsplit(pathEEG(sub).folder, '/');
  36. subjectID = xxx{end};
  37. % load data
  38. load(fullfile(pathEEG(sub).folder, pathEEG(sub).name));
  39. % EEG.times(19904) - EEG.times(14904) % 20s for eo
  40. % EEG.times(2.9904e+04) - EEG.times(19904) % 40s for ec
  41. % trim first and last 2 s as well
  42. % Copy the original events
  43. newEvents = EEG.event;
  44. cnt = length(newEvents);
  45. interval = 500; % 2 seconds in samples at 250 Hz
  46. % Get event latencies and types
  47. latencies = [EEG.event.latency];
  48. types = {EEG.event.type};
  49. if not(any(ismember(types, '20'))) | not(any(ismember(types, '30')))
  50. continue;
  51. end
  52. % Loop through all events
  53. for i = 1:length(types) - 1
  54. curr_type = types{i};
  55. next_type = types{i+1};
  56. % Check for '20' -> '30' transition
  57. if strcmp(curr_type, '20') && strcmp(next_type, '30')
  58. start_latency = latencies(i);
  59. end_latency = latencies(i+1);
  60. % Insert '21' events every 500 samples
  61. insert_points = start_latency + interval : interval : end_latency - interval;
  62. for l = 1:length(insert_points)-1 % remove last 2 seconds
  63. cnt = cnt + 1;
  64. newEvents(cnt).type = '21';
  65. newEvents(cnt).latency = insert_points(l);
  66. newEvents(cnt).duration = 0;
  67. end
  68. % Check for '30' -> '20' transition
  69. elseif strcmp(curr_type, '30') && strcmp(next_type, '20')
  70. start_latency = latencies(i);
  71. end_latency = latencies(i+1);
  72. % Insert '31' events every 500 samples
  73. insert_points = start_latency + interval : interval : end_latency - interval;
  74. for l = 1:length(insert_points)-1 % remove last 2 seconds
  75. cnt = cnt + 1;
  76. newEvents(cnt).type = '31';
  77. newEvents(cnt).latency = insert_points(l);
  78. newEvents(cnt).duration = 0;
  79. end
  80. end
  81. end
  82. % Update EEG.event and sort by latency
  83. EEG.event = newEvents;
  84. [~, sort_idx] = sort([EEG.event.latency]);
  85. EEG.event = EEG.event(sort_idx);
  86. EEG = eeg_checkset(EEG, 'eventconsistency');
  87. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  88. % filter with low pass to further remove line noise (60 Hz)
  89. EEG = pop_eegfiltnew(EEG, [], 50);
  90. % duplicate
  91. EEGorig = EEG;
  92. % redo everything for average reference and linked mastoids
  93. for ref = 1 : 2
  94. % re-referencing, [] is average reference
  95. % M1 (left mastoid) - Channel 57
  96. % M2 (right mastoid) - Channel 100
  97. if ref == 1
  98. % average
  99. EEG = pop_reref(EEGorig, [], 'keepref', 'on');
  100. elseif ref == 2
  101. el_m1 = find(strcmp({EEGorig.chanlocs.labels}, 'E57')); % M1
  102. el_m2 = find(strcmp({EEGorig.chanlocs.labels}, 'E100')); % M2
  103. EEG = pop_reref(EEGorig, [el_m1 el_m2], 'keepref', 'on');
  104. end
  105. % reduce channels number to 105
  106. EEG = pop_select(EEG, 'nochannel', noisy_chan);
  107. % Segmentation
  108. EEG = pop_epoch(EEG, {21, 31}, [0 2]);
  109. % remove bad segments if any channel of interest exceeds ±90uV
  110. % threshold
  111. win_size = 3; % 3 samples
  112. amp_thresh = 90; % uV threshold
  113. min_channels = 1;
  114. bad_epochs = zeros(1, size(EEG.data, 3));
  115. ch_of_interest = find(ismember({EEG.chanlocs.labels}, chan_of_interest));
  116. for e = 1:size(EEG.data, 3)
  117. epoch_data = EEG.data(ch_of_interest,:,e);
  118. % Compute moving average with window size 3 along time (dim=2)
  119. mov_avg = movmean(epoch_data, win_size, 2);
  120. % Check for each channel if any 3-sample average exceeds threshold
  121. above_thresh = any(abs(mov_avg) > amp_thresh, 2);
  122. if sum(above_thresh) > min_channels
  123. bad_epochs(e) = 1;
  124. end
  125. end
  126. bad_epochs = find(bad_epochs);
  127. %figure;
  128. %plot(EEG.times, squeeze(EEG.data(8,:, :)))
  129. bad_epochs = find(bad_epochs);
  130. bad_types = {EEG.event(bad_epochs).type};
  131. if not(isempty(bad_types))
  132. [bad_nums, ~, ~, bad_labels] = crosstab(bad_types);
  133. else
  134. bad_nums = [0 ; 0];
  135. end
  136. total_trials = size(EEG.data, 3);
  137. ratio_rejected = length(bad_epochs) / total_trials;
  138. % if all trials are bad, leave some of them so that we can comopute
  139. % the rejection rate later. this subject will be rejected anyway
  140. if ratio_rejected > 0.6
  141. bad_epochs(1:30) = [];
  142. end
  143. % remove bad trials
  144. EEG = pop_select(EEG, 'rmtrial', bad_epochs);
  145. %figure;
  146. %plot(EEG.times, squeeze(EEG.data(8,:, :)))
  147. % convert to fieldtrip
  148. ftdata = eeglab2fieldtrip(EEG, 'preprocessing');
  149. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  150. % do the fooofing
  151. cfg = [];
  152. cfg.method = 'mtmfft';
  153. cfg.taper = 'hanning'; %
  154. cfg.tapsmofrq = 1; % needed overlap for continuese data
  155. %cfg.foi = [1 : 1/5 : 40];
  156. cfg.pad = 4;
  157. cfg.foilim = [1 40];
  158. cfg.output = 'fooof'; % returns a smooth power-spectrum, based on a parametrization of a mixture of aperiodic and periodic components
  159. % eyes open
  160. cfg.trials = find(ismember(ftdata.trialinfo.type, '21')); % eyes open
  161. tfr_ff_eo = ft_freqanalysis_methlab(cfg, ftdata); % ADAPTED! Check line 1018 or ctrl f for 'dawid'
  162. % eyes closed
  163. cfg.trials = find(ismember(ftdata.trialinfo.type, '31')); % eyes closed
  164. tfr_ff_ec = ft_freqanalysis_methlab(cfg, ftdata); % ADAPTED! Check line 1018 or ctrl f for 'dawid'
  165. % extract raw power: eyes open
  166. tfr_ff_eo.power_spectrum = [];
  167. tmp_pwr_spec = {tfr_ff_eo.fooofparams.power_spectrum};
  168. for e = 1 : size(tfr_ff_eo.label, 2)
  169. tfr_ff_eo.power_spectrum(e, :) = tmp_pwr_spec{e};
  170. end
  171. % extract raw power: eyes closed
  172. tfr_ff_ec.power_spectrum = [];
  173. tmp_pwr_spec = {tfr_ff_ec.fooofparams.power_spectrum};
  174. for e = 1 : size(tfr_ff_ec.label, 2)
  175. tfr_ff_ec.power_spectrum(e, :) = tmp_pwr_spec{e};
  176. end
  177. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  178. % compute relative power: eyes open
  179. pow = 10.^(tfr_ff_eo.power_spectrum); % convert log to pow
  180. tfr_ff_eo.relative_power = pow ./ nanmean(pow, 2);
  181. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  182. % compute relative power: eyes closed
  183. pow = 10.^(tfr_ff_ec.power_spectrum); % convert log to pow
  184. tfr_ff_ec.relative_power = pow ./ nanmean(pow, 2);
  185. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  186. % compute aperiodic adjusted signal: eyes open
  187. % first, convert to power
  188. pow = 10.^(tfr_ff_eo.power_spectrum);
  189. % find offset and exponent
  190. aperiodic = vertcat(tfr_ff_eo.fooofparams.aperiodic_params);
  191. off = aperiodic(:, 1);
  192. exp = aperiodic(:, 2);
  193. % compute aperiodic signal
  194. y = 10.^off .* (1./(tfr_ff_eo.freq .^ exp));
  195. % save aperiodic slope
  196. tfr_ff_eo.aperiodic_slope = y;
  197. % compute aperiodic adjusted signal
  198. tfr_ff_eo.aperiodic_adjusted = 10.^(log10(pow)-log10(y));
  199. % fooof peaks
  200. pow = tfr_ff_eo.powspctrm; % fooof peaks
  201. tfr_ff_eo.fooof_peaks = pow - y;
  202. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  203. % compute aperiodic adjusted signal: eyes closed
  204. % first, convert to power
  205. pow = 10.^(tfr_ff_ec.power_spectrum);
  206. % find offset and exponent
  207. aperiodic = vertcat(tfr_ff_ec.fooofparams.aperiodic_params);
  208. off = aperiodic(:, 1);
  209. exp = aperiodic(:, 2);
  210. % compute aperiodic signal
  211. y = 10.^off .* (1./(tfr_ff_ec.freq .^ exp));
  212. % save aperiodic slope
  213. tfr_ff_ec.aperiodic_slope = y;
  214. % compute aperiodic adjusted signal
  215. tfr_ff_ec.aperiodic_adjusted = 10.^(log10(pow)-log10(y));
  216. % fooof peaks
  217. pow = tfr_ff_ec.powspctrm; % fooof peaks
  218. tfr_ff_ec.fooof_peaks = pow - y;
  219. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  220. % save bad trial information
  221. tfr_ff_eo.badTrial = struct;
  222. tfr_ff_eo.badTrial.total_trials = total_trials;
  223. tfr_ff_eo.badTrial.bad_epochs = bad_epochs;
  224. tfr_ff_eo.badTrial.bad_nums = bad_nums;
  225. tfr_ff_eo.badTrial.bad_labels = bad_labels;
  226. tfr_ff_eo.badTrial.ratio_rejected = ratio_rejected;
  227. % save results
  228. if ref == 1
  229. tfr_eo_avg = tfr_ff_eo;
  230. tfr_ec_avg = tfr_ff_ec;
  231. elseif ref == 2
  232. tfr_eo_mast = tfr_ff_eo;
  233. tfr_ec_mast = tfr_ff_ec;
  234. end
  235. clear tfr_ff_eo tfr_ff_ec EEG ftdata
  236. end
  237. % save to a file
  238. mkdir(fullfile(result_folderHBN, subjectID))
  239. save(fullfile(result_folderHBN, subjectID, ['tfr.mat']), 'tfr_eo_avg', ...
  240. 'tfr_ec_avg', ...
  241. 'tfr_eo_mast', ...
  242. 'tfr_ec_mast', ...
  243. '-v7.3')
  244. clear tfr_eo_avg tfr_ec_avg tfr_eo_mast tfr_ec_mast
  245. end
  246. % end
  247. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  248. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  249. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  250. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  251. %% sanity check
  252. %
  253. cfg = [];
  254. cfg.layout = lay129_head;
  255. cfg.colormap = unicolor_map_red; % '*RdBu', 'Blues', 'Oranges', 'OrRd'
  256. cfg.parameter = 'power_spectrum'; % 'power_spectrum' 'powspctrm' 'aperiodic_adjusted' 'fooof_peaks'
  257. figure;
  258. ft_multiplotER(cfg, tfr_eo_avg)
  259. figure;
  260. ft_multiplotER(cfg, tfr_ff_ec)
  261. %%
  262. figure;
  263. plot(tfr_eo_avg.freq, tfr_eo_avg.aperiodic_slope(1, :)) % elecs x freqs
  264. hold on
  265. plot(tfr_ff_ec.freq, tfr_ff_ec.aperiodic_slope(1, :)) % elecs x freqs
  266. legend('open', 'closed')
  267. %%
  268. figure;
  269. plot(tfr_eo_avg.freq, tfr_eo_avg.powspctrm(105, :))
  270. hold on
  271. plot(tfr_eo_avg.freq, tfr_eo_avg.power_spectrum(105, :))
  272. plot(tfr_eo_avg.freq, tfr_eo_avg.aperiodic_adjusted(105, :))
  273. plot(tfr_eo_avg.freq, tfr_eo_avg.aperiodic_slope(105, :))
  274. plot(tfr_eo_avg.freq, tfr_eo_avg.relative_power(105, :))
  275. % plot(tfr_eo_avg.freq, 10.^(tfr_ff_ec.power_spectrum(105, :)) )
  276. plot(tfr_eo_avg.freq, tfr_eo_avg.fooof_peaks(105, :))
  277. legend('pwr', 'power', 'adj', 'slope', 'relative', 'fp')
  278. figure;
  279. plot(tfr_eo_avg.freq, tfr_eo_avg.relative_power(105, :))
  280. %%
  281. figure;
  282. hold on
  283. plot(tfr_eo_avg.freq, tfr_eo_avg.power_spectrum(105, :))
  284. plot(tfr_eo_avg.freq, log10(10.^(tfr_ff_eo.power_spectrum(105, :))))
  285. figure;
  286. hold on
  287. plot(tfr_eo_avg.freq, tfr_eo_avg.power_spectrum(105, :)) % log10(pow)
  288. plot(tfr_eo_avg.freq, 10.^(tfr_ff_eo.power_spectrum(105, :))) % pow
  289. legend('db', 'power')
  290. %%
  291. cfg = [];
  292. cfg.output = 'pow';
  293. cfg.method = 'mtmfft';
  294. cfg.taper = 'hanning';
  295. cfg.pad = 4;
  296. cfg.foilim = [1 40];
  297. cfg.trials = find(ismember(ftdata.trialinfo.type, '21')); % eyes open
  298. pow = ft_freqanalysis_methlab(cfg, ftdata);
  299. relative_power = pow.powspctrm ./ nanmean(pow.powspctrm, 2);
  300. %%
  301. figure;
  302. hold on
  303. plot(tfr_eo_avg.freq, tfr_eo_avg.power_spectrum(105, :)) % log10(pow)
  304. plot(tfr_eo_avg.freq, 10.^(tfr_ff_eo.power_spectrum(105, :))) % pow
  305. plot(tfr_eo_avg.freq, pow.powspctrm(105, :)) % pow => identical to 10.^(tfr_ff_eo.power_spectrum(105, :))
  306. plot(tfr_eo_avg.freq, relative_power(105, :))
  307. legend('db', 'power', 'pow', 'relative')
  308. %%
  309. figure;
  310. hold on
  311. plot(tfr_ec_avg.freq, tfr_ec_avg.fooof_peaks(102, :))
  312. plot(tfr_ec_avg.freq, tfr_ec_avg.fooof_peaks(87, :))

a2_tf_analysisHBN.m, no license · at the source

Overview

Authors: Dawid Strzelczyk1,2, Andrea Vetsch1, Nicolas Langer1,2
  1. Methods of Plasticity Research, Department of Psychology, University of Zurich Zürich Switzerland
  2. Neuroscience Center Zurich (ZNZ) Zurich Switzerland
Institutions: University of Zurich (Switzerland)
Journal: eLife, volume 15, article RP111114
Dates: published online 9 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.7554/elife.111114 · PMID 42423458 · PMCID PMC13349384 · OpenAlex W7160536992
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: EEG (modality), human (organism), ADHD (population)
Methods: Connectivity, Smoothing, state filtering, decompositions, Preprocessing, Spectral & time-frequency, Statistics, fMRI & imaging
Keywords: ADHD, EEG, multiverse, TBR, Human
MeSH: Attention Deficit Disorder with Hyperactivity*, Beta Rhythm*, Brain*, Theta Rhythm*, Child, Electroencephalography, Female, Humans, Male (* major topic)
Journal subjects: Neuroscience
Topic: Attention Deficit Hyperactivity Disorder (Psychiatry and Mental health, Medicine), according to OpenAlex
Citations: not cited yet (Europe PMC); 118 references in the paper

Abstract

Attention deficit hyperactivity disorder (ADHD) affects 5–7% of children worldwide, yet diagnosis continues to rely on clinical-behavioral assessments. The theta/beta ratio (TBR) derived from electroencephalography (EEG) has long been proposed as a complementary neurobiological marker of ADHD based on reports of elevated TBR in affected children. However, accumulating evidence has raised concerns about the robustness and generalizability of these findings, pointing to a strong sensitivity to methodological choices. Here, we used multiverse analyses to systematically quantify how researcher degrees of freedom shape conclusions about associations between TBR and ADHD. Across two large, independent datasets (Healthy brain network: N=1499; validation sample: N=381), we evaluated 576 theoretically plausible analytical specifications, varying recording conditions, reference scheme, frequency band definitions, treatment of aperiodic (1/f) activity, regions of interest, sample inclusion criteria, and covariate specifications. Across the multiverse, we found that group differences in TBR were highly contingent on analytical choices, with no evidence for robust main effects of diagnosis, indicating no reliable differences between healthy controls, ADHD-inattentive, and ADHD-combined subtypes. Instead, significant effects emerged primarily as interactions with age and individual alpha frequency (IAF), particularly when TBR was derived from aperiodic-uncorrected power or from the aperiodic signal itself. These interaction patterns replicated across both independent samples and were observed using both categorical and dimensional definitions of ADHD. Together, these findings indicate that previously reported TBR effects are largely driven by variability in aperiodic activity and IAF rather than genuine differences in oscillatory theta-beta dynamics. Our results challenge the interpretation of TBR as a reliable standalone biomarker for ADHD and underscore the importance of multiverse approaches for evaluating candidate neurobiological markers in heterogeneous clinical populations.

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 13 matches between paragraphs and lines of code.

OSF u5yxv

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Languages: R (13), MATLAB (12)
Size: 109 files, 25 scripts
Software Heritage: not checked
Found in: “Data availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (12 files), cowplot (9 files), Statistics and Machine Learning Toolbox (7 files), FieldTrip (6 files), broom (4 files), ggplot2 (4 files), EEGLAB (3 files), patchwork (3 files), Signal Processing Toolbox (2 files), shadedErrorBar (2 files)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
24 files
At the source: osf.io/u5yxv

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;
  • 24 scripts, each with its path and the digest of its content;
  • 13 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

All data can be downloaded from https://fcon_1000.projects.nitrc.org/indi/cmi_healthy_brain_network and are publicly available. The code for the analyses presented in this paper is openly accessible at https://osf.io/u5yxv.

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, 27 September 2026: the first record

Recorded: type, language, journal, volume, pages, dates, 3 authors, 5 keywords, 9 MeSH terms, 1 funder, 113 references.

Cite

This paper

Strzelczyk, D., Vetsch, A., & Langer, N. (2026). Theta beta ratio in attention deficit hyperactivity disorder using a multiverse analysis. eLife, 15, RP111114. https://doi.org/10.7554/elife.111114

BibTeX

@article{strzelczyk2026theta,
author = {Strzelczyk, Dawid and Vetsch, Andrea and Langer, Nicolas},
title = {{Theta beta ratio in attention deficit hyperactivity disorder using a multiverse analysis}},
journal = {eLife},
year = {2026},
month = jul,
volume = {15},
pages = {RP111114},
publisher = {eLife Sciences Publications, Ltd},
issn = {2050-084X},
doi = {10.7554/elife.111114},
url = {https://doi.org/10.7554/elife.111114},
pmid = {42423458},
pmcid = {PMC13349384}
}

RIS

TY - JOUR
AU - Strzelczyk, Dawid
AU - Vetsch, Andrea
AU - Langer, Nicolas
TI - Theta beta ratio in attention deficit hyperactivity disorder using a multiverse analysis
T2 - eLife
J2 - Elife
PY - 2026
DA - 2026/07/09
VL - 15
SP - RP111114
SN - 2050-084X
PB - eLife Sciences Publications, Ltd
DO - 10.7554/elife.111114
UR - https://doi.org/10.7554/elife.111114
LA - en
ER -

CSL-JSON

{
"id": "10.7554/elife.111114",
"type": "article-journal",
"title": "Theta beta ratio in attention deficit hyperactivity disorder using a multiverse analysis",
"container-title": "eLife",
"author": [
{
"family": "Strzelczyk",
"given": "Dawid"
},
{
"family": "Vetsch",
"given": "Andrea"
},
{
"family": "Langer",
"given": "Nicolas"
}
],
"container-title-short": "Elife",
"volume": "15",
"page": "RP111114",
"DOI": "10.7554/elife.111114",
"PMID": "42423458",
"PMCID": "PMC13349384",
"ISSN": "2050-084X",
"publisher": "eLife Sciences Publications, Ltd",
"URL": "https://doi.org/10.7554/elife.111114",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
9
]
]
}
}

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.1111/ejn.70255 [code]
A Systematic Review of Aperiodic Neural Activity in Clinical Investigations
Journal: n/a
In common: EEG, 10 references
[2] doi:10.1093/cercor/bhag113 [code]
Long-term reliability and stability of parameterized resting state EEG: evidence from a five-year follow-up.
Journal: Cerebral cortex (New York, N.Y. : 1991)
In common: broom, cowplot, ggplot2, 1 other tool, EEG, 7 references
[3] doi:10.1093/braincomms/fcag351 [code]
Time-resolved aperiodic dynamics in event segmentation in attention-deficit/hyperactivity disorder.
Journal: Brain communications
In common: EEGLAB, broom, FieldTrip, 3 other tools, ADHD, EEG, 4 references
[4] doi:10.1038/s41598-026-46182-w [code]
How the influence of cingulate-lingual interactions on event segmentation changes from early to late adolescence.
Journal: Scientific reports
In common: EEGLAB, FieldTrip, Statistics and Machine Learning Toolbox, 2 other tools, EEG, 5 references
[5] doi:10.1111/psyp.70272 [code]
How to Improve the Reliability of Aperiodic Parameter Estimates in M/EEG: A Method Comparison.
Journal: Psychophysiology
In common: EEG, 8 references
[6] doi:10.1162/imag.a.1258 [code]
Non-specific increase in alpha power during a neurofeedback session targeting its downregulation.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: EEGLAB, broom, cowplot, 5 other tools, EEG, 1 reference
[7] doi:10.1162/opmi.a.372 [code]
Broadening the Agent Preference Hypothesis Through Experiencers: Eye-Tracking and EEG Evidence of Proto-Agents and Proto-Patients.
Journal: Open mind : discoveries in cognitive science
In common: EEGLAB, FieldTrip, patchwork, 2 other tools, EEG, 4 references
[8] doi:10.1093/cercor/bhag077 [code]
The longitudinal development of intrinsic timescales in infancy and their relation to alpha brain rhythm.
Journal: Cerebral cortex (New York, N.Y. : 1991)
In common: EEGLAB, FieldTrip, ggplot2, 1 other tool, EEG, 4 references
[9] doi:10.1111/psyp.70285 [code]
Spontaneous Modulation of Alpha Power During a Neurofeedback Session Without Instructions.
Journal: Psychophysiology
In common: EEGLAB, cowplot, Signal Processing Toolbox, 3 other tools, EEG, 2 references
[10] doi:10.1016/j.isci.2026.116936 [code]
Beyond neural oscillations: Stress-related aperiodic activity and aperiodic-oscillatory spectral covariation.
Journal: iScience
In common: EEGLAB, patchwork, ggplot2, 1 other tool, EEG, 4 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.

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.