8.7. Run junifer and julearn.#

This example uses a ParcelAggregation marker to compute the mean of each parcel using the Schaefer parcellation (100 rois, 7 Yeo networks) for a 3D nifti to extract some features for machine learning using julearn to predict some other data.

Authors: Leonard Sasse, Sami Hamdan, Nicolas Nieto, Synchon Mandal

License: BSD 3 clause

import tempfile

import nilearn
import pandas as pd
from julearn import run_cross_validation, PipelineCreator

import junifer.testing.registry  # noqa: F401
from junifer.api import collect, run
from junifer.storage.sqlite import SQLiteFeatureStorage
from junifer.utils import configure_logging

Set the logging level to info to see extra information:

configure_logging(level="INFO")
2024-02-09 10:12:12,744 - JUNIFER - INFO - ===== Lib Versions =====
2024-02-09 10:12:12,744 - JUNIFER - INFO - numpy: 1.26.4
2024-02-09 10:12:12,744 - JUNIFER - INFO - scipy: 1.11.4
2024-02-09 10:12:12,744 - JUNIFER - INFO - pandas: 2.1.4
2024-02-09 10:12:12,744 - JUNIFER - INFO - nilearn: 0.10.2
2024-02-09 10:12:12,745 - JUNIFER - INFO - nibabel: 5.2.0
2024-02-09 10:12:12,745 - JUNIFER - INFO - junifer: 0.0.4.dev563
2024-02-09 10:12:12,745 - JUNIFER - INFO - ========================

Define the markers you want:

marker_dicts = [
    {
        "name": "Schaefer100x17_TrimMean80",
        "kind": "ParcelAggregation",
        "parcellation": "Schaefer100x17",
        "method": "trim_mean",
        "method_params": {"proportiontocut": 0.2},
    },
    {
        "name": "Schaefer200x17_Mean",
        "kind": "ParcelAggregation",
        "parcellation": "Schaefer200x17",
        "method": "mean",
    },
]

Define target and confounds for julearn machine learning:

y = "age"
confound = "sex"

Load the VBM phenotype data for machine learning data: - Fetch the Oasis dataset

oasis_dataset = nilearn.datasets.fetch_oasis_vbm()
age = oasis_dataset.ext_vars[y][:10]
sex = (
    pd.Series(oasis_dataset.ext_vars["mf"][:10])
    .map(lambda x: 1 if x == "F" else 0)
    .values
)
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nilearn/datasets/struct.py:852: UserWarning: `legacy_format` will default to `False` in release 0.11. Dataset fetchers will then return pandas dataframes by default instead of recarrays.
  warnings.warn(_LEGACY_FORMAT_MSG)

Create a temporary directory for junifer feature extraction:

with tempfile.TemporaryDirectory() as tmpdir:
    storage = {"kind": "SQLiteFeatureStorage", "uri": f"{tmpdir}/test.sqlite"}
    # run the defined junifer feature extraction pipeline
    run(
        workdir="/tmp",
        datagrabber={"kind": "OasisVBMTestingDataGrabber"},
        markers=marker_dicts,
        storage=storage,
    )

    # read in extracted features and add confounds and targets
    # for julearn run cross validation
    collect(storage)
    db = SQLiteFeatureStorage(uri=storage["uri"])

    df_vbm = db.read_df(feature_name="VBM_GM_Schaefer200x17_Mean")
    oasis_subjects = [x[0] for x in df_vbm.index]
    df_vbm.index = oasis_subjects
/opt/hostedtoolcache/Python/3.10.13/x64/lib/python3.10/site-packages/nilearn/datasets/struct.py:852: UserWarning: `legacy_format` will default to `False` in release 0.11. Dataset fetchers will then return pandas dataframes by default instead of recarrays.
  warnings.warn(_LEGACY_FORMAT_MSG)
