Prediction of cognitive performance by demographics, sleep, and brain morphometry: machine learning findings from ENIGMA-Sleep Working Group
The 17 matches
- [1] § Methods › Image acquisition and processing ↔ scripts/01_data_preparation/make_VETSA_dataset.py, lines 123–136 · score 0.84 · cerebellar cortex, cerebellar white matter, lateral ventricles, accumbens, amygdala, caudate
- [2] § Methods › Image acquisition and processing ↔ scripts/01_data_preparation/make_EMC_dataset.py, lines 22–33 · score 0.84 · cerebellar cortex, cerebellar white matter, lateral ventricles, accumbens, amygdala, caudate
- [3] § Methods › Model training and internal evaluation ↔ scripts/05_figures_tables/new_plot_cross_model_results.py, lines 210–251 · score 0.83 · ridge regression, Pearson correlation, random forest, Spearman correlation, Linear regression, XGBoost
- [4] § Methods › SHAP-based subgroup analysis ↔ scripts/02_model_training/autogluon/plot_SHAP_cluster_SHAP-IQ_AutoGluon_SHIP.py, lines 631–677 · score 0.74 · Gaussian mixture, spectral clustering, silhouette score, elbow, gap, embed
- [5] § Methods › Model training and internal evaluation ↔ scripts/02_model_training/xgboost/code_references.py, lines 995–1074 · score 0.74 · Optuna optimized, fitted transformers, linear regression, inner, XGBoost, outer
- [6] § Methods › SHAP-based subgroup analysis ↔ scripts/02_model_training/autogluon/plot_test_SHAP_cluster_SHAP-IQ_AutoGluon_SHIP.py, lines 949–1035 · score 0.70 · Gaussian mixture models, silhouette score, elbow, gap, spectral, embed
- [7] § Methods › Machine learning models ↔ scripts/05_figures_tables/new_plot_cross_model_results.py, lines 210–251 · score 0.69 · ridge regression, random forest, linear regression, XGBoost, rbf, SVM
- [8] § Methods › Model training and internal evaluation ↔ scripts/03_out_of_sample_validation/lib/AutoGluon_pipeline.py, lines 242–347 · score 0.69 · TabularPredictor, best quality, properties, bagged, preset, stack
- [9] § Methods › Model training and internal evaluation ↔ src/enigma_sleep_cognition/AutoGluon_pipeline.py, lines 242–349 · score 0.69 · TabularPredictor, best quality, properties, bagged, preset, stack
- [10] § Methods › Study participants and measurements › Memory test score ↔ scripts/01_data_preparation/make_VETSA_dataset.py, lines 39–70 · score 0.68 · Digit Span Backward, Digit Span Forward, backward raw, Sequencing, Letter, scores
- [11] § Methods › Out-of-cohort validation in independent cohorts ↔ scripts/05_figures_tables/new_plot_SHAP_brain.py, lines 59–115 · score 0.63 · Li ge, San Diego, XGBoost, lich, Pittsburgh, AutoGluon
- [12] § Methods › Out-of-cohort validation in independent cohorts ↔ scripts/05_figures_tables/new_plot_SHAP_brain_no_DK.py, lines 59–115 · score 0.63 · Li ge, San Diego, XGBoost, lich, Pittsburgh, AutoGluon
- [13] § Results › Overview of the framework and study cohort ↔ scripts/05_figures_tables/new_plot_SHAP_brain.py, lines 59–115 · score 0.60 · Li ge, San Diego, sleep duration, depressive scores, VETSA, lich
- [14] § Results › Overview of the framework and study cohort ↔ scripts/05_figures_tables/new_plot_SHAP_brain_no_DK.py, lines 59–115 · score 0.60 · Li ge, San Diego, sleep duration, depressive scores, VETSA, lich
- [15] § Methods › Study participants and measurements › Stroop test score ↔ scripts/01_data_preparation/make_VETSA_dataset.py, lines 39–70 · score 0.55 · Stroop Interference Norm, word, score
- [16] § Methods › Model training and internal evaluation ↔ src/enigma_sleep_cognition/AutoGluon_pipeline.py, lines 73–179 · score 0.53 · squared error, Linear regression, absolute error, refitted, AutoGluon, rooted
- [17] § Methods › Machine learning models ↔ src/enigma_sleep_cognition/AutoGluon_pipeline_log.py, lines 246–358 · score 0.53 · linear regression, XGBoost, stacking, tree, tabular, preprocessing
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 · 338 lines · 15 KB · MIT · 3 matches
- import os
- import sys
- sys.path.append('/data/project/sleep_ENIGMA_Cognition/Codes/ENIGMA_Sleep_Cognitive/Code/lib/')
- import utils
- import pandas as pd
- import matplotlib.pyplot as plt
- import seaborn as sns
- # %%
- raw_data_save_path = '/data/project/sleep_ENIGMA_Cognition/Codes/ENIGMA_Sleep_Cognitive/Data/raw_datasets/San Diago/ENIGMA_Sleep_Masoud_2024_10_14/files/'
- data_save_path = '/data/project/sleep_ENIGMA_Cognition/Codes/ENIGMA_Sleep_Cognitive/Data/'
- # %%
- df_demo_VETSA = pd.read_csv(raw_data_save_path + 'ESR_01_ENIGMA_Sleep_nonMRIdata_revised.csv')
- df_area_DK_VETSA = pd.read_csv(raw_data_save_path + 'ESR_02_UCSD_area_DK.csv')
- df_area_Schaefer_VETSA = pd.read_csv(raw_data_save_path + 'ESR_03_UCSD_area_Schaefer.csv')
- df_subcor_VETSA = pd.read_csv(raw_data_save_path + 'ESR_04_UCSD_subcortical_volume.csv')
- df_thickness_DK_VETSA = pd.read_csv(raw_data_save_path + 'ESR_05_UCSD_thickness_DK.csv')
- df_thickness_Schaefer_VETSA = pd.read_csv(raw_data_save_path + 'ESR_06_UCSD_thickness_Schaefer.csv')
- # %%
- # for all dataframes, rename 'CID' to 'Sub_ID', then sort by 'Sub_ID'
- df_demo_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_demo_VETSA.sort_values(by='Sub_ID', inplace=True)
- df_area_DK_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_area_DK_VETSA.sort_values(by='Sub_ID', inplace=True)
- df_area_Schaefer_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_area_Schaefer_VETSA.sort_values(by='Sub_ID', inplace=True)
- df_subcor_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_subcor_VETSA.sort_values(by='Sub_ID', inplace=True)
- df_thickness_DK_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_thickness_DK_VETSA.sort_values(by='Sub_ID', inplace=True)
- df_thickness_Schaefer_VETSA.rename(columns={'CID': 'Sub_ID'}, inplace=True)
- df_thickness_Schaefer_VETSA.sort_values(by='Sub_ID', inplace=True)
- # %%
- """
- Change column names for df_demo_VETSA:
- 'cesdtot_V3' to 'Depression_score'
- 'BMI_V3' to 'BMI'
- 'Age_V3' to 'Age_at_Scan'
- 'apoe2024' to 'APOE4'
- 'HRSSLEEP_V3' to 'Self_Sleep_Dur'
- 'sleepeff_V3' to 'Self_Sleep_Eff'
- 'DSFRAW_V3' to 'Digit Span Forward Raw'
- 'DSBRAW_V3' to 'Digit Span Backward Raw'
- 'STRWRAW_V3' to 'Stroop Raw Word Score'
- 'STRCRAW_V3' to 'Stroop Raw Color Score'
- 'STRCWRAW_V3' to 'Stroop Raw Color-Word Score'
- 'DSTOT_V3p' to 'Digit Span Total Trials Passed'
- 'LNTOT_V3p' to 'Letter-Number Sequencing Total Score'
- 'STRIT_V3p' to 'Stroop Interference Norm-Based T-Score'
- """
- df_demo_VETSA.rename(columns={'cesdtot_V3': 'Depression_score'}, inplace=True)
- df_demo_VETSA.rename(columns={'BMI_V3': 'BMI'}, inplace=True)
- df_demo_VETSA.rename(columns={'AGE_V3': 'Age_at_Scan'}, inplace=True)
- df_demo_VETSA.rename(columns={'apoe2024': 'APOE4'}, inplace=True)
- df_demo_VETSA.rename(columns={'HRSSLEEP_V3': 'Self_Sleep_Dur'}, inplace=True)
- df_demo_VETSA.rename(columns={'sleepeff_V3': 'Self_Sleep_Eff'}, inplace=True)
- df_demo_VETSA.rename(columns={'DSFRAW_V3': 'Digit Span Forward Raw'}, inplace=True)
- df_demo_VETSA.rename(columns={'DSBRAW_V3': 'Digit Span Backward Raw'}, inplace=True)
- df_demo_VETSA.rename(columns={'STRWRAW_V3': 'Stroop Raw Word Score'}, inplace=True)
- df_demo_VETSA.rename(columns={'STRCRAW_V3': 'Stroop Raw Color Score'}, inplace=True)
- df_demo_VETSA.rename(columns={'STRCWRAW_V3': 'Stroop Raw Color-Word Score'}, inplace=True)
- df_demo_VETSA.rename(columns={'DSTOT_V3p': 'Digit Span Total Trials Passed'}, inplace=True)
- df_demo_VETSA.rename(columns={'LNTOT_V3p': 'Letter-Number Sequencing Total Score'}, inplace=True)
- df_demo_VETSA.rename(columns={'STRIT_V3p': 'Stroop Interference Norm-Based T-Score'}, inplace=True)
- # %%
- # for df_demo_VETSA, df_thickness_DK_VETSA, df_thickness_Schaefer_VETSA, df_area_DK_VETSA, df_area_Schaefer_VETSA, df_subcor_VETSA, check whether 'Sub_ID' column has unique values
- # Create a set of Sub_IDs for each DataFrame
- sub_ids = {
- "df_demo_VETSA": set(df_demo_VETSA['Sub_ID']),
- "df_thickness_DK_VETSA": set(df_thickness_DK_VETSA['Sub_ID']),
- "df_thickness_Schaefer_VETSA": set(df_thickness_Schaefer_VETSA['Sub_ID']),
- "df_area_DK_VETSA": set(df_area_DK_VETSA['Sub_ID']),
- "df_area_Schaefer_VETSA": set(df_area_Schaefer_VETSA['Sub_ID']),
- "df_subcor_VETSA": set(df_subcor_VETSA['Sub_ID']),
- }
- # Find common Sub_IDs across all DataFrames
- common_sub_ids = set.intersection(*sub_ids.values())
- print(f"Common Sub_IDs across all DataFrames: {len(common_sub_ids)}")
- # Find unique Sub_IDs for each DataFrame
- unique_sub_ids = {key: value - common_sub_ids for key, value in sub_ids.items()}
- for df_name, unique_ids in unique_sub_ids.items():
- print(f"Unique Sub_IDs in {df_name}: {len(unique_ids)}")
- # Check which DataFrames have more or less subjects
- sub_id_counts = {df_name: len(ids) for df_name, ids in sub_ids.items()}
- print("Number of Sub_IDs in each DataFrame:")
- for df_name, count in sub_id_counts.items():
- print(f"{df_name}: {count}")
- # Identify differences between DataFrames
- for df1, ids1 in sub_ids.items():
- for df2, ids2 in sub_ids.items():
- if df1 != df2:
- extra_in_df1 = ids1 - ids2
- extra_in_df2 = ids2 - ids1
- print(f"Subjects in {df1} but not in {df2}: {len(extra_in_df1)}")
- print(f"Subjects in {df2} but not in {df1}: {len(extra_in_df2)}")
- # Identify and display the specific Sub_ID values
- for df1, ids1 in sub_ids.items():
- for df2, ids2 in sub_ids.items():
- if df1 != df2:
- extra_in_df1 = ids1 - ids2 # Sub_IDs in df1 but not in df2
- extra_in_df2 = ids2 - ids1 # Sub_IDs in df2 but not in df1
- if extra_in_df1:
- print(f"Sub_IDs in {df1} but not in {df2} ({len(extra_in_df1)}): {sorted(extra_in_df1)}")
- if extra_in_df2:
- print(f"Sub_IDs in {df2} but not in {df1} ({len(extra_in_df2)}): {sorted(extra_in_df2)}")
- # %%
- # remove subject 51011 from df_demo_VETSA
- df_demo_VETSA = df_demo_VETSA[df_demo_VETSA['Sub_ID'] != 51011]
- # %%
- """
- Rename of imaging tables
- """
- label_subcortical = ['Sub_ID', 'Left-Lateral-Ventricle', 'Left-Inf-Lat-Vent', 'Left-Cerebellum-White-Matter',
- 'Left-Cerebellum-Cortex', 'Left-Thalamus-Proper', 'Left-Caudate', 'Left-Putamen', 'Left-Pallidum',
- '3rd-Ventricle', '4th-Ventricle', 'Brain-Stem', 'Left-Hippocampus', 'Left-Amygdala', 'CSF',
- 'Left-Accumbens-area', 'Left-VentralDC', 'Left-vessel', 'Right-Lateral-Ventricle',
- 'Right-Inf-Lat-Vent', 'Right-Cerebellum-White-Matter', 'Right-Cerebellum-Cortex',
- 'Right-Thalamus-Proper', 'Right-Caudate', 'Right-Putamen', 'Right-Pallidum', 'Right-Hippocampus',
- 'Right-Amygdala', 'Right-Accumbens-area', 'Right-VentralDC', 'Right-vessel', '5th-Ventricle',
- 'CC_Posterior', 'CC_Mid_Posterior', 'CC_Central', 'CC_Mid_Anterior', 'CC_Anterior',
- 'EstimatedTotalIntraCranialVol']
- df_subcor_VETSA = df_subcor_VETSA[label_subcortical]
- # %%
- df_subcor_VETSA = df_subcor_VETSA.rename(columns={'Left-Thalamus-Proper': 'Left-Thalamus',
- 'Right-Thalamus-Proper': 'Right-Thalamus',
- 'subject_ID': 'Sub_ID'})
- # %%
- # rename cortical thickness
- # Schaefer
- filtered_columns = [col for col in df_thickness_Schaefer_VETSA.columns if
- col not in ['Sub_ID', 'BrainSegVolNotVent', 'eTIV']]
- renamed_schaefer_ct_df_columns = [col.replace('lh_7Networks_', '').replace('rh_7Networks_', '') for col in
- filtered_columns]
- # DK
- renamed_dk_ct_df_columns = [col for col in df_thickness_DK_VETSA.columns if
- col not in ['subject_ID', 'BrainSegVolNotVent', 'eTIV']]
- # rename surface area
- # Schaefer
- filtered_columns = [col for col in df_area_Schaefer_VETSA.columns if
- col not in ['subject_ID', 'BrainSegVolNotVent', 'eTIV', 'lh_WhiteSurfArea_area',
- 'rh_WhiteSurfArea_area']]
- renamed_schaefer_sa_df_columns = [col.replace('lh_7Networks_', '').replace('rh_7Networks_', '') for col in
- filtered_columns]
- # DK
- renamed_dk_sa_df_columns = [col for col in df_area_DK_VETSA.columns if
- col not in ['subject_ID', 'BrainSegVolNotVent', 'eTIV']]
- # %%
- # apply the renaming and filtering
- # Rename cortical thickness columns for Schaefer
- filtered_ct_columns_schaefer = [col for col in df_thickness_Schaefer_VETSA.columns if
- col not in ['Sub_ID', 'BrainSegVolNotVent', 'eTIV']]
- renamed_ct_columns_schaefer = [col.replace('lh_7Networks_', '').replace('rh_7Networks_', '') for col in
- filtered_ct_columns_schaefer]
- df_thickness_Schaefer_VETSA.rename(columns=dict(zip(filtered_ct_columns_schaefer, renamed_ct_columns_schaefer)), inplace=True)
- df_thickness_Schaefer_VETSA = df_thickness_Schaefer_VETSA[['Sub_ID'] + renamed_ct_columns_schaefer]
- # Rename cortical thickness columns for DK
- filtered_ct_columns_dk = [col for col in df_thickness_DK_VETSA.columns if
- col not in ['Sub_ID', 'BrainSegVolNotVent', 'eTIV']]
- # No specific replacement given for DK; keeping original names
- df_thickness_DK_VETSA = df_thickness_DK_VETSA[['Sub_ID'] + filtered_ct_columns_dk]
- # Rename surface area columns for Schaefer
- filtered_sa_columns_schaefer = [col for col in df_area_Schaefer_VETSA.columns if
- col not in ['Sub_ID', 'BrainSegVolNotVent', 'eTIV', 'lh_WhiteSurfArea_area', 'rh_WhiteSurfArea_area']]
- renamed_sa_columns_schaefer = [col.replace('lh_7Networks_', '').replace('rh_7Networks_', '') for col in
- filtered_sa_columns_schaefer]
- df_area_Schaefer_VETSA.rename(columns=dict(zip(filtered_sa_columns_schaefer, renamed_sa_columns_schaefer)), inplace=True)
- df_area_Schaefer_VETSA = df_area_Schaefer_VETSA[['Sub_ID'] + renamed_sa_columns_schaefer]
- # Rename surface area columns for DK
- filtered_sa_columns_dk = [col for col in df_area_DK_VETSA.columns if
- col not in ['Sub_ID', 'BrainSegVolNotVent', 'eTIV']]
- # No specific replacement given for DK; keeping original names
- df_area_DK_VETSA = df_area_DK_VETSA[['Sub_ID'] + filtered_sa_columns_dk]
- # %%
- # concatenate all dataframes by 'Sub_ID' column. Order of dataframes is df_demo_VETSA, df_thickness_DK_VETSA, df_thickness_Schaefer_VETSA, df_area_DK_VETSA, df_area_Schaefer_VETSA, df_subcor_VETSA
- # Sequentially merge all DataFrames by 'Sub_ID'
- df_combined = df_demo_VETSA.copy() # Start with df_demo_VETSA as the base
- # Merge with each subsequent DataFrame
- df_combined = df_combined.merge(df_thickness_DK_VETSA, on='Sub_ID', how='outer')
- df_combined = df_combined.merge(df_thickness_Schaefer_VETSA, on='Sub_ID', how='outer')
- df_combined = df_combined.merge(df_area_DK_VETSA, on='Sub_ID', how='outer')
- df_combined = df_combined.merge(df_area_Schaefer_VETSA, on='Sub_ID', how='outer')
- df_combined = df_combined.merge(df_subcor_VETSA, on='Sub_ID', how='outer')
- # %%
- # Transform the APOE4 column: 1 for carrier (if '4' is present), 2 for non-carrier
- # Safely transform the APOE4 column, handling NaN values
- def transform_apoe4(value):
- try:
- # Check if value is NaN
- if pd.isna(value):
- return None # Or any other representation for missing values, e.g., 'Unknown'
- # Check if '4' is present in the string
- return '1' if '4' in str(value) else '2'
- except Exception as e:
- print(f"Error processing value: {value}, Error: {e}")
- return None # Handle unexpected cases gracefully
- # Apply the function
- df_combined['APOE4'] = df_combined['APOE4'].apply(transform_apoe4)
- # %%
- # for df_combined, make a new column 'Stroop_Test', which is same as 'Stroop Interference Norm-Based T-Score'
- df_combined['Stroop_Test'] = df_combined['Stroop Interference Norm-Based T-Score']
- # %%
- # Get the list of columns
- columns = df_combined.columns.tolist()
- # Remove 'Stroop_Test' from the columns list
- columns.remove('Stroop_Test')
- # Find the index of 'Stroop Interference Norm-Based T-Score'
- index = columns.index('Stroop Interference Norm-Based T-Score')
- # Insert 'Stroop_Test' immediately after 'Stroop Interference Norm-Based T-Score'
- columns.insert(index + 1, 'Stroop_Test')
- # Reorder the DataFrame
- df_combined = df_combined[columns]
- # %%
- # description of 'Digit Span Forward Raw', 'Digit Span Backward Raw'
- df_combined['Digit Span Forward Raw'] = df_combined['Digit Span Forward Raw'].astype(float)
- df_combined['Digit Span Backward Raw'] = df_combined['Digit Span Backward Raw'].astype(float)
- print(df_combined['Digit Span Forward Raw'].describe())
- print(df_combined['Digit Span Backward Raw'].describe())
- # %%
- # add a column 'Memory_Test_Digit'. The value of this column is the sum of 'Digit Span Forward Raw' and 'Digit Span Backward Raw' then divided by 30
- df_combined['Memory_Test_Digit'] = (df_combined['Digit Span Forward Raw'] + df_combined['Digit Span Backward Raw']) / 30
- print(df_combined['Memory_Test_Digit'].describe())
- # %%
- # Get the list of columns
- columns = df_combined.columns.tolist()
- # Remove 'Stroop_Test' from the columns list
- columns.remove('Memory_Test_Digit')
- # Find the index of 'Stroop Interference Norm-Based T-Score'
- index = columns.index('Stroop_Test')
- # Insert 'Stroop_Test' immediately after 'Stroop Interference Norm-Based T-Score'
- columns.insert(index + 1, 'Memory_Test_Digit')
- # Reorder the DataFrame
- df_combined = df_combined[columns]
- # %%
- print(df_combined['Letter-Number Sequencing Total Score'].describe())
- # %%
- df_combined['Memory_Test_Letter'] = df_combined['Letter-Number Sequencing Total Score'] / 21
- # %%
- # Get the list of columns
- columns = df_combined.columns.tolist()
- # Remove 'Stroop_Test' from the columns list
- columns.remove('Memory_Test_Letter')
- # Find the index of 'Stroop Interference Norm-Based T-Score'
- index = columns.index('Memory_Test_Digit')
- # Insert 'Stroop_Test' immediately after 'Stroop Interference Norm-Based T-Score'
- columns.insert(index + 1, 'Memory_Test_Letter')
- # Reorder the DataFrame
- df_combined = df_combined[columns]
- # %%
- # add 'SEX' column to the dataframe, all values are 1
- df_combined['SEX'] = '1'
- # %%
- # save the df_combined to a csv file
- # df_combined.to_csv(data_save_path + 'VETSA_dataset_renamed.csv')
- # %%
- # load the saved csv file
- df_combined = pd.read_csv(data_save_path + 'VETSA_dataset_renamed.csv')
- # %%
- # print range of Stroop
- print(f"Range of Stroop_Test: {df_combined['Stroop_Test'].min()} - {df_combined['Stroop_Test'].max()}")
- # plot histogram of Stroop_Test
- plt.figure(figsize=(8, 6))
- sns.histplot(df_combined['Stroop_Test'].dropna(), bins=30, kde=True)
- plt.title('Histogram of Stroop_Test')
- plt.xlabel('Stroop_Test Score')
- plt.ylabel('Frequency')
- plt.show()
- min_val = df_combined['Stroop_Test'].min() # 20.0
- max_val = df_combined['Stroop_Test'].max() # 65.250882948
- # Transform the Stroop_Test so that smaller values correspond to better performance
- df_combined['Stroop_Test'] = (max_val + min_val) - df_combined['Stroop_Test']
- # Now the range will be inverted.
- print(f"New range of Stroop_Test: {df_combined['Stroop_Test'].min()} - {df_combined['Stroop_Test'].max()}")
- # plot histogram of transformed Stroop_Test
- plt.figure(figsize=(8, 6))
- sns.histplot(df_combined['Stroop_Test'].dropna(), bins=30, kde=True)
- plt.title('Histogram of Transformed Stroop_Test')
- plt.xlabel('Transformed Stroop_Test Score')
- plt.ylabel('Frequency')
- plt.show()
- # %%
- # save back
- # df_combined.to_csv(data_save_path + 'VETSA_dataset_renamed.csv')
make_VETSA_dataset.py at commit dbfb1ca, under MIT · at the source
Overview
and 29 other authors
Ahmadreza Keihani15, Vincent Küppers7,1, Wen Liu1,2, Ahmad Mayeli15, Nasrin Mortazavi6, Julia Neitzel19,20,27, Gustav Nilsonne3,28, Matthew S. Panizzon10,11, Julia S. Rupp15, Amin Saberi1,29,2, Christina Schmidt6, Kai Spiegelhalder30, Beate Stubbe14, Sandra Tamm3, Sophia I. Thomopoulos26, Paul M. Thompson26, Sofie L. Valk1,29,2, Gilles Vandewalle6, Tina Thi Vo-Eckerle10,11, Henry Völzke31,32, Laura K. Waite1, Joseph Wexler33,3, Katharina Wittfeld16, Kaustubh R. Patil1,2, Antoine Weihs16,18, Simon B. Eickhoff1,2, Federico Raimondo1,2, Masoud Tahmasian1,2,7, ENIGMA-Sleep Working Group33 affiliations
- Institute of Neuroscience and Medicine, Brain and Behaviour (INM-7), Research Center Jülich, Jülich, Germany
- Institute of Systems Neuroscience, Medical Faculty and University Hospital Düsseldorf, Heinrich Heine University, Düsseldorf, Germany
- Department of Clinical Neuroscience, Karolinska Institutet, Stockholm, Sweden
- Department of Psychology, Stockholm University, Stockholm, Sweden
- Institute of Diagnostic Radiology and Neuroradiology, University Medicine Greifswald, Greifswald, Germany
- GIGA-CRC-Human Imaging, University of Liège, Liège, Belgium
- Department of Nuclear Medicine, Faculty of Medicine and University Hospital Cologne, University of Cologne, Cologne, Germany
- German Center for Neurodegenerative Diseases (DZNE), Bonn-Cologne, Germany
- Institute for Neuroscience and Medicine, Molecular Organization of the Brain (INM-2), Research Center Jülich, Jülich, Germany
- Center for Behavior Genetics of Aging, Department of Psychiatry, University of California San Diego
- Department of Psychiatry, University of California San Diego
- Department of Sleep and Human Factors Research, German Aerospace Center, Cologne, Germany
- Institute for Occupational, Social and Environmental Medicine, Medical Faculty, RWTH Aachen University, Aachen, Germany
- Department of Internal Medicine B-Cardiology, Pneumology, Infectious Diseases, Intensive Care Medicine, University Medicine Greifswald
- Department of Psychiatry, University of Pittsburgh, Pittsburgh, PA, USA
- Department of Psychiatry and Psychotherapy, University Medicine Greifswald, Greifswald, Germany
- Institute of Anatomy II, Medical Faculty, Heinrich Heine University, Düsseldorf, Germany
- German Center for Neurodegenerative Diseases (DZNE), Site Rostock/Greifswald, Greifswald, Germany
- Department of Radiology and Nuclear Medicine, Erasmus University Medical Centre, Rotterdam, the Netherlands
- Department of Epidemiology, Erasmus MC University Medical Center Rotterdam, Rotterdam, Netherlands
- Latin American Brain Health Institute (BrainLat), Universidad Adolfo Ibáñez, Santiago, Chile
- Global Brain Health Institute, Trinity College Dublin, Dublin, Ireland
- Department of Biophysics, School of Medicine, Istanbul Medipol University, 34815, Istanbul, Türkiye
- Barcelonaβeta Brain Research Center (BBRC), Pasqual Maragall Foundation, 08005, Barcelona, Spain
- Cognitive Neuroscience Center (CNC), Universidad de San Andrés, Buenos Aires, Argentina
- Imaging Genetics Center, Mark and Mary Stevens Neuroimaging and Informatics Institute, Keck School of Medicine of the University of Southern California, Los Angeles, CA, USA
- Department of Epidemiology, Harvard T. H. Chan School of Public Health, Boston, Massachusetts
- International Globally Distributed Organization for Research and Education (IGDORE), Stockholm, Sweden
- Max Planck Institute for Human Cognitive and Brain Sciences, Leipzig, Germany
- Department of Psychiatry and Psychotherapy, Medical Center – University of Freiburg, Faculty of Medicine, University of Freiburg, Germany
- Institute for Community Medicine, SHIP/Clinical-Epidemiological Research, University Medicine Greifswald, Greifswald, Germany
- German Centre for Cardiovascular Research (DZHK), Partner Site Greifswald, Greifswald, Germany
- Department of Psychology, Stanford University, Stanford, CA, USA
Abstract
Group-level studies have highlighted the roles of aging, poor sleep, and brain atrophy in cognitive performance (CP) but have overlooked inter-individual variability. We predict CP from feature sets (demographic, subjective/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 17 matches between paragraphs and lines of code.
OSF nhbkq
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
harveybi/ENIGMA-Sleep-Cognitive-Performance
dbfb1cae6e8de025b7fcdb82581695a57961f47b, 11 June 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
317 files
- hpc/
condor/ , Shell, 45 linesautogluon/ gen_submit_AutoGluon.sh - hpc/
condor/ , Shell, 45 linesautogluon/ gen_submit_CV_AutoGluon. sh - hpc/
condor/ , Shell, 45 linesautogluon/ gen_submit_CV_AutoGluon_ APOE.sh - hpc/
condor/ , Shell, 51 linesautogluon/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 50 linesautogluon/ loop_run_AutoGluon_SHIP_ Stroop_NAI.sh - hpc/
condor/ , Shell, 13 linesautogluon/ run_AutoGluon_SHIP_APOE_ rgo_Age.sh - hpc/
condor/ , Shell, 14 linesautogluon/ run_AutoGluon_SHIP_Stroo p_NAI.sh - hpc/
condor/ , Shell, 26 linesautogluon/ run_AutoGluon_SHIP_Stroo p_NAI_no_DK.sh - hpc/
condor/ , Shell, 26 linesautogluon/ run_AutoGluon_SHIP_Stroo p_log_no_DK.sh - hpc/
condor/ , Shell, 14 linesautogluon/ run_CV_AutoGluon_SHIP_St roop_NAI.sh - hpc/
condor/ , Shell, 13 linesautogluon/ run_SHAP-IQ_AutoGluon_SH IP_htcondor.sh - hpc/
condor/ , Shell, 13 linesautogluon/ run_SHAP_AutoGluon_SHIP_ Stroop_NAI.sh - hpc/
condor/ , Shell, 13 linesautogluon/ run_SHAP_AutoGluon_SHIP_ final.sh - hpc/
condor/ , Shell, 14 linesautogluon/ run_SHAP_AutoGluon_SHIP_ final_no_DK.sh - hpc/
condor/ , Shell, 13 linesautogluon/ run_SHAP_JURECA_AutoGluo n_SHIP_Stroop_NAI.sh - hpc/
condor/ , Shell, 12 linesbaselines/ dummy/ run_dummy_SHIP_Stroop_NA I.sh - hpc/
condor/ , Shell, 45 linesbaselines/ dummy/ submit_gen_dummy.sh - hpc/
condor/ , Shell, 12 linesbaselines/ linear_rg/ run_linear_SHIP_Stroop_N AI.sh - hpc/
condor/ , Shell, 45 linesbaselines/ linear_rg/ submit_gen_linear.sh - hpc/
condor/ , Shell, 13 linesbaselines/ rd_rg/ run_SHAP_ridge_SHIP_Stro op_NAI.sh - hpc/
condor/ , Shell, 12 linesbaselines/ rd_rg/ run_ridge_Liege_Stroop_W M.sh - hpc/
condor/ , Shell, 12 linesbaselines/ rd_rg/ run_ridge_SHIP_Stroop_NA I.sh - hpc/
condor/ , Shell, 45 linesbaselines/ rd_rg/ submit_gen_ridge.sh - hpc/
condor/ , Shell, 13 linesbaselines/ rf/ run_SHAP_rf_SHIP_Stroop_ NAI.sh - hpc/
condor/ , Shell, 13 linesbaselines/ rf/ run_rf_SHIP_Stroop_NAI.s h - hpc/
condor/ , Shell, 13 linesbaselines/ svm_linear/ run_SHAP_SVM-linear_SHIP _Stroop_NAI.sh - hpc/
condor/ , Shell, 13 linesbaselines/ svm_linear/ run_SVM-linear_SHIP_Stro op_NAI.sh - hpc/
condor/ , Shell, 13 linesbaselines/ svm_rbf/ run_SHAP_SVM-rbf_SHIP_St roop_NAI.sh - hpc/
condor/ , Shell, 12 linesbaselines/ svm_rbf/ run_SVM-rbf_Liege_Stroop _WM.sh - hpc/
condor/ , Shell, 13 linesbaselines/ svm_rbf/ run_SVM-rbf_SHIP_Stroop_ NAI.sh - hpc/
condor/ , Shell, 45 linesbaselines/ svm_rbf/ submit_gen_SVM-rbf.sh - hpc/
condor/ , Shell, 54 linesout_of_sample/ Juelich/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Juelich/ run_SHAP-IQ_AutoGluon_Ju elich.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Juelich/ run_SHAP_AutoGluon_Jueli ch.sh - hpc/
condor/ , Shell, 14 linesout_of_sample/ Juelich/ run_SHAP_AutoGluon_Jueli ch_no_DK.sh - hpc/
condor/ , Shell, 51 linesout_of_sample/ KI/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ KI/ run_SHAP-IQ_AutoGluon_KI .sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ KI/ run_SHAP_AutoGluon_KI.sh - hpc/
condor/ , Shell, 14 linesout_of_sample/ KI/ run_SHAP_AutoGluon_KI_no _DK.sh - hpc/
condor/ , Shell, 51 linesout_of_sample/ Liege/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Liege/ run_SHAP-IQ_AutoGluon_Li ege.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Liege/ run_SHAP_AutoGluon_Liege .sh - hpc/
condor/ , Shell, 14 linesout_of_sample/ Liege/ run_SHAP_AutoGluon_Liege _no_DK.sh - hpc/
condor/ , Shell, 51 linesout_of_sample/ Pitts/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Pitts/ run_SHAP-IQ_AutoGluon_Pi tts.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ Pitts/ run_SHAP_AutoGluon_Pitts .sh - hpc/
condor/ , Shell, 14 linesout_of_sample/ Pitts/ run_SHAP_AutoGluon_Pitts _no_DK.sh - hpc/
condor/ , Shell, 51 linesout_of_sample/ VETSA/ gen_submit_SHAP_AutoGluo n.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ VETSA/ run_SHAP-IQ_AutoGluon_VE TSA.sh - hpc/
condor/ , Shell, 13 linesout_of_sample/ VETSA/ run_SHAP_AutoGluon_VETSA .sh - hpc/
condor/ , Shell, 14 linesout_of_sample/ VETSA/ run_SHAP_AutoGluon_VETSA _no_DK.sh - hpc/
condor/ , Shell, 4 linesout_of_sample/ data_extract_scripts/ cat_after_pre_BIDS.sh - hpc/
condor/ , Shell, 4 linesout_of_sample/ data_extract_scripts/ cat_after_pre_normal.sh - hpc/
condor/ , Shell, 5 linesout_of_sample/ data_extract_scripts/ cat_preprocessing_BIDS.s h - hpc/
condor/ , Shell, 4 linesout_of_sample/ data_extract_scripts/ cat_preprocessing_normal .sh - hpc/
condor/ , Shell, 24 linesout_of_sample/ run_AutoGluon_validates. sh - hpc/
condor/ , Shell, 24 linesout_of_sample/ run_XGBoost_validates.sh - hpc/
condor/ , Shell, 22 linesout_of_sample/ run_preprocessor_make.sh - hpc/
condor/ , Shell, 44 linespreprocessing/ gen_submit_condor_FreeSu rfer.sh - hpc/
condor/ , Shell, 18 linespreprocessing/ loop_run_AutoGluon_SHIP_ Stroop_NAI_no_DK.sh - hpc/
condor/ , Shell, 16 linespreprocessing/ recon-all_Juelich_FreeSu rfer.sh - hpc/
condor/ , Shell, 45 linesxgboost/ gen_submit_SHAP_XGBoost. sh - hpc/
condor/ , Shell, 52 linesxgboost/ gen_submit_XGBoost_htcon dor.sh - hpc/
condor/ , Shell, 19 linesxgboost/ run_CV_XGBoost_SHIP_APOE _Stroop_NAI.sh - hpc/
condor/ , Shell, 13 linesxgboost/ run_SHAP_XGBoost_SHIP_St roop_NAI.sh - hpc/
condor/ , Shell, 13 linesxgboost/ run_XGBoost_SHIP_APOE_rg o_Age.sh - hpc/
condor/ , Shell, 13 linesxgboost/ run_XGBoost_SHIP_Stroop_ NAI.sh - hpc/
condor/ , Shell, 13 linesxgboost/ run_XGBoost_SHIP_htcondo r.sh - hpc/
slurm/ , Python, 555 linesjureca/ AutoGluon/ AutoGluon_SHIP_APOE_Stro op_NAI.py - hpc/
slurm/ , Python, 615 linesjureca/ AutoGluon/ AutoGluon_SHIP_Liege_APO E_Stroop_NAI.py - hpc/
slurm/ , Python, 576 linesjureca/ AutoGluon/ AutoGluon_SHIP_Stroop_NA I.py - hpc/
slurm/ , Python, 576 linesjureca/ AutoGluon/ CV_AutoGluon_SHIP_Stroop _NAI.py - hpc/
slurm/ , Python, 415 linesjureca/ AutoGluon/ SHAP_AutoGluon_SHIP_Stro op_NAI.py - hpc/
slurm/ , Shell, 13 linesjureca/ AutoGluon/ run_AutoGluon_SHIP_Stroo p_NAI.sh - hpc/
slurm/ , Shell, 33 linesjureca/ AutoGluon/ sbatch_AutoGluon_SHIP_AP OE_Stroop_NAI.sh - hpc/
slurm/ , Shell, 32 linesjureca/ AutoGluon/ sbatch_AutoGluon_SHIP_Li ege_APOE_Stroop_NAI.sh - hpc/
slurm/ , Shell, 31 linesjureca/ AutoGluon/ sbatch_AutoGluon_SHIP_St roop_NAI.sh - hpc/
slurm/ , Shell, 24 linesjureca/ AutoGluon/ sbatch_SHAP_AutoGluon_SH IP_Stroop_NAI.sh - hpc/
slurm/ , Shell, 23 linesjureca/ AutoGluon/ submit_sbatchs_AutoGluon .sh - hpc/
slurm/ , Shell, 24 linesjureca/ AutoGluon/ submit_sbatchs_AutoGluon _SHIP_APOE.sh - hpc/
slurm/ , Shell, 30 linesjureca/ AutoGluon/ submit_sbatchs_AutoGluon _SHIP_Liege_APOE.sh - hpc/
slurm/ , Shell, 23 linesjureca/ AutoGluon/ submit_sbatchs_SHAP_Auto Gluon.sh - hpc/
slurm/ , Shell, 11 linesjureca/ AutoGluon/ submit_test_sbatch_AutoG luon_SHIP_APOE_Stroop_NA I.sh - hpc/
slurm/ , Shell, 11 linesjureca/ AutoGluon/ submit_test_sbatch_AutoG luon_SHIP_Liege_APOE_Str oop_NAI.sh - hpc/
slurm/ , Shell, 11 linesjureca/ AutoGluon/ submit_test_sbatchs_Auto Gluon.sh - hpc/
slurm/ , Shell, 33 linesjureca/ AutoGluon/ test_sbatch_AutoGluon_SH IP_Stroop_NAI.sh - hpc/
slurm/ , Python, 555 linesjureca/ XGBoost/ XGBoost_SHIP_Stroop_NAI. py - hpc/
slurm/ , Shell, 24 linesjureca/ XGBoost/ sbatch_XGBoost_SHIP_Stro op_NAI.sh - hpc/
slurm/ , Shell, 23 linesjureca/ XGBoost/ submit_sbatchs_XGBoost.s h - hpc/
slurm/ , Python, 1 linejureca/ lib/ __init__.py - hpc/
slurm/ , Python, 456 linesjureca/ lib/ advanced_ml_pipeline.py - hpc/
slurm/ , Python, 406 linesjureca/ lib/ ml_pipeline.py - hpc/
slurm/ , Python, 174 linesjureca/ lib/ ml_pipeline_old.py - hpc/
slurm/ , Python, 217 linesjureca/ lib/ model_compare_stats.py - hpc/
slurm/ , Python, 395 linesjureca/ lib/ models_old.py - hpc/
slurm/ , Python, 559 linesjureca/ lib/ utils.py - scripts/
01_data_preparation/ , Python, 70 linesFreeSurfer_formatting_Ju elich.py - scripts/
01_data_preparation/ , Python, 116 linesLiege_data_checking.py - scripts/
01_data_preparation/ , Python, 1,745 linesevery_data_checking.py - scripts/
01_data_preparation/ , Python, 170 linesevery_data_outlier_check ing.py - scripts/
01_data_preparation/ , Python, 312 linesfs_results_extract_ENIGM A.py - scripts/
01_data_preparation/ , Python, 148 lines, 1 matchmake_EMC_dataset.py - scripts/
01_data_preparation/ , Python, 358 linesmake_Juelich_dataset.py - scripts/
01_data_preparation/ , Python, 164 linesmake_KI_dataset.py - scripts/
01_data_preparation/ , Python, 173 linesmake_Pitts_dataset.py - scripts/
01_data_preparation/ , Python, 338 lines, 3 matchesmake_VETSA_dataset.py - scripts/
01_data_preparation/ , Python, 86 linesout_of_sample_extract/ ENIGMA_cat_results_extra ct_BIDS.py - scripts/
01_data_preparation/ , Python, 88 linesout_of_sample_extract/ ENIGMA_cat_results_extra ct_normal.py - scripts/
01_data_preparation/ , Shell, 4 linesout_of_sample_extract/ cat_after_pre_BIDS.sh - scripts/
01_data_preparation/ , Shell, 4 linesout_of_sample_extract/ cat_after_pre_normal.sh - scripts/
01_data_preparation/ , Shell, 5 linesout_of_sample_extract/ cat_preprocessing_BIDS.s h - scripts/
01_data_preparation/ , Shell, 4 linesout_of_sample_extract/ cat_preprocessing_normal .sh - scripts/
01_data_preparation/ , Python, 90 linesout_of_sample_extract/ cat_results_extract_for_ condor.py - scripts/
01_data_preparation/ , Python, 309 linesout_of_sample_extract/ fs_results_extract_ENIGM A.py - scripts/
01_data_preparation/ , Python, 52 linesout_of_sample_extract/ fs_resutls_extract.py - scripts/
02_model_training/ , Python, 656 linesautogluon/ AutoGluon_SHIP_APOE_rgo_ Age.py - scripts/
02_model_training/ , Python, 705 linesautogluon/ AutoGluon_SHIP_Stroop_NA I.py - scripts/
02_model_training/ , Python, 468 linesautogluon/ AutoGluon_SHIP_Stroop_NA I_no_DK.py - scripts/
02_model_training/ , Python, 476 linesautogluon/ AutoGluon_SHIP_Stroop_lo g_no_DK.py - scripts/
02_model_training/ , Python, 578 linesautogluon/ CV_AutoGluon_SHIP_Stroop _NAI.py - scripts/
02_model_training/ , Python, 446 linesautogluon/ Predict_oof_for_CV_resul ts.py - scripts/
02_model_training/ , Python, 635 linesautogluon/ Refit_CV_AutoGluon_SHIP_ Stroop_NAI.py - scripts/
02_model_training/ , Python, 370 linesautogluon/ SHAP-IQ_AutoGluon_SHIP_h tcondor.py - scripts/
02_model_training/ , Python, 44 linesautogluon/ SHAP-IQ_results_checking .py - scripts/
02_model_training/ , Python, 1,228 linesautogluon/ SHAP-cluster_rules_AutoG luon.py - scripts/
02_model_training/ , Python, 370 linesautogluon/ SHAP_AutoGluon_SHIP_Stro op_NAI.py - scripts/
02_model_training/ , Python, 263 linesautogluon/ SHAP_AutoGluon_SHIP_fina l.py - scripts/
02_model_training/ , Python, 263 linesautogluon/ SHAP_AutoGluon_SHIP_fina l_no_DK.py - scripts/
02_model_training/ , Python, 415 linesautogluon/ SHAP_JURECA_AutoGluon_SH IP_Stroop_NAI.py - scripts/
02_model_training/ , Python, 27 linesautogluon/ dags/ gen_dag.py - scripts/
02_model_training/ , Python, 721 linesautogluon/ plot_SHAP_AutoGluon_SHIP _final.py - scripts/
02_model_training/ , Python, 1,357 lines, 1 matchautogluon/ plot_SHAP_cluster_SHAP-I Q_AutoGluon_SHIP.py - scripts/
02_model_training/ , Python, 1,426 lines, 1 matchautogluon/ plot_test_SHAP_cluster_S HAP-IQ_AutoGluon_SHIP.py - scripts/
02_model_training/ , Python, 60 linesautogluon/ results_completement_che cking.py - scripts/
02_model_training/ , Python, 522 linesautogluon/ test_Refit_CV_AutoGluon_ SHIP_Stroop_NAI.py - scripts/
02_model_training/ , Python, 473 linesbaselines/ dummy/ dummy_SHIP_Stroop_NAI.py - scripts/
02_model_training/ , Python, 514 linesbaselines/ linear_rg/ linear_SHIP_Stroop_NAI.p y - scripts/
02_model_training/ , Python, 401 linesbaselines/ rd_rg/ SHAP_ridge_SHIP_Stroop_N AI.py - scripts/
02_model_training/ , Python, 32 linesbaselines/ rd_rg/ dags/ gen_ridge_dag.py - scripts/
02_model_training/ , Python, 230 linesbaselines/ rd_rg/ ridge_Liege_Stroop_WM.py - scripts/
02_model_training/ , Python, 256 linesbaselines/ rd_rg/ ridge_Liege_WM.py - scripts/
02_model_training/ , Python, 474 linesbaselines/ rd_rg/ ridge_SHIP_Stroop_NAI.py - scripts/
02_model_training/ , Python, 402 linesbaselines/ rf/ SHAP_rf_SHIP_Stroop_NAI. py - scripts/
02_model_training/ , Python, 31 linesbaselines/ rf/ dags/ gen_rf_dag.py - scripts/
02_model_training/ , Python, 589 linesbaselines/ rf/ htcondor_rf_SHIP_Stroop_ NAI.py - scripts/
02_model_training/ , Python, 475 linesbaselines/ rf/ rf_SHIP_Stroop_NAI.py - scripts/
02_model_training/ , Python, 397 linesbaselines/ svm_linear/ SHAP_SVM-linear_SHIP_Str oop_NAI.py - scripts/
02_model_training/ , Python, 471 linesbaselines/ svm_linear/ SVM-linear_SHIP_Stroop_N AI.py - scripts/
02_model_training/ , Python, 31 linesbaselines/ svm_linear/ dags/ gen_SVM-linear_dag.py - scripts/
02_model_training/ , Python, 397 linesbaselines/ svm_rbf/ SHAP_SVM-rbf_SHIP_Stroop _NAI.py - scripts/
02_model_training/ , Python, 230 linesbaselines/ svm_rbf/ SVM-rbf_Liege_Stroop_WM. py - scripts/
02_model_training/ , Python, 471 linesbaselines/ svm_rbf/ SVM-rbf_SHIP_Stroop_NAI. py - scripts/
02_model_training/ , Python, 31 linesbaselines/ svm_rbf/ dags/ gen_SVM-rbf_dag.py - scripts/
02_model_training/ , Python, 429 linesxgboost/ CV_XGBoost_SHIP_APOE_Str oop_NAI.py - scripts/
02_model_training/ , Python, 197 linesxgboost/ SHAP_XGBoost_SHIP_Only.p y - scripts/
02_model_training/ , Python, 397 linesxgboost/ SHAP_XGBoost_SHIP_Stroop _NAI.py - scripts/
02_model_training/ , Python, 344 linesxgboost/ SHAP_XGBoost_SHIP_final. py - scripts/
02_model_training/ , Python, 385 linesxgboost/ XGBoost_EMC_validate_Str oop.py - scripts/
02_model_training/ , Python, 712 linesxgboost/ XGBoost_SHIP_APOE_rgo_Ag e.py - scripts/
02_model_training/ , Python, 569 linesxgboost/ XGBoost_SHIP_Stroop_NAI. py - scripts/
02_model_training/ , Python, 608 linesxgboost/ XGBoost_SHIP_htcondor.py - scripts/
02_model_training/ , Python, 526 linesxgboost/ XGBoost_SHIP_htcondor_1. py - scripts/
02_model_training/ , Python, 530 linesxgboost/ XGBoost_SHIP_htcondor_3. py - scripts/
02_model_training/ , Python, 559 linesxgboost/ XGBoost_SHIP_htcondor_4. py - scripts/
02_model_training/ , Python, 72 linesxgboost/ check_code_status.py - scripts/
02_model_training/ , Python, 1,223 lines, 1 matchxgboost/ code_references.py - scripts/
02_model_training/ , Python, 31 linesxgboost/ dags/ gen_XGBoost_dag.py - scripts/
02_model_training/ , Python, 1,296 linesxgboost/ plot_SHAP_cluster_SHAP-I Q_XGBoost_SHIP.py - scripts/
02_model_training/ , Python, 48 linesxgboost/ preprocessor_check.py - scripts/
02_model_training/ , Python, 283 linesxgboost/ test_transformer.py - scripts/
03_out_of_sample_validat , Python, 228 linesion/ EMC/ AutoGluon_EMC_validate_S troop.py - scripts/
03_out_of_sample_validat , Python, 145 linesion/ EMC/ AutoGluon_replot.py - scripts/
03_out_of_sample_validat , Python, 89 linesion/ EMC/ Demo_info_EMC.py - scripts/
03_out_of_sample_validat , Python, 229 linesion/ EMC/ SHAP-IQ_AutoGluon_EMC.py - scripts/
03_out_of_sample_validat , Python, 916 linesion/ EMC/ SHAP_AutoGluon_EMC.py - scripts/
03_out_of_sample_validat , Python, 917 linesion/ EMC/ SHAP_subgroup_EMC.py - scripts/
03_out_of_sample_validat , Python, 226 linesion/ EMC/ XGBoost_EMC_validate_Str oop.py - scripts/
03_out_of_sample_validat , Python, 147 linesion/ EMC/ make_AutoGluon_plots.py - scripts/
03_out_of_sample_validat , Python, 148 linesion/ EMC/ make_EMC_dataset.py - scripts/
03_out_of_sample_validat , Python, 43 linesion/ EMC/ run_AutoGluon_EMC_valida te_Stroop.py - scripts/
03_out_of_sample_validat , Python, 26 linesion/ EMC/ run_Demo_info_EMC.py - scripts/
03_out_of_sample_validat , Python, 40 linesion/ EMC/ run_SHAP-IQ_AutoGluon_EM C.py - scripts/
03_out_of_sample_validat , Python, 40 linesion/ EMC/ run_SHAP_AutoGluon_EMC.p y - scripts/
03_out_of_sample_validat , Python, 158 linesion/ EMC/ run_SHAP_subgroup_EMC.py - scripts/
03_out_of_sample_validat , Python, 44 linesion/ EMC/ run_XGBoost_EMC_validate _Stroop.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ EMC/ run_make_AutoGluon_plots .py - scripts/
03_out_of_sample_validat , Python, 262 linesion/ Juelich/ AutoGluon_Juelich_valida te.py - scripts/
03_out_of_sample_validat , Python, 344 linesion/ Juelich/ SHAP-IQ_AutoGluon_Juelic h.py - scripts/
03_out_of_sample_validat , Python, 326 linesion/ Juelich/ SHAP_AutoGluon_Juelich.p y - scripts/
03_out_of_sample_validat , Python, 326 linesion/ Juelich/ SHAP_AutoGluon_Juelich_n o_DK.py - scripts/
03_out_of_sample_validat , Python, 289 linesion/ Juelich/ XGBoost_Juelich_validate .py - scripts/
03_out_of_sample_validat , Python, 208 linesion/ Juelich/ make_Juelich_dataset.py - scripts/
03_out_of_sample_validat , Python, 58 linesion/ Juelich/ run_AutoGluon_Juelich_va lidate.py - scripts/
03_out_of_sample_validat , Python, 58 linesion/ Juelich/ run_XGBoost_Juelich_vali date.py - scripts/
03_out_of_sample_validat , Python, 236 linesion/ KI/ AutoGluon_KI_validate.py - scripts/
03_out_of_sample_validat , Python, 329 linesion/ KI/ SHAP-IQ_AutoGluon_KI.py - scripts/
03_out_of_sample_validat , Python, 311 linesion/ KI/ SHAP_AutoGluon_KI.py - scripts/
03_out_of_sample_validat , Python, 311 linesion/ KI/ SHAP_AutoGluon_KI_no_DK. py - scripts/
03_out_of_sample_validat , Python, 250 linesion/ KI/ XGBoost_KI_validate.py - scripts/
03_out_of_sample_validat , Python, 215 linesion/ KI/ plot_SHAP_AutoGluon_KI.p y - scripts/
03_out_of_sample_validat , Python, 56 linesion/ KI/ run_AutoGluon_KI_validat e.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ KI/ run_XGBoost_KI_validate. py - scripts/
03_out_of_sample_validat , Python, 239 linesion/ Liege/ AutoGluon_Liege_validate .py - scripts/
03_out_of_sample_validat , Python, 331 linesion/ Liege/ SHAP-IQ_AutoGluon_Liege. py - scripts/
03_out_of_sample_validat , Python, 318 linesion/ Liege/ SHAP_AutoGluon_Liege.py - scripts/
03_out_of_sample_validat , Python, 317 linesion/ Liege/ SHAP_AutoGluon_Liege_no_ DK.py - scripts/
03_out_of_sample_validat , Python, 240 linesion/ Liege/ SHAP_XGBoost_Liege.py - scripts/
03_out_of_sample_validat , Python, 254 linesion/ Liege/ XGBoost_Liege_validate.p y - scripts/
03_out_of_sample_validat , Python, 215 linesion/ Liege/ plot_SHAP_AutoGluon_Lieg e.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ Liege/ run_AutoGluon_Liege_vali date.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ Liege/ run_XGBoost_Liege_valida te.py - scripts/
03_out_of_sample_validat , Python, 858 linesion/ OOCV_SHAP-cluster_rules_ AutoGluon.py - scripts/
03_out_of_sample_validat , Python, 254 linesion/ Pitts/ AutoGluon_Pitts_validate .py - scripts/
03_out_of_sample_validat , Python, 332 linesion/ Pitts/ SHAP-IQ_AutoGluon_Pitts. py - scripts/
03_out_of_sample_validat , Python, 314 linesion/ Pitts/ SHAP_AutoGluon_Pitts.py - scripts/
03_out_of_sample_validat , Python, 314 linesion/ Pitts/ SHAP_AutoGluon_Pitts_no_ DK.py - scripts/
03_out_of_sample_validat , Python, 278 linesion/ Pitts/ XGBoost_Pitts_validate.p y - scripts/
03_out_of_sample_validat , Python, 56 linesion/ Pitts/ run_AutoGluon_Pitts_vali date.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ Pitts/ run_XGBoost_Pitts_valida te.py - scripts/
03_out_of_sample_validat , Python, 258 linesion/ VETSA/ AutoGluon_VETSA_validate .py - scripts/
03_out_of_sample_validat , Python, 349 linesion/ VETSA/ SHAP-IQ_AutoGluon_VETSA. py - scripts/
03_out_of_sample_validat , Python, 331 linesion/ VETSA/ SHAP_AutoGluon_VETSA.py - scripts/
03_out_of_sample_validat , Python, 331 linesion/ VETSA/ SHAP_AutoGluon_VETSA_no_ DK.py - scripts/
03_out_of_sample_validat , Python, 283 linesion/ VETSA/ XGBoost_VETSA_validate.p y - scripts/
03_out_of_sample_validat , Python, 56 linesion/ VETSA/ run_AutoGluon_VETSA_vali date.py - scripts/
03_out_of_sample_validat , Python, 56 linesion/ VETSA/ run_XGBoost_VETSA_valida te.py - scripts/
03_out_of_sample_validat , Python, 82 linesion/ cp_AutoGluon_models.py - scripts/
03_out_of_sample_validat , Python, 58 linesion/ cp_XGBoost_models.py - scripts/
03_out_of_sample_validat , Python, 86 linesion/ data_extract_scripts/ ENIGMA_cat_results_extra ct_BIDS.py - scripts/
03_out_of_sample_validat , Python, 88 linesion/ data_extract_scripts/ ENIGMA_cat_results_extra ct_normal.py - scripts/
03_out_of_sample_validat , Python, 90 linesion/ data_extract_scripts/ cat_results_extract_for_ condor.py - scripts/
03_out_of_sample_validat , Python, 309 linesion/ data_extract_scripts/ fs_results_extract_ENIGM A.py - scripts/
03_out_of_sample_validat , Python, 52 linesion/ data_extract_scripts/ fs_resutls_extract.py - scripts/
03_out_of_sample_validat , Python, 529 lines, 1 matchion/ lib/ AutoGluon_pipeline.py - scripts/
03_out_of_sample_validat , Python, 488 linesion/ lib/ XGBoost_pipeline.py - scripts/
03_out_of_sample_validat , Python, 662 linesion/ lib/ utils.py - scripts/
03_out_of_sample_validat , Python, 976 linesion/ new_OOCV_SHAP-cluster_ru les_AutoGluon.py - scripts/
03_out_of_sample_validat , Python, 469 linesion/ plot_validation_cross_si tes.py - scripts/
03_out_of_sample_validat , Python, 162 linesion/ preprocessor_make_save.p y - scripts/
03_out_of_sample_validat , Python, 33 linesion/ rename_shap_explanation_ shap-iq_ivs.py - scripts/
04_shap_analysis/ , Python, 370 linesautogluon/ SHAP-IQ_AutoGluon_SHIP_h tcondor.py - scripts/
04_shap_analysis/ , Python, 44 linesautogluon/ SHAP-IQ_results_checking .py - scripts/
04_shap_analysis/ , Python, 1,228 linesautogluon/ SHAP-cluster_rules_AutoG luon.py - scripts/
04_shap_analysis/ , Python, 370 linesautogluon/ SHAP_AutoGluon_SHIP_Stro op_NAI.py - scripts/
04_shap_analysis/ , Python, 263 linesautogluon/ SHAP_AutoGluon_SHIP_fina l.py - scripts/
04_shap_analysis/ , Python, 263 linesautogluon/ SHAP_AutoGluon_SHIP_fina l_no_DK.py - scripts/
04_shap_analysis/ , Python, 415 linesautogluon/ SHAP_JURECA_AutoGluon_SH IP_Stroop_NAI.py - scripts/
04_shap_analysis/ , Python, 721 linesautogluon/ plot_SHAP_AutoGluon_SHIP _final.py - scripts/
04_shap_analysis/ , Python, 1,357 linesautogluon/ plot_SHAP_cluster_SHAP-I Q_AutoGluon_SHIP.py - scripts/
04_shap_analysis/ , Python, 1,426 linesautogluon/ plot_test_SHAP_cluster_S HAP-IQ_AutoGluon_SHIP.py - scripts/
04_shap_analysis/ , Python, 229 linesout_of_sample/ EMC/ SHAP-IQ_AutoGluon_EMC.py - scripts/
04_shap_analysis/ , Python, 916 linesout_of_sample/ EMC/ SHAP_AutoGluon_EMC.py - scripts/
04_shap_analysis/ , Python, 917 linesout_of_sample/ EMC/ SHAP_subgroup_EMC.py - scripts/
04_shap_analysis/ , Python, 40 linesout_of_sample/ EMC/ run_SHAP-IQ_AutoGluon_EM C.py - scripts/
04_shap_analysis/ , Python, 40 linesout_of_sample/ EMC/ run_SHAP_AutoGluon_EMC.p y - scripts/
04_shap_analysis/ , Python, 158 linesout_of_sample/ EMC/ run_SHAP_subgroup_EMC.py - scripts/
04_shap_analysis/ , Python, 344 linesout_of_sample/ Juelich/ SHAP-IQ_AutoGluon_Juelic h.py - scripts/
04_shap_analysis/ , Python, 326 linesout_of_sample/ Juelich/ SHAP_AutoGluon_Juelich.p y - scripts/
04_shap_analysis/ , Python, 326 linesout_of_sample/ Juelich/ SHAP_AutoGluon_Juelich_n o_DK.py - scripts/
04_shap_analysis/ , Python, 329 linesout_of_sample/ KI/ SHAP-IQ_AutoGluon_KI.py - scripts/
04_shap_analysis/ , Python, 311 linesout_of_sample/ KI/ SHAP_AutoGluon_KI.py - scripts/
04_shap_analysis/ , Python, 311 linesout_of_sample/ KI/ SHAP_AutoGluon_KI_no_DK. py - scripts/
04_shap_analysis/ , Python, 215 linesout_of_sample/ KI/ plot_SHAP_AutoGluon_KI.p y - scripts/
04_shap_analysis/ , Python, 331 linesout_of_sample/ Liege/ SHAP-IQ_AutoGluon_Liege. py - scripts/
04_shap_analysis/ , Python, 318 linesout_of_sample/ Liege/ SHAP_AutoGluon_Liege.py - scripts/
04_shap_analysis/ , Python, 317 linesout_of_sample/ Liege/ SHAP_AutoGluon_Liege_no_ DK.py - scripts/
04_shap_analysis/ , Python, 240 linesout_of_sample/ Liege/ SHAP_XGBoost_Liege.py - scripts/
04_shap_analysis/ , Python, 215 linesout_of_sample/ Liege/ plot_SHAP_AutoGluon_Lieg e.py - scripts/
04_shap_analysis/ , Python, 858 linesout_of_sample/ OOCV_SHAP-cluster_rules_ AutoGluon.py - scripts/
04_shap_analysis/ , Python, 332 linesout_of_sample/ Pitts/ SHAP-IQ_AutoGluon_Pitts. py - scripts/
04_shap_analysis/ , Python, 314 linesout_of_sample/ Pitts/ SHAP_AutoGluon_Pitts.py - scripts/
04_shap_analysis/ , Python, 314 linesout_of_sample/ Pitts/ SHAP_AutoGluon_Pitts_no_ DK.py - scripts/
04_shap_analysis/ , Python, 349 linesout_of_sample/ VETSA/ SHAP-IQ_AutoGluon_VETSA. py - scripts/
04_shap_analysis/ , Python, 331 linesout_of_sample/ VETSA/ SHAP_AutoGluon_VETSA.py - scripts/
04_shap_analysis/ , Python, 331 linesout_of_sample/ VETSA/ SHAP_AutoGluon_VETSA_no_ DK.py - scripts/
04_shap_analysis/ , Python, 976 linesout_of_sample/ new_OOCV_SHAP-cluster_ru les_AutoGluon.py - scripts/
04_shap_analysis/ , Python, 33 linesout_of_sample/ rename_shap_explanation_ shap-iq_ivs.py - scripts/
05_figures_tables/ , Python, 219 linesOOCV_model_feature_stats .py - scripts/
05_figures_tables/ , Python, 155 linesall_model_feature_stats. py - scripts/
05_figures_tables/ , Python, 200 linescheck_results_exist.py - scripts/
05_figures_tables/ , Python, 55 linescp_Results2Results_makin g.py - scripts/
05_figures_tables/ , Python, 425 linescross_model_results_stat s.py - scripts/
05_figures_tables/ , Python, 62 linesdemographic_vis.py - scripts/
05_figures_tables/ , Python, 45 linesearth_map_making.py - scripts/
05_figures_tables/ , Python, 187 linesearth_map_making2.py - scripts/
05_figures_tables/ , Python, 182 linesearth_map_making3.py - scripts/
05_figures_tables/ , Python, 61 linesenv_versions.py - scripts/
05_figures_tables/ , Python, 254 linesfeature_distribution.py - scripts/
05_figures_tables/ , Python, 842 linesnew_plot_SHAP_IQ_Sleep_C ov.py - scripts/
05_figures_tables/ , Python, 481 linesnew_plot_SHAP_bar_beeswa rm.py - scripts/
05_figures_tables/ , Python, 1,972 lines, 2 matchesnew_plot_SHAP_brain.py - scripts/
05_figures_tables/ , Python, 1,721 lines, 2 matchesnew_plot_SHAP_brain_no_D K.py - scripts/
05_figures_tables/ , Python, 490 lines, 2 matchesnew_plot_cross_model_res ults.py - scripts/
05_figures_tables/ , Python, 586 linesnew_plot_single_model_re sults.py - scripts/
05_figures_tables/ , Python, 117 linesplot_APOE_results.py - scripts/
05_figures_tables/ , Python, 739 linesplot_SHAP_bar_beeswarm.p y - scripts/
05_figures_tables/ , Python, 1,015 linesplot_cross_model_results .py - scripts/
05_figures_tables/ , Python, 900 linesplot_cross_single_model_ results.py - scripts/
05_figures_tables/ , Python, 582 linesplot_single_model_result s.py - scripts/
05_figures_tables/ , Python, 132 linesplotting.py - scripts/
05_figures_tables/ , Python, 176 linessingle_model_results_sta ts.py - src/
enigma_sleep_cognition/ , Python, 481 lines, 2 matchesAutoGluon_pipeline.py - src/
enigma_sleep_cognition/ , Python, 480 linesAutoGluon_pipeline_GPU.p y - src/
enigma_sleep_cognition/ , Python, 497 lines, 1 matchAutoGluon_pipeline_log.p y - src/
enigma_sleep_cognition/ , Python, 232 linesCV_XGBoost_pipeline.py - src/
enigma_sleep_cognition/ , Python, 433 linesXGBoost_pipeline.py - src/
enigma_sleep_cognition/ , Python, 3 lines__init__.py - src/
enigma_sleep_cognition/ , Python, 466 linesadvanced_ml_pipeline.py - src/
enigma_sleep_cognition/ , Python, 409 lineshtcondor_ml_pipeline.py - src/
enigma_sleep_cognition/ , Python, 103 linesjulearn_target_confound_ remover.py - src/
enigma_sleep_cognition/ , Python, 418 linesml_pipeline.py - src/
enigma_sleep_cognition/ , Python, 174 linesml_pipeline_old.py - src/
enigma_sleep_cognition/ , Python, 217 linesmodel_compare_stats.py - src/
enigma_sleep_cognition/ , Python, 395 linesmodels_old.py - src/
enigma_sleep_cognition/ , Python, 667 linesutils.py - LICENSE, License, 22 lines
- README.md, Text, 86 lines
Code availability
This study was preregistered on the Open Science Framework (OSF, https://
Reproduced under the paper's license (CC BY), from the paper cited above.
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:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 315 scripts, each with its path and the digest of its content;
- 17 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- doi:10.18112/
0penneur0.ds000201.v1.0. , at the source; found in the references3 - openneuro:ds000201, at OpenNeuro; found in “Data availability”
Data availability
The data used in this study were collected independently at participating sites and analyzed following the standardized ENIGMA protocols. Due to participant privacy considerations, ethical restrictions, and site-level data-sharing agreements, individual-level data cannot be made publicly available. Data requests will be reviewed by the respective site and must comply with local ethics approvals and data-use agreements. For the Greifswald SHIP-Trend cohort, data access applications should be submitted through the SHIP transfer portal at 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 2, 28 September 2026
- Language: n/a → en
- Funding: added Wellcome Trust
Version 1, 27 September 2026: the first record
Recorded: type, journal, dates, 49 authors, 76 references.
Cite
This paper
Bi, H., Åkerstedt, T., Bülow, R., Deantoni, M., Drzezga, A., Elman, J. A., Elmenhorst, D., Elmenhorst, E.-M., Ewert, R., Fennema-Notestine, C., Ferrarelli, F., Frenzel, S., von Gall, C., Genon, S., Grabe, H. J., Nguyen Ho, P. T., Hoepel, S. J., Hoffstaedter, F., Ibanez, A., . . . ENIGMA-Sleep Working Group. (2026). Prediction of cognitive performance by demographics, sleep, and brain morphometry: machine learning findings from ENIGMA-Sleep Working Group. Research Square (preprint). https://
BibTeX
@article{bi2026predictio
author = {Bi, Hanwen and Åkerstedt, Torbjörn and Bülow, Robin and Deantoni, Michele and Drzezga, Alexander and Elman, Jeremy A. and Elmenhorst, David and Elmenhorst, Eva-Maria and Ewert, Ralf and Fennema-Notestine, Christine and Ferrarelli, Fabio and Frenzel, Stefan and von Gall, Charlotte and Genon, Sarah and Grabe, Hans J. and Nguyen Ho, Phuong Thuy and Hoepel, Sanne J.W. and Hoffstaedter, Felix and Ibanez, Agustin and Jahanshad, Neda and Keihani, Ahmadreza and Küppers, Vincent and Liu, Wen and Mayeli, Ahmad and Mortazavi, Nasrin and Neitzel, Julia and Nilsonne, Gustav and Panizzon, Matthew S. and Rupp, Julia S. and Saberi, Amin and Schmidt, Christina and Spiegelhalder, Kai and Stubbe, Beate and Tamm, Sandra and Thomopoulos, Sophia I. and Thompson, Paul M. and Valk, Sofie L. and Vandewalle, Gilles and Vo-Eckerle, Tina Thi and Völzke, Henry and Waite, Laura K. and Wexler, Joseph and Wittfeld, Katharina and Patil, Kaustubh R. and Weihs, Antoine and Eickhoff, Simon B. and Raimondo, Federico and Tahmasian, Masoud and {ENIGMA-Sleep Working Group}},
title = {{Prediction of cognitive performance by demographics, sleep, and brain morphometry: machine learning findings from ENIGMA-Sleep Working Group}},
journal = {Research Square (preprint)},
year = {2026},
month = jun,
publisher = {Research Square},
issn = {2693-5015},
doi = {10.21203/
url = {https://
}
RIS
TY - JOUR
AU - Bi, Hanwen
AU - Åkerstedt, Torbjörn
AU - Bülow, Robin
AU - Deantoni, Michele
AU - Drzezga, Alexander
AU - Elman, Jeremy A.
AU - Elmenhorst, David
AU - Elmenhorst, Eva-Maria
AU - Ewert, Ralf
AU - Fennema-Notestine, Christine
AU - Ferrarelli, Fabio
AU - Frenzel, Stefan
AU - von Gall, Charlotte
AU - Genon, Sarah
AU - Grabe, Hans J.
AU - Nguyen Ho, Phuong Thuy
AU - Hoepel, Sanne J.W.
AU - Hoffstaedter, Felix
AU - Ibanez, Agustin
AU - Jahanshad, Neda
AU - Keihani, Ahmadreza
AU - Küppers, Vincent
AU - Liu, Wen
AU - Mayeli, Ahmad
AU - Mortazavi, Nasrin
AU - Neitzel, Julia
AU - Nilsonne, Gustav
AU - Panizzon, Matthew S.
AU - Rupp, Julia S.
AU - Saberi, Amin
AU - Schmidt, Christina
AU - Spiegelhalder, Kai
AU - Stubbe, Beate
AU - Tamm, Sandra
AU - Thomopoulos, Sophia I.
AU - Thompson, Paul M.
AU - Valk, Sofie L.
AU - Vandewalle, Gilles
AU - Vo-Eckerle, Tina Thi
AU - Völzke, Henry
AU - Waite, Laura K.
AU - Wexler, Joseph
AU - Wittfeld, Katharina
AU - Patil, Kaustubh R.
AU - Weihs, Antoine
AU - Eickhoff, Simon B.
AU - Raimondo, Federico
AU - Tahmasian, Masoud
AU - ENIGMA-Sleep Working Group
TI - Prediction of cognitive performance by demographics, sleep, and brain morphometry: machine learning findings from ENIGMA-Sleep Working Group
T2 - Research Square (preprint)
J2 - Res Sq
PY - 2026
DA - 2026/
SN - 2693-5015
PB - Research Square
DO - 10.21203/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.21203/
"type": "article",
"title": "Prediction of cognitive performance by demographics, sleep, and brain morphometry: machine learning findings from ENIGMA-Sleep Working Group",
"container-title": "Research Square (preprint)",
"author": [
{
"family": "Bi",
"given": "Hanwen"
},
{
"family": "Åkerstedt",
"given": "Torbjörn"
},
{
"family": "Bülow",
"given": "Robin"
},
{
"family": "Deantoni",
"given": "Michele"
},
{
"family": "Drzezga",
"given": "Alexander"
},
{
"family": "Elman",
"given": "Jeremy A."
},
{
"family": "Elmenhorst",
"given": "David"
},
{
"family": "Elmenhorst",
"given": "Eva-Maria"
},
{
"family": "Ewert",
"given": "Ralf"
},
{
"family": "Fennema-Notestine",
"given": "Christine"
},
{
"family": "Ferrarelli",
"given": "Fabio"
},
{
"family": "Frenzel",
"given": "Stefan"
},
{
"family": "von Gall",
"given": "Charlotte"
},
{
"family": "Genon",
"given": "Sarah"
},
{
"family": "Grabe",
"given": "Hans J."
},
{
"family": "Nguyen Ho",
"given": "Phuong Thuy"
},
{
"family": "Hoepel",
"given": "Sanne J.W."
},
{
"family": "Hoffstaedter",
"given": "Felix"
},
{
"family": "Ibanez",
"given": "Agustin"
},
{
"family": "Jahanshad",
"given": "Neda"
},
{
"family": "Keihani",
"given": "Ahmadreza"
},
{
"family": "Küppers",
"given": "Vincent"
},
{
"family": "Liu",
"given": "Wen"
},
{
"family": "Mayeli",
"given": "Ahmad"
},
{
"family": "Mortazavi",
"given": "Nasrin"
},
{
"family": "Neitzel",
"given": "Julia"
},
{
"family": "Nilsonne",
"given": "Gustav"
},
{
"family": "Panizzon",
"given": "Matthew S."
},
{
"family": "Rupp",
"given": "Julia S."
},
{
"family": "Saberi",
"given": "Amin"
},
{
"family": "Schmidt",
"given": "Christina"
},
{
"family": "Spiegelhalder",
"given": "Kai"
},
{
"family": "Stubbe",
"given": "Beate"
},
{
"family": "Tamm",
"given": "Sandra"
},
{
"family": "Thomopoulos",
"given": "Sophia I."
},
{
"family": "Thompson",
"given": "Paul M."
},
{
"family": "Valk",
"given": "Sofie L."
},
{
"family": "Vandewalle",
"given": "Gilles"
},
{
"family": "Vo-Eckerle",
"given": "Tina Thi"
},
{
"family": "Völzke",
"given": "Henry"
},
{
"family": "Waite",
"given": "Laura K."
},
{
"family": "Wexler",
"given": "Joseph"
},
{
"family": "Wittfeld",
"given": "Katharina"
},
{
"family": "Patil",
"given": "Kaustubh R."
},
{
"family": "Weihs",
"given": "Antoine"
},
{
"family": "Eickhoff",
"given": "Simon B."
},
{
"family": "Raimondo",
"given": "Federico"
},
{
"family": "Tahmasian",
"given": "Masoud"
},
{
"literal": "ENIGMA-Sleep Working Group"
}
],
"container-title-short":
"DOI": "10.21203/
"ISSN": "2693-5015",
"publisher": "Research Square",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
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.1038/s41467-026-71271-9 [code]
- Exposome-wide patterns predict brain health in aging.Journal: Nature communicationsIn common: SHAP, seaborn, scikit-learn, 4 other tools, 2 references, 4 authors
- [2] doi:10.1038/s41467-026-74153-2 [code]
- Regional, functional and transcriptomic decoding of multidimensional brain structure alterations in obsessive-compulsive disorder.Journal: Nature communicationsIn common: neuromaps, BrainSpace, FreeSurfer, 7 other tools, 2 authors
- [3] doi:10.64898/2026.08.13.26360304 [code]
- Lifespan brain structural variation reveals shared organization across mental health conditionsJournal: medRxiv (preprint)In common: BrainSpace, Nilearn, NiBabel, 7 other tools, 2 authors
- [4] doi:10.1038/s41398-026-04189-x [code]
- Decomposing neuroanatomical heterogeneity in depression: insights from an ENIGMA major depressive disorder working group study in 5146 individuals.Journal: Translational psychiatryIn common: structural MRI / diffusion, 4 authors
- [5] doi:10.1038/s41398-026-04078-3 [code]
- Brain age prediction in generalized anxiety disorder using a convolutional neural network.Journal: Translational psychiatryIn common: structural MRI / diffusion, 4 authors
- [6] doi:10.1002/agm2.70073 [code]
- Foreign Language Learning in Older Adults Modifies Resting-State Functional Connectivity Between the Subcortical Structures and the Cortex.Journal: Aging medicine (Milton (N.S.W))In common: netneurotools, neuromaps, BrainSpace, 10 other tools, 1 reference
- [7] doi:10.1038/s42003-026-10276-y [code]
- The cellular correlates and adolescent reorganisation of cortical myelination networks in the common marmoset.Journal: Communications biologyIn common: CAT12, BrainSpace, statannotations, 10 other tools, structural MRI / diffusion
- [8] doi:10.1371/journal.pbio.3003684 [code]
- The retrieval of previously learned motor memories is facilitated by the reinstatement of default mode network manifold structures.Journal: PLoS biologyIn common: neuromaps, BrainSpace, Pingouin, 9 other tools, 2 references
- [9] doi:10.7554/elife.103097 [code]
- Canonical neurodevelopmental trajectories of structural and functional manifolds.Journal: eLifeIn common: netneurotools, neuromaps, BrainSpace, 8 other tools, structural MRI / diffusion, 1 reference
- [10] doi:10.1371/journal.pbio.3003856 [code]
- Aging and metabolism contribute separately to brain-body health.Journal: PLoS biologyIn common: netneurotools, neuromaps, FreeSurfer, 9 other tools, structural MRI / diffusion, 1 reference
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: 2 repositories of the authors' code, each at its verified commit and with its license, 315 scripts, and 17 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:72430678db99a51c…
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.
