From cbf24ba52206e674fbf1a48fa6b6423d977cebe5 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Fri, 4 Oct 2024 08:54:26 +0200 Subject: [PATCH 01/13] [FIX] Fix OASIS1 BIDSSubjectID Method (#1312) --- clinica/iotools/bids_utils.py | 2 +- test/unittests/iotools/test_bids_utils.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/clinica/iotools/bids_utils.py b/clinica/iotools/bids_utils.py index de47302ad..738882d1b 100644 --- a/clinica/iotools/bids_utils.py +++ b/clinica/iotools/bids_utils.py @@ -242,7 +242,7 @@ def from_original_study_id(cls, study_id: str) -> str: ) def to_original_study_id(self) -> str: - return "OAS1" + self.split("OASIS1")[1] + "MR1" + return f"OAS1_{self.split('OASIS1')[1]}_MR1" class OASIS3BIDSSubjectID(BIDSSubjectID): diff --git a/test/unittests/iotools/test_bids_utils.py b/test/unittests/iotools/test_bids_utils.py index 6fe0ca75d..65ef601ed 100644 --- a/test/unittests/iotools/test_bids_utils.py +++ b/test/unittests/iotools/test_bids_utils.py @@ -102,8 +102,7 @@ def test_study_to_bids_id_value_error(study, study_id): (StudyName.GENFI, "MAPT009", "sub-MAPT009"), (StudyName.OASIS3, "OAS30001", "sub-OAS30001"), (StudyName.HABS, "P_INIBUB", "sub-HABSINIBUB"), - # (StudyName.OASIS, "OAS1_0001_MR1", "sub-OASIS10001"), - # todo : check OASIS + (StudyName.OASIS, "OAS1_0001_MR1", "sub-OASIS10001"), (StudyName.IXI, "IXI001", "sub-IXI001"), ], ) From 3772efdcf30e66f46f3c47367c32f4b05e84dedd Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Wed, 9 Oct 2024 14:46:23 +0200 Subject: [PATCH 02/13] [FIX] IXI-to-BIDS function `define_participants` should output sorted participants list (#1318) --- clinica/iotools/converters/ixi_to_bids/ixi_to_bids_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clinica/iotools/converters/ixi_to_bids/ixi_to_bids_utils.py b/clinica/iotools/converters/ixi_to_bids/ixi_to_bids_utils.py index 8bebe8643..3f296a280 100644 --- a/clinica/iotools/converters/ixi_to_bids/ixi_to_bids_utils.py +++ b/clinica/iotools/converters/ixi_to_bids/ixi_to_bids_utils.py @@ -59,7 +59,7 @@ def define_participants( list_from_data = _get_subjects_list_from_data(data_directory) if subjs_list_path is None: - return list_from_data + return sorted(list_from_data) cprint("Loading a subjects list provided by the user...") list_from_file = _get_subjects_list_from_file(subjs_list_path) list_filtered = [subject for subject in list_from_file if subject in list_from_data] @@ -69,7 +69,7 @@ def define_participants( f"The subjects : {' , '.join(invalid_subjects)} do not have any associated data inside the directory {data_directory}" f" and can not be converted." ) - return list_filtered + return sorted(list_filtered) def _rename_clinical_data_to_bids(column: str) -> str: From 1a6e0fdd5f1ee444f9f8d96d01e4f5a661d2c791 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Wed, 9 Oct 2024 17:08:52 +0200 Subject: [PATCH 03/13] [TEST][REF] Move functions specific to OASIS1 converter in a dedicated utils file and add unit tests (#1313) * Move functions from bids_utils to oasis_to_bids_utils + create test script * WIP 1 * Remove unused optional argument subj_to_remove * WIP2 * Finish tests * Fix * Add last test * Changes upon suggestions * Changes 2 --- clinica/iotools/bids_utils.py | 186 +---------------- .../converters/oasis_to_bids/oasis_to_bids.py | 12 +- .../oasis_to_bids/oasis_to_bids_utils.py | 148 +++++++++++++ .../oasis_to_bids/test_oasis_to_bids_utils.py | 196 ++++++++++++++++++ 4 files changed, 349 insertions(+), 193 deletions(-) create mode 100644 clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py create mode 100644 test/unittests/iotools/converters/oasis_to_bids/test_oasis_to_bids_utils.py diff --git a/clinica/iotools/bids_utils.py b/clinica/iotools/bids_utils.py index 738882d1b..38c6f1808 100644 --- a/clinica/iotools/bids_utils.py +++ b/clinica/iotools/bids_utils.py @@ -464,146 +464,6 @@ def create_participants_df( return participant_df -def create_sessions_dict_oasis( - clinical_data_dir: Path, - bids_dir: Path, - study_name: StudyName, - clinical_specifications_folder: Path, - bids_ids: list[str], - name_column_ids: str, - subj_to_remove: Optional[list[str]] = None, - participants_df: Optional[pd.DataFrame] = None, -) -> dict: - """Extract the information regarding the sessions and store them in a dictionary (session M00 only). - - Parameters - ---------- - clinical_data_dir : Path - The path to the input folder. - - bids_dir : Path - The path to the BIDS directory. - - study_name : StudyName - The name of the study (Ex: ADNI). - - clinical_specifications_folder : Path - The path to the clinical file. - - bids_ids : list of str - The list of bids ids. - - name_column_ids : str - The name of the column where the subject ids are stored. - - subj_to_remove : list of str, optional - The list of subject IDs to remove. - - participants_df : pd.DataFrame, optional - A pandas dataframe that contains the participants data (required for OASIS3 only). - - Returns - ------- - dict : - Session dict. - """ - import numpy as np - - from clinica.utils.stream import cprint - - subj_to_remove = subj_to_remove or [] - location = f"{study_name.value} location" - sessions = pd.read_csv(clinical_specifications_folder / "sessions.tsv", sep="\t") - sessions_fields = sessions[study_name.value] - field_location = sessions[location] - sessions_fields_bids = sessions["BIDS CLINICA"] - fields_dataset = [] - fields_bids = [] - sessions_dict = {} - - for i in range(0, len(sessions_fields)): - if not pd.isnull(sessions_fields[i]): - fields_bids.append(sessions_fields_bids[i]) - fields_dataset.append(sessions_fields[i]) - - for i in range(0, len(sessions_fields)): - # If the i-th field is available - if not pd.isnull(sessions_fields[i]): - # Load the file - tmp = field_location[i].split("/") - location = tmp[0] - if len(tmp) > 1: - sheet = tmp[1] - else: - sheet = "" - - file_to_read_path = clinical_data_dir / location - file_ext = os.path.splitext(location)[1] - if file_ext == ".xlsx": - file_to_read = pd.read_excel(file_to_read_path, sheet_name=sheet) - elif file_ext == ".csv": - file_to_read = pd.read_csv(file_to_read_path) - else: - raise ValueError( - f"Unknown file extension {file_ext}. Expecting either .xlsx or .csv." - ) - - for r in range(0, len(file_to_read.values)): - # Extracts the subject ids columns from the dataframe - subj_id = file_to_read.iloc[r][name_column_ids] - if hasattr(subj_id, "dtype"): - if subj_id.dtype == np.int64: - subj_id = str(subj_id) - # Removes all the - from - subj_id_alpha = str(subj_id[0:3] + "IS" + subj_id[3] + subj_id[5:9]) - - # Extract the corresponding BIDS id and create the output file if doesn't exist - subj_bids = [s for s in bids_ids if subj_id_alpha in s] - if len(subj_bids) == 0: - # If the subject is not an excluded one - if subj_id not in subj_to_remove: - cprint( - f"{sessions_fields[i]} for {subj_id} not found in the BIDS converted.", - "info", - ) - else: - subj_bids = subj_bids[0] - subj_dir = bids_dir / subj_bids - session_names = get_bids_sess_list(subj_dir) - for s in session_names: - s_name = s.replace("ses-", "") - if study_name == StudyName.OASIS3: - row = file_to_read[ - file_to_read["MR ID"].str.startswith(subj_id) - & file_to_read["MR ID"].str.endswith(s_name) - ].iloc[0] - else: - row = file_to_read.iloc[r] - if subj_bids not in sessions_dict: - sessions_dict.update({subj_bids: {}}) - if s_name not in sessions_dict[subj_bids].keys(): - sessions_dict[subj_bids].update({s_name: {"session_id": s}}) - (sessions_dict[subj_bids][s_name]).update( - {sessions_fields_bids[i]: row[sessions_fields[i]]} - ) - # Calculate the difference in months for OASIS3 only - if ( - study_name == StudyName.OASIS3 - and sessions_fields_bids[i] == "age" - ): - diff_years = ( - float(sessions_dict[subj_bids][s_name]["age"]) - - participants_df[ - participants_df["participant_id"] == subj_bids - ]["age_bl"] - ) - (sessions_dict[subj_bids][s_name]).update( - {"diff_months": round(float(diff_years) * 12)} - ) - - return sessions_dict - - def create_scans_dict( clinical_data_dir: Path, study_name: StudyName, @@ -836,51 +696,6 @@ def write_modality_agnostic_files( _write_bidsignore(bids_dir) -# todo : move to oasis utils ? -def write_sessions_tsv(bids_dir: Path, sessions_dict: dict) -> None: - """Create _sessions.tsv files. - - Basically writes the content of the function - `clinica.iotools.bids_utils.create_sessions_dict` in several TSV files - following the BIDS specification. - - Parameters - ---------- - bids_dir : Path - The path to the BIDS directory. - - sessions_dict : dict - Dictionary containing sessions metadata. - - .. note:: - This is the output of the function - `clinica.iotools.bids_utils.create_sessions_dict`. - - See also - -------- - create_sessions_dict - write_scans_tsv - """ - for subject_path in bids_dir.glob("sub-*"): - if subject_path.name in sessions_dict: - session_df = pd.DataFrame.from_dict( - sessions_dict[subject_path.name], orient="index" - ) - cols = session_df.columns.tolist() - cols = cols[-1:] + cols[:-1] - session_df = session_df[cols] - else: - print(f"No session data available for {subject_path}") - session_df = pd.DataFrame(columns=["session_id"]) - session_df["session_id"] = pd.Series("M000") - session_df = session_df.set_index("session_id").fillna("n/a") - session_df.to_csv( - subject_path / f"{subject_path.name}_sessions.tsv", - sep="\t", - encoding="utf8", - ) - - def _get_pet_tracer_from_filename(filename: str) -> Tracer: """Return the PET tracer from the provided filename. @@ -1227,6 +1042,7 @@ def identify_modality(filename: str) -> Optional[str]: return np.nan +# todo : use more ? def write_to_tsv(df: pd.DataFrame, buffer: Union[Path, BinaryIO]) -> None: """Save dataframe as a BIDS-compliant TSV file. diff --git a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py index f5d281562..9f0a1808d 100644 --- a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py +++ b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py @@ -108,20 +108,16 @@ def _create_sessions_tsv( bids_dir: Path, bids_ids: list[str], ) -> dict: - from clinica.iotools.bids_utils import ( - StudyName, - create_sessions_dict_oasis, - write_sessions_tsv, - ) + from .oasis_to_bids_utils import create_sessions_dict, write_sessions_tsv - sessions_dict = create_sessions_dict_oasis( + sessions_dict = create_sessions_dict( clinical_data_dir=clinical_data_dir, bids_dir=bids_dir, - study_name=StudyName.OASIS, clinical_specifications_folder=Path(__file__).parents[1] / "specifications", bids_ids=bids_ids, - name_column_ids="ID", ) + + # todo : when tested add to create_sessions_dict bc specific to oasis1 for bids_id in bids_ids: sessions_dict[bids_id]["M000"]["diagnosis"] = ( "AD" if sessions_dict[bids_id]["M000"]["diagnosis"] > 0 else "CN" diff --git a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py new file mode 100644 index 000000000..1290be8d8 --- /dev/null +++ b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py @@ -0,0 +1,148 @@ +import os +from pathlib import Path +from typing import Iterable + +import numpy as np +import pandas as pd + +from clinica.iotools.bids_utils import StudyName, get_bids_sess_list +from clinica.utils.stream import cprint + +__all__ = ["create_sessions_dict", "write_sessions_tsv"] + + +def create_sessions_dict( + clinical_data_dir: Path, + bids_dir: Path, + clinical_specifications_folder: Path, + bids_ids: Iterable[str], +) -> dict: + """Extract the information regarding the sessions and store them in a dictionary (session M000 only). + + Parameters + ---------- + clinical_data_dir : Path + The path to the input folder. + + bids_dir : Path + The path to the BIDS directory. + + clinical_specifications_folder : Path + The path to the clinical file. + + bids_ids : list of str + The list of bids ids. + + Returns + ------- + dict : + Session dict. + """ + + location = f"{StudyName.OASIS.value} location" + sessions = pd.read_csv(clinical_specifications_folder / "sessions.tsv", sep="\t") + sessions_fields = sessions[StudyName.OASIS.value] + field_location = sessions[location] + sessions_fields_bids = sessions["BIDS CLINICA"] + fields_dataset = [] + fields_bids = [] + sessions_dict = {} + + for i in range(0, len(sessions_fields)): + if not pd.isnull(sessions_fields[i]): + fields_bids.append(sessions_fields_bids[i]) + fields_dataset.append(sessions_fields[i]) + + for i in range(0, len(sessions_fields)): + # If the i-th field is available + if not pd.isnull(sessions_fields[i]): + # Load the file + tmp = field_location[i].split("/") + location = tmp[0] + if len(tmp) > 1: + sheet = tmp[1] + else: + sheet = "" + + file_to_read_path = clinical_data_dir / location + file_ext = os.path.splitext(location)[1] + if file_ext == ".xlsx": + file_to_read = pd.read_excel(file_to_read_path, sheet_name=sheet) + elif file_ext == ".csv": + file_to_read = pd.read_csv(file_to_read_path) + else: + raise ValueError( + f"Unknown file extension {file_ext}. Expecting either .xlsx or .csv." + ) + + for r in range(0, len(file_to_read.values)): + # Extracts the subject ids columns from the dataframe + subj_id = file_to_read.iloc[r]["ID"] + if hasattr(subj_id, "dtype"): + if subj_id.dtype == np.int64: + subj_id = str(subj_id) + # Removes all the - from + subj_id_alpha = str(subj_id[0:3] + "IS" + subj_id[3] + subj_id[5:9]) + + # Extract the corresponding BIDS id and create the output file if doesn't exist + subj_bids = [s for s in bids_ids if subj_id_alpha in s] + if subj_bids: + subj_bids = subj_bids[0] + subj_dir = bids_dir / subj_bids + session_names = get_bids_sess_list(subj_dir) + for s in session_names: + s_name = s.replace("ses-", "") + row = file_to_read.iloc[r] + if subj_bids not in sessions_dict: + sessions_dict.update({subj_bids: {}}) + if s_name not in sessions_dict[subj_bids].keys(): + sessions_dict[subj_bids].update({s_name: {"session_id": s}}) + (sessions_dict[subj_bids][s_name]).update( + {sessions_fields_bids[i]: row[sessions_fields[i]]} + ) + + return sessions_dict + + +def write_sessions_tsv(bids_dir: Path, sessions_dict: dict) -> None: + """Create _sessions.tsv files. + + Basically writes the content of the function + `clinica.iotools.bids_utils.create_sessions_dict` in several TSV files + following the BIDS specification. + + Parameters + ---------- + bids_dir : Path + The path to the BIDS directory. + + sessions_dict : dict + Dictionary containing sessions metadata. + + .. note:: + This is the output of the function + `clinica.iotools.bids_utils.create_sessions_dict`. + + See also + -------- + create_sessions_dict + write_scans_tsv + """ + for subject_path in bids_dir.glob("sub-*"): + if subject_path.name in sessions_dict: + session_df = pd.DataFrame.from_dict( + sessions_dict[subject_path.name], orient="index" + ) + cols = session_df.columns.tolist() + cols = cols[-1:] + cols[:-1] + session_df = session_df[cols] + else: + print(f"No session data available for {subject_path}") + session_df = pd.DataFrame(columns=["session_id"]) + session_df["session_id"] = pd.Series("M000") + session_df = session_df.set_index("session_id").fillna("n/a") + session_df.to_csv( + subject_path / f"{subject_path.name}_sessions.tsv", + sep="\t", + encoding="utf8", + ) diff --git a/test/unittests/iotools/converters/oasis_to_bids/test_oasis_to_bids_utils.py b/test/unittests/iotools/converters/oasis_to_bids/test_oasis_to_bids_utils.py new file mode 100644 index 000000000..72e9de84a --- /dev/null +++ b/test/unittests/iotools/converters/oasis_to_bids/test_oasis_to_bids_utils.py @@ -0,0 +1,196 @@ +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest +from pandas.testing import assert_frame_equal + +from clinica.iotools.converters.oasis_to_bids.oasis_to_bids_utils import ( + create_sessions_dict, + write_sessions_tsv, +) + + +@pytest.fixture +def clinical_data_path(tmp_path: Path) -> Path: + clinical_data_path = tmp_path / "clinical" + _build_clinical_data(clinical_data_path) + return clinical_data_path + + +def _build_clinical_data(clinical_data_path: Path) -> None: + clinical_data_path.mkdir() + + df = pd.DataFrame( + { + "ID": ["OAS1_0001_MR1", "OAS1_0002_MR1"], + "M/F": ["F", "M"], + "Hand": ["R", "L"], + "Age": [74, 67], + "Educ": [2, 2], + "SES": [3, 3], + "MMSE": [29, 29], + "CDR": [0, 0], + "eTIV": [1344, 1344], + "nWBV": [0.704, 0.645], + "ASF": [1.306, 1.100], + "Delay": [float("nan"), float("nan")], + } + ) + df.to_csv(clinical_data_path / "oasis_cross-sectional.csv", index=False) + + # todo : future with excel + + +@pytest.fixture +def sessions_path_success(tmp_path: Path) -> Path: + sessions_path_success = tmp_path / "spec" + _build_spec_sessions_success(sessions_path_success) + return sessions_path_success + + +def _build_spec_sessions_success(sessions_path_success: Path) -> None: + sessions_path_success.mkdir() + spec = pd.DataFrame( + { + "BIDS CLINICA": ["cdr_global", "MMS", "diagnosis", "foo"], + "ADNI": [np.nan, np.nan, np.nan, "foo"], + "OASIS": ["CDR", "MMSE", "CDR", np.nan], + "OASIS location": [ + "oasis_cross-sectional.csv", + "oasis_cross-sectional.csv", + "oasis_cross-sectional.csv", + np.nan, + ], + } + ) + spec.to_csv(sessions_path_success / "sessions.tsv", index=False, sep="\t") + + +@pytest.fixture +def sessions_path_error(tmp_path: Path) -> Path: + sessions_path_error = tmp_path / "spec" + _build_spec_sessions_error(sessions_path_error) + return sessions_path_error + + +def _build_spec_sessions_error(sessions_path_error: Path) -> None: + sessions_path_error.mkdir() + spec = pd.DataFrame( + { + "BIDS CLINICA": ["foo"], + "OASIS": ["foo"], + "OASIS location": [ + "foo.csv", + ], + } + ) + spec.to_csv(sessions_path_error / "sessions.tsv", index=False, sep="\t") + + +@pytest.fixture +def bids_dir(tmp_path: Path) -> Path: + bids_dir = tmp_path / "BIDS" + _build_bids_dir(bids_dir) + return bids_dir + + +def _build_bids_dir(bids_dir: Path) -> None: + (bids_dir / "sub-OASIS10001" / "ses-M000").mkdir(parents=True) + (bids_dir / "sub-OASIS10001" / "ses-M006").mkdir(parents=True) + (bids_dir / "sub-OASIS10002" / "ses-M000").mkdir(parents=True) + + +@pytest.fixture +def expected() -> dict: + expected = { + "sub-OASIS10001": { + "M000": { + "session_id": "ses-M000", + "cdr_global": 0, + "MMS": 29, + "diagnosis": 0, + }, + "M006": { + "session_id": "ses-M006", + "cdr_global": 0, + "MMS": 29, + "diagnosis": 0, + }, + }, + "sub-OASIS10002": { + "M000": { + "session_id": "ses-M000", + "cdr_global": 0, + "MMS": 29, + "diagnosis": 0, + } + }, + } + + return expected + + +def test_create_sessions_dict_success( + tmp_path, + clinical_data_path: Path, + bids_dir: Path, + sessions_path_success: Path, + expected: dict, +): + # todo : how does it handle nan inside excel/csv ? verify with excel + + result = create_sessions_dict( + clinical_data_path, + bids_dir, + sessions_path_success, + ["sub-OASIS10001", "sub-OASIS10002"], + ) + + assert result == expected + + +def test_create_sessions_dict_error( + tmp_path, + clinical_data_path: Path, + bids_dir: Path, + sessions_path_error: Path, + expected: dict, +): + # todo : how does it handle nan inside excel/csv ? verify with excel + + with pytest.raises(FileNotFoundError): + create_sessions_dict( + clinical_data_path, + bids_dir, + sessions_path_error, + ["sub-OASIS10001", "sub-OASIS10002"], + ) + + +def test_write_sessions_tsv( + tmp_path, + clinical_data_path: Path, + bids_dir: Path, + sessions_path_success: Path, + expected: dict, +): + sessions = create_sessions_dict( + clinical_data_path, + bids_dir, + sessions_path_success, + ["sub-OASIS10001", "sub-OASIS10002"], + ) + write_sessions_tsv(tmp_path / "BIDS", sessions) + sessions_files = list((tmp_path / "BIDS").rglob("*.tsv")) + assert len(sessions_files) == 2 + for file in sessions_files: + assert_frame_equal( + pd.read_csv(file, sep="\t").set_index("session_id", drop=False), + pd.DataFrame(expected[file.parent.name]).T.set_index( + "session_id", drop=False + ), + check_like=True, + check_dtype=False, + ) + assert file.name == f"{file.parent.name}_sessions.tsv" From 949a8edee9868369238f44363af8fe3129c55f14 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:26:15 +0200 Subject: [PATCH 04/13] [FIX] OASIS-to-BIDS is not up to date with online data (#1321) * First pass * Small fix * Update bids_utils test * Changes 1' ' * Make change in oasis utils * Remove duplicate function --- clinica/iotools/bids_utils.py | 3 +- .../oasis_to_bids/oasis_to_bids_utils.py | 6 +- .../converters/specifications/participant.tsv | 78 +- .../converters/specifications/sessions.tsv | 858 +++++++++--------- test/unittests/iotools/test_bids_utils.py | 8 +- 5 files changed, 476 insertions(+), 477 deletions(-) diff --git a/clinica/iotools/bids_utils.py b/clinica/iotools/bids_utils.py index 38c6f1808..19ec84547 100644 --- a/clinica/iotools/bids_utils.py +++ b/clinica/iotools/bids_utils.py @@ -360,6 +360,7 @@ def create_participants_df( fields_bids = ["participant_id"] prev_location = "" + prev_sheet = 0 index_to_drop = [] subjects_to_drop = [] study_name = StudyName(study_name) @@ -387,7 +388,7 @@ def create_participants_df( tmp = field_location[i].split("/") location = tmp[0] # If a sheet is available - sheet = tmp[1] if len(tmp) > 1 else "" + sheet = tmp[1] if len(tmp) > 1 else 0 # Check if the file to open for a certain field is the same of the previous field if location == prev_location and sheet == prev_sheet: pass diff --git a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py index 1290be8d8..89022e6a0 100644 --- a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py +++ b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids_utils.py @@ -59,11 +59,7 @@ def create_sessions_dict( # Load the file tmp = field_location[i].split("/") location = tmp[0] - if len(tmp) > 1: - sheet = tmp[1] - else: - sheet = "" - + sheet = tmp[1] if len(tmp) > 1 else 0 file_to_read_path = clinical_data_dir / location file_ext = os.path.splitext(location)[1] if file_ext == ".xlsx": diff --git a/clinica/iotools/converters/specifications/participant.tsv b/clinica/iotools/converters/specifications/participant.tsv index 7d80bb8d7..abe689229 100644 --- a/clinica/iotools/converters/specifications/participant.tsv +++ b/clinica/iotools/converters/specifications/participant.tsv @@ -1,40 +1,40 @@ Field BIDS CLINICA BIDS format BIDS type AIBL AIBL location OASIS OASIS location OASIS3 OASIS3 location -BIDS id of the participant participant_id Keyword 'sub-' followed by one of the original subject IDs without special characters or symbols string -Second participant id alternative_id_1 string RID aibl_ptdemog_*.csv ID oasis_cross-sectional.csv Subject oasis3_participants.csv -Third participant id alternative_id_2 string -Fourth participant id alternative_id_3 string -Type of subj in PrevDemAls dataset prevdemals_status A or R (A = patients, R = relatives) char -Date of birth date_of_birth YYYY-MM-DD HH:MM:SS string PTDOB aibl_ptdemog_*.csv -Sex sex M or F char PTGENDER aibl_ptdemog_*.csv M/F oasis_cross-sectional.csv M/F oasis3_participants.csv -Educational level education_level Free format string Educ oasis_cross-sectional.csv Education oasis3_participants.csv -Deceased deceased Y or N -Age in years age_bl In years with, possibly, decimals float Age oasis_cross-sectional.csv ageAtEntry oasis3_participants.csv -Civil status marital_status Free format string - adni_rid -Site in which the patient was studied site Free format string SITEID aibl_ptdemog_*.csv - original_study - cdr CDR oasis_cross-sectional.csv cdr oasis3_participants.csv -Diagnosis at baseline diagnosis_bl AD=Alzheimer's disease - bvFTD=behavioral variant Fronto Temporal Dementia string CDR oasis_cross-sectional.csv cdr oasis3_participants.csv -Score of mmse test at the baseline mmse_bl -APOE (number of E4 alleles) apoe4 0, 1 or 2 (number of E4 alleles) int - apoe_gen1 APGEN1 aibl_apoeres_*.csv - apoe_gen2 APGEN2 aibl_apoeres_*.csv - prevdemals_age_at_onset_patients In years with, possibly, decimals float -Laterality of the subject laterality Hand oasis_cross-sectional.csv Hand oasis3_participants.csv - inclusion_date YYYY-MM-DD HH:MM:SS string - - prevdemals_parent_transmitting_ftd Y or N char - prevdemals_parent_transmitting_als Y or N char - prevdemals_parent_transmitting father or mother string -Indicate if the genotype is mutated or not prevdemals_genetic_status_mutated Y (mutated) or N (not mutated) bool - - prevdemals_aoo_transmitting_parent in years - prevdemals_family_phenotype_als Y or N - prevdemals_family_phenotype_ftd Y or N -Average age onset disease in all the family member prevdemals_aoo_mean_family float - prevdemals_expected_years_aoo_bl signed float - age_first_symptoms - clinad_inclusion - clinad_final_inclusion - prevdemals_distance_aoo_transmitting_parent - prevdemals_family_code +BIDS id of the participant participant_id Keyword 'sub-' followed by one of the original subject IDs without special characters or symbols string +Second participant id alternative_id_1 string RID aibl_ptdemog_*.csv ID oasis_cross-sectional-5708aa0a98d82080.xlsx Subject oasis3_participants.csv +Third participant id alternative_id_2 string +Fourth participant id alternative_id_3 string +Type of subj in PrevDemAls dataset prevdemals_status A or R (A = patients, R = relatives) char +Date of birth date_of_birth YYYY-MM-DD HH:MM:SS string PTDOB aibl_ptdemog_*.csv +Sex sex M or F char PTGENDER aibl_ptdemog_*.csv M/F oasis_cross-sectional-5708aa0a98d82080.xlsx M/F oasis3_participants.csv +Educational level education_level Free format string Educ oasis_cross-sectional-5708aa0a98d82080.xlsx Education oasis3_participants.csv +Deceased deceased Y or N +Age in years age_bl In years with, possibly, decimals float Age oasis_cross-sectional-5708aa0a98d82080.xlsx ageAtEntry oasis3_participants.csv +Civil status marital_status Free format string + adni_rid +Site in which the patient was studied site Free format string SITEID aibl_ptdemog_*.csv + original_study + cdr CDR oasis_cross-sectional-5708aa0a98d82080.xlsx cdr oasis3_participants.csv +Diagnosis at baseline diagnosis_bl AD=Alzheimer's disease - bvFTD=behavioral variant Fronto Temporal Dementia string CDR oasis_cross-sectional-5708aa0a98d82080.xlsx cdr oasis3_participants.csv +Score of mmse test at the baseline mmse_bl +APOE (number of E4 alleles) apoe4 0, 1 or 2 (number of E4 alleles) int + apoe_gen1 APGEN1 aibl_apoeres_*.csv + apoe_gen2 APGEN2 aibl_apoeres_*.csv + prevdemals_age_at_onset_patients In years with, possibly, decimals float +Laterality of the subject laterality Hand oasis_cross-sectional-5708aa0a98d82080.xlsx Hand oasis3_participants.csv + inclusion_date YYYY-MM-DD HH:MM:SS string + + prevdemals_parent_transmitting_ftd Y or N char + prevdemals_parent_transmitting_als Y or N char + prevdemals_parent_transmitting father or mother string +Indicate if the genotype is mutated or not prevdemals_genetic_status_mutated Y (mutated) or N (not mutated) bool + + prevdemals_aoo_transmitting_parent in years + prevdemals_family_phenotype_als Y or N + prevdemals_family_phenotype_ftd Y or N +Average age onset disease in all the family member prevdemals_aoo_mean_family float + prevdemals_expected_years_aoo_bl signed float + age_first_symptoms + clinad_inclusion + clinad_final_inclusion + prevdemals_distance_aoo_transmitting_parent + prevdemals_family_code diff --git a/clinica/iotools/converters/specifications/sessions.tsv b/clinica/iotools/converters/specifications/sessions.tsv index db4955f65..7d7f23a2d 100644 --- a/clinica/iotools/converters/specifications/sessions.tsv +++ b/clinica/iotools/converters/specifications/sessions.tsv @@ -1,431 +1,431 @@ Field BIDS CLINICA BIDS format BIDS type INSIGHT INSIGHT location CLINAD AIBL AIBL location OASIS OASIS location OASIS3 OASIS3 location -BIDS session id session_id Keyword 'ses-' followed by the original session id of each dataset without special characters or symbols string -Date of the examination examination_date YYYY-MM-DD HH:MM:SS string date d'evaluation EXAMDATE aibl_neurobat_*.csv +BIDS session id session_id Keyword 'ses-' followed by the original session id of each dataset without special characters or symbols string +Date of the examination examination_date YYYY-MM-DD HH:MM:SS string date d'evaluation EXAMDATE aibl_neurobat_*.csv Age at the session age float PTDOB aibl_ptdemog_*.csv Age oasis3_sessions.csv - current_study free format - adni_fdg free format - adni_pib free format - adni_av45 free format - cdr_global CDGLOBAL aibl_cdr_*.csv CDR oasis_cross-sectional.csv cdr oasis3_sessions.csv - cdr_sb - adas11 - adas13 -Mini-mental state exam MMS int MMS MMSCORE aibl_mmse_*.csv MMSE oasis_cross-sectional.csv mmse oasis3_sessions.csv - FAQ - adni_ventricles_vol - adni_hippocampus_vol - adni_brain_vol - adni_entorhinal_vol -Intracranial volume adni_icv -Diagnosis at current session diagnosis DXCURREN aibl_pdxconv_*.csv CDR oasis_cross-sectional.csv cdr oasis3_sessions.csv - cati_sacha_vol_left_hippocampus cm3 float vol_left_hippocampus Analyses_INSIGHT_M0_20151201/Analyses_HPC_SACHA - cati_sacha_vol_right_hippocampus cm3 float vol_right_hippocampus Analyses_INSIGHT_M0_20151202/Analyses_HPC_SACHA - cati_whasa_volume cm3 float volume (cm3) Analyses_INSIGHT_M0_20151203/Analyses_HPC_WHASA - mattis_attention - mattis_initiation - mattis_construction - mattis_concepts - mattis_memory - MATTIS int - FBI -Verbal Fluency Test categorical_fluency int Categorical Verbal Fluency Tst_NRO_NP -Verbal Fluency Test p_fluency int -Grober and Buschke test grober_buschke_free_cued_recall int -Frontal assessment battery FAB int BREF - freesurfer_rh_mean_thickness rh_MeanThickness_thickness (mm) Analyses_INSIGHT_M0_20151201/Analyses_thichness_Freesurfer - freesurfer_lh_mean_thickness lh_MeanThickness_thickness (mm) Analyses_INSIGHT_M0_20151201/Analyses_thichness_Freesurfer - EQ EQ_SCORE TST_NRO_NL.xls/EQ5D - SPPB Total Score TST_NRO_NL.xls/SPPB - AD8 AD8_SCORE Tst_NRO_NP.xlsx/AD8 - MEM MEM_SCORE Tst_NRO_NP.xlsx/MCQ - AD AD_SCORE Tst_NRO_NP.xlsx/AD8 -Grober and Buschke test grober_buschke_free_recall int RL -Grober and Buschke test grober_buschke_total_recall int RT - grober_buschke_free_recall_delayed int RLD - grober_buschke_total_recall_delayed int RTD - motivation_starkstein (Starkstein) Motivation scale Tst_NRO_NP.xlsx/(Starkstein) - verbal_fluency Lexical Verbal Fluency Score Tst_NRO_NP.xlsx/(Verbal Fluency) -Innotest amyloid/tau index IATI float IATI - clinad_CSF CSF AD profile - clinad_amyloidB int B-Amyloide - clinad_tau int Tau - clinad_p_tau int P-Tau - clinad_p_tau_Aß float PTau/Aß - clinad_delay_MRI_CSF Délai IRM PL - clinad_date_MRI_closest_to_CSF Date IRM proche PL - - prevdemals_benson_copy - prevdemals_benson_rappel - prevdemals_benson_total - prevdemals_faux_pas - praxies_dexterity - praxies_gesture_kinetic - praxies_non_meaning_gestures - praxies_intransitive gestures - praxies_transitive_gestures - praxies_total - prevdemals_emotion_total - prevdemals_als - prevdemals_ftd - - - - - - - clinad_amnestic_syndrome_of_hippocampal_type Sd amn hip -Number of words that was not cointaned in the original dataset of words grober_buschke_intrusions intrusions - - clinad_reac_indic Réac indic - clinad_correct_recognitions reconnaissances correctes - clinad_false_recognitions fausses reconnaissnces - - clinad_date_csf Date PL - clinad_spm_vol_gm Vol_SG - clinad_spm_vol_wm Vol_SB - clinad_spm_vol_csf Vol_CSF - clinad_spm_vol_total Vol_Total - clinad_volbrain_scale_factor Scale factor - clinad_volbrain_snr float SNR - clinad_volbrain_msnr float mSNR - clinad_volbrain_qc float QC - clinad_volbrain_tissue_wm_cm3 float Tissue WM cm3 - clinad_volbrain_tissue_wm_% float Tissue WM % - clinad_volbrain_tissue_gm_cm3 float Tissue GM cm3 - clinad_volbrain_tissue_gm_% float Tissue GM % - clinad_volbrain_tissue_csf_cm3 float Tissue CSF cm3 - clinad_volbrain_tissue_csf_% float Tissue CSF % - clinad_volbrain_tissue_brain_cm3 float Tissue Brain cm3 - clinad_volbrain_tissue_brain_% float Tissue Brain % - clinad_volbrain_tissue_ic_cm3 float Tissue IC cm3 - clinad_volbrain_tissue_ic_% float Tissue IC % - clinad_volbrain_cerebrum_total_cm3 float Cerebrum Total cm3 - clinad_volbrain_cerebrum_total_% float Cerebrum Total % - clinad_volbrain_cerebrum_t_gm_cm3 float Cerebrum T GM cm3 - clinad_volbrain_cerebrum_t_gm_% float Cerebrum T GM % - clinad_volbrain_cerebrum_t_wm_cm3 float Cerebrum T WM cm3 - clinad_volbrain_cerebrum_t_wm_% float Cerebrum T WM % - clinad_volbrain_cerebrum_right_cm3 float Cerebrum Right cm3 - clinad_volbrain_cerebrum_right_% float Cerebrum Right % - clinad_volbrain_cerebrum_r_gm_cm3 float Cerebrum R GM cm3 - clinad_volbrain_cerebrum_r_gm_% float Cerebrum R GM % - clinad_volbrain_cerebrum_r_wm_cm3 float Cerebrum R WM cm3 - clinad_volbrain_cerebrum_r_wm_% float Cerebrum R WM % - clinad_volbrain_cerebrum_left_cm3 float Cerebrum Left cm3 - clinad_volbrain_cerebrum_left_% float Cerebrum Left % - clinad_volbrain_cerebrum_l_gm_cm3 float Cerebrum L GM cm3 - clinad_volbrain_cerebrum_l_gm_% float Cerebrum L GM % - clinad_volbrain_cerebrum_l_wm_cm3 float Cerebrum L WM cm3 - clinad_volbrain_cerebrum_l_wm_% float Cerebrum L WM % - clinad_volbrain_cerebrum_assymetry float Cerebrum Asymmetry - clinad_volbrain_cerebelum_total_cm3 float Cerebelum Total cm3 - clinad_volbrain_cerebelum_total_% float Cerebelum Total % - clinad_volbrain_cerebelum_t_gm_cm3 float Cerebelum T GM cm3 - clinad_volbrain_cerebelum_t_gm_% float Cerebelum T GM % - clinad_volbrain_cerebelum_t_wm_cm3 float Cerebelum T WM cm3 - clinad_volbrain_cerebelum_t_wm_% float Cerebelum T WM % - clinad_volbrain_cerebelum_right_cm3 float Cerebelum Right cm3 - clinad_volbrain_cerebelum_right_% float Cerebelum Right % - clinad_volbrain_cerebelum_r_gm_cm3 float Cerebelum R GM cm3 - clinad_volbrain_cerebelum_r_gm_% float Cerebelum R GM % - clinad_volbrain_cerebelum_r_wm_cm3 float Cerebelum R WM cm3 - clinad_volbrain_cerebelum_r_wm_% float Cerebelum R WM % - clinad_volbrain_cerebelum_left_cm3 float Cerebelum Left cm3 - clinad_volbrain_cerebelum_left_% float Cerebelum Left % - clinad_volbrain_cerebelum_l_gm_cm3 float Cerebelum L GM cm3 - clinad_volbrain_cerebelum_l_gm_% float Cerebelum L GM % - clinad_volbrain_cerebelum_l_wm_cm3 float Cerebelum L WM cm3 - clinad_volbrain_cerebelum_l_wm_% float Cerebelum L WM % - clinad_volbrain_cerebelum_assymetry float Cerebelum Asymmetry - clinad_volbrain_brainstem_cm3 float Brainstem cm3 - clinad_volbrain_brainstem_% float Brainstem % - clinad_volbrain_lateral_ventricles_total_cm3 float Lateral ventricles Total cm3 - clinad_volbrain_lateral_ventricles_total_% float Lateral ventricles Total % - clinad_volbrain_lateral_ventricles_right_cm3 float Lateral ventricles Right cm3 - clinad_volbrain_lateral_ventricles_right_% float Lateral ventricles Right % - clinad_volbrain_lateral_ventricles_left_cm3 float Lateral ventricles Left cm3 - clinad_volbrain_lateral_ventricles_left_% float Lateral ventricles Left % - clinad_volbrain_lateral_ventricles_asymmetry float Lateral ventricles Asymmetry - clinad_volbrain_caudate_total_cm3 float Caudate Total cm3 - clinad_volbrain_caudate_total_% float Caudate Total % - clinad_volbrain_caudate_right_cm3 float Caudate Right cm3 - clinad_volbrain_caudate_right_% float Caudate Right % - clinad_volbrain_caudate_left_cm3 float Caudate Left cm3 - clinad_volbrain_caudate_left_% float Caudate Left % - clinad_volbrain_caudate_asymmetry float Caudate Asymmetry - clinad_volbrain_putamen_total_cm3 float Putamen Total cm3 - clinad_volbrain_putamen_total_% float Putamen Total % - clinad_volbrain_putamen_right_cm3 float Putamen Right cm3 - clinad_volbrain_putamen_right_% float Putamen Right % - clinad_volbrain_putamen_left_cm3 float Putamen Left cm3 - clinad_volbrain_putamen_left_% float Putamen Left % - clinad_volbrain_putamen_asymmetry float Putamen Asymmetry - clinad_volbrain_thalamus_total_cm3 float Thalamus Total cm3 - clinad_volbrain_thalamus_total_% float Thalamus Total % - clinad_volbrain_thalamus_right_cm3 float Thalamus Right cm3 - clinad_volbrain_thalamus_right_% float Thalamus Right % - clinad_volbrain_thalamus_left_cm3 float Thalamus Left cm3 - clinad_volbrain_thalamus_left_% float Thalamus Left % - clinad_volbrain_thalamus_asymmetry float Thalamus Asymmetry - clinad_volbrain_globus_pallidus_total_cm3 float Globus Pallidus Total cm3 - clinad_volbrain_globus_pallidus_total_% float Globus Pallidus Total % - clinad_volbrain_globus_pallidus_right_cm3 float Globus Pallidus Right cm3 - clinad_volbrain_globus_pallidus_right_% float Globus Pallidus Right % - clinad_volbrain_globus_pallidus_left_cm3 float Globus Pallidus Left cm3 - clinad_volbrain_globus_pallidus_left_% float Globus Pallidus Left % - clinad_volbrain_globus_pallidus_asymmetry float Globus Pallidus Asymmetry - clinad_volbrain_hippocampus_total_cm3 float Hippocampus Total cm3 - clinad_volbrain_hippocampus_total_% float Hippocampus Total % - clinad_volbrain_hippocampus_right_cm3 float Hippocampus Right cm3 - clinad_volbrain_hippocampus_right_% float Hippocampus Right % - clinad_volbrain_hippocampus_left_cm3 float Hippocampus Left cm3 - clinad_volbrain_hippocampus_left_% float Hippocampus Left % - clinad_volbrain_hippocampus_asymmetry float Hippocampus Asymmetry - clinad_volbrain_amygdala_total_cm3 float Amygdala Total cm3 - clinad_volbrain_amygdala_total_% float Amygdala Total % - clinad_volbrain_amygdala_right_cm3 float Amygdala Right cm3 - clinad_volbrain_amygdala_right_% float Amygdala Right % - clinad_volbrain_amygdala_left_cm3 float Amygdala Left cm3 - clinad_volbrain_amygdala_left_% float Amygdala Left % - clinad_volbrain_amygdala_asymmetry float Amygdala Asymmetry - clinad_volbrain_accumbens_total_cm3 Accumbens Total cm3 - clinad_volbrain_accumbens_total_% Accumbens Total % - clinad_volbrain_accumbens_right_cm3 Accumbens Right cm3 - clinad_volbrain_accumbens_right_% Accumbens Right % - clinad_volbrain_accumbens_left_cm3 Accumbens Left cm3 - clinad_volbrain_accumbens_left_% Accumbens Left % - clinad_volbrain_accumbens_asymmetry Accumbens Asymmetry - clinad_brainreader_id_rm MR ID - clinad_brainreader_clinical_image_id Clinical image id - clinad_brainreader_filename Filename - clinad_brainreader_nr_version NR version - clinad_brainreader_mtiv_in_ml float The measured total intracranial volume (mTIV) in ml - clinad_brainreader_hippocampal_left_right_asymmetry_index float Hippocampal Left-Right Asymmetry Index - clinad_brainreader_hippocampal_left_right_asymmetry_index_nr_index float Hippocampal Left-Right Asymmetry Index NR Index - clinad_brainreader_hippocampal_left_right_asymmetry_index_z_score float Hippocampal Left-Right Asymmetry Index z-score - clinad_brainreader_hippocampal_left_right_asymmetry_index_percentile float Hippocampal Left-Right Asymmetry Index percentile - clinad_brainreader_whole_brain_matter_volume_in_ml float Whole-Brain-Matter volume in ml - clinad_brainreader_whole_brain_matter_vol_mtiv_ratio float Whole-Brain-Matter Vol/mTIV ratio - clinad_brainreader_whole_brain_matter_nr_index float Whole-Brain-Matter NR Index - clinad_brainreader_whole_brain_matter_z_score float Whole-Brain-Matter z-score - clinad_brainreader_whole_brain_matter_percentile float Whole-Brain-Matter percentile - clinad_brainreader_white_matter_volume_in_ml float White-Matter volume in ml - clinad_brainreader_white_matter_vol_mtiv_ratio float White-Matter Vol/mTIV ratio - clinad_brainreader_white_matter_nr_index float White-Matter NR Index - clinad_brainreader_white_matter_z_score float White-Matter z-score - clinad_brainreader_white_matter_percentile float White-Matter percentile - clinad_brainreader_gray_matter_volume_in_ml float Gray-Matter volume in ml - clinad_brainreader_gray_matter_vol_mtiv_ratio float Gray-Matter Vol/mTIV ratio - clinad_brainreader_gray_matter_nr_index float Gray-Matter NR Index - clinad_brainreader_gray_matter_z_score float Gray-Matter z-score - clinad_brainreader_gray_matter_percentile float Gray-Matter percentile - clinad_brainreader_csf_dura_volume_in_ml float CSF-(+-dura) volume in ml - clinad_brainreader_csf_dura_vol_mtiv_ratio float CSF-(+-dura) Vol/mTIV ratio - clinad_brainreader_csf_dura_nr_index float CSF-(+-dura) NR Index - clinad_brainreader_csf_dura_z_score float CSF-(+-dura) z-score - clinad_brainreader_csf_dura_percentile float CSF-(+-dura) percentile - clinad_brainreader_left_hippocampus_volume_in_ml float Left-Hippocampus volume in ml - clinad_brainreader_left_hippocampus_vol_mtiv_ratio float Left-Hippocampus Vol/mTIV ratio - clinad_brainreader_left_hippocampus_nr_index float Left-Hippocampus NR Index - clinad_brainreader_left_hippocampus_z_score float Left-Hippocampus z-score - clinad_brainreader_left_hippocampus_percentile float Left-Hippocampus percentile - clinad_brainreader_right_hippocampus_volume_in_ml float Right-Hippocampus volume in ml - clinad_brainreader_right_hippocampus_vol_mtiv_ratio float Right-Hippocampus Vol/mTIV ratio - clinad_brainreader_right_hippocampus_nr_index float Right-Hippocampus NR Index - clinad_brainreader_right_hippocampus_z_score float Right-Hippocampus z-score - clinad_brainreader_right_hippocampus_percentile float Right-Hippocampus percentile - clinad_brainreader_hippocampus_volume_in_ml float Hippocampus volume in ml - clinad_brainreader_hippocampus_vol_mtiv_ratio float Hippocampus Vol/mTIV ratio - clinad_brainreader_hippocampus_nr_index float Hippocampus NR Index - clinad_brainreader_hippocampus_z_score float Hippocampus z-score - clinad_brainreader_hippocampus_percentile float Hippocampus percentile - clinad_brainreader_left_amygdala_volume_in_ml float Left-Amygdala volume in ml - clinad_brainreader_left_amygdala_vol_mtiv_ratio float Left-Amygdala Vol/mTIV ratio - clinad_brainreader_left_amygdala_nr_index float Left-Amygdala NR Index - clinad_brainreader_left_amygdala_z_score float Left-Amygdala z-score - clinad_brainreader_left_amygdala_percentile float Left-Amygdala percentile - clinad_brainreader_right_amygdala_volume_in_ml float Right-Amygdala volume in ml - clinad_brainreader_right_amygdala_vol_mtiv_ratio float Right-Amygdala Vol/mTIV ratio - clinad_brainreader_right_amygdala_nr_index float Right-Amygdala NR Index - clinad_brainreader_right_amygdala_z_score float Right-Amygdala z-score - clinad_brainreader_right_amygdala_percentile float Right-Amygdala percentile - clinad_brainreader_amygdala_volume_in_ml float Amygdala volume in ml - clinad_brainreader_amygdala_vol_mtiv_ratio float Amygdala Vol/mTIV ratio - clinad_brainreader_amygdala_nr_index float Amygdala NR Index - clinad_brainreader_amygdala_z_score float Amygdala z-score - clinad_brainreader_amygdala_percentile float Amygdala percentile - clinad_brainreader_brain_stem_volume_in_ml float Brain-Stem volume in ml - clinad_brainreader_brain_stem_vol_mtiv_ratio float Brain-Stem Vol/mTIV ratio - clinad_brainreader_brain_stem_nr_index float Brain-Stem NR Index - clinad_brainreader_brain_stem_z_score float Brain-Stem z-score - clinad_brainreader_brain_stem_percentile float Brain-Stem percentile - clinad_brainreader_caudate_volume_in_ml float Caudate volume in ml - clinad_brainreader_caudate_vol_mtiv_ratio float Caudate Vol/mTIV ratio - clinad_brainreader_caudate_nr_index float Caudate NR Index - clinad_brainreader_caudate_z_score float Caudate z-score - clinad_brainreader_caudate_percentile float Caudate percentile - clinad_brainreader_left_caudate_volume_in_ml float Left-Caudate volume in ml - clinad_brainreader_left_caudate_vol_mtiv_ratio float Left-Caudate Vol/mTIV ratio - clinad_brainreader_left_caudate_nr_index float Left-Caudate NR Index - clinad_brainreader_left_caudate_z_score float Left-Caudate z-score - clinad_brainreader_left_caudate_percentile float Left-Caudate percentile - clinad_brainreader_right_caudate_volume_in_ml float Right-Caudate volume in ml - clinad_brainreader_right_caudate_vol_mtiv_ratio float Right-Caudate Vol/mTIV ratio - clinad_brainreader_right_caudate_nr_index float Right-Caudate NR Index - clinad_brainreader_right_caudate_z_score float Right-Caudate z-score - clinad_brainreader_right_caudate_percentile float Right-Caudate percentile - clinad_brainreader_left_cerebellum_volume_in_ml float Left-Cerebellum volume in ml - clinad_brainreader_left_cerebellum_vol_mtiv_ratio float Left-Cerebellum Vol/mTIV ratio - clinad_brainreader_left_cerebellum_nr_index float Left-Cerebellum NR Index - clinad_brainreader_left_cerebellum_z_score float Left-Cerebellum z-score - clinad_brainreader_left_cerebellum_percentile float Left-Cerebellum percentile - clinad_brainreader_right_cerebellum_volume_in_ml float Right-Cerebellum volume in ml - clinad_brainreader_right_cerebellum_vol_mtiv_ratio float Right-Cerebellum Vol/mTIV ratio - clinad_brainreader_right_cerebellum_nr_index float Right-Cerebellum NR Index - clinad_brainreader_right_cerebellum_z_score float Right-Cerebellum z-score - clinad_brainreader_right_cerebellum_percentile float Right-Cerebellum percentile - clinad_brainreader_cerebellum_volume_in_ml float Cerebellum volume in ml - clinad_brainreader_cerebellum_vol_mtiv_ratio float Cerebellum Vol/mTIV ratio - clinad_brainreader_cerebellum_nr_index float Cerebellum NR Index - clinad_brainreader_cerebellum_z_score float Cerebellum z-score - clinad_brainreader_cerebellum_percentile float Cerebellum percentile - clinad_brainreader_lateral_ventricle_volume_in_ml float Lateral-Ventricle volume in ml - clinad_brainreader_lateral_ventricle_vol_mtiv_ratio float Lateral-Ventricle Vol/mTIV ratio - clinad_brainreader_lateral_ventricle_nr_index float Lateral-Ventricle NR Index - clinad_brainreader_lateral_ventricle_z_score float Lateral-Ventricle z-score - clinad_brainreader_lateral_ventricle_percentile float Lateral-Ventricle percentile - clinad_brainreader_left_lateral_ventricle_volume_in_ml float Left-Lateral-Ventricle volume in ml - clinad_brainreader_left_lateral_ventricle_vol_mtiv_ratio float Left-Lateral-Ventricle Vol/mTIV ratio - clinad_brainreader_left_lateral_ventricle_nr_index float Left-Lateral-Ventricle NR Index - clinad_brainreader_left_lateral_ventricle_z_score float Left-Lateral-Ventricle z-score - clinad_brainreader_left_lateral_ventricle_percentile float Left-Lateral-Ventricle percentile - clinad_brainreader_right_lateral_ventricle_volume_in_ml float Right-Lateral-Ventricle volume in ml - clinad_brainreader_right_lateral_ventricle_vol_mtiv_ratio float Right-Lateral-Ventricle Vol/mTIV ratio - clinad_brainreader_right_lateral_ventricle_nr_index float Right-Lateral-Ventricle NR Index - clinad_brainreader_right_lateral_ventricle_z_score float Right-Lateral-Ventricle z-score - clinad_brainreader_right_lateral_ventricle_percentile float Right-Lateral-Ventricle percentile - clinad_brainreader_putamen_volume_in_ml float Putamen volume in ml - clinad_brainreader_putamen_vol_mtiv_ratio float Putamen Vol/mTIV ratio - clinad_brainreader_putamen_nr_index float Putamen NR Index - clinad_brainreader_putamen_z_score float Putamen z-score - clinad_brainreader_putamen_percentile float Putamen percentile - clinad_brainreader_left_putamen_volume_in_ml float Left-Putamen volume in ml - clinad_brainreader_left_putamen_vol_mtiv_ratio float Left-Putamen Vol/mTIV ratio - clinad_brainreader_left_putamen_nr_index float Left-Putamen NR Index - clinad_brainreader_left_putamen_z_score float Left-Putamen z-score - clinad_brainreader_left_putamen_percentile float Left-Putamen percentile - clinad_brainreader_right_putamen_volume_in_ml float Right-Putamen volume in ml - clinad_brainreader_right_putamen_vol_mtiv_ratio float Right-Putamen Vol/mTIV ratio - clinad_brainreader_right_putamen_nr_index float Right-Putamen NR Index - clinad_brainreader_right_putamen_z_score float Right-Putamen z-score - clinad_brainreader_right_putamen_percentile float Right-Putamen percentile - clinad_brainreader_thalamus_volume_in_ml float Thalamus volume in ml - clinad_brainreader_thalamus_vol_mtiv_ratio float Thalamus Vol/mTIV ratio - clinad_brainreader_thalamus_nr_index float Thalamus NR Index - clinad_brainreader_thalamus_z_score float Thalamus z-score - clinad_brainreader_thalamus_percentile float Thalamus percentile - clinad_brainreader_left_thalamus_volume_in_ml float Left-Thalamus volume in ml - clinad_brainreader_left_thalamus_vol_mtiv_ratio float Left-Thalamus Vol/mTIV ratio - clinad_brainreader_left_thalamus_nr_index float Left-Thalamus NR Index - clinad_brainreader_left_thalamus_z_score float Left-Thalamus z-score - clinad_brainreader_left_thalamus_percentile float Left-Thalamus percentile - clinad_brainreader_right_thalamus_volume_in_ml float Right-Thalamus volume in ml - clinad_brainreader_right_thalamus_vol_mtiv_ratio float Right-Thalamus Vol/mTIV ratio - clinad_brainreader_right_thalamus_nr_index float Right-Thalamus NR Index - clinad_brainreader_right_thalamus_z_score float Right-Thalamus z-score - clinad_brainreader_right_thalamus_percentile float Right-Thalamus percentile - clinad_brainreader_ventral_diencephalon_volume_in_ml float Ventral-Diencephalon volume in ml - clinad_brainreader_ventral_diencephalon_vol_mtiv_ratio float Ventral-Diencephalon Vol/mTIV ratio - clinad_brainreader_ventral_diencephalon_nr_index float Ventral-Diencephalon NR Index - clinad_brainreader_ventral_diencephalon_z_score float Ventral-Diencephalon z-score - clinad_brainreader_ventral_diencephalon_percentile float Ventral-Diencephalon percentile - clinad_brainreader_left_ventral_diencephalon_volume_in_ml float Left-Ventral-Diencephalon volume in ml - clinad_brainreader_left_ventral_diencephalon_vol_mtiv_ratio float Left-Ventral-Diencephalon Vol/mTIV ratio - clinad_brainreader_left_ventral_diencephalon_nr_index float Left-Ventral-Diencephalon NR Index - clinad_brainreader_left_ventral_diencephalon_z_score float Left-Ventral-Diencephalon z-score - clinad_brainreader_left_ventral_diencephalon_percentile float Left-Ventral-Diencephalon percentile - clinad_brainreader_right_ventral_diencephalon_volume_in_ml float Right-Ventral-Diencephalon volume in ml - clinad_brainreader_right_ventral_diencephalon_vol_mtiv_ratio float Right-Ventral-Diencephalon Vol/mTIV ratio - clinad_brainreader_right_ventral_diencephalon_nr_index float Right-Ventral-Diencephalon NR Index - clinad_brainreader_right_ventral_diencephalon_z_score float Right-Ventral-Diencephalon z-score - clinad_brainreader_right_ventral_diencephalon_percentile float Right-Ventral-Diencephalon percentile - clinad_brainreader_left_frontal_lobe_volume_in_ml float Left-Frontal-Lobe volume in ml - clinad_brainreader_left_frontal_lobe_vol_mtiv_ratio float Left-Frontal-Lobe Vol/mTIV ratio - clinad_brainreader_left_frontal_lobe_nr_index float Left-Frontal-Lobe NR Index - clinad_brainreader_left_frontal_lobe_z_score float Left-Frontal-Lobe z-score - clinad_brainreader_left_frontal_lobe_percentile float Left-Frontal-Lobe percentile - clinad_brainreader_right_frontal_lobe_volume_in_ml float Right-Frontal-Lobe volume in ml - clinad_brainreader_right_frontal_lobe_vol_mtiv_ratio float Right-Frontal-Lobe Vol/mTIV ratio - clinad_brainreader_right_frontal_lobe_nr_index float Right-Frontal-Lobe NR Index - clinad_brainreader_right_frontal_lobe_z_score float Right-Frontal-Lobe z-score - clinad_brainreader_right_frontal_lobe_percentile float Right-Frontal-Lobe percentile - clinad_brainreader_left_parietal_lobe_volume_in_ml float Left-Parietal-Lobe volume in ml - clinad_brainreader_left_parietal_lobe_vol_mtiv_ratio float Left-Parietal-Lobe Vol/mTIV ratio - clinad_brainreader_left_parietal_lobe_nr_index float Left-Parietal-Lobe NR Index - clinad_brainreader_left_parietal_lobe_z_score float Left-Parietal-Lobe z-score - clinad_brainreader_left_parietal_lobe_percentile float Left-Parietal-Lobe percentile - clinad_brainreader_right_parietal_lobe_volume_in_ml float Right-Parietal-Lobe volume in ml - clinad_brainreader_right_parietal_lobe_vol_mtiv_ratio float Right-Parietal-Lobe Vol/mTIV ratio - clinad_brainreader_right_parietal_lobe_nr_index float Right-Parietal-Lobe NR Index - clinad_brainreader_right_parietal_lobe_z_score float Right-Parietal-Lobe z-score - clinad_brainreader_right_parietal_lobe_percentile float Right-Parietal-Lobe percentile - clinad_brainreader_left_occipital_lobe_volume_in_ml float Left-Occipital-Lobe volume in ml - clinad_brainreader_left_occipital_lobe_vol_mtiv_ratio float Left-Occipital-Lobe Vol/mTIV ratio - clinad_brainreader_left_occipital_lobe_nr_index float Left-Occipital-Lobe NR Index - clinad_brainreader_left_occipital_lobe_z_score float Left-Occipital-Lobe z-score - clinad_brainreader_left_occipital_lobe_percentile float Left-Occipital-Lobe percentile - clinad_brainreader_right_occipital_lobe_volume_in_ml float Right-Occipital-Lobe volume in ml - clinad_brainreader_right_occipital_lobe_vol_mtiv_ratio float Right-Occipital-Lobe Vol/mTIV ratio - clinad_brainreader_right_occipital_lobe_nr_index float Right-Occipital-Lobe NR Index - clinad_brainreader_right_occipital_lobe_z_score float Right-Occipital-Lobe z-score - clinad_brainreader_right_occipital_lobe_percentile float Right-Occipital-Lobe percentile - clinad_brainreader_left_temporal_lobe_volume_in_ml float Left-Temporal-Lobe volume in ml - clinad_brainreader_left_temporal_lobe_vol_mtiv_ratio float Left-Temporal-Lobe Vol/mTIV ratio - clinad_brainreader_left_temporal_lobe_nr_index float Left-Temporal-Lobe NR Index - clinad_brainreader_left_temporal_lobe_z_score float Left-Temporal-Lobe z-score - clinad_brainreader_left_temporal_lobe_percentile float Left-Temporal-Lobe percentile - clinad_brainreader_right_temporal_lobe_volume_in_ml float Right-Temporal-Lobe volume in ml - clinad_brainreader_right_temporal_lobe_vol_mtiv_ratio float Right-Temporal-Lobe Vol/mTIV ratio - clinad_brainreader_right_temporal_lobe_nr_index float Right-Temporal-Lobe NR Index - clinad_brainreader_right_temporal_lobe_z_score float Right-Temporal-Lobe z-score - clinad_brainreader_right_temporal_lobe_percentile float Right-Temporal-Lobe percentile - clinad_brainreader_frontal_lobe_volume_in_ml float Frontal-Lobe volume in ml - clinad_brainreader_frontal_lobe_vol_mtiv_ratio float Frontal-Lobe Vol/mTIV ratio - clinad_brainreader_frontal_lobe_nr_index float Frontal-Lobe NR Index - clinad_brainreader_frontal_lobe_z_score float Frontal-Lobe z-score - clinad_brainreader_frontal_lobe_percentile float Frontal-Lobe percentile - clinad_brainreader_parietal_lobe_volume_in_ml float Parietal-Lobe volume in ml - clinad_brainreader_parietal_lobe_vol_mtiv_ratio float Parietal-Lobe Vol/mTIV ratio - clinad_brainreader_parietal_lobe_nr_index float Parietal-Lobe NR Index - clinad_brainreader_parietal_lobe_z_score float Parietal-Lobe z-score - clinad_brainreader_parietal_lobe_percentile float Parietal-Lobe percentile - clinad_brainreader_occipital_lobe_volume_in_ml float Occipital-Lobe volume in ml - clinad_brainreader_occipital_lobe_vol_mtiv_ratio float Occipital-Lobe Vol/mTIV ratio - clinad_brainreader_occipital_lobe_nr_index float Occipital-Lobe NR Index - clinad_brainreader_occipital_lobe_z_score float Occipital-Lobe z-score - clinad_brainreader_occipital_lobe_percentile float Occipital-Lobe percentile - clinad_brainreader_temporal_lobe_volume_in_ml float Temporal-Lobe volume in ml - clinad_brainreader_temporal_lobe_vol_mtiv_ratio float Temporal-Lobe Vol/mTIV ratio - clinad_brainreader_temporal_lobe_nr_index float Temporal-Lobe NR Index - clinad_brainreader_temporal_lobe_z_score float Temporal-Lobe z-score - clinad_brainreader_temporal_lobe_percentile float Temporal-Lobe percentile - clinad_brainreader_left_pallidum_volume_in_ml float Left-Pallidum volume in ml - clinad_brainreader_left_pallidum_vol_mtiv_ratio float Left-Pallidum Vol/mTIV ratio - clinad_brainreader_left_pallidum_nr_index float Left-Pallidum NR Index - clinad_brainreader_left_pallidum_z_score float Left-Pallidum z-score - clinad_brainreader_left_pallidum_percentile float Left-Pallidum percentile - clinad_brainreader_right_pallidum_volume_in_ml float Right-Pallidum volume in ml - clinad_brainreader_right_pallidum_vol_mtiv_ratio float Right-Pallidum Vol/mTIV ratio - clinad_brainreader_right_pallidum_nr_index float Right-Pallidum NR Index - clinad_brainreader_right_pallidum_z_score float Right-Pallidum z-score - clinad_brainreader_right_pallidum_percentile float Right-Pallidum percentile - clinad_brainreader_pallidum_volume_in_ml float Pallidum volume in ml - clinad_brainreader_pallidum_vol_mtiv_ratio float Pallidum Vol/mTIV ratio - clinad_brainreader_pallidum_nr_index float Pallidum NR Index - clinad_brainreader_pallidum_z_score float Pallidum z-score - clinad_brainreader_pallidum_percentile float Pallidum percentile - clinad_brainreader_pallidum_volume_in_ml float Pallidum volume in ml - clinad_brainreader_pallidum_vol_mtiv_ratio float Pallidum Vol/mTIV ratio - clinad_brainreader_pallidum_nr_index float Pallidum NR Index - clinad_brainreader_pallidum_z_score float Pallidum z-score - clinad_brainreader_pallidum_percentile float Pallidum percentile + current_study free format + adni_fdg free format + adni_pib free format + adni_av45 free format + cdr_global CDGLOBAL aibl_cdr_*.csv CDR oasis_cross-sectional-5708aa0a98d82080.xlsx cdr oasis3_sessions.csv + cdr_sb + adas11 + adas13 +Mini-mental state exam MMS int MMS MMSCORE aibl_mmse_*.csv MMSE oasis_cross-sectional-5708aa0a98d82080.xlsx mmse oasis3_sessions.csv + FAQ + adni_ventricles_vol + adni_hippocampus_vol + adni_brain_vol + adni_entorhinal_vol +Intracranial volume adni_icv +Diagnosis at current session diagnosis DXCURREN aibl_pdxconv_*.csv CDR oasis_cross-sectional-5708aa0a98d82080.xlsx cdr oasis3_sessions.csv + cati_sacha_vol_left_hippocampus cm3 float vol_left_hippocampus Analyses_INSIGHT_M0_20151201/Analyses_HPC_SACHA + cati_sacha_vol_right_hippocampus cm3 float vol_right_hippocampus Analyses_INSIGHT_M0_20151202/Analyses_HPC_SACHA + cati_whasa_volume cm3 float volume (cm3) Analyses_INSIGHT_M0_20151203/Analyses_HPC_WHASA + mattis_attention + mattis_initiation + mattis_construction + mattis_concepts + mattis_memory + MATTIS int + FBI +Verbal Fluency Test categorical_fluency int Categorical Verbal Fluency Tst_NRO_NP +Verbal Fluency Test p_fluency int +Grober and Buschke test grober_buschke_free_cued_recall int +Frontal assessment battery FAB int BREF + freesurfer_rh_mean_thickness rh_MeanThickness_thickness (mm) Analyses_INSIGHT_M0_20151201/Analyses_thichness_Freesurfer + freesurfer_lh_mean_thickness lh_MeanThickness_thickness (mm) Analyses_INSIGHT_M0_20151201/Analyses_thichness_Freesurfer + EQ EQ_SCORE TST_NRO_NL.xls/EQ5D + SPPB Total Score TST_NRO_NL.xls/SPPB + AD8 AD8_SCORE Tst_NRO_NP.xlsx/AD8 + MEM MEM_SCORE Tst_NRO_NP.xlsx/MCQ + AD AD_SCORE Tst_NRO_NP.xlsx/AD8 +Grober and Buschke test grober_buschke_free_recall int RL +Grober and Buschke test grober_buschke_total_recall int RT + grober_buschke_free_recall_delayed int RLD + grober_buschke_total_recall_delayed int RTD + motivation_starkstein (Starkstein) Motivation scale Tst_NRO_NP.xlsx/(Starkstein) + verbal_fluency Lexical Verbal Fluency Score Tst_NRO_NP.xlsx/(Verbal Fluency) +Innotest amyloid/tau index IATI float IATI + clinad_CSF CSF AD profile + clinad_amyloidB int B-Amyloide + clinad_tau int Tau + clinad_p_tau int P-Tau + clinad_p_tau_Aß float PTau/Aß + clinad_delay_MRI_CSF Délai IRM PL + clinad_date_MRI_closest_to_CSF Date IRM proche PL + + prevdemals_benson_copy + prevdemals_benson_rappel + prevdemals_benson_total + prevdemals_faux_pas + praxies_dexterity + praxies_gesture_kinetic + praxies_non_meaning_gestures + praxies_intransitive gestures + praxies_transitive_gestures + praxies_total + prevdemals_emotion_total + prevdemals_als + prevdemals_ftd + + + + + + + clinad_amnestic_syndrome_of_hippocampal_type Sd amn hip +Number of words that was not cointaned in the original dataset of words grober_buschke_intrusions intrusions + + clinad_reac_indic Réac indic + clinad_correct_recognitions reconnaissances correctes + clinad_false_recognitions fausses reconnaissnces + + clinad_date_csf Date PL + clinad_spm_vol_gm Vol_SG + clinad_spm_vol_wm Vol_SB + clinad_spm_vol_csf Vol_CSF + clinad_spm_vol_total Vol_Total + clinad_volbrain_scale_factor Scale factor + clinad_volbrain_snr float SNR + clinad_volbrain_msnr float mSNR + clinad_volbrain_qc float QC + clinad_volbrain_tissue_wm_cm3 float Tissue WM cm3 + clinad_volbrain_tissue_wm_% float Tissue WM % + clinad_volbrain_tissue_gm_cm3 float Tissue GM cm3 + clinad_volbrain_tissue_gm_% float Tissue GM % + clinad_volbrain_tissue_csf_cm3 float Tissue CSF cm3 + clinad_volbrain_tissue_csf_% float Tissue CSF % + clinad_volbrain_tissue_brain_cm3 float Tissue Brain cm3 + clinad_volbrain_tissue_brain_% float Tissue Brain % + clinad_volbrain_tissue_ic_cm3 float Tissue IC cm3 + clinad_volbrain_tissue_ic_% float Tissue IC % + clinad_volbrain_cerebrum_total_cm3 float Cerebrum Total cm3 + clinad_volbrain_cerebrum_total_% float Cerebrum Total % + clinad_volbrain_cerebrum_t_gm_cm3 float Cerebrum T GM cm3 + clinad_volbrain_cerebrum_t_gm_% float Cerebrum T GM % + clinad_volbrain_cerebrum_t_wm_cm3 float Cerebrum T WM cm3 + clinad_volbrain_cerebrum_t_wm_% float Cerebrum T WM % + clinad_volbrain_cerebrum_right_cm3 float Cerebrum Right cm3 + clinad_volbrain_cerebrum_right_% float Cerebrum Right % + clinad_volbrain_cerebrum_r_gm_cm3 float Cerebrum R GM cm3 + clinad_volbrain_cerebrum_r_gm_% float Cerebrum R GM % + clinad_volbrain_cerebrum_r_wm_cm3 float Cerebrum R WM cm3 + clinad_volbrain_cerebrum_r_wm_% float Cerebrum R WM % + clinad_volbrain_cerebrum_left_cm3 float Cerebrum Left cm3 + clinad_volbrain_cerebrum_left_% float Cerebrum Left % + clinad_volbrain_cerebrum_l_gm_cm3 float Cerebrum L GM cm3 + clinad_volbrain_cerebrum_l_gm_% float Cerebrum L GM % + clinad_volbrain_cerebrum_l_wm_cm3 float Cerebrum L WM cm3 + clinad_volbrain_cerebrum_l_wm_% float Cerebrum L WM % + clinad_volbrain_cerebrum_assymetry float Cerebrum Asymmetry + clinad_volbrain_cerebelum_total_cm3 float Cerebelum Total cm3 + clinad_volbrain_cerebelum_total_% float Cerebelum Total % + clinad_volbrain_cerebelum_t_gm_cm3 float Cerebelum T GM cm3 + clinad_volbrain_cerebelum_t_gm_% float Cerebelum T GM % + clinad_volbrain_cerebelum_t_wm_cm3 float Cerebelum T WM cm3 + clinad_volbrain_cerebelum_t_wm_% float Cerebelum T WM % + clinad_volbrain_cerebelum_right_cm3 float Cerebelum Right cm3 + clinad_volbrain_cerebelum_right_% float Cerebelum Right % + clinad_volbrain_cerebelum_r_gm_cm3 float Cerebelum R GM cm3 + clinad_volbrain_cerebelum_r_gm_% float Cerebelum R GM % + clinad_volbrain_cerebelum_r_wm_cm3 float Cerebelum R WM cm3 + clinad_volbrain_cerebelum_r_wm_% float Cerebelum R WM % + clinad_volbrain_cerebelum_left_cm3 float Cerebelum Left cm3 + clinad_volbrain_cerebelum_left_% float Cerebelum Left % + clinad_volbrain_cerebelum_l_gm_cm3 float Cerebelum L GM cm3 + clinad_volbrain_cerebelum_l_gm_% float Cerebelum L GM % + clinad_volbrain_cerebelum_l_wm_cm3 float Cerebelum L WM cm3 + clinad_volbrain_cerebelum_l_wm_% float Cerebelum L WM % + clinad_volbrain_cerebelum_assymetry float Cerebelum Asymmetry + clinad_volbrain_brainstem_cm3 float Brainstem cm3 + clinad_volbrain_brainstem_% float Brainstem % + clinad_volbrain_lateral_ventricles_total_cm3 float Lateral ventricles Total cm3 + clinad_volbrain_lateral_ventricles_total_% float Lateral ventricles Total % + clinad_volbrain_lateral_ventricles_right_cm3 float Lateral ventricles Right cm3 + clinad_volbrain_lateral_ventricles_right_% float Lateral ventricles Right % + clinad_volbrain_lateral_ventricles_left_cm3 float Lateral ventricles Left cm3 + clinad_volbrain_lateral_ventricles_left_% float Lateral ventricles Left % + clinad_volbrain_lateral_ventricles_asymmetry float Lateral ventricles Asymmetry + clinad_volbrain_caudate_total_cm3 float Caudate Total cm3 + clinad_volbrain_caudate_total_% float Caudate Total % + clinad_volbrain_caudate_right_cm3 float Caudate Right cm3 + clinad_volbrain_caudate_right_% float Caudate Right % + clinad_volbrain_caudate_left_cm3 float Caudate Left cm3 + clinad_volbrain_caudate_left_% float Caudate Left % + clinad_volbrain_caudate_asymmetry float Caudate Asymmetry + clinad_volbrain_putamen_total_cm3 float Putamen Total cm3 + clinad_volbrain_putamen_total_% float Putamen Total % + clinad_volbrain_putamen_right_cm3 float Putamen Right cm3 + clinad_volbrain_putamen_right_% float Putamen Right % + clinad_volbrain_putamen_left_cm3 float Putamen Left cm3 + clinad_volbrain_putamen_left_% float Putamen Left % + clinad_volbrain_putamen_asymmetry float Putamen Asymmetry + clinad_volbrain_thalamus_total_cm3 float Thalamus Total cm3 + clinad_volbrain_thalamus_total_% float Thalamus Total % + clinad_volbrain_thalamus_right_cm3 float Thalamus Right cm3 + clinad_volbrain_thalamus_right_% float Thalamus Right % + clinad_volbrain_thalamus_left_cm3 float Thalamus Left cm3 + clinad_volbrain_thalamus_left_% float Thalamus Left % + clinad_volbrain_thalamus_asymmetry float Thalamus Asymmetry + clinad_volbrain_globus_pallidus_total_cm3 float Globus Pallidus Total cm3 + clinad_volbrain_globus_pallidus_total_% float Globus Pallidus Total % + clinad_volbrain_globus_pallidus_right_cm3 float Globus Pallidus Right cm3 + clinad_volbrain_globus_pallidus_right_% float Globus Pallidus Right % + clinad_volbrain_globus_pallidus_left_cm3 float Globus Pallidus Left cm3 + clinad_volbrain_globus_pallidus_left_% float Globus Pallidus Left % + clinad_volbrain_globus_pallidus_asymmetry float Globus Pallidus Asymmetry + clinad_volbrain_hippocampus_total_cm3 float Hippocampus Total cm3 + clinad_volbrain_hippocampus_total_% float Hippocampus Total % + clinad_volbrain_hippocampus_right_cm3 float Hippocampus Right cm3 + clinad_volbrain_hippocampus_right_% float Hippocampus Right % + clinad_volbrain_hippocampus_left_cm3 float Hippocampus Left cm3 + clinad_volbrain_hippocampus_left_% float Hippocampus Left % + clinad_volbrain_hippocampus_asymmetry float Hippocampus Asymmetry + clinad_volbrain_amygdala_total_cm3 float Amygdala Total cm3 + clinad_volbrain_amygdala_total_% float Amygdala Total % + clinad_volbrain_amygdala_right_cm3 float Amygdala Right cm3 + clinad_volbrain_amygdala_right_% float Amygdala Right % + clinad_volbrain_amygdala_left_cm3 float Amygdala Left cm3 + clinad_volbrain_amygdala_left_% float Amygdala Left % + clinad_volbrain_amygdala_asymmetry float Amygdala Asymmetry + clinad_volbrain_accumbens_total_cm3 Accumbens Total cm3 + clinad_volbrain_accumbens_total_% Accumbens Total % + clinad_volbrain_accumbens_right_cm3 Accumbens Right cm3 + clinad_volbrain_accumbens_right_% Accumbens Right % + clinad_volbrain_accumbens_left_cm3 Accumbens Left cm3 + clinad_volbrain_accumbens_left_% Accumbens Left % + clinad_volbrain_accumbens_asymmetry Accumbens Asymmetry + clinad_brainreader_id_rm MR ID + clinad_brainreader_clinical_image_id Clinical image id + clinad_brainreader_filename Filename + clinad_brainreader_nr_version NR version + clinad_brainreader_mtiv_in_ml float The measured total intracranial volume (mTIV) in ml + clinad_brainreader_hippocampal_left_right_asymmetry_index float Hippocampal Left-Right Asymmetry Index + clinad_brainreader_hippocampal_left_right_asymmetry_index_nr_index float Hippocampal Left-Right Asymmetry Index NR Index + clinad_brainreader_hippocampal_left_right_asymmetry_index_z_score float Hippocampal Left-Right Asymmetry Index z-score + clinad_brainreader_hippocampal_left_right_asymmetry_index_percentile float Hippocampal Left-Right Asymmetry Index percentile + clinad_brainreader_whole_brain_matter_volume_in_ml float Whole-Brain-Matter volume in ml + clinad_brainreader_whole_brain_matter_vol_mtiv_ratio float Whole-Brain-Matter Vol/mTIV ratio + clinad_brainreader_whole_brain_matter_nr_index float Whole-Brain-Matter NR Index + clinad_brainreader_whole_brain_matter_z_score float Whole-Brain-Matter z-score + clinad_brainreader_whole_brain_matter_percentile float Whole-Brain-Matter percentile + clinad_brainreader_white_matter_volume_in_ml float White-Matter volume in ml + clinad_brainreader_white_matter_vol_mtiv_ratio float White-Matter Vol/mTIV ratio + clinad_brainreader_white_matter_nr_index float White-Matter NR Index + clinad_brainreader_white_matter_z_score float White-Matter z-score + clinad_brainreader_white_matter_percentile float White-Matter percentile + clinad_brainreader_gray_matter_volume_in_ml float Gray-Matter volume in ml + clinad_brainreader_gray_matter_vol_mtiv_ratio float Gray-Matter Vol/mTIV ratio + clinad_brainreader_gray_matter_nr_index float Gray-Matter NR Index + clinad_brainreader_gray_matter_z_score float Gray-Matter z-score + clinad_brainreader_gray_matter_percentile float Gray-Matter percentile + clinad_brainreader_csf_dura_volume_in_ml float CSF-(+-dura) volume in ml + clinad_brainreader_csf_dura_vol_mtiv_ratio float CSF-(+-dura) Vol/mTIV ratio + clinad_brainreader_csf_dura_nr_index float CSF-(+-dura) NR Index + clinad_brainreader_csf_dura_z_score float CSF-(+-dura) z-score + clinad_brainreader_csf_dura_percentile float CSF-(+-dura) percentile + clinad_brainreader_left_hippocampus_volume_in_ml float Left-Hippocampus volume in ml + clinad_brainreader_left_hippocampus_vol_mtiv_ratio float Left-Hippocampus Vol/mTIV ratio + clinad_brainreader_left_hippocampus_nr_index float Left-Hippocampus NR Index + clinad_brainreader_left_hippocampus_z_score float Left-Hippocampus z-score + clinad_brainreader_left_hippocampus_percentile float Left-Hippocampus percentile + clinad_brainreader_right_hippocampus_volume_in_ml float Right-Hippocampus volume in ml + clinad_brainreader_right_hippocampus_vol_mtiv_ratio float Right-Hippocampus Vol/mTIV ratio + clinad_brainreader_right_hippocampus_nr_index float Right-Hippocampus NR Index + clinad_brainreader_right_hippocampus_z_score float Right-Hippocampus z-score + clinad_brainreader_right_hippocampus_percentile float Right-Hippocampus percentile + clinad_brainreader_hippocampus_volume_in_ml float Hippocampus volume in ml + clinad_brainreader_hippocampus_vol_mtiv_ratio float Hippocampus Vol/mTIV ratio + clinad_brainreader_hippocampus_nr_index float Hippocampus NR Index + clinad_brainreader_hippocampus_z_score float Hippocampus z-score + clinad_brainreader_hippocampus_percentile float Hippocampus percentile + clinad_brainreader_left_amygdala_volume_in_ml float Left-Amygdala volume in ml + clinad_brainreader_left_amygdala_vol_mtiv_ratio float Left-Amygdala Vol/mTIV ratio + clinad_brainreader_left_amygdala_nr_index float Left-Amygdala NR Index + clinad_brainreader_left_amygdala_z_score float Left-Amygdala z-score + clinad_brainreader_left_amygdala_percentile float Left-Amygdala percentile + clinad_brainreader_right_amygdala_volume_in_ml float Right-Amygdala volume in ml + clinad_brainreader_right_amygdala_vol_mtiv_ratio float Right-Amygdala Vol/mTIV ratio + clinad_brainreader_right_amygdala_nr_index float Right-Amygdala NR Index + clinad_brainreader_right_amygdala_z_score float Right-Amygdala z-score + clinad_brainreader_right_amygdala_percentile float Right-Amygdala percentile + clinad_brainreader_amygdala_volume_in_ml float Amygdala volume in ml + clinad_brainreader_amygdala_vol_mtiv_ratio float Amygdala Vol/mTIV ratio + clinad_brainreader_amygdala_nr_index float Amygdala NR Index + clinad_brainreader_amygdala_z_score float Amygdala z-score + clinad_brainreader_amygdala_percentile float Amygdala percentile + clinad_brainreader_brain_stem_volume_in_ml float Brain-Stem volume in ml + clinad_brainreader_brain_stem_vol_mtiv_ratio float Brain-Stem Vol/mTIV ratio + clinad_brainreader_brain_stem_nr_index float Brain-Stem NR Index + clinad_brainreader_brain_stem_z_score float Brain-Stem z-score + clinad_brainreader_brain_stem_percentile float Brain-Stem percentile + clinad_brainreader_caudate_volume_in_ml float Caudate volume in ml + clinad_brainreader_caudate_vol_mtiv_ratio float Caudate Vol/mTIV ratio + clinad_brainreader_caudate_nr_index float Caudate NR Index + clinad_brainreader_caudate_z_score float Caudate z-score + clinad_brainreader_caudate_percentile float Caudate percentile + clinad_brainreader_left_caudate_volume_in_ml float Left-Caudate volume in ml + clinad_brainreader_left_caudate_vol_mtiv_ratio float Left-Caudate Vol/mTIV ratio + clinad_brainreader_left_caudate_nr_index float Left-Caudate NR Index + clinad_brainreader_left_caudate_z_score float Left-Caudate z-score + clinad_brainreader_left_caudate_percentile float Left-Caudate percentile + clinad_brainreader_right_caudate_volume_in_ml float Right-Caudate volume in ml + clinad_brainreader_right_caudate_vol_mtiv_ratio float Right-Caudate Vol/mTIV ratio + clinad_brainreader_right_caudate_nr_index float Right-Caudate NR Index + clinad_brainreader_right_caudate_z_score float Right-Caudate z-score + clinad_brainreader_right_caudate_percentile float Right-Caudate percentile + clinad_brainreader_left_cerebellum_volume_in_ml float Left-Cerebellum volume in ml + clinad_brainreader_left_cerebellum_vol_mtiv_ratio float Left-Cerebellum Vol/mTIV ratio + clinad_brainreader_left_cerebellum_nr_index float Left-Cerebellum NR Index + clinad_brainreader_left_cerebellum_z_score float Left-Cerebellum z-score + clinad_brainreader_left_cerebellum_percentile float Left-Cerebellum percentile + clinad_brainreader_right_cerebellum_volume_in_ml float Right-Cerebellum volume in ml + clinad_brainreader_right_cerebellum_vol_mtiv_ratio float Right-Cerebellum Vol/mTIV ratio + clinad_brainreader_right_cerebellum_nr_index float Right-Cerebellum NR Index + clinad_brainreader_right_cerebellum_z_score float Right-Cerebellum z-score + clinad_brainreader_right_cerebellum_percentile float Right-Cerebellum percentile + clinad_brainreader_cerebellum_volume_in_ml float Cerebellum volume in ml + clinad_brainreader_cerebellum_vol_mtiv_ratio float Cerebellum Vol/mTIV ratio + clinad_brainreader_cerebellum_nr_index float Cerebellum NR Index + clinad_brainreader_cerebellum_z_score float Cerebellum z-score + clinad_brainreader_cerebellum_percentile float Cerebellum percentile + clinad_brainreader_lateral_ventricle_volume_in_ml float Lateral-Ventricle volume in ml + clinad_brainreader_lateral_ventricle_vol_mtiv_ratio float Lateral-Ventricle Vol/mTIV ratio + clinad_brainreader_lateral_ventricle_nr_index float Lateral-Ventricle NR Index + clinad_brainreader_lateral_ventricle_z_score float Lateral-Ventricle z-score + clinad_brainreader_lateral_ventricle_percentile float Lateral-Ventricle percentile + clinad_brainreader_left_lateral_ventricle_volume_in_ml float Left-Lateral-Ventricle volume in ml + clinad_brainreader_left_lateral_ventricle_vol_mtiv_ratio float Left-Lateral-Ventricle Vol/mTIV ratio + clinad_brainreader_left_lateral_ventricle_nr_index float Left-Lateral-Ventricle NR Index + clinad_brainreader_left_lateral_ventricle_z_score float Left-Lateral-Ventricle z-score + clinad_brainreader_left_lateral_ventricle_percentile float Left-Lateral-Ventricle percentile + clinad_brainreader_right_lateral_ventricle_volume_in_ml float Right-Lateral-Ventricle volume in ml + clinad_brainreader_right_lateral_ventricle_vol_mtiv_ratio float Right-Lateral-Ventricle Vol/mTIV ratio + clinad_brainreader_right_lateral_ventricle_nr_index float Right-Lateral-Ventricle NR Index + clinad_brainreader_right_lateral_ventricle_z_score float Right-Lateral-Ventricle z-score + clinad_brainreader_right_lateral_ventricle_percentile float Right-Lateral-Ventricle percentile + clinad_brainreader_putamen_volume_in_ml float Putamen volume in ml + clinad_brainreader_putamen_vol_mtiv_ratio float Putamen Vol/mTIV ratio + clinad_brainreader_putamen_nr_index float Putamen NR Index + clinad_brainreader_putamen_z_score float Putamen z-score + clinad_brainreader_putamen_percentile float Putamen percentile + clinad_brainreader_left_putamen_volume_in_ml float Left-Putamen volume in ml + clinad_brainreader_left_putamen_vol_mtiv_ratio float Left-Putamen Vol/mTIV ratio + clinad_brainreader_left_putamen_nr_index float Left-Putamen NR Index + clinad_brainreader_left_putamen_z_score float Left-Putamen z-score + clinad_brainreader_left_putamen_percentile float Left-Putamen percentile + clinad_brainreader_right_putamen_volume_in_ml float Right-Putamen volume in ml + clinad_brainreader_right_putamen_vol_mtiv_ratio float Right-Putamen Vol/mTIV ratio + clinad_brainreader_right_putamen_nr_index float Right-Putamen NR Index + clinad_brainreader_right_putamen_z_score float Right-Putamen z-score + clinad_brainreader_right_putamen_percentile float Right-Putamen percentile + clinad_brainreader_thalamus_volume_in_ml float Thalamus volume in ml + clinad_brainreader_thalamus_vol_mtiv_ratio float Thalamus Vol/mTIV ratio + clinad_brainreader_thalamus_nr_index float Thalamus NR Index + clinad_brainreader_thalamus_z_score float Thalamus z-score + clinad_brainreader_thalamus_percentile float Thalamus percentile + clinad_brainreader_left_thalamus_volume_in_ml float Left-Thalamus volume in ml + clinad_brainreader_left_thalamus_vol_mtiv_ratio float Left-Thalamus Vol/mTIV ratio + clinad_brainreader_left_thalamus_nr_index float Left-Thalamus NR Index + clinad_brainreader_left_thalamus_z_score float Left-Thalamus z-score + clinad_brainreader_left_thalamus_percentile float Left-Thalamus percentile + clinad_brainreader_right_thalamus_volume_in_ml float Right-Thalamus volume in ml + clinad_brainreader_right_thalamus_vol_mtiv_ratio float Right-Thalamus Vol/mTIV ratio + clinad_brainreader_right_thalamus_nr_index float Right-Thalamus NR Index + clinad_brainreader_right_thalamus_z_score float Right-Thalamus z-score + clinad_brainreader_right_thalamus_percentile float Right-Thalamus percentile + clinad_brainreader_ventral_diencephalon_volume_in_ml float Ventral-Diencephalon volume in ml + clinad_brainreader_ventral_diencephalon_vol_mtiv_ratio float Ventral-Diencephalon Vol/mTIV ratio + clinad_brainreader_ventral_diencephalon_nr_index float Ventral-Diencephalon NR Index + clinad_brainreader_ventral_diencephalon_z_score float Ventral-Diencephalon z-score + clinad_brainreader_ventral_diencephalon_percentile float Ventral-Diencephalon percentile + clinad_brainreader_left_ventral_diencephalon_volume_in_ml float Left-Ventral-Diencephalon volume in ml + clinad_brainreader_left_ventral_diencephalon_vol_mtiv_ratio float Left-Ventral-Diencephalon Vol/mTIV ratio + clinad_brainreader_left_ventral_diencephalon_nr_index float Left-Ventral-Diencephalon NR Index + clinad_brainreader_left_ventral_diencephalon_z_score float Left-Ventral-Diencephalon z-score + clinad_brainreader_left_ventral_diencephalon_percentile float Left-Ventral-Diencephalon percentile + clinad_brainreader_right_ventral_diencephalon_volume_in_ml float Right-Ventral-Diencephalon volume in ml + clinad_brainreader_right_ventral_diencephalon_vol_mtiv_ratio float Right-Ventral-Diencephalon Vol/mTIV ratio + clinad_brainreader_right_ventral_diencephalon_nr_index float Right-Ventral-Diencephalon NR Index + clinad_brainreader_right_ventral_diencephalon_z_score float Right-Ventral-Diencephalon z-score + clinad_brainreader_right_ventral_diencephalon_percentile float Right-Ventral-Diencephalon percentile + clinad_brainreader_left_frontal_lobe_volume_in_ml float Left-Frontal-Lobe volume in ml + clinad_brainreader_left_frontal_lobe_vol_mtiv_ratio float Left-Frontal-Lobe Vol/mTIV ratio + clinad_brainreader_left_frontal_lobe_nr_index float Left-Frontal-Lobe NR Index + clinad_brainreader_left_frontal_lobe_z_score float Left-Frontal-Lobe z-score + clinad_brainreader_left_frontal_lobe_percentile float Left-Frontal-Lobe percentile + clinad_brainreader_right_frontal_lobe_volume_in_ml float Right-Frontal-Lobe volume in ml + clinad_brainreader_right_frontal_lobe_vol_mtiv_ratio float Right-Frontal-Lobe Vol/mTIV ratio + clinad_brainreader_right_frontal_lobe_nr_index float Right-Frontal-Lobe NR Index + clinad_brainreader_right_frontal_lobe_z_score float Right-Frontal-Lobe z-score + clinad_brainreader_right_frontal_lobe_percentile float Right-Frontal-Lobe percentile + clinad_brainreader_left_parietal_lobe_volume_in_ml float Left-Parietal-Lobe volume in ml + clinad_brainreader_left_parietal_lobe_vol_mtiv_ratio float Left-Parietal-Lobe Vol/mTIV ratio + clinad_brainreader_left_parietal_lobe_nr_index float Left-Parietal-Lobe NR Index + clinad_brainreader_left_parietal_lobe_z_score float Left-Parietal-Lobe z-score + clinad_brainreader_left_parietal_lobe_percentile float Left-Parietal-Lobe percentile + clinad_brainreader_right_parietal_lobe_volume_in_ml float Right-Parietal-Lobe volume in ml + clinad_brainreader_right_parietal_lobe_vol_mtiv_ratio float Right-Parietal-Lobe Vol/mTIV ratio + clinad_brainreader_right_parietal_lobe_nr_index float Right-Parietal-Lobe NR Index + clinad_brainreader_right_parietal_lobe_z_score float Right-Parietal-Lobe z-score + clinad_brainreader_right_parietal_lobe_percentile float Right-Parietal-Lobe percentile + clinad_brainreader_left_occipital_lobe_volume_in_ml float Left-Occipital-Lobe volume in ml + clinad_brainreader_left_occipital_lobe_vol_mtiv_ratio float Left-Occipital-Lobe Vol/mTIV ratio + clinad_brainreader_left_occipital_lobe_nr_index float Left-Occipital-Lobe NR Index + clinad_brainreader_left_occipital_lobe_z_score float Left-Occipital-Lobe z-score + clinad_brainreader_left_occipital_lobe_percentile float Left-Occipital-Lobe percentile + clinad_brainreader_right_occipital_lobe_volume_in_ml float Right-Occipital-Lobe volume in ml + clinad_brainreader_right_occipital_lobe_vol_mtiv_ratio float Right-Occipital-Lobe Vol/mTIV ratio + clinad_brainreader_right_occipital_lobe_nr_index float Right-Occipital-Lobe NR Index + clinad_brainreader_right_occipital_lobe_z_score float Right-Occipital-Lobe z-score + clinad_brainreader_right_occipital_lobe_percentile float Right-Occipital-Lobe percentile + clinad_brainreader_left_temporal_lobe_volume_in_ml float Left-Temporal-Lobe volume in ml + clinad_brainreader_left_temporal_lobe_vol_mtiv_ratio float Left-Temporal-Lobe Vol/mTIV ratio + clinad_brainreader_left_temporal_lobe_nr_index float Left-Temporal-Lobe NR Index + clinad_brainreader_left_temporal_lobe_z_score float Left-Temporal-Lobe z-score + clinad_brainreader_left_temporal_lobe_percentile float Left-Temporal-Lobe percentile + clinad_brainreader_right_temporal_lobe_volume_in_ml float Right-Temporal-Lobe volume in ml + clinad_brainreader_right_temporal_lobe_vol_mtiv_ratio float Right-Temporal-Lobe Vol/mTIV ratio + clinad_brainreader_right_temporal_lobe_nr_index float Right-Temporal-Lobe NR Index + clinad_brainreader_right_temporal_lobe_z_score float Right-Temporal-Lobe z-score + clinad_brainreader_right_temporal_lobe_percentile float Right-Temporal-Lobe percentile + clinad_brainreader_frontal_lobe_volume_in_ml float Frontal-Lobe volume in ml + clinad_brainreader_frontal_lobe_vol_mtiv_ratio float Frontal-Lobe Vol/mTIV ratio + clinad_brainreader_frontal_lobe_nr_index float Frontal-Lobe NR Index + clinad_brainreader_frontal_lobe_z_score float Frontal-Lobe z-score + clinad_brainreader_frontal_lobe_percentile float Frontal-Lobe percentile + clinad_brainreader_parietal_lobe_volume_in_ml float Parietal-Lobe volume in ml + clinad_brainreader_parietal_lobe_vol_mtiv_ratio float Parietal-Lobe Vol/mTIV ratio + clinad_brainreader_parietal_lobe_nr_index float Parietal-Lobe NR Index + clinad_brainreader_parietal_lobe_z_score float Parietal-Lobe z-score + clinad_brainreader_parietal_lobe_percentile float Parietal-Lobe percentile + clinad_brainreader_occipital_lobe_volume_in_ml float Occipital-Lobe volume in ml + clinad_brainreader_occipital_lobe_vol_mtiv_ratio float Occipital-Lobe Vol/mTIV ratio + clinad_brainreader_occipital_lobe_nr_index float Occipital-Lobe NR Index + clinad_brainreader_occipital_lobe_z_score float Occipital-Lobe z-score + clinad_brainreader_occipital_lobe_percentile float Occipital-Lobe percentile + clinad_brainreader_temporal_lobe_volume_in_ml float Temporal-Lobe volume in ml + clinad_brainreader_temporal_lobe_vol_mtiv_ratio float Temporal-Lobe Vol/mTIV ratio + clinad_brainreader_temporal_lobe_nr_index float Temporal-Lobe NR Index + clinad_brainreader_temporal_lobe_z_score float Temporal-Lobe z-score + clinad_brainreader_temporal_lobe_percentile float Temporal-Lobe percentile + clinad_brainreader_left_pallidum_volume_in_ml float Left-Pallidum volume in ml + clinad_brainreader_left_pallidum_vol_mtiv_ratio float Left-Pallidum Vol/mTIV ratio + clinad_brainreader_left_pallidum_nr_index float Left-Pallidum NR Index + clinad_brainreader_left_pallidum_z_score float Left-Pallidum z-score + clinad_brainreader_left_pallidum_percentile float Left-Pallidum percentile + clinad_brainreader_right_pallidum_volume_in_ml float Right-Pallidum volume in ml + clinad_brainreader_right_pallidum_vol_mtiv_ratio float Right-Pallidum Vol/mTIV ratio + clinad_brainreader_right_pallidum_nr_index float Right-Pallidum NR Index + clinad_brainreader_right_pallidum_z_score float Right-Pallidum z-score + clinad_brainreader_right_pallidum_percentile float Right-Pallidum percentile + clinad_brainreader_pallidum_volume_in_ml float Pallidum volume in ml + clinad_brainreader_pallidum_vol_mtiv_ratio float Pallidum Vol/mTIV ratio + clinad_brainreader_pallidum_nr_index float Pallidum NR Index + clinad_brainreader_pallidum_z_score float Pallidum z-score + clinad_brainreader_pallidum_percentile float Pallidum percentile + clinad_brainreader_pallidum_volume_in_ml float Pallidum volume in ml + clinad_brainreader_pallidum_vol_mtiv_ratio float Pallidum Vol/mTIV ratio + clinad_brainreader_pallidum_nr_index float Pallidum NR Index + clinad_brainreader_pallidum_z_score float Pallidum z-score + clinad_brainreader_pallidum_percentile float Pallidum percentile diff --git a/test/unittests/iotools/test_bids_utils.py b/test/unittests/iotools/test_bids_utils.py index 65ef601ed..f39bdef63 100644 --- a/test/unittests/iotools/test_bids_utils.py +++ b/test/unittests/iotools/test_bids_utils.py @@ -133,9 +133,9 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "OASIS": [np.nan, "ID", np.nan, "M/F", np.nan], "OASIS location": [ np.nan, - "oasis_cross-sectional.csv", + "oasis_cross-sectional-5708aa0a98d82080.xlsx", np.nan, - "oasis_cross-sectional.csv", + "oasis_cross-sectional-5708aa0a98d82080.xlsx", np.nan, ], } @@ -182,7 +182,9 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "Age": ["45", "50", "55", "60", "60"], } ) - df_oasis.to_csv(clinical_path / "oasis_cross-sectional.csv", index=False) + df_oasis.to_excel( + clinical_path / "oasis_cross-sectional-5708aa0a98d82080.xlsx", index=False + ) return clinical_path From 3cb533853b62a6bdbacd86c03319d508167d728e Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:29:14 +0200 Subject: [PATCH 05/13] [DOC] Modify download instructions for OASIS-to-BIDS data (#1324) --- docs/Converters/OASIS2BIDS.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/Converters/OASIS2BIDS.md b/docs/Converters/OASIS2BIDS.md index 63c6d29ea..85fbf1dc3 100644 --- a/docs/Converters/OASIS2BIDS.md +++ b/docs/Converters/OASIS2BIDS.md @@ -1,7 +1,10 @@ # `oasis-to-bids` – Conversion of the Open Access Series of Imaging Studies (OASIS) to BIDS -!!! quote "Description reproduced from the [OASIS' webpage](https://sites.wustl.edu/oasisbrains)" +!!! warning + We do not currently support the conversion of OASIS-2. + +??? quote "Description reproduced from the [OASIS' webpage](https://sites.wustl.edu/oasisbrains)" The Open Access Series of Imaging Studies (OASIS) is a project aimed at making MRI data sets of the brain freely available to the scientific community. By compiling and freely distributing MRI data sets, we hope to facilitate future discoveries in basic and clinical neuroscience. OASIS is made available by the Washington University Alzheimer’s Disease Research Center, Dr. Randy Buckner at the Howard Hughes Medical Institute (HHMI) at Harvard University, the Neuroinformatics Research Group (NRG) at Washington University School of Medicine, and the Biomedical Informatics Research Network (BIRN). @@ -22,13 +25,14 @@ If you installed the core of Clinica, this converter needs no further dependenci The OASIS to BIDS converter requires the user to have downloaded the OASIS-1 (also called *Cross-sectional MRI Data in Young, Middle Aged, Nondemented and Demented Older Adults*) imaging and clinical data. -To do so, visit the [OASIS website](https://sites.wustl.edu/oasisbrains/), click on `DATASETS` then `OASIS-1`. You can download the imaging data via FTP or XNAT (if you click on `Browse Data`). Download the clinical data by clicking on `Download CSV`. +To do so, visit the OASIS website page [specific to OASIS-1](https://sites.wustl.edu/oasisbrains/home/oasis-1/), and go to `Download Instructions`. -!!! note - You do not have to modify the original folder name or rename the clinical data file before using the converter. +- Download clinical data by clicking on `OASIS-1 : Demographic and Clinical Data`, then `CSV File with Demographic, and Clinical Data`. +- Download image data by clicking on `OASIS-1 : Raw Data Download` then any archive link. !!! warning - We do not currently support the conversion of OASIS-2. + All subjects to be converted should be placed in the same folder, which means the archives downloaded from the website should be unzipped in the same folder. + ## Modalities supported @@ -38,7 +42,6 @@ To convert the imaging data to BIDS, the list of subjects is obtained from the d For each subject, among the multiple T1w MR images available, we select the average of the motion-corrected co-registered individual images resampled to 1 mm isotropic voxels, located in the `SUBJ_111` subfolder. -The clinical data being converted are defined in a spreadsheet (`clinical_specifications.xlsx`) available with the code of the converter, which the user can modify. ## Using the converter @@ -67,7 +70,7 @@ DATASET_DIRECTORY ├── ... ``` -- `CLINICAL_DATA_DIRECTORY` is the path to the directory containing the [CSV](../glossary.md#csv) file called `oasis_cross-sectional.csv`. +- `CLINICAL_DATA_DIRECTORY` is the path to the directory containing the excel file called `oasis_cross-sectional-5708aa0a98d82080.xlsx`. - `BIDS_DIRECTORY` is the path to the output directory, where the BIDS-converted version of OASIS will be stored. From 7cbc43d27701dd6f49abd217b9ead754ba106460 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Fri, 11 Oct 2024 14:42:16 +0200 Subject: [PATCH 06/13] [FIX] Add import for `ClinicaMissingDependencyError` in `anat_linear_utils.py` (#1329) --- clinica/pipelines/t1_linear/anat_linear_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/clinica/pipelines/t1_linear/anat_linear_utils.py b/clinica/pipelines/t1_linear/anat_linear_utils.py index 1f24a6e1d..0d2a35046 100644 --- a/clinica/pipelines/t1_linear/anat_linear_utils.py +++ b/clinica/pipelines/t1_linear/anat_linear_utils.py @@ -108,6 +108,7 @@ def run_n4biasfieldcorrection( bias_corrected_output_path : Path The path to the bias corrected image. """ + from clinica.utils.exceptions import ClinicaMissingDependencyError from clinica.utils.stream import cprint, log_and_raise try: From d6123b30669255281804f273852fba0b9538be1b Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Wed, 16 Oct 2024 08:41:45 +0200 Subject: [PATCH 07/13] [FIX] Fix method `BIDSubjectID.to_study_id()` (#1335) --- clinica/iotools/bids_utils.py | 4 ++-- test/unittests/iotools/test_bids_utils.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/clinica/iotools/bids_utils.py b/clinica/iotools/bids_utils.py index 19ec84547..324ef4571 100644 --- a/clinica/iotools/bids_utils.py +++ b/clinica/iotools/bids_utils.py @@ -292,7 +292,7 @@ def from_original_study_id(cls, study_id: str) -> str: ) def to_original_study_id(self) -> str: - return str(self.replace("sub-HABS", "P_")) + return str(self).replace("sub-HABS", "P_") class IXIBIDSSubjectID(BIDSSubjectID): @@ -317,7 +317,7 @@ def from_original_study_id(cls, study_id: str) -> str: ) def to_original_study_id(self) -> str: - return str(self.replace("sub-", "")) + return str(self).replace("sub-", "") # -- Methods for the clinical data -- diff --git a/test/unittests/iotools/test_bids_utils.py b/test/unittests/iotools/test_bids_utils.py index f39bdef63..a26dbe03b 100644 --- a/test/unittests/iotools/test_bids_utils.py +++ b/test/unittests/iotools/test_bids_utils.py @@ -93,7 +93,7 @@ def test_study_to_bids_id_value_error(study, study_id): @pytest.mark.parametrize( - "study,expected,bids_id", + "study,source_id,bids_id", [ (StudyName.ADNI, "001_S_0001", "sub-ADNI001S0001"), (StudyName.NIFD, "1_S_0001", "sub-NIFD1S0001"), @@ -106,10 +106,10 @@ def test_study_to_bids_id_value_error(study, study_id): (StudyName.IXI, "IXI001", "sub-IXI001"), ], ) -def test_bids_to_study(study, bids_id, expected): +def test_bids_to_study(study, bids_id, source_id): from clinica.iotools.bids_utils import bids_id_factory - assert bids_id_factory(study).to_original_study_id(bids_id) == expected + assert bids_id_factory(study)(bids_id).to_original_study_id() == source_id def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: From 999cd3df306b36ad248b60f59cdcbad9cb7f7b7e Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:14:15 +0200 Subject: [PATCH 08/13] [FIX] Fix logging in OASIS and AIBL converters (#1340) --- clinica/iotools/converters/aibl_to_bids/utils/bids.py | 8 ++++++++ clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/clinica/iotools/converters/aibl_to_bids/utils/bids.py b/clinica/iotools/converters/aibl_to_bids/utils/bids.py index 88cfc4327..15a12f21b 100644 --- a/clinica/iotools/converters/aibl_to_bids/utils/bids.py +++ b/clinica/iotools/converters/aibl_to_bids/utils/bids.py @@ -630,11 +630,19 @@ def _create_file( Path or None : Path to file """ + from clinica.cmdline import setup_clinica_logging from clinica.iotools.bids_utils import StudyName, bids_id_factory, json_from_dcm from clinica.iotools.converter_utils import viscode_to_session from clinica.iotools.utils.data_handling import center_nifti_origin from clinica.utils.stream import cprint + # This function is executed in a multiprocessing context + # such that we need to re-configure the clinica logger in the child processes. + # Note that logging messages could easily be lost (for example when logging + # to a file from two different processes). A better solution would be to + # implement a logging process consuming logging messages from a multiprocessing.Queue... + setup_clinica_logging("INFO") + participant_id = bids_id_factory(StudyName.AIBL).from_original_study_id( image.Subjects_ID ) diff --git a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py index 9f0a1808d..d57ea0e8c 100644 --- a/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py +++ b/clinica/iotools/converters/oasis_to_bids/oasis_to_bids.py @@ -172,9 +172,17 @@ def _create_modality_agnostic_files(self, bids_dir: Path): @staticmethod def convert_single_subject(subj_folder: Path, dest_dir: Path): + from clinica.cmdline import setup_clinica_logging from clinica.iotools.bids_utils import StudyName, bids_id_factory from clinica.utils.stream import cprint + # This function is executed in a multiprocessing context + # such that we need to re-configure the clinica logger in the child processes. + # Note that logging messages could easily be lost (for example when logging + # to a file from two different processes). A better solution would be to + # implement a logging process consuming logging messages from a multiprocessing.Queue... + setup_clinica_logging("INFO") + t1_folder = subj_folder / "PROCESSED" / "MPRAGE" / "SUBJ_111" cprint(f"Converting {subj_folder.name}", lvl="info") participant_id = bids_id_factory(StudyName.OASIS).from_original_study_id( From 539cc4eeea3d6b070ef6b2a18a872bc6b6b98659 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:12:58 +0200 Subject: [PATCH 09/13] [FIX] ADNI utils `load_clinical_csv` should avoid hidden files (#1343) --- clinica/iotools/converters/adni_to_bids/adni_utils.py | 2 +- .../iotools/converters/adni_to_bids/test_adni_utils.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/clinica/iotools/converters/adni_to_bids/adni_utils.py b/clinica/iotools/converters/adni_to_bids/adni_utils.py index 2ac56a99d..c79631787 100644 --- a/clinica/iotools/converters/adni_to_bids/adni_utils.py +++ b/clinica/iotools/converters/adni_to_bids/adni_utils.py @@ -1109,7 +1109,7 @@ def load_clinical_csv(clinical_dir: Path, filename: str) -> pd.DataFrame: pattern = filename + r"(_\d{1,2}[A-Za-z]{3}\d{4})?.csv" files_matching_pattern = [ - f for f in clinical_dir.rglob("*.csv") if re.search(pattern, f.name) + f for f in clinical_dir.rglob("[!.]*.csv") if re.search(pattern, f.name) ] if len(files_matching_pattern) != 1: raise IOError( diff --git a/test/unittests/iotools/converters/adni_to_bids/test_adni_utils.py b/test/unittests/iotools/converters/adni_to_bids/test_adni_utils.py index 951d7ce36..540391a98 100644 --- a/test/unittests/iotools/converters/adni_to_bids/test_adni_utils.py +++ b/test/unittests/iotools/converters/adni_to_bids/test_adni_utils.py @@ -236,7 +236,7 @@ def test_compute_session_id(csv_filename, visit_code_column_name): @pytest.fixture -def input_df(): +def input_df() -> pd.DataFrame: return pd.DataFrame( { "foo": ["foo1", "foo2", "foo3"], @@ -255,6 +255,7 @@ def test_load_clinical_csv(tmp_path, input_df, csv_name, csv_to_look_for): from clinica.iotools.converters.adni_to_bids.adni_utils import load_clinical_csv input_df.to_csv(tmp_path / csv_name, index=False) + pd.DataFrame().to_csv(tmp_path / f".{csv_name}") assert_frame_equal(load_clinical_csv(tmp_path, csv_to_look_for), input_df) @@ -278,8 +279,6 @@ def test_load_clinical_csv_error( def test_load_clinical_csv_value_error(tmp_path): - import re - from clinica.iotools.converters.adni_to_bids.adni_utils import load_clinical_csv with open(tmp_path / "adnimerge.csv", "w") as fp: From 1fad1c3a3ccbd56b9b4c5f3fc1884ec602be4e55 Mon Sep 17 00:00:00 2001 From: Ravi Hassanaly <42928557+ravih18@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:17:58 +0200 Subject: [PATCH 10/13] [FIX] Correct the `pet-linear` pipeline (#1348) * Use T1W linear for non linear registration * run precommit * Update clinica/pipelines/pet/linear/pipeline.py * Update clinica/pipelines/pet/linear/pipeline.py --------- Co-authored-by: Gensollen --- clinica/pipelines/pet/linear/pipeline.py | 30 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/clinica/pipelines/pet/linear/pipeline.py b/clinica/pipelines/pet/linear/pipeline.py index 9e877c5a8..aae24d09c 100644 --- a/clinica/pipelines/pet/linear/pipeline.py +++ b/clinica/pipelines/pet/linear/pipeline.py @@ -38,7 +38,7 @@ def get_input_fields(self) -> List[str]: list of str : A list of (string) input fields name. """ - return ["pet", "t1w", "t1w_to_mni"] + return ["pet", "t1w", "t1w_to_mni", "t1w_linear"] def get_output_fields(self) -> List[str]: """Specify the list of possible outputs of this pipeline. @@ -66,7 +66,12 @@ def _build_input_node(self): ClinicaException, ) from clinica.utils.image import get_mni_template - from clinica.utils.input_files import T1W_NII, T1W_TO_MNI_TRANSFORM + from clinica.utils.input_files import ( + T1W_LINEAR, + T1W_LINEAR_CROPPED, + T1W_NII, + T1W_TO_MNI_TRANSFORM, + ) from clinica.utils.inputs import clinica_file_reader from clinica.utils.stream import cprint from clinica.utils.ux import print_images_to_process @@ -102,6 +107,21 @@ def _build_input_node(self): raise ClinicaBIDSError(err) # Inputs from t1-linear pipeline + # T1w images registered + t1w_linear_file_pattern = ( + T1W_LINEAR + if self.parameters.get("uncropped_image", False) + else T1W_LINEAR_CROPPED + ) + try: + t1w_linear_files, _ = clinica_file_reader( + self.subjects, + self.sessions, + self.caps_directory, + t1w_linear_file_pattern, + ) + except ClinicaException as e: + raise ClinicaCAPSError(e) # Transformation files from T1w files to MNI: try: t1w_to_mni_transformation_files, _ = clinica_file_reader( @@ -124,6 +144,7 @@ def _build_input_node(self): ("t1w", t1w_files), ("pet", pet_files), ("t1w_to_mni", t1w_to_mni_transformation_files), + ("t1w_linear", t1w_linear_files), ], synchronize=True, interface=nutil.IdentityInterface(fields=self.get_input_fields()), @@ -133,6 +154,7 @@ def _build_input_node(self): (read_input_node, self.input_node, [("t1w", "t1w")]), (read_input_node, self.input_node, [("pet", "pet")]), (read_input_node, self.input_node, [("t1w_to_mni", "t1w_to_mni")]), + (read_input_node, self.input_node, [("t1w_linear", "t1w_linear")]), ] ) @@ -394,12 +416,12 @@ def _build_core_nodes(self): ( self.input_node, ants_registration_nonlinear_node, - [("t1w", "moving_image")], + [("t1w_linear", "moving_image")], ), ( ants_registration_nonlinear_node, ants_applytransform_nonlinear_node, - [("reverse_forward_transforms", "transforms")], + [("forward_transforms", "transforms")], ), ( ants_applytransform_node, From 876298c76c5fdfc435ad20a5f58c1ec2f40e2cd3 Mon Sep 17 00:00:00 2001 From: AliceJoubert <158147135+AliceJoubert@users.noreply.github.com> Date: Thu, 24 Oct 2024 15:37:59 +0200 Subject: [PATCH 11/13] [FIX] ADNI-to-BIDS : incorporate the fix for KeyError "APGEN" (#1342) * Proposition * Changes upon suggestions * Modify unit test * Small fix --- clinica/iotools/bids_utils.py | 15 +++++++++ test/unittests/iotools/test_bids_utils.py | 39 ++++++++++++++++++----- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/clinica/iotools/bids_utils.py b/clinica/iotools/bids_utils.py index 324ef4571..e4eb8cedf 100644 --- a/clinica/iotools/bids_utils.py +++ b/clinica/iotools/bids_utils.py @@ -401,6 +401,21 @@ def create_participants_df( file_to_read = load_clinical_csv( clinical_data_dir, location.split(".")[0] ) + # Condition to handle ADNI modification of file APOERES.csv + # See issue https://github.com/aramis-lab/clinica/issues/1294 + if study_name == StudyName.ADNI and location == "APOERES.csv": + if ( + participant_fields_db[i] not in file_to_read.columns + and "GENOTYPE" in file_to_read.columns + ): + # Split the 'GENOTYPE' column into 'APGEN1' and 'APGEN2' + genotype = file_to_read["GENOTYPE"].str.split( + "/", expand=True + ) + file_to_read = file_to_read.assign( + APGEN1=genotype[0], APGEN2=genotype[1] + ) + prev_location = location prev_sheet = sheet diff --git a/test/unittests/iotools/test_bids_utils.py b/test/unittests/iotools/test_bids_utils.py index a26dbe03b..c014dbc7e 100644 --- a/test/unittests/iotools/test_bids_utils.py +++ b/test/unittests/iotools/test_bids_utils.py @@ -1,6 +1,6 @@ from pathlib import Path from string import Template -from typing import Union +from typing import Optional, Union import numpy as np import pandas as pd @@ -112,7 +112,7 @@ def test_bids_to_study(study, bids_id, source_id): assert bids_id_factory(study)(bids_id).to_original_study_id() == source_id -def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: +def create_participants_spec(tmp_path: Path) -> Path: spec_df = pd.DataFrame( { "BIDS CLINICA": [ @@ -142,6 +142,12 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: ) spec_df.to_csv(tmp_path / "participant.tsv", sep="\t", index=False) + return tmp_path + + +def create_clinical_data( + tmp_path: Path, study_name: StudyName, adni_genotype: Optional[bool] = False +) -> Path: clinical_path = tmp_path / "clinical_data" clinical_path.mkdir() @@ -160,14 +166,25 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "AGE": ["40", "50", "60", "70", "80", None], } ) + df_apoeres = pd.DataFrame( { "APGEN1": ["3", "3", "3", "3", None, "3"], "GEN2": ["2", "2", "2", "2", None, "2"], } ) + + if adni_genotype: + df_apoeres = pd.DataFrame( + { + "GENOTYPE": ["3/2", "3/2", "3/2", "3/2", None, "3/2"], + "GEN2": ["2", "2", "2", "2", None, "2"], + } + ) + df_adnimerge.to_csv(clinical_path / "ADNIMERGE.csv", index=False) df_apoeres.to_csv(clinical_path / "APOERES.csv", index=False) + if study_name == StudyName.OASIS: df_oasis = pd.DataFrame( { @@ -189,7 +206,7 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: @pytest.mark.parametrize( - "study_name, bids_ids, expected", + "study_name, bids_ids, expected, adni_genotype", [ ( StudyName.OASIS, @@ -201,6 +218,7 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "sex": ["F"], } ), + False, ), ( StudyName.ADNI, @@ -210,9 +228,10 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "participant_id": ["sub-ADNI001S0001"], "alternative_id_1": ["001_S_0001"], "sex": ["Male"], - "apoegen1": [3.0], + "apoegen1": ["3"], } ), + True, ), ( StudyName.OASIS, @@ -224,6 +243,7 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "sex": ["M", "M"], } ), + False, ), ( StudyName.ADNI, @@ -236,6 +256,7 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "apoegen1": ["n/a"], } ), + False, ), ( StudyName.ADNI, @@ -248,18 +269,20 @@ def create_clinical_data(tmp_path: Path, study_name: StudyName) -> Path: "apoegen1": [3.0], } ), + False, ), ], ) -def test_create_participants_df(tmp_path, bids_ids, expected, study_name): +def test_create_participants_df( + tmp_path, bids_ids, expected, study_name, adni_genotype +): from clinica.iotools.bids_utils import create_participants_df - clinical_path = create_clinical_data(tmp_path, study_name) assert ( create_participants_df( study_name, - clinical_specifications_folder=tmp_path, - clinical_data_dir=clinical_path, + clinical_specifications_folder=create_participants_spec(tmp_path), + clinical_data_dir=create_clinical_data(tmp_path, study_name, adni_genotype), bids_ids=bids_ids, ) .reset_index(drop=True) From df56362a7369a2a68cc395ddc203010962716970 Mon Sep 17 00:00:00 2001 From: Gensollen Date: Fri, 25 Oct 2024 14:17:33 +0200 Subject: [PATCH 12/13] Revert "[FIX] Correct the `pet-linear` pipeline (#1348)" (#1357) This reverts commit 1fad1c3a3ccbd56b9b4c5f3fc1884ec602be4e55. --- clinica/pipelines/pet/linear/pipeline.py | 30 ++++-------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/clinica/pipelines/pet/linear/pipeline.py b/clinica/pipelines/pet/linear/pipeline.py index aae24d09c..9e877c5a8 100644 --- a/clinica/pipelines/pet/linear/pipeline.py +++ b/clinica/pipelines/pet/linear/pipeline.py @@ -38,7 +38,7 @@ def get_input_fields(self) -> List[str]: list of str : A list of (string) input fields name. """ - return ["pet", "t1w", "t1w_to_mni", "t1w_linear"] + return ["pet", "t1w", "t1w_to_mni"] def get_output_fields(self) -> List[str]: """Specify the list of possible outputs of this pipeline. @@ -66,12 +66,7 @@ def _build_input_node(self): ClinicaException, ) from clinica.utils.image import get_mni_template - from clinica.utils.input_files import ( - T1W_LINEAR, - T1W_LINEAR_CROPPED, - T1W_NII, - T1W_TO_MNI_TRANSFORM, - ) + from clinica.utils.input_files import T1W_NII, T1W_TO_MNI_TRANSFORM from clinica.utils.inputs import clinica_file_reader from clinica.utils.stream import cprint from clinica.utils.ux import print_images_to_process @@ -107,21 +102,6 @@ def _build_input_node(self): raise ClinicaBIDSError(err) # Inputs from t1-linear pipeline - # T1w images registered - t1w_linear_file_pattern = ( - T1W_LINEAR - if self.parameters.get("uncropped_image", False) - else T1W_LINEAR_CROPPED - ) - try: - t1w_linear_files, _ = clinica_file_reader( - self.subjects, - self.sessions, - self.caps_directory, - t1w_linear_file_pattern, - ) - except ClinicaException as e: - raise ClinicaCAPSError(e) # Transformation files from T1w files to MNI: try: t1w_to_mni_transformation_files, _ = clinica_file_reader( @@ -144,7 +124,6 @@ def _build_input_node(self): ("t1w", t1w_files), ("pet", pet_files), ("t1w_to_mni", t1w_to_mni_transformation_files), - ("t1w_linear", t1w_linear_files), ], synchronize=True, interface=nutil.IdentityInterface(fields=self.get_input_fields()), @@ -154,7 +133,6 @@ def _build_input_node(self): (read_input_node, self.input_node, [("t1w", "t1w")]), (read_input_node, self.input_node, [("pet", "pet")]), (read_input_node, self.input_node, [("t1w_to_mni", "t1w_to_mni")]), - (read_input_node, self.input_node, [("t1w_linear", "t1w_linear")]), ] ) @@ -416,12 +394,12 @@ def _build_core_nodes(self): ( self.input_node, ants_registration_nonlinear_node, - [("t1w_linear", "moving_image")], + [("t1w", "moving_image")], ), ( ants_registration_nonlinear_node, ants_applytransform_nonlinear_node, - [("forward_transforms", "transforms")], + [("reverse_forward_transforms", "transforms")], ), ( ants_applytransform_node, From 44b1691f230d5dd682e7719a6058b353341771d2 Mon Sep 17 00:00:00 2001 From: Gensollen Date: Fri, 25 Oct 2024 14:29:29 +0200 Subject: [PATCH 13/13] Release `0.9.2` (#1356) * update version number * update changelog * remove pet-linear fix from release --- docs/CHANGELOG.md | 13 +++++++++++++ pyproject.toml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 29c979824..7a3669bef 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,6 +6,19 @@ Main changes to this code/ project are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Clinica 0.9.2 + +### Fixed + +- [Converters] Fix KeyError "APGEN" in adni-to-bids (see PR [#1342](https://github.com/aramis-lab/clinica/pull/1342)) +- [Converters] Fix function `load_clinical_csv` to avoid hidden files (see PR [#1343](https://github.com/aramis-lab/clinica/pull/1343)) +- [Converters] Fix logging in oasis-to-bids and aibl-to-bids (see PR [#1340](https://github.com/aramis-lab/clinica/pull/1340)) +- [Converters] Fix method `BIDSSubjectID.to_study_id()` (see PR [#1335](https://github.com/aramis-lab/clinica/pull/1335)) +- [T1Linear] Fix missing import in utility function (see PR [#1329](https://github.com/aramis-lab/clinica/pull/1329)) +- [Converters] Fix oasis-to-bids to work with new clinical data (see PR [#1321](https://github.com/aramis-lab/clinica/pull/1321)) +- [Converters] Fix function `define_participants` in ixi-to-bids, which is now deterministic (see PR [#1318](https://github.com/aramis-lab/clinica/pull/1318)) +- [Converters] Fix Oasis1 `BIDSSubjectID` method (see PR [#1312](https://github.com/aramis-lab/clinica/pull/1312)) + ## Clinica 0.9.1 ### Fixed diff --git a/pyproject.toml b/pyproject.toml index 9935d4795..dbcd5b513 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "clinica" -version = "0.9.1" +version = "0.9.2" description = "Software platform for clinical neuroimaging studies" license = "MIT" authors = ["ARAMIS Lab"]