2024-02-09 10:12:12,765 - JUNIFER - INFO - Getting element sub-01
2024-02-09 10:12:12,765 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:12,765 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0001_MR1/mwrc1OAS1_0001_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:12,765 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:12,766 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:12,766 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:12,766 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:12,767 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:12,767 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:12,767 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:12,767 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:12,768 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:13,442 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:13,478 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:13,478 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:13,478 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:13,479 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:13,479 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:13,479 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:13,479 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:13,480 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:14,168 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:14,223 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:14,223 - JUNIFER - INFO - Getting element sub-02
2024-02-09 10:12:14,224 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:14,224 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0002_MR1/mwrc1OAS1_0002_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:14,224 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:14,225 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:14,225 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:14,225 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:14,225 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:14,225 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:14,225 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:14,225 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:14,226 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:14,891 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:14,929 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:14,929 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:14,929 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:14,929 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:14,929 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:14,929 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:14,929 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:14,931 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:15,599 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:15,656 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:15,656 - JUNIFER - INFO - Getting element sub-03
2024-02-09 10:12:15,656 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:15,656 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0003_MR1/mwrc1OAS1_0003_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:15,656 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:15,657 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:15,657 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:15,658 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:15,658 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:15,658 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:15,658 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:15,658 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:15,659 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:16,340 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:16,377 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:16,377 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:16,377 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:16,377 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:16,377 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:16,378 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:16,378 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:16,379 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:17,051 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:17,107 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:17,107 - JUNIFER - INFO - Getting element sub-04
2024-02-09 10:12:17,107 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:17,107 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0004_MR1/mwrc1OAS1_0004_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:17,107 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:17,108 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:17,108 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:17,109 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:17,109 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:17,109 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:17,109 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:17,109 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:17,110 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:17,784 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:17,820 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:17,820 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:17,820 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:17,820 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:17,820 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:17,820 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:17,820 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:17,821 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:18,522 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:18,578 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:18,578 - JUNIFER - INFO - Getting element sub-05
2024-02-09 10:12:18,578 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:18,579 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0005_MR1/mwrc1OAS1_0005_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:18,579 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:18,580 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:18,580 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:18,580 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:18,580 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:18,580 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:18,580 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:18,580 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:18,581 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:19,249 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:19,285 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:19,285 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:19,285 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:19,285 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:19,285 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:19,285 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:19,285 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:19,287 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:19,961 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:20,017 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:20,017 - JUNIFER - INFO - Getting element sub-06
2024-02-09 10:12:20,017 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:20,017 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0006_MR1/mwrc1OAS1_0006_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:20,017 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:20,018 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:20,018 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:20,018 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:20,018 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:20,019 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:20,019 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:20,019 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:20,020 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:20,703 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:20,739 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:20,739 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:20,739 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:20,739 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:20,739 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:20,739 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:20,739 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:20,741 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:21,404 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:21,460 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:21,460 - JUNIFER - INFO - Getting element sub-07
2024-02-09 10:12:21,461 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:21,461 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0007_MR1/mwrc1OAS1_0007_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:21,461 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:21,462 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:21,462 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:21,462 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:21,462 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:21,462 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:21,462 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:21,462 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:21,463 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:22,113 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:22,149 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:22,150 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:22,150 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:22,150 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:22,150 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:22,150 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:22,150 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:22,151 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:22,817 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:22,873 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:22,873 - JUNIFER - INFO - Getting element sub-08
2024-02-09 10:12:22,874 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:22,874 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0009_MR1/mwrc1OAS1_0009_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:22,874 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:22,875 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:22,875 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:22,875 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:22,875 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:22,875 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:22,875 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:22,875 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:22,876 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:23,521 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:23,557 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:23,557 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:23,557 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:23,557 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:23,557 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:23,557 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:23,557 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:23,559 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:24,215 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:24,271 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:24,271 - JUNIFER - INFO - Getting element sub-09
2024-02-09 10:12:24,271 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:24,271 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0010_MR1/mwrc1OAS1_0010_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:24,271 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:24,272 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:24,272 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:24,272 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:24,272 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:24,272 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:24,272 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:24,272 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:24,274 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:24,974 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:25,011 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:25,011 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:25,011 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:25,011 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:25,011 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:25,012 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:25,012 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:25,013 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:25,704 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:25,760 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:25,760 - JUNIFER - INFO - Getting element sub-10
2024-02-09 10:12:25,760 - JUNIFER - INFO - Fitting pipeline
2024-02-09 10:12:25,760 - JUNIFER - INFO - Reading VBM_GM from /home/runner/nilearn_data/oasis1/OAS1_0011_MR1/mwrc1OAS1_0011_MR1_mpr_anon_fslswapdim_bet.nii.gz
2024-02-09 10:12:25,760 - JUNIFER - INFO - VBM_GM is type NIFTI
2024-02-09 10:12:25,762 - JUNIFER - INFO - Fitting marker Schaefer100x17_TrimMean80
2024-02-09 10:12:25,762 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:25,762 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:25,762 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:25,762 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:25,762 - JUNIFER - INFO -      n_rois: 100
2024-02-09 10:12:25,762 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:25,764 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_100Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:26,420 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:26,455 - JUNIFER - INFO - Fitting marker Schaefer200x17_Mean
2024-02-09 10:12:26,455 - JUNIFER - INFO - Computing VBM_GM
2024-02-09 10:12:26,455 - JUNIFER - INFO - Fetching one of Schaefer parcellations.
2024-02-09 10:12:26,456 - JUNIFER - INFO - Parcellation parameters:
2024-02-09 10:12:26,456 - JUNIFER - INFO -      resolution: 2.0
2024-02-09 10:12:26,456 - JUNIFER - INFO -      n_rois: 200
2024-02-09 10:12:26,456 - JUNIFER - INFO -      yeo_networks: 17
2024-02-09 10:12:26,457 - JUNIFER - INFO - Loading parcellation /home/runner/junifer/data/parcellations/schaefer_2018/Schaefer2018_200Parcels_17Networks_order_FSLMNI152_2mm.nii.gz
2024-02-09 10:12:27,130 - JUNIFER - INFO - Storing in <SQLiteFeatureStorage @ /tmp/tmpy1zu7qf6/test.sqlite (multiple output)>
2024-02-09 10:12:27,187 - JUNIFER - INFO - Marker collection fitting done
2024-02-09 10:12:27,187 - JUNIFER - INFO - Collecting data using SQLiteFeatureStorage
2024-02-09 10:12:27,187 - JUNIFER - INFO - Collecting data from /tmp/tmpy1zu7qf6/*test.sqlite

file: 0it [00:00, ?it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 12.31it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 12.29it/s]

file: 1it [00:00,  5.73it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.16it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.14it/s]

file: 2it [00:00,  6.16it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.14it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.12it/s]

file: 3it [00:00,  6.31it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00,  8.32it/s]
feature: 100%|██████████| 2/2 [00:00<00:00,  8.31it/s]

file: 4it [00:00,  5.11it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.22it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.19it/s]

file: 5it [00:00,  5.53it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.24it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.21it/s]

file: 6it [00:01,  5.84it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.31it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.29it/s]

file: 7it [00:01,  6.06it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.33it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.30it/s]

file: 8it [00:01,  6.21it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00,  8.14it/s]
feature: 100%|██████████| 2/2 [00:00<00:00,  8.13it/s]

file: 9it [00:01,  5.23it/s]

feature:   0%|          | 0/2 [00:00<?, ?it/s]

feature: 100%|██████████| 2/2 [00:00<00:00, 14.18it/s]
feature: 100%|██████████| 2/2 [00:00<00:00, 14.16it/s]

file: 10it [00:01,  5.55it/s]
file: 10it [00:01,  5.68it/s]
2024-02-09 10:12:28,947 - JUNIFER - INFO - Collect done

Using julearn for machine learning: We predict the age given our vbm features and sex as a confound.

X = list(df_vbm.columns)
df_vbm[y] = age
df_vbm[confound] = sex

X_types = {
    "features": X,
    "confound": confound,
}

creator = PipelineCreator(problem_type="regression", apply_to="features")
creator.add("zscore", apply_to=["features", "confound"])
creator.add("confound_removal", apply_to="features", confounds="confound")
creator.add("ridge")

scores = run_cross_validation(
    X=X + [confound],
    y=y,
    X_types=X_types,
    data=df_vbm,
    model=creator,
    cv=3,
)
print(scores)
   fit_time  score_time  ...  fold                          cv_mdsum
0  0.158449    0.022290  ...     0  509497eb21da473048117e0c6704d3ea
1  0.156348    0.022035  ...     1  509497eb21da473048117e0c6704d3ea
2  0.155115    0.021825  ...     2  509497eb21da473048117e0c6704d3ea

[3 rows x 8 columns]

Interpretation of results: Doing machine learning with only 10 datapoints is not meaningful. This explains the big variation in scores for different cross-validation folds.

Total running time of the script: (0 minutes 16.925 seconds)

Gallery generated by Sphinx-Gallery