OSCR

An explainable multimodal machine learning model for diagnosing disorders of consciousness: evidence from a large multicenter Chinese cohort.

Code ↔ Paper

3 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 3 matches
  1. [1] § Methods › EEG features analysis › Spectral analysis ↔ Preprocessing_autoEEG_pipeline.ipynb, lines 69–153 · score 0.92 · Power spectral density, 8–13 Hz, parieto occipital, 1–4 Hz, 4–8 Hz, Welch
  2. [2] § Methods › EEG data collection and preprocessing ↔ Preprocessing_autoEEG_pipeline.ipynb, lines 69–153 · score 0.85 · eye blink, muscle artifact, ICA components, threshold, Autoreject, epochs
  3. [3] § Methods › EEG data collection and preprocessing ↔ Preprocessing_autoEEG_pipeline.ipynb, lines 22–67 · score 0.65 · notch filter, MNE, Preprocessing, resampled, 0.1 Hz, 40 Hz

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

Jupyter notebook · 161 lines · 5.7 KB · no license · 3 matches

  1. # %%
  2. import os
  3. import mne
  4. import numpy as np
  5. import pandas as pd
  6. from scipy.integrate import simpson
  7. from autoreject import AutoReject
  8. from mne.preprocessing import ICA
  9. from mne_icalabel import label_components
  10. from mne_connectivity import spectral_connectivity_epochs
  11. # Folder paths
  12. folder_path = r'F:\eeg_SHAP' # Enter your folder path
  13. save_path = r'F:\eeg_SHAP\process' # Enter your save path
  14. # Get all .vhdr files in the folder
  15. vhdr_files = [f for f in os.listdir(folder_path) if f.endswith('.vhdr')]
  16. # Create an empty DataFrame to store features from all files
  17. all_features = []
  18. # Iterate over all .vhdr files
  19. for vhdr_file in vhdr_files:
  20. file_path = os.path.join(folder_path, vhdr_file)
  21. file_name = os.path.splitext(vhdr_file)[0]
  22. # Load EEG data
  23. raw = mne.io.read_raw_brainvision(file_path, preload=True)
  24. # Apply standard 1005 electrode layout
  25. montage = mne.channels.make_standard_montage('standard_1005')
  26. raw.set_montage(montage)
  27. # Select only EEG channels
  28. raw.pick_types(eeg=True)
  29. # Crop the first 300 seconds of data for processing
  30. raw.crop(tmin=0, tmax=300)
  31. raw.filter(l_freq=0.1, h_freq=40.0, picks="eeg")
  32. raw.notch_filter(freqs=50, notch_widths=4, picks="eeg")
  33. raw.resample(sfreq=500)
  34. # Create pseudo-events by segmenting data into 2-second epochs
  35. interval = 2.0
  36. n_markers = int(raw.times[-1] // interval)
  37. events = mne.make_fixed_length_events(raw, id=200, start=0, stop=n_markers * interval, duration=interval)
  38. # Create epochs object
  39. epochs = mne.Epochs(
  40. raw, events, event_id=200, tmin=0, tmax=interval,
  41. baseline=None, preload=True, detrend=1
  42. )
  43. # Use autoreject to automatically handle bad segments and interpolate bad channels
  44. ar = AutoReject(n_interpolate=[1, 2, 3, 4, 5, 6], random_state=666, n_jobs=-1, verbose=True)
  45. ar.fit(epochs)
  46. epochs_clean, reject_log = ar.transform(epochs, return_log=True)
  47. # ICA preprocessing: filter for training (before fitting ICA)
  48. raw_for_ica = raw.copy()
  49. raw_for_ica.filter(l_freq=1.0, h_freq=40.0)
  50. events_for_ica = mne.make_fixed_length_events(raw_for_ica, id=200, start=0, stop=n_markers * interval, duration=interval)
  51. epochs_for_ica = mne.Epochs(
  52. raw_for_ica, events_for_ica, event_id=200, tmin=0, tmax=interval,
  53. baseline=None, preload=True, detrend=1
  54. )
  55. # Use autoreject cleaned epochs indices
  56. epochs_selection = epochs_clean.selection
  57. filtered_epochs_for_ica = epochs_for_ica[epochs_selection]
  58. # ICA fitting
  59. n_components = min(30, len(filtered_epochs_for_ica.ch_names) - 1)
  60. ica = ICA(n_components=n_components, max_iter="auto", method="picard", random_state=42, fit_params=dict(ortho=False, extended=True))
  61. ica.fit(filtered_epochs_for_ica)
  62. # ICA component labeling
  63. ic_labels = label_components(filtered_epochs_for_ica, ica, method="iclabel")
  64. labels = ic_labels["labels"]
  65. y_pred_proba = ic_labels["y_pred_proba"]
  66. # Set artifact types and thresholds
  67. artifact_types = {
  68. "eye blink": 0.8,
  69. "heart beat": 0.8,
  70. "muscle artifact": 0.8
  71. }
  72. exclude_idx = []
  73. for idx, (label, proba_array) in enumerate(zip(labels, y_pred_proba)):
  74. if label in artifact_types and artifact_types[label] <= np.max(proba_array):
  75. exclude_idx.append(idx)
  76. # Apply ICA to remove artifact components
  77. ica.apply(epochs_clean, exclude=exclude_idx)
  78. # Remove extreme value epochs
  79. reject_criteria = dict(eeg=180e-6)
  80. epochs_clean.drop_bad(reject=reject_criteria)
  81. # Apply average reference
  82. epochs_clean.set_eeg_reference(ref_channels='average')
  83. # Randomly select 30 epochs
  84. np.random.seed(42)
  85. max_epochs = 30
  86. selected_indices = np.random.choice(len(epochs_clean), size=max_epochs, replace=False)
  87. epochs_ica = epochs_clean[selected_indices]
  88. # Power spectral analysis - Parieto-occipital alpha relative, delta absolute, alpha/theta ratio
  89. region = ['Oz', 'O1', 'O2', 'POz', 'PO3', 'PO4', 'PO7', 'PO8', 'P7', 'P5', 'P3', 'P1', 'Pz', 'P2', 'P4', 'P8']
  90. available = [ch for ch in region if ch in epochs_ica.info['ch_names']]
  91. psd = epochs_ica.compute_psd(method='welch', fmin=1, fmax=40, picks=available)
  92. freqs = psd.freqs
  93. psds = psd.get_data().mean(axis=0).mean(axis=0)
  94. freq_res = np.mean(np.diff(freqs))
  95. total = simpson(psds, dx=freq_res)
  96. def band_power(low, high):
  97. idx = np.logical_and(freqs >= low, freqs <= high)
  98. return simpson(psds[idx], dx=freq_res)
  99. alpha = band_power(8, 13)
  100. delta = band_power(1, 4)
  101. theta = band_power(4, 8)
  102. rel_alpha = alpha / total
  103. alpha_theta_ratio = alpha / theta
  104. # Calculate IMCOH theta
  105. con_theta = spectral_connectivity_epochs(
  106. epochs_ica, method='imcoh', mode='multitaper', sfreq=epochs_ica.info['sfreq'],
  107. fmin=4, fmax=8, faverage=True, tmin=0.0, mt_adaptive=False, n_jobs=-1
  108. ).get_data()
  109. imcoh_theta = np.mean(np.abs(con_theta))
  110. # Calculate PLV beta
  111. con_beta = spectral_connectivity_epochs(
  112. epochs_ica, method='plv', mode='multitaper', sfreq=epochs_ica.info['sfreq'],
  113. fmin=13, fmax=30, faverage=True, tmin=0.0, mt_adaptive=False, n_jobs=-1
  114. ).get_data()
  115. plv_beta = np.mean(np.abs(con_beta))
  116. # Save the features for each file
  117. features = {
  118. 'File': file_name,
  119. 'PO_alpha_rel': rel_alpha,
  120. 'PO_delta_abs': delta * 1e12,
  121. 'PO_alpha_theta_ratio': alpha_theta_ratio,
  122. 'PLV_beta': plv_beta,
  123. 'IMCOH_theta': imcoh_theta
  124. }
  125. all_features.append(features)
  126. # Save features from all files as a CSV
  127. df_all = pd.DataFrame(all_features)
  128. output_csv = os.path.join(save_path, 'EEG_features.csv')
  129. df_all.to_csv(output_csv, index=False)
  130. print(f"All features saved to: {output_csv}")

Preprocessing_autoEEG_pipeline.ipynb at commit 5d47c46, no license · at the source

Overview

Authors: Chenye Mou1, Jiajia Zhao1, Zilong Yan2, Li Zhang1,3, Xuejiao Tian4, Yingchen Wang1, Hanxiao Wang1, Jun Hu1, Zhuolin He1, Yi Ling1, Anshun Kang2, Qiwen Luo2, Jian Gao5, Xiangming Ye3, Lirong Hong6, Jingqi Li5, Tianyi Yan2, Jie Yu1, Benyan Luo1
ORCID iDs: Benyan Luo
  1. Department of Neurology, The First Affiliated Hospital, Zhejiang University School of Medicine, Hangzhou, Zhejiang China
  2. School of Medical Technology, Beijing Institute of Technology, Beijing, China
  3. Centre for Rehabilitation Medicine, Rehabilitation & Sports Medicine Research Institute of Zhejiang Province, Department of Rehabilitation Medicine, Zhejiang Provincial People’s Hospital (Affiliated People’s Hospital, Hangzhou Medical College, Hangzhou, Zhejiang China
  4. Department of Neurology, Shaoxing Shangyu Second People’s Hospital, Shaoxing, Zhejiang China
  5. Department of Rehabilitation, Hangzhou Mingzhou Brain Rehabilitation Hospital, Hangzhou, Zhejiang China
  6. Department of Rehabilitation, Hangzhou Hospital of Zhejiang Armed Police Corps, Hangzhou, Zhejiang China
Journal: Journal of translational medicine, volume 24, issue 1, article 708
Dates: received 26 February 2026; accepted 2 April 2026; published online 15 April 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1186/s12967-026-08108-y · PMID 41987185 · PMCID PMC13217752 · OpenAlex W7154470854
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: EEG (modality), human (organism), other condition (population), cognitive (subfield)
Methods: Spectral & time-frequency, Preprocessing, Connectivity, Statistics, Smoothing, state filtering, decompositions, Machine learning, Physiology & signal measures
Keywords: Disorders of consciousness, Intensive care, Machine learning, Diagnosis, SHAP analysis
MeSH: Consciousness Disorders*, Machine Learning*, Algorithms, China, Cohort Studies, East Asian People, Electroencephalography, Humans, Predictive Learning Models, Reproducibility of Results, ROC Curve (* major topic)
Topic: Traumatic Brain Injury Research (Epidemiology, Medicine), according to OpenAlex
Funding: the National Natural Science Foundation of China (8250050433, U22A20293); The Brain Science and Brain-like Intelligence Technology - National Science and Technology Major Project (2021ZD0200404); the China Postdoctoral Science Foundation (2024M752878); the China Brain Project (2022ZD0208905); Zhejiang Provincial Natural Science Foundation of China (QN25H090042)
Citations: cited by 2 papers (Europe PMC); 36 references in the paper

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.

Vongoleo/docmodel

License: none: the authors keep all their rights
State: the link answers, verified on 29 September 2026
Evidence: files inventoried
Commit: 5d47c46dec3b8bf113a1c267047df5e0cf805aef, 1 October 2025
Languages: R (1), Jupyter (1)
Size: 7 files, 2 scripts
Software Heritage: not archived
Found in: “Data availability”
Holds: README, 1 notebook
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: autoreject (1 file), caret (1 file), ggplot2 (1 file), ICLabel (1 file), MNE-Python (1 file), MNE-Connectivity (1 file), NumPy (1 file), pandas (1 file), SciPy (1 file)
Availability: 1 check, the latest on 29 September 2026: the link answers
  • 29 September 2026: the link answers
3 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:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 2 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.

Code and data availability statement

The paper has a code and data 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: Vongoleo/docmodel
  • it says that the data are available on request

Read it in the paper: doi.org/10.1186/s12967-026-08108-y.

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

Recorded: type, language, journal, volume, issue, pages, dates, 19 authors, 5 keywords, 11 MeSH terms, 5 funders, 33 references.

Cite

This paper

Mou, C., Zhao, J., Yan, Z., Zhang, L., Tian, X., Wang, Y., Wang, H., Hu, J., He, Z., Ling, Y., Kang, A., Luo, Q., Gao, J., Ye, X., Hong, L., Li, J., Yan, T., Yu, J., & Luo, B. (2026). An explainable multimodal machine learning model for diagnosing disorders of consciousness: evidence from a large multicenter Chinese cohort. Journal of translational medicine, 24(1), 708. https://doi.org/10.1186/s12967-026-08108-y

BibTeX

@article{mou2026explainable,
author = {Mou, Chenye and Zhao, Jiajia and Yan, Zilong and Zhang, Li and Tian, Xuejiao and Wang, Yingchen and Wang, Hanxiao and Hu, Jun and He, Zhuolin and Ling, Yi and Kang, Anshun and Luo, Qiwen and Gao, Jian and Ye, Xiangming and Hong, Lirong and Li, Jingqi and Yan, Tianyi and Yu, Jie and Luo, Benyan},
title = {{An explainable multimodal machine learning model for diagnosing disorders of consciousness: evidence from a large multicenter Chinese cohort}},
journal = {Journal of translational medicine},
year = {2026},
month = apr,
volume = {24},
number = {1},
pages = {708},
publisher = {BMC},
issn = {1479-5876},
doi = {10.1186/s12967-026-08108-y},
url = {https://doi.org/10.1186/s12967-026-08108-y},
pmid = {41987185},
pmcid = {PMC13217752}
}

RIS

TY - JOUR
AU - Mou, Chenye
AU - Zhao, Jiajia
AU - Yan, Zilong
AU - Zhang, Li
AU - Tian, Xuejiao
AU - Wang, Yingchen
AU - Wang, Hanxiao
AU - Hu, Jun
AU - He, Zhuolin
AU - Ling, Yi
AU - Kang, Anshun
AU - Luo, Qiwen
AU - Gao, Jian
AU - Ye, Xiangming
AU - Hong, Lirong
AU - Li, Jingqi
AU - Yan, Tianyi
AU - Yu, Jie
AU - Luo, Benyan
TI - An explainable multimodal machine learning model for diagnosing disorders of consciousness: evidence from a large multicenter Chinese cohort
T2 - Journal of translational medicine
J2 - J Transl Med
PY - 2026
DA - 2026/04/15
VL - 24
IS - 1
SP - 708
SN - 1479-5876
PB - BMC
DO - 10.1186/s12967-026-08108-y
UR - https://doi.org/10.1186/s12967-026-08108-y
LA - en
ER -

CSL-JSON

{
"id": "10.1186/s12967-026-08108-y",
"type": "article-journal",
"title": "An explainable multimodal machine learning model for diagnosing disorders of consciousness: evidence from a large multicenter Chinese cohort",
"container-title": "Journal of translational medicine",
"author": [
{
"family": "Mou",
"given": "Chenye"
},
{
"family": "Zhao",
"given": "Jiajia"
},
{
"family": "Yan",
"given": "Zilong"
},
{
"family": "Zhang",
"given": "Li"
},
{
"family": "Tian",
"given": "Xuejiao"
},
{
"family": "Wang",
"given": "Yingchen"
},
{
"family": "Wang",
"given": "Hanxiao"
},
{
"family": "Hu",
"given": "Jun"
},
{
"family": "He",
"given": "Zhuolin"
},
{
"family": "Ling",
"given": "Yi"
},
{
"family": "Kang",
"given": "Anshun"
},
{
"family": "Luo",
"given": "Qiwen"
},
{
"family": "Gao",
"given": "Jian"
},
{
"family": "Ye",
"given": "Xiangming"
},
{
"family": "Hong",
"given": "Lirong"
},
{
"family": "Li",
"given": "Jingqi"
},
{
"family": "Yan",
"given": "Tianyi"
},
{
"family": "Yu",
"given": "Jie"
},
{
"family": "Luo",
"given": "Benyan"
}
],
"container-title-short": "J Transl Med",
"volume": "24",
"issue": "1",
"page": "708",
"DOI": "10.1186/s12967-026-08108-y",
"PMID": "41987185",
"PMCID": "PMC13217752",
"ISSN": "1479-5876",
"publisher": "BMC",
"URL": "https://doi.org/10.1186/s12967-026-08108-y",
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
15
]
]
}
}

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/brain/awaf412 [code]
Multimodal multicentre investigation of diagnostic and prognostic markers in disorders of consciousness.
Journal: Brain : a journal of neurology
In common: MNE-Python, pandas, SciPy, 1 other tool, EEG, other condition, 6 references
[2] doi:10.1162/imag.a.1245 [code]
Towards precision EEG connectomics: Evaluating the benefits of dense sampling.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: MNE-Connectivity, autoreject, ICLabel, 5 other tools, EEG
[3] doi:10.1038/s41598-026-58505-y [code]
Remoteness sensitive theta network dynamics during early autobiographical memory access.
Journal: Scientific reports
In common: autoreject, caret, MNE-Python, 4 other tools, EEG, cognitive, 1 reference
[4] doi:10.1093/nc/niag029 [code]
A data-driven approach to identifying and evaluating connectivity-based neural correlates of conscious visual perception.
Journal: Neuroscience of consciousness
In common: MNE-Connectivity, autoreject, MNE-Python, 4 other tools, cognitive, 1 reference
[5] doi:10.1002/hbm.70628 [code]
EEG Biomarkers for Affective Disorders Diagnosis: An Evaluation and Validation Study.
Journal: Human brain mapping
In common: MNE-Connectivity, ICLabel, MNE-Python, 3 other tools, EEG, 1 reference
[6] doi:10.1038/s41467-026-73878-4 [code]
Neural Response to Familiar Names Predicts Outcome of Comatose ICU Patients: A Prospective Observational Cohort Study.
Journal: Nature communications
In common: ICLabel, pandas, NumPy, EEG, other condition, 1 reference, author Benyan Luo
[7] doi:10.1097/j.pain.0000000000004044 [code]
No effect of rhythmic visual stimulation on experimental pain perception.
Journal: Pain
In common: MNE-Connectivity, ICLabel, MNE-Python, 3 other tools, EEG, cognitive, 1 reference
[8] doi:10.1038/s41597-026-07350-9 [code]
An open multi-center MEG-EEG dataset for studying conscious visual perception.
Journal: Scientific data
In common: MNE-Connectivity, autoreject, MNE-Python, 4 other tools, EEG
[9] doi:10.3390/s26134019 [code]
NeuroStat: An Open-Source EEG Connectivity Platform for Randomised Controlled Trials.
Journal: Sensors (Basel, Switzerland)
In common: MNE-Connectivity, ICLabel, MNE-Python, 3 other tools, EEG, 1 reference
[10] doi:10.1038/s41597-026-07377-y [code]
An open-access multi-site fMRI dataset for investigating conscious visual perception.
Journal: Scientific data
In common: MNE-Connectivity, autoreject, MNE-Python, 4 other tools

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.