diff --git a/.flake8 b/.flake8 index 05feb7c7..adf27130 100644 --- a/.flake8 +++ b/.flake8 @@ -1,13 +1,16 @@ [flake8] exclude = .git, + ./env + **/env + ecobidas/_version.py docstring-convention = numpy max-line-length = 150 max_complexity = 15 max_function_length = 150 max_parameters_amount = 10 -max_returns_amount = 4 +max_returns_amount = 7 # ----------------------- errors to include / exclude ----------------------- diff --git a/.gitmodules b/.gitmodules index 319563bd..105e508b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,7 +9,3 @@ [submodule "reproschema-py"] path = reproschema-py url = https://github.com/Remi-Gau/reproschema-py.git -[submodule "reproschema-ui"] - path = reproschema-ui - url = https://github.com/Remi-Gau/reproschema-ui.git - datalad-url = https://github.com/Remi-Gau/reproschema-ui.git diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7beb2bba..f4162e95 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -76,6 +76,14 @@ repos: # additional_dependencies: [types-all, pandas-stubs] # args: [--config-file=pyproject.toml] +# Check formatting of CSS and HTML +# prettier: https://prettier.io/ +- repo: https://github.com/pre-commit/mirrors-prettier + rev: v4.0.0-alpha.8 + hooks: + - id: prettier + types_or: [css, html, json] + # Check that Python code complies with PEP8 guidelines # flake8 uses pydocstyle to check docstrings: https://flake8.pycqa.org/en/latest/ # flake8-docstrings: https://pypi.org/project/flake8-docstrings/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 94acca4c..ecf4b70a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,9 +1,8 @@ { - "recommendations": [ - "ms-python.python", - "sourcery.sourcery", - "ms-python.vscode-pylance" - ], - "unwantedRecommendations": [ - ] + "recommendations": [ + "ms-python.python", + "sourcery.sourcery", + "ms-python.vscode-pylance" + ], + "unwantedRecommendations": [] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 24ed099a..d166cb12 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "restructuredtext.pythonRecommendation.disabled": true + "restructuredtext.pythonRecommendation.disabled": true } diff --git a/cobidas_schema b/cobidas_schema index 780e4dbb..a6753816 160000 --- a/cobidas_schema +++ b/cobidas_schema @@ -1 +1 @@ -Subproject commit 780e4dbb53bb8892cba08cc25e380dcb507a0a6d +Subproject commit a6753816ac6960e357e657378c882bb2593e3a28 diff --git a/ecobidas/cli.py b/ecobidas/cli.py index f005a85a..39ab7a06 100644 --- a/ecobidas/cli.py +++ b/ecobidas/cli.py @@ -1,5 +1,5 @@ import sys -from typing import Sequence +from collections.abc import Sequence from loguru import logger from rich_argparse import RichHelpFormatter diff --git a/ecobidas/create_schema.py b/ecobidas/create_schema.py index ad0ddedd..c7dd37d7 100644 --- a/ecobidas/create_schema.py +++ b/ecobidas/create_schema.py @@ -85,11 +85,10 @@ def create_schema( item_info = get_item_info(this_item) - item_info["id"] = f"{activity_idx:.0f}.{item_idx:.0f}" - print_item_info(activity_idx, item_idx, item_info) item = define_new_item(item_info) + item.write(os.path.join(activity_path, "items")) activity.append_item(item) diff --git a/ecobidas/download_tsv.py b/ecobidas/download_tsv.py index 2cc2dc74..8941d28e 100644 --- a/ecobidas/download_tsv.py +++ b/ecobidas/download_tsv.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 """Download the content of the different google spreadsheet in the inputs folder.""" +import ast import json from pathlib import Path @@ -19,19 +20,19 @@ def download_spreadsheet(schema: str, output_dir: Path = None) -> None: spreadsheets_info = get_spreadsheets_info() # Initialize lists to store data - google_IDs = [] + google_ids = [] subfolders = [] output_filenames = [] # Parse the file for spreadsheet, values in spreadsheets_info.items(): if spreadsheet.startswith(schema): - google_IDs.append(values["google_id"]) + google_ids.append(values["google_id"]) subfolders.append(values["dir"]) output_filenames.append(values["basename"]) # Iterate through entries and download spreadsheets - for google_id, subfolder, output_filename in zip(google_IDs, subfolders, output_filenames): + for google_id, subfolder, output_filename in zip(google_ids, subfolders, output_filenames): output_folder = output_dir / subfolder output_folder.mkdir(exist_ok=True, parents=True) @@ -95,6 +96,25 @@ def validate_downloaded_file(file: str | Path) -> None: f"\nThe following columns are missing from the data dictionary: {sorted(extra_columns)}" ) + invalid_vis = [] + visibility = df.visibility.values + for vis in visibility: + if not is_valid_python(vis): + invalid_vis.append(vis) + if invalid_vis: + logger.warning(f"\nThe following visibility are not valid python:\n{invalid_vis}") + + +def is_valid_python(code): + try: + ast.parse(code) + except SyntaxError: + return False + except ValueError as exc: + print(f"{exc}: {code}") + return True + return True + def main() -> None: # validates files diff --git a/ecobidas/generate_landing_page.py b/ecobidas/generate_landing_page.py deleted file mode 100644 index a9c70347..00000000 --- a/ecobidas/generate_landing_page.py +++ /dev/null @@ -1,22 +0,0 @@ -"""Generates a typical landing page in english for an app.""" - -from pathlib import Path - -from ecobidas.template_manager import TemplateManager - - -def main(output_dir: Path | None = None) -> None: - if output_dir is None: - output_dir = Path() / "output" - - TemplateManager.initialize() - - template = TemplateManager.env.get_template("landing_page.j2") - - rendered_template = template.render() - with open(output_dir / "landing_page.html", "w") as out: - out.write(f"{rendered_template}") - - -if __name__ == "__main__": - main() diff --git a/ecobidas/inputs/data-dictionary.json b/ecobidas/inputs/data-dictionary.json index faaf664a..b7774bfd 100644 --- a/ecobidas/inputs/data-dictionary.json +++ b/ecobidas/inputs/data-dictionary.json @@ -1,207 +1,206 @@ { - "include": { - "VariableName": "include", - "Description": "Whether the item should be generated and included in the activity.", - "RequirementLevel": "required" - }, - "activity_pref_label": { - "VariableName": "activity_pref_label", - "Description": "preferred label of the activity", - "RequirementLevel": "required" - }, - "preamble": { - "VariableName": "preamble", - "Description": "introductory text to the activity", - "RequirementLevel": "recommended" - }, - "activity_order": { - "VariableName": "activity_order", - "Description": "position in which the activity is supposed to be presented in a protocol" - }, - "item": { - "VariableName": "item", - "Description": "name of the item", - "RequirementLevel": "required" - }, - "item_pref_label": { - "VariableName": "item_pref_label", - "Description": "preferred label of the item", - "RequirementLevel": "recommended" - }, - "item_description": { - "VariableName": "item_description", - "Description": "description of the item", - "RequirementLevel": "recommended" - }, - "item_order": { - "VariableName": "item_order", - "Description": "Position in which the item is supposed to be presented in the activity.", - "RequirementLevel": "required" - }, - "duplicate": { - "VariableName": "duplicate", - "Description": "reports the number of items that have the same name in this spreadsheet" - }, - "question": { - "VariableName": "question", - "Description": "question corresponding to the item", - "RequirementLevel": "required" - }, - "field_type": { - "VariableName": "field_type", - "Description": "type of response expected", - "RequirementLevel": "required", - "Levels": [ - { - "Name": "integer", - "Description": "" - }, - { - "Name": "text", - "Description": "a text answer is expected" - }, - { - "Name": "float", - "Description": "" - }, - { - "Name": "radio", - "Description": "" - }, - { - "Name": "select", - "Description": "" - }, - { - "Name": "slider", - "Description": "" - } - ] - }, - "choices": { - "VariableName": "choices", - "Description": "list of possible responses", - "RequirementLevel": "required" - }, - "mandatory": { - "VariableName": "mandatory", - "Description": "whether an answer to the item is required", - "Default": 1, - "Levels": [ - { - "Name": 1, - "Description": "a response to this item is required" - }, - { - "Name": 0, - "Description": "a response to this item is not required" - } - ], - "RequirementLevel": "recommended" - }, - "visibility": { - "VariableName": "visibility", - "Description": "Lists the conditions that have to be fulfilled for each item to be displayed to the user. By default, an item will be displayed. Other it will only be shown if a specific answer has been given to a previous item: in this case the expression in this cell must be a valid javascript expression like: 'previousItem === 1' ", - "RequirementLevel": "required" - }, - "details": { - "VariableName": "details", - "Description": "Some questions might require some additional information to be understandable by all users, so any extra information to be displayed to the users should be put the detail column.", - "RequirementLevel": "recommended" - }, - "bids_status": { - "VariableName": "bids_status", - "Description": "list if the item can be found in a BIDS (Brain Imaging Data Structure) dataset", - "Levels": [ - { - "Name": 0, - "Description": "does not exist in BIDS" - }, - { - "Name": 1, - "Description": "exist in BIDS and can be extracted" - }, - { - "Name": 2, - "Description": "could be included in BIDS" - }, - { - "Name": 3, - "Description": "unknown" - } - ] - }, - "bids_file": { - "VariableName": "bids_file", - "Description": "list the bids file in which the item can be found" - }, - "bids_key": { - "VariableName": "bids_key", - "Description": "list the json key corresponding to this item in the bids json file" - }, - "bids_key_for_unit": { - "VariableName": "bids_key_for_unit", + "include": { + "VariableName": "include", + "Description": "Whether the item should be generated and included in the activity.", + "RequirementLevel": "required" + }, + "activity_pref_label": { + "VariableName": "activity_pref_label", + "Description": "preferred label of the activity", + "RequirementLevel": "required" + }, + "preamble": { + "VariableName": "preamble", + "Description": "introductory text to the activity", + "RequirementLevel": "recommended" + }, + "activity_order": { + "VariableName": "activity_order", + "Description": "position in which the activity is supposed to be presented in a protocol" + }, + "item": { + "VariableName": "item", + "Description": "name of the item", + "RequirementLevel": "required" + }, + "item_pref_label": { + "VariableName": "item_pref_label", + "Description": "preferred label of the item", + "RequirementLevel": "recommended" + }, + "item_description": { + "VariableName": "item_description", + "Description": "description of the item", + "RequirementLevel": "recommended" + }, + "item_order": { + "VariableName": "item_order", + "Description": "Position in which the item is supposed to be presented in the activity.", + "RequirementLevel": "required" + }, + "duplicate": { + "VariableName": "duplicate", + "Description": "reports the number of items that have the same name in this spreadsheet" + }, + "question": { + "VariableName": "question", + "Description": "question corresponding to the item", + "RequirementLevel": "required" + }, + "field_type": { + "VariableName": "field_type", + "Description": "type of response expected", + "RequirementLevel": "required", + "Levels": [ + { + "Name": "integer", "Description": "" - }, - "unit": { - "VariableName": "unit", - "Description": "unit of the item", - "RequirementLevel": "optional" - }, - "in_Carp_2012": { - "VariableName": "in_Carp_2012", - "Description": "name of the item in the literature review of [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing)", - "RequirementLevel": "optional" - }, - "neurovault": { - "VariableName": "neurovault", - "Description": "refers to the name of this item in a Neurovault collection", - "RequirementLevel": "optional" - }, - "fsl_default": { - "VariableName": "fsl_default", - "Description": "default value for FSL", - "RequirementLevel": "optional" - }, - "spm_default": { - "VariableName": "spm_default", - "Description": "default value for SPM", - "RequirementLevel": "optional" - }, - "percent_of_studies": { - "VariableName": "percent_of_studies", - "Description": "Percent of studies reporting the item in [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing). If the number is in **bold**, it was approximately extracted from one of the figures of the paper (because it was not reported in the text of the article).", - "RequirementLevel": "optional" - }, - "percent_of_studies_anat": { - "VariableName": "percent_of_studies_anat", - "Description": "Percent of studies reporting this item in for the anatomical data in the papers reviewed by [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing). If the number is in **bold**, it was approximately extracted from one of the figures of the paper (because it was not reported in the text of the article).", - "RequirementLevel": "optional" - }, - "percent_reported": { - "VariableName": "percent_reported", - "Description": "Frequency at which items are present in the eyetracking literature (see the [preprint](https://psyarxiv.com/f6qcy/))", - "RequirementLevel": "optional" - }, - "use_case_meta-analysis": { - "VariableName": "use_case_meta-analysis", - "Description": "Whether the item could be important to evaluate studies for a meta-analysis.", - "RequirementLevel": "optional" - }, - "meta-analysis_comment": { - "VariableName": "meta-analysis_comment", - "Description": "Comment for inclusion in a meta-analysis.", - "RequirementLevel": "optional" - }, - "nidm_results": { - "VariableName": "nidm_results", - "Description": "Mention where information this item can be found in an NIDM results package.", - "RequirementLevel": "optional" - }, - "mri_type": { - "VariableName": "mri_type", - "Description": "Mention the type of MRI this item is applicable to.", - "RequirementLevel": "optional" - } - + }, + { + "Name": "text", + "Description": "a text answer is expected" + }, + { + "Name": "float", + "Description": "" + }, + { + "Name": "radio", + "Description": "" + }, + { + "Name": "select", + "Description": "" + }, + { + "Name": "slider", + "Description": "" + } + ] + }, + "choices": { + "VariableName": "choices", + "Description": "List of possible responses. Options are separated by a pipe '|'. For integers, floats, and sliders, the values represent min | max | step. If they are not provided, it should be assumed that they ar None or null.", + "RequirementLevel": "required" + }, + "mandatory": { + "VariableName": "mandatory", + "Description": "whether an answer to the item is required", + "Default": 1, + "Levels": [ + { + "Name": 1, + "Description": "a response to this item is required" + }, + { + "Name": 0, + "Description": "a response to this item is not required" + } + ], + "RequirementLevel": "recommended" + }, + "visibility": { + "VariableName": "visibility", + "Description": "Lists the conditions that have to be fulfilled for each item to be displayed to the user. By default, an item will be displayed. Other it will only be shown if a specific answer has been given to a previous item: in this case the expression in this cell must be a valid javascript expression like: 'previousItem === 1' ", + "RequirementLevel": "required" + }, + "details": { + "VariableName": "details", + "Description": "Some questions might require some additional information to be understandable by all users, so any extra information to be displayed to the users should be put the detail column.", + "RequirementLevel": "recommended" + }, + "bids_status": { + "VariableName": "bids_status", + "Description": "list if the item can be found in a BIDS (Brain Imaging Data Structure) dataset", + "Levels": [ + { + "Name": 0, + "Description": "does not exist in BIDS" + }, + { + "Name": 1, + "Description": "exist in BIDS and can be extracted" + }, + { + "Name": 2, + "Description": "could be included in BIDS" + }, + { + "Name": 3, + "Description": "unknown" + } + ] + }, + "bids_file": { + "VariableName": "bids_file", + "Description": "list the bids file in which the item can be found" + }, + "bids_key": { + "VariableName": "bids_key", + "Description": "list the json key corresponding to this item in the bids json file" + }, + "bids_key_for_unit": { + "VariableName": "bids_key_for_unit", + "Description": "" + }, + "unit": { + "VariableName": "unit", + "Description": "unit of the item", + "RequirementLevel": "optional" + }, + "in_Carp_2012": { + "VariableName": "in_Carp_2012", + "Description": "name of the item in the literature review of [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing)", + "RequirementLevel": "optional" + }, + "neurovault": { + "VariableName": "neurovault", + "Description": "refers to the name of this item in a Neurovault collection", + "RequirementLevel": "optional" + }, + "fsl_default": { + "VariableName": "fsl_default", + "Description": "default value for FSL", + "RequirementLevel": "optional" + }, + "spm_default": { + "VariableName": "spm_default", + "Description": "default value for SPM", + "RequirementLevel": "optional" + }, + "percent_of_studies": { + "VariableName": "percent_of_studies", + "Description": "Percent of studies reporting the item in [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing). If the number is in **bold**, it was approximately extracted from one of the figures of the paper (because it was not reported in the text of the article).", + "RequirementLevel": "optional" + }, + "percent_of_studies_anat": { + "VariableName": "percent_of_studies_anat", + "Description": "Percent of studies reporting this item in for the anatomical data in the papers reviewed by [Carp, 2012](https://drive.google.com/file/d/1TBSxC52kXVERl9JmfbBPC7uCas4QN_vg/view?usp=sharing). If the number is in **bold**, it was approximately extracted from one of the figures of the paper (because it was not reported in the text of the article).", + "RequirementLevel": "optional" + }, + "percent_reported": { + "VariableName": "percent_reported", + "Description": "Frequency at which items are present in the eyetracking literature (see the [preprint](https://psyarxiv.com/f6qcy/))", + "RequirementLevel": "optional" + }, + "use_case_meta-analysis": { + "VariableName": "use_case_meta-analysis", + "Description": "Whether the item could be important to evaluate studies for a meta-analysis.", + "RequirementLevel": "optional" + }, + "meta-analysis_comment": { + "VariableName": "meta-analysis_comment", + "Description": "Comment for inclusion in a meta-analysis.", + "RequirementLevel": "optional" + }, + "nidm_results": { + "VariableName": "nidm_results", + "Description": "Mention where information this item can be found in an NIDM results package.", + "RequirementLevel": "optional" + }, + "mri_type": { + "VariableName": "mri_type", + "Description": "Mention the type of MRI this item is applicable to.", + "RequirementLevel": "optional" + } } diff --git a/ecobidas/inputs/meeg/acquisition.tsv b/ecobidas/inputs/meeg/acquisition.tsv index b47146cb..9a576796 100644 --- a/ecobidas/inputs/meeg/acquisition.tsv +++ b/ecobidas/inputs/meeg/acquisition.tsv @@ -20,7 +20,7 @@ Acquisition Data acquisition parameters Low- and high-pass filter characteristic Acquisition Data acquisition parameters Sampling frequency sampling_frequency sampling_frequency 21 1 1 Does the paper specify the sampling frequency? Acquisition Data acquisition parameters Continuous versus epoched acquisition? continuous_versus_epoched_acquisition? continuous_versus_epoched_acquisition 22 1 1 Does the paper specify whether continuous versus epoched acquisition was used? Acquisition Data acquisition parameters For EEG/EOG/ECG/EMG/skin conductance: report reference and ground electrode positions reference_and_ground_electrode_positions reference_and_ground_electrode_positions 23 1 1 (EEG/EOG/ECG/EMG/skin conductance) Does the paper report reference and ground electrode positions? -Acquisition Sensor position digitization EEG/EOG: manufacterer and model of the device used other_devices_for_meg other_devices_for_meg 25 1 1 (EEG/EOG) Does the paper specify the manufacterer and model of the device used for EEG/EOG - ECG?, All electrodes? +Acquisition Sensor position digitization EEG/EOG: manufacturer and model of the device used other_devices_for_meg other_devices_for_meg 25 1 1 (EEG/EOG) Does the paper specify the manufacturer and model of the device used for EEG/EOG - ECG?, All electrodes? Acquisition Sensor position digitization MEG: monitoring of head position relative to the sensor array monitoring_of_head_position monitoring_of_head_position 26 1 1 (MEG) Does the paper describe how head position relative to the sensor array was monitored? Acquisition Sensor position digitization MEG: use of head movement detection coils use_of_head_movement_detection_coils use_of_head_movement_detection_coils 27 1 1 (MEG) Does the paper specify the use of head movement detection coils? Acquisition Sensor position digitization MEG: placement of coils placement_of_coils placement_of_coils 28 1 1 (MEG) Does the paper specify the placement of coils? diff --git a/ecobidas/inputs/neurovault/neurovault.tsv b/ecobidas/inputs/neurovault/neurovault.tsv index 5e72b5ab..2540a968 100644 --- a/ecobidas/inputs/neurovault/neurovault.tsv +++ b/ecobidas/inputs/neurovault/neurovault.tsv @@ -1,88 +1,88 @@ -activity_pref_label activity_order item_order question unit details field_type choices item item_pref_label visibility item_description include mandatory preamble bids_status bids_file bids_key bids_key_for_unit -Experimental design 1 1 Type of design select blocked | event_related | hybrid block/event type of design 1 type of design 1 1 Describe your experimental design -Experimental design 1 2 Number of imaging runs acquired integer number of imaging runs 1 number of imaging runs 1 2 -Experimental design 1 3 Number of blocks, trials or experimental units per imaging run integer number of experimental units 1 number of experimental units 1 2 -Experimental design 1 4 Length of each imaging run seconds float length of runs 1 length of runs 1 2 -Experimental design 1 5 For blocked designs, length of blocks seconds float length of blocks 1 length of blocks 1 2 -Experimental design 1 6 Length of individual trials seconds float length of trials 1 length of trials 1 2 -Experimental design 1 7 Was the design optimized for efficiency? radio preset:boolean optimization 1 optimization 1 2 -Experimental design 1 8 What method was used for optimization? textarea optimization method optimization == 1 optimization method 1 3 -Participants 2 1 Number of subjects entering into the analysis integer number of subjects 1 number of subjects 1 1 Describe your participant sample -Participants 2 2 Mean age of subjects float subject age mean 1 subject age mean 1 1 -Participants 2 3 Minimum age of subjects float subject age min 1 subject age min 1 2 -Participants 2 4 Maximum age of subjects float subject age max 1 subject age max 1 2 -Participants 2 5 Handedness of subjects radio right | left | both handedness 1 handedness 1 2 -Participants 2 6 The proportion of subjects who were male slider 0 | 100 | 20 proportion male subjects 1 proportion male subjects 1 2 -Participants 2 7 Additional inclusion/exclusion criteria, if any. Including specific sampling strategies that limit inclusion to a specific group, such as laboratory members. textarea inclusion exclusion criteria 1 inclusion exclusion criteria 1 3 -Participants 2 8 Number of subjects scanned but rejected from analysis integer number of rejected subjects 1 number of rejected subjects 1 2 -Participants 2 9 Was this study a comparison between subject groups? radio preset:boolean group comparison 1 group comparison 1 1 -Participants 2 10 A description of the groups being compared textarea group description group_comparison == 1 group description 1 2 -MRI acquisition 3 1 Manufacturer of MRI scanner select Siemens | Philips | General Electric Manufacturer scanner make 1 scanner make 1 1 Describe your acquisition parameters -MRI acquisition 3 2 Model of MRI scanner textarea ManufacturersModelName scanner model 1 scanner model 1 1 -MRI acquisition 3 3 Field strength of MRI scanner Tesla float MagneticFieldStrength field strength 1 field strength 1 1 -MRI acquisition 3 4 Description of pulse sequence used for fMRI select Gradient echo | Spin echo | Mutliband gradient echo | MPRAGE | MP2RAGE | FLASH PulseSequenceType pulse sequence 1 pulse sequence 1 1 -MRI acquisition 3 5 Description of parallel imaging method and parameters textarea parallel imaging 1 parallel imaging 1 3 -MRI acquisition 3 6 Imaging field of view Millimeters float field of view 1 field of view 1 2 -MRI acquisition 3 7 Matrix size for MRI acquisition integer matrix size 1 matrix size 1 2 -MRI acquisition 3 8 Distance between slices (includes skip or distance factor). Millimeters float slice thickness 1 slice thickness 1 1 -MRI acquisition 3 9 The size of the skipped area between slices. Millimeters float skip factor 1 skip factor 1 2 -MRI acquisition 3 10 The orientation of slices radio axial | sagittal | frontal acquisition orientation 1 acquisition orientation 1 2 -MRI acquisition 3 11 Order of acquisition of slices select ascending | descending | interleaved SliceTiming order of acquisition 1 order of acquisition 1 3 -MRI acquisition 3 12 Repetition time (TR) Milliseconds float RepetitionTime repetition time 1 repetition time 1 1 -MRI acquisition 3 13 Echo time (TE) Milliseconds float EchoTime echo time 1 echo time 1 1 -MRI acquisition 3 14 Flip angle Degrees float FlipAngle flip angle 1 flip angle 1 2 -Preprocessing 4 1 If a single software package was used for all analyses, specify that here select preset:mri_softwares SoftwareName software package 1 software package 1 1 Describe your preprocessing -Preprocessing 4 2 Version of software package used textarea SoftwareVersion software version 1 software version 1 1 -Preprocessing 4 3 Specify order of preprocessing operations textarea order of preprocessing operations 1 order of preprocessing operations 1 2 -Preprocessing 4 4 Describe quality control measures textarea quality control 1 quality control 1 3 -Preprocessing 4 5 Was B0 distortion correction used? radio preset:boolean used b0 unwarping 1 used b0 unwarping 1 2 -Preprocessing 4 6 Specify software used for distortion correction if different from the main package select preset:mri_softwares b0 unwarping software used_b0_unwarping == 1 b0 unwarping software 1 3 -Preprocessing 4 7 Was slice timing correction used? radio preset:boolean used slice timing correction 1 used slice timing correction 1 1 -Preprocessing 4 8 Specify software used for slice timing correction if different from the main package textarea slice timing correction software used_slice_timing_correction == 1 slice timing correction software 1 3 -Preprocessing 4 9 Was motion correction used? radio preset:boolean used motion correction 1 used motion correction 1 1 -Preprocessing 4 10 Specify software used for motion correction if different from the main package select preset:mri_softwares motion correction software used_motion_correction == 1 motion correction software 1 3 -Preprocessing 4 11 Reference scan used for motion correction textarea motion correction reference used_motion_correction == 1 motion correction reference 1 3 -Preprocessing 4 12 Similarity metric used for motion correction select preset:cost_functions motion correction metric used_motion_correction == 1 motion correction metric 1 3 -Preprocessing 4 13 Interpolation method used for motion correction select preset:interpolations motion correction interpolation used_motion_correction == 1 motion correction interpolation 1 3 -Preprocessing 4 14 Was motion-susceptibility correction used? radio preset:boolean used motion susceptibiity correction 1 used motion susceptibiity correction 1 3 -Intersubject registration 5 1 Were subjects registered to a common stereotactic space? radio preset:boolean used intersubject registration 1 used intersubject registration 1 1 Describe your spatial normalization -Intersubject registration 5 2 Specify software used for intersubject registration if different from main package select preset:mri_softwares intersubject registration software used_intersubject_registration == 1 intersubject registration software 1 2 -Intersubject registration 5 3 Was linear or nonlinear registration used? select linear | non-linear intersubject transformation type used_intersubject_registration == 1 intersubject transformation type 1 1 -Intersubject registration 5 4 If nonlinear registration was used, describe transform method textarea nonlinear transform type used_intersubject_registration == 1 nonlinear transform type 1 2 -Intersubject registration 5 5 Similarity metric used for intersubject registration textarea transform similarity metric used_intersubject_registration == 1 transform similarity metric 1 3 -Intersubject registration 5 6 Interpolation method used for intersubject registration select preset:interpolations interpolation method used_intersubject_registration == 1 interpolation method 1 2 -Intersubject registration 5 7 What type of image was used to determine the transformation to the atlas? textarea object image type used_intersubject_registration == 1 object image type 1 1 -Intersubject registration 5 8 Were the functional images coregistered to the subject's structural image? radio preset:boolean functional coregistered to structural 1 functional coregistered to structural 1 2 -Intersubject registration 5 9 Method used to coregister functional to structural images textarea functional coregistration method functional_coregistered_to_structural == 1 functional coregistration method 1 3 -Intersubject registration 5 10 Name of coordinate space for registration target select MNI | Talairach | MNI2Tal coordinate space 1 coordinate space 1 1 -Intersubject registration 5 11 Name of target template image textarea target template image 1 target template image 1 2 -Intersubject registration 5 12 Voxel size of target template Millimeters float target resolution 1 target resolution 1 1 -Intersubject registration 5 13 Was spatial smoothing applied? radio preset:boolean used smoothing 1 used smoothing 1 1 -Intersubject registration 5 14 Describe the type of smoothing applied text smoothing type used_smoothing == 1 smoothing type 1 1 -Intersubject registration 5 15 The full-width at half-maximum of the smoothing kernel Millimeters float smoothing fwhm used_smoothing == 1 smoothing fwhm 1 1 -Intersubject registration 5 16 Voxel size in mm of the resampled, atlas-space images float resampled voxel size 1 resampled voxel size 1 1 -Individual subject modeling 6 1 Type of group model used radio Regression intrasubject model type 1 intrasubject model type 1 1 Describe your model specification at the subejct level -Individual subject modeling 6 2 Estimation method used for model select ordinary least squares | generalized least squares intrasubject estimation type 1 intrasubject estimation type 1 1 -Individual subject modeling 6 3 Software used for intrasubject modeling if different from overall package select preset:mri_softwares intrasubject modeling software 1 intrasubject modeling software 1 2 -Individual subject modeling 6 4 Nature of HRF model select double gamma | Fourrier set | FIR hemodynamic response function 1 hemodynamic response function 1 2 -Individual subject modeling 6 5 Were temporal derivatives included? radio preset:boolean used temporal derivatives 1 used temporal derivatives 1 2 -Individual subject modeling 6 6 Were dispersion derivatives included? radio preset:boolean used dispersion derivatives 1 used dispersion derivatives 1 3 -Individual subject modeling 6 7 Were motion regressors included? radio preset:boolean used motion regressors 1 used motion regressors 1 2 -Individual subject modeling 6 8 Was a reaction time regressor included? radio preset:boolean used reaction time regressor 1 used reaction time regressor 1 2 -Individual subject modeling 6 9 Were any regressors specifically orthogonalized with respect to others? radio preset:boolean used orthogonalization 1 used orthogonalization 1 1 -Individual subject modeling 6 10 If orthogonalization was used, describe here textarea orthogonalization description used_orthogonalization == 1 orthogonalization description 1 2 -Individual subject modeling 6 11 Was high pass filtering applied? radio preset:boolean used high pass filter 1 used high pass filter 1 1 -Individual subject modeling 6 12 Describe method used for high pass filtering textarea high pass filter method used_high_pass_filter == 1 high pass filter method 1 2 -Individual subject modeling 6 13 What autocorrelation model was used (or 'none' if none was used) textarea autocorrelation model 1 autocorrelation model 1 2 -Individual subject modeling 6 14 Exactly what terms are subtracted from what? textarea contrast definition 1 contrast definition 1 1 -Individual subject modeling 6 15 Link to Cognitive Atlas definition of this contrast Define these in terms of task or stimulus conditions (e.g., 'one-back task with objects versus zero-back task with objects') instead of underlying psychological concepts (e.g., 'working memory'). textarea contrast definition cogatlas 1 contrast definition cogatlas 1 3 -Group modeling 7 1 Type of group model used select Regression group model type 1 group model type 1 1 Describe the group level analysis -Group modeling 7 2 Estimation method used for model select ordinary least squares | generalized least squares group estimation type 1 group estimation type 1 1 -Group modeling 7 3 Software used for group modeling if different from overall package select preset:mri_softwares group modeling software 1 group modeling software 1 2 -Group modeling 7 4 Type of inference for group model select random effect | mixed effect | fixed effect group inference type 1 group inference type 1 1 -Group modeling 7 5 If more than 2-levels, describe the levels and assumptions of the model. For example, are variances assumed equal between groups. textarea group model multilevel 1 group model multilevel 1 3 -Group modeling 7 6 Was this a repeated measures design at the group level? radio preset:boolean group repeated measures 1 group repeated measures 1 1 -Group modeling 7 7 If multiple measurements per subject, list method to account for within subject correlation, exact assumptions made about correlation/variance textarea group repeated measures method group_repeated_measures == 1 group repeated measures method 1 3 -Group inference 8 1 Type of statistic that is the basis of the inference select Z | T | F | X2 | PostProb | NonparametricP | MonteCarloP group statistic type 1 group statistic type 1 2 Describe your statistical inference -Group inference 8 2 Parameters of the null distribution of the test statisic. Typically degrees of freedom (should be clear from the test statistic what these are). float group statistic parameters 1 group statistic parameters 1 1 -Group inference 8 3 Noise smoothness for statistical inference This is the estimated smoothness used with Random Field Theory or a simulation-based inference method. float group smoothness fwhm 1 group smoothness fwhm 1 1 +activity_pref_label activity_order item_order question unit details field_type choices item item_pref_label visibility validation item_description include mandatory preamble bids_status bids_file bids_key bids_key_for_unit UUID +Experimental design 1 1 Type of design select blocked | event_related | hybrid block/event type_of_design type of design 1 type of design 1 1 Describe your experimental design #NAME? +Experimental design 1 2 Number of imaging runs acquired integer 0 number of imaging runs 1 number of imaging runs 1 2 #NAME? +Experimental design 1 3 Number of blocks, trials or experimental units per imaging run integer 0 number of experimental units 1 number of experimental units 1 2 #NAME? +Experimental design 1 4 Length of each imaging run seconds float 0 length of runs 1 length of runs 1 2 #NAME? +Experimental design 1 5 For blocked designs, length of blocks seconds float 0 length of blocks type_of_design in [0, 2] length of blocks 1 2 #NAME? +Experimental design 1 6 Length of individual trials seconds float 0 length of trials 1 length of trials 1 2 #NAME? +Experimental design 1 7 Was the design optimized for efficiency? radio preset:boolean optimization 1 optimization 1 2 #NAME? +Experimental design 1 8 What method was used for optimization? textarea optimization method optimization == 1 optimization method 1 3 #NAME? +Participants 2 1 Number of subjects entering into the analysis integer 0 number of subjects 1 number of subjects 1 1 Describe your participant sample #NAME? +Participants 2 2 Mean age of subjects float 0 | 120 subject_age_mean subject age mean 1 subject age mean 1 1 #NAME? +Participants 2 3 Minimum age of subjects float 0 | 120 subject_age_min subject age min 1 subject_age_min < subject_age_mean subject age min 1 2 #NAME? +Participants 2 4 Maximum age of subjects float 0 | 120 subject_age_max subject age max 1 subject_age_max > subject_age_mean subject age max 1 2 #NAME? +Participants 2 5 Handedness of subjects radio right | left | both handedness 1 handedness 1 2 #NAME? +Participants 2 6 The proportion of subjects who were male float 0 | 1 proportion male subjects 1 proportion male subjects 1 2 #NAME? +Participants 2 7 Additional inclusion/exclusion criteria, if any. Including specific sampling strategies that limit inclusion to a specific group, such as laboratory members. textarea inclusion exclusion criteria 1 inclusion exclusion criteria 1 3 #NAME? +Participants 2 8 Number of subjects scanned but rejected from analysis integer 0 number of rejected subjects 1 number of rejected subjects 1 2 #NAME? +Participants 2 9 Was this study a comparison between subject groups? radio preset:boolean group comparison 1 group comparison 1 1 #NAME? +Participants 2 10 A description of the groups being compared textarea group description group_comparison == 1 group description 1 2 #NAME? +MRI acquisition 3 1 Manufacturer of MRI scanner select Siemens | Philips | General Electric | other Manufacturer scanner make 1 scanner make 1 1 Describe your acquisition parameters #NAME? +MRI acquisition 3 2 Model of MRI scanner textarea ManufacturersModelName scanner model 1 scanner model 1 1 #NAME? +MRI acquisition 3 3 Field strength of MRI scanner Tesla float 0 | 20 MagneticFieldStrength field strength 1 field strength 1 1 #NAME? +MRI acquisition 3 4 Description of pulse sequence used for fMRI select Gradient echo | Spin echo | Mutliband gradient echo | MPRAGE | MP2RAGE | FLASH | other PulseSequenceType pulse sequence 1 pulse sequence 1 1 #NAME? +MRI acquisition 3 5 Description of parallel imaging method and parameters textarea parallel imaging 1 parallel imaging 1 3 #NAME? +MRI acquisition 3 6 Imaging field of view Millimeters float field of view 1 field of view 1 2 #NAME? +MRI acquisition 3 7 Matrix size for MRI acquisition integer matrix size 1 matrix size 1 2 #NAME? +MRI acquisition 3 8 Distance between slices (includes skip or distance factor). Millimeters float 0 slice thickness 1 slice thickness 1 1 #NAME? +MRI acquisition 3 9 The size of the skipped area between slices. Millimeters float 0 skip factor 1 skip factor 1 2 #NAME? +MRI acquisition 3 10 The orientation of slices radio axial | sagittal | frontal acquisition orientation 1 acquisition orientation 1 2 #NAME? +MRI acquisition 3 11 Order of acquisition of slices select ascending | descending | interleaved SliceTiming order of acquisition 1 order of acquisition 1 3 #NAME? +MRI acquisition 3 12 Repetition time (TR) Milliseconds float 0 RepetitionTime repetition time 1 repetition time 1 1 #NAME? +MRI acquisition 3 13 Echo time (TE) Milliseconds float 0 EchoTime echo time 1 echo time 1 1 #NAME? +MRI acquisition 3 14 Flip angle Degrees float 0 FlipAngle flip angle 1 flip angle 1 2 #NAME? +Preprocessing 4 1 If a single software package was used for all analyses, specify that here select preset:mri_softwares SoftwareName software package 1 software package 1 1 Describe your preprocessing #NAME? +Preprocessing 4 2 Version of software package used textarea SoftwareVersion software version 1 software version 1 1 #NAME? +Preprocessing 4 3 Specify order of preprocessing operations textarea order of preprocessing operations 1 order of preprocessing operations 1 2 #NAME? +Preprocessing 4 4 Describe quality control measures textarea quality control 1 quality control 1 3 #NAME? +Preprocessing 4 5 Was B0 distortion correction used? radio preset:boolean used b0 unwarping 1 used b0 unwarping 1 2 #NAME? +Preprocessing 4 6 Specify software used for distortion correction if different from the main package select preset:mri_softwares b0 unwarping software used_b0_unwarping == 1 b0 unwarping software 1 3 #NAME? +Preprocessing 4 7 Was slice timing correction used? radio preset:boolean used slice timing correction 1 used slice timing correction 1 1 #NAME? +Preprocessing 4 8 Specify software used for slice timing correction if different from the main package select preset:mri_softwares slice timing correction software used_slice_timing_correction == 1 slice timing correction software 1 3 #NAME? +Preprocessing 4 9 Was motion correction used? radio preset:boolean used motion correction 1 used motion correction 1 1 #NAME? +Preprocessing 4 10 Specify software used for motion correction if different from the main package select preset:mri_softwares motion correction software used_motion_correction == 1 motion correction software 1 3 #NAME? +Preprocessing 4 11 Reference scan used for motion correction textarea motion correction reference used_motion_correction == 1 motion correction reference 1 3 #NAME? +Preprocessing 4 12 Similarity metric used for motion correction select preset:cost_functions motion correction metric used_motion_correction == 1 motion correction metric 1 3 #NAME? +Preprocessing 4 13 Interpolation method used for motion correction select preset:interpolations motion correction interpolation used_motion_correction == 1 motion correction interpolation 1 3 #NAME? +Preprocessing 4 14 Was motion-susceptibility correction used? radio preset:boolean used motion susceptibiity correction 1 used motion susceptibiity correction 1 3 #NAME? +Intersubject registration 5 1 Were subjects registered to a common stereotactic space? radio preset:boolean used intersubject registration 1 used intersubject registration 1 1 Describe your spatial normalization #NAME? +Intersubject registration 5 2 Specify software used for intersubject registration if different from main package select preset:mri_softwares intersubject registration software used_intersubject_registration == 1 intersubject registration software 1 2 #NAME? +Intersubject registration 5 3 Was linear or nonlinear registration used? select linear | non-linear intersubject transformation type used_intersubject_registration == 1 intersubject transformation type 1 1 #NAME? +Intersubject registration 5 4 If nonlinear registration was used, describe transform method textarea nonlinear transform type used_intersubject_registration == 1 and nonlinear_transform_type == 1 nonlinear transform type 1 2 #NAME? +Intersubject registration 5 5 Similarity metric used for intersubject registration textarea transform similarity metric used_intersubject_registration == 1 transform similarity metric 1 3 #NAME? +Intersubject registration 5 6 Interpolation method used for intersubject registration select preset:interpolations interpolation method used_intersubject_registration == 1 interpolation method 1 2 #NAME? +Intersubject registration 5 7 What type of image was used to determine the transformation to the atlas? textarea object image type used_intersubject_registration == 1 object image type 1 1 #NAME? +Intersubject registration 5 8 Were the functional images coregistered to the subject's structural image? radio preset:boolean functional coregistered to structural 1 functional coregistered to structural 1 2 #NAME? +Intersubject registration 5 9 Method used to coregister functional to structural images textarea functional coregistration method functional_coregistered_to_structural == 1 functional coregistration method 1 3 #NAME? +Intersubject registration 5 10 Name of coordinate space for registration target select MNI | Talairach | MNI2Tal | other coordinate space 1 coordinate space 1 1 #NAME? +Intersubject registration 5 11 Name of target template image textarea target template image 1 target template image 1 2 #NAME? +Intersubject registration 5 12 Voxel size of target template Millimeters float 0 target resolution 1 target resolution 1 1 #NAME? +Intersubject registration 5 13 Was spatial smoothing applied? radio preset:boolean used smoothing 1 used smoothing 1 1 #NAME? +Intersubject registration 5 14 Describe the type of smoothing applied textarea smoothing type used_smoothing == 1 smoothing type 1 1 #NAME? +Intersubject registration 5 15 The full-width at half-maximum of the smoothing kernel Millimeters float 0 smoothing fwhm used_smoothing == 1 smoothing fwhm 1 1 #NAME? +Intersubject registration 5 16 Voxel size in mm of the resampled, atlas-space images float 0 resampled voxel size 1 resampled voxel size 1 1 #NAME? +Individual subject modeling 6 1 Type of group model used radio Regression | other intrasubject model type 1 intrasubject model type 1 1 Describe your model specification at the subejct level #NAME? +Individual subject modeling 6 2 Estimation method used for model select ordinary least squares | generalized least squares | other intrasubject estimation type 1 intrasubject estimation type 1 1 #NAME? +Individual subject modeling 6 3 Software used for intrasubject modeling if different from overall package select preset:mri_softwares intrasubject modeling software 1 intrasubject modeling software 1 2 #NAME? +Individual subject modeling 6 4 Nature of HRF model select spm HRF | glover HRF | double gamma | Fourrier set | Finite Impulse Response | FLOBS | other hemodynamic response function 1 hemodynamic response function 1 2 #NAME? +Individual subject modeling 6 5 Were temporal derivatives included? radio preset:boolean used temporal derivatives 1 used temporal derivatives 1 2 #NAME? +Individual subject modeling 6 6 Were dispersion derivatives included? radio preset:boolean used dispersion derivatives 1 used dispersion derivatives 1 3 #NAME? +Individual subject modeling 6 7 Were motion regressors included? radio preset:boolean used motion regressors 1 used motion regressors 1 2 #NAME? +Individual subject modeling 6 8 Was a reaction time regressor included? radio preset:boolean used reaction time regressor 1 used reaction time regressor 1 2 #NAME? +Individual subject modeling 6 9 Were any regressors specifically orthogonalized with respect to others? radio preset:boolean used orthogonalization 1 used orthogonalization 1 1 #NAME? +Individual subject modeling 6 10 If orthogonalization was used, describe here textarea orthogonalization description used_orthogonalization == 1 orthogonalization description 1 2 #NAME? +Individual subject modeling 6 11 Was high pass filtering applied? radio preset:boolean used high pass filter 1 used high pass filter 1 1 #NAME? +Individual subject modeling 6 12 Describe method used for high pass filtering textarea high pass filter method used_high_pass_filter == 1 high pass filter method 1 2 #NAME? +Individual subject modeling 6 13 What autocorrelation model was used ? select SPM: global approximate AR(1) | SPM: FAST | FSL: locally regularized autocorrelation function | AFNI: ARMA | none | other autocorrelation model 1 autocorrelation model 1 2 #NAME? +Individual subject modeling 6 14 Exactly what terms are subtracted from what? textarea contrast definition 1 contrast definition 1 1 #NAME? +Individual subject modeling 6 15 Link to Cognitive Atlas definition of this contrast Define these in terms of task or stimulus conditions (for example 'one-back task with objects versus zero-back task with objects') instead of underlying psychological concepts (for example 'working memory'). textarea contrast definition cogatlas 1 contrast definition cogatlas 1 3 #NAME? +Group modeling 7 1 Type of group model used select Regression group model type 1 group model type 1 1 Describe the group level analysis #NAME? +Group modeling 7 2 Estimation method used for model select ordinary least squares | generalized least squares | other group estimation type 1 group estimation type 1 1 #NAME? +Group modeling 7 3 Software used for group modeling if different from overall package select preset:mri_softwares group modeling software 1 group modeling software 1 2 #NAME? +Group modeling 7 4 Type of inference for group model select random effect | mixed effect | fixed effect group inference type 1 group inference type 1 1 #NAME? +Group modeling 7 5 If more than 2-levels, describe the levels and assumptions of the model. For example, are variances assumed equal between groups. textarea group model multilevel 1 group model multilevel 1 3 #NAME? +Group modeling 7 6 Was this a repeated measures design at the group level? radio preset:boolean group repeated measures 1 group repeated measures 1 1 #NAME? +Group modeling 7 7 If multiple measurements per subject, list method to account for within subject correlation, exact assumptions made about correlation/variance textarea group repeated measures method group_repeated_measures == 1 group repeated measures method 1 3 #NAME? +Group inference 8 1 Type of statistic that is the basis of the inference select Z | T | F | X2 | PostProb | Non-parametric Permutations | Monte Carlo Permutations | other group statistic type 1 group statistic type 1 2 Describe your statistical inference #NAME? +Group inference 8 2 Parameters of the null distribution of the test statisic. Typically degrees of freedom (should be clear from the test statistic what these are). float group statistic parameters 1 group statistic parameters 1 1 #NAME? +Group inference 8 3 Noise smoothness for statistical inference This is the estimated smoothness used with Random Field Theory or a simulation-based inference method. float 0 group smoothness fwhm 1 group smoothness fwhm 1 1 #NAME? diff --git a/ecobidas/inputs/pet/pet.tsv b/ecobidas/inputs/pet/pet.tsv index 773c0f74..32f8fc6d 100644 --- a/ecobidas/inputs/pet/pet.tsv +++ b/ecobidas/inputs/pet/pet.tsv @@ -57,10 +57,10 @@ activity_order question details field_type choices unit item item_order visibili 5 Reconstruction data labels select sampleStartTime | sampleDuration | activity | activitySD reconstruction_data_labels 18 1 reconstruction data labels reconstruction data labels 1 1 Data Acquisition Reconstruction Reconstruction 0 5 Reference paper for the attenuation correction method used. textarea AttenuationCorrectionMethodReference 19 1 AttenuationCorrectionMethodReference AttenuationCorrectionMethodReference 1 2 Data Acquisition Reconstruction Reconstruction 1 _pet.json AttenuationCorrectionMethodReference 6 Boolean that specifies if continuous blood measurements are available. radio preset:boolean ContinuousBloodAvail 1 1 ContinuousBloodAvail ContinuousBloodAvail 1 1 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodAvail -6 The rate at which the blood was withdrawn from the subject. float ml/s ContinuousBloodWithdrawalRate 2 ContinuousBloodAvail == 1 ContinuousBloodWithdrawalRate ContinuousBloodWithdrawalRate 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodWithdrawalRate +6 The rate at which the blood was withdrawn from the subject. float ml/s ContinuousBloodWithdrawalRate 2 ContinuousBloodAvail == 1 ContinuousBloodWithdrawalRate ContinuousBloodWithdrawalRate 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodWithdrawalRate 6 Description of the type of tubing used, ideally including the material and (internal) diameter. textarea ContinuousBloodTubingType 3 ContinuousBloodAvail == 1 ContinuousBloodTubingType ContinuousBloodTubingType 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodTubingType -6 The length of the blood tubing, from the subject to the detector. float cm ContinuousBloodTubingLength 4 ContinuousBloodAvail == 1 ContinuousBloodTubingLength ContinuousBloodTubingLength 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodTubingLength -6 External dispersion time constant resulting from tubing. float s ContinuousBloodDispersionConstant 5 ContinuousBloodAvail == 1 ContinuousBloodDispersionConstant ContinuousBloodDispersionConstant 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodDispersionConstant +6 The length of the blood tubing, from the subject to the detector. float cm ContinuousBloodTubingLength 4 ContinuousBloodAvail == 1 ContinuousBloodTubingLength ContinuousBloodTubingLength 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodTubingLength +6 External dispersion time constant resulting from tubing. float s ContinuousBloodDispersionConstant 5 ContinuousBloodAvail == 1 ContinuousBloodDispersionConstant ContinuousBloodDispersionConstant 1 2 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodDispersionConstant 6 Dispersion correction Boolean flag specifying whether the continuous blood radio preset:boolean ContinuousBloodDispersionCorrected 6 ContinuousBloodAvail == 1 ContinuousBloodDispersionCorrected ContinuousBloodDispersionCorrected 1 1 Radioligand Continuous blood Continuous blood 1 _pet.json ContinuousBloodDispersionCorrected 6 Boolean that specifies if discrete blood measurements are available. Boolean that specifies if discrete blood measurements are available. radio preset:boolean DiscreteBloodAvail 7 1 DiscreteBloodAvail DiscreteBloodAvail 1 1 Radioligand Discrete blood Discrete blood 1 _pet.json DiscreteBloodAvail 6 Measured haematocrit, i.e. the volume of erythrocytes divided by the volume of whole blood. slider 0 | 1 DiscreteBloodHaematocrit 8 DiscreteBloodAvail == 1 DiscreteBloodHaematocrit DiscreteBloodHaematocrit 1 2 Radioligand Discrete blood Discrete blood 1 _pet.json DiscreteBloodHaematocrit diff --git a/ecobidas/inputs/reexecution/reexecution.tsv b/ecobidas/inputs/reexecution/reexecution.tsv index 56c6a8da..05adfd49 100644 --- a/ecobidas/inputs/reexecution/reexecution.tsv +++ b/ecobidas/inputs/reexecution/reexecution.tsv @@ -20,7 +20,7 @@ include activity_pref_label activity_order item_order item item_pref_label item_ 1 analysis 3 6 preprocessing_parameters_specified preprocessing parameters specified preprocessing parameters specified 1 1 Are the detailed processing parameters specified? radio yes | some details provided | no 1 analysis 3 7 analysis_reexecutable analysis reexecutable analysis reexecutable 1 1 Do you think a reasonably skilled image analyst could re-execute this analysis (including getting the specified versions of the tools and operating system indicated)? radio yes | approximately | no | I am not sure 1 statistics 4 1 statistical_tools_specified statistical tools specified statistical tools specified 1 1 Are the statistical tools / packages specified? radio preset:boolean -1 statistics 4 2 statitical_tools_and_versions statitical tools and versions statitical tools and versions 1 statistical_tools_specified == 1 List the tools and versions indicated (i.e. Stata 5.0). If more than one tool used, use a new line for each tool. textarea +1 statistics 4 2 statistical_tools_and_versions statistical tools and versions statistical tools and versions 1 statistical_tools_specified == 1 List the tools and versions indicated (i.e. Stata 5.0). If more than one tool used, use a new line for each tool. textarea 1 statistics 4 3 statistics_OS_specified statistics OS specified statistics OS specified 1 1 Is the operating system used for the statistical tool(s) specified? radio preset:boolean 1 statistics 4 4 statistics_OS_class statistics OS class statistics OS class 0 statistics_OS_specified == 1 Which class of operating system was indicated for the statistical analysis? radio preset:operating_systems 1 statistics 4 5 statistics_OS_details statistics OS details statistics OS details 0 statistics_OS_specified == 1 Describe the operating system details (i.e. specific version) provided (i.e. MacOS 10.12.6). textarea diff --git a/ecobidas/inputs/spreadsheet_google_id.yml b/ecobidas/inputs/spreadsheet_google_id.yml index 8cfcbcd9..ce729378 100644 --- a/ecobidas/inputs/spreadsheet_google_id.yml +++ b/ecobidas/inputs/spreadsheet_google_id.yml @@ -19,7 +19,7 @@ eyetracking: google_id: 1aQZINzS24oYDgu6PZ8djqZQZ2s2eNs2xP6kyzHokU8o citation: https://psyarxiv.com/f6qcy/ app_link: https://remi-gau.github.io/cobidas-eyetracker/#/ - landing_page: ../README_eyetracker-en.md + landing_page: ../README_eyetracker-en.html repo: https://github.com/Remi-Gau/cobidas-eyetracker neurovault: @@ -37,7 +37,7 @@ pet: google_id: 1HS-1KOP8nE7C3MHiyRmQ6hd823cBZnCRVq0UryXvDc8 citation: https://doi.org/10.1177/0271678X20905433 app_link: https://remi-gau.github.io/cobidas-PET/#/ - landing_page: ../README_PET-en.md + landing_page: ../README_PET-en.html repo: https://github.com/Remi-Gau/cobidas-PET reexecution: @@ -46,7 +46,7 @@ reexecution: google_id: 1M9H7Bkti4OEVrYETajLbpbwY0T-QqSkpRUiwTz6-5Vc citation: https://doi.org/10.12688/f1000research.25306.2 app_link: https://remi-gau.github.io/cobidas_reexecute/#/ - landing_page: ../README_reexecute-en.md + landing_page: ../README_reexecute-en.html repo: https://github.com/Remi-Gau/cobidas_reexecute diff --git a/ecobidas/item.py b/ecobidas/item.py index 603f5f37..fd1740c1 100644 --- a/ecobidas/item.py +++ b/ecobidas/item.py @@ -1,5 +1,6 @@ import re +from loguru import logger from numpy import isnan, linspace from reproschema.models.item import Item, ResponseOption @@ -116,14 +117,14 @@ def define_unit(item: Item, units: str) -> Item: if not units: return item - unitOptions = [ + unit_options = [ { "prefLabel": {"en": unit}, "value": unit, } for unit in units ] - item.response_options.unitOptions = unitOptions + item.response_options.unitOptions = unit_options return item @@ -147,18 +148,11 @@ def define_new_item(item_info: dict) -> Item: output_dir="items", ) - question = item_info["question"] - if "id" in item_info and item_info["id"] != "": - question = item_info["id"] + " - " + question - if "details" in item_info and item_info["details"] != "": - question = ( - question - + "
- You can navigate each section on the left and then answer the questions - corresponding to your design, acquisition, analysis... - This is meant to make sure that you have not forgotten any of the essential - information in the methods and results parts of your article. -
-- At the end, you can click on Export (bottom left) to get a zip file - containing machine readable jsonld files that captures information about - your method/results section: our next step is to use this to automate the - part of the methods writing and to submit the information alongside data - submission to data archives. -
diff --git a/ecobidas/templates/landing_page.j2 b/ecobidas/templates/landing_page.j2 deleted file mode 100644 index af5a188c..00000000 --- a/ecobidas/templates/landing_page.j2 +++ /dev/null @@ -1,14 +0,0 @@ -The protocol is licensed CC-BY-4.0
-- We are looking for people to give us feedback or help us move forward. - If you are interested, check our - documentation for contributors. -
diff --git a/ecobidas/templates/want_to_know_more.j2 b/ecobidas/templates/want_to_know_more.j2 deleted file mode 100644 index 92588091..00000000 --- a/ecobidas/templates/want_to_know_more.j2 +++ /dev/null @@ -1,9 +0,0 @@ -- Most of the information concerning this project can be found in - our documentation. -
-- If you want to be kept posted about the progress of the project, - check our contact page -
diff --git a/ecobidas/templates/why_this_project.j2 b/ecobidas/templates/why_this_project.j2 deleted file mode 100644 index 4814ea92..00000000 --- a/ecobidas/templates/why_this_project.j2 +++ /dev/null @@ -1,11 +0,0 @@ -- Poor methods and results description hinders the reproducibility and the replicability of research. - It also makes it hard to compare new and old results and generally increases inefficiency in the research process. - This project is built on the hope that improving methods and results reporting could improve our research. -
-- Follow the link if you want to know more about the - motivations behind this project. -
diff --git a/ecobidas/utils.py b/ecobidas/utils.py index fac70318..a70c9bab 100644 --- a/ecobidas/utils.py +++ b/ecobidas/utils.py @@ -55,7 +55,7 @@ def get_landing_page(schema_info: dict[str, str]) -> str: if schema_info["landing_page"]: return schema_info["landing_page"] else: - return "../README_eCOBIDAS-en.md" + return "../README_eCOBIDAS-en.html" def get_schema_info(this_schema: str | Path) -> dict[str, str]: @@ -100,8 +100,8 @@ def convert_to_int(df_field: pd.Series) -> int: return int(df_field.tolist()[0]) -def snake_case(input: str) -> str: - return input.replace("\n", "").replace(" ", "_").replace(",", "") +def snake_case(input_str: str) -> str: + return input_str.replace("\n", "").replace(" ", "_").replace(",", "") def print_info(type: str, pref_label: str, file: str) -> None: diff --git a/inputs/bids_template/dataset_description.json b/inputs/bids_template/dataset_description.json index ff7497be..a526671c 100644 --- a/inputs/bids_template/dataset_description.json +++ b/inputs/bids_template/dataset_description.json @@ -1,25 +1,13 @@ { - "Name": "", - "BIDSVersion": "1.0.2", - "DatasetType": "", - "License": "", - "Authors": [ - "", - "", - "" - ], - "Acknowledgements": "", - "HowToAcknowledge": "", - "Funding": [ - "", - "", - "" - ], - "EthicsApprovals": "", - "ReferencesAndLinks": [ - "", - "", - "" - ], - "DatasetDOI": "" + "Name": "", + "BIDSVersion": "1.0.2", + "DatasetType": "", + "License": "", + "Authors": ["", "", ""], + "Acknowledgements": "", + "HowToAcknowledge": "", + "Funding": ["", "", ""], + "EthicsApprovals": "", + "ReferencesAndLinks": ["", "", ""], + "DatasetDOI": "" } diff --git a/inputs/bids_template/participants.json b/inputs/bids_template/participants.json index ea635cc6..5cc2a253 100644 --- a/inputs/bids_template/participants.json +++ b/inputs/bids_template/participants.json @@ -1,29 +1,49 @@ { - "age": { - "LongName": "", - "Description": "age of the participant", - "Levels": [], - "Units": "years", - "TermURL": "" + "age": { + "Annotations": { + "IsAbout": { + "TermURL": "nb:Age", + "Label": "" + }, + "Transformation": { + "TermURL": "nb:FromInt", + "Label": "integer data" + }, + "MissingValues": ["", "n/a", " "] }, - "sex": { - "LongName": "", - "Description": "sex of the participant as reported by the participant", - "Levels": { - "m": "male", - "f": "female" - }, - "Units": "", - "TermURL": "" + "Description": "There should have been a description here, but there wasn't. :(" + }, + "participant_id": { + "Annotations": { + "IsAbout": { + "TermURL": "nb:ParticipantID", + "Label": "" + }, + "Identifies": "participant" }, - "handedness": { - "LongName": "", - "Description": "handedness of the participant as reported by the participant", - "Levels": { - "l": "left", - "r": "right" + "Description": "There should have been a description here, but there wasn't. :(" + }, + "sex": { + "Annotations": { + "IsAbout": { + "TermURL": "nb:Sex", + "Label": "" + }, + "Levels": { + "F": { + "TermURL": "snomed:248152002", + "Label": "" + }, + "M": { + "TermURL": "snomed:248153007", + "Label": "" }, - "Units": "", - "TermURL": "" - } + "M,": { + "TermURL": "snomed:248153007", + "Label": "" + } + } + }, + "Description": "There should have been a description here, but there wasn't. :(" + } } diff --git a/inputs/bids_template/participants.tsv b/inputs/bids_template/participants.tsv index de75fec9..43679380 100644 --- a/inputs/bids_template/participants.tsv +++ b/inputs/bids_template/participants.tsv @@ -1,2 +1,17 @@ -participant_id age sex -sub-01 0 m +participant_id sex age +sub-01 F 26 +sub-02 M 24 +sub-03 F 27 +sub-04 F 20 +sub-05 M, 22 +sub-06 F 26 +sub-07 M 24 +sub-08 M 21 +sub-09 M 26 +sub-10 F 21 +sub-11 F 24 +sub-12 F 22 +sub-13 F 21 +sub-14 F 30 +sub-15 F 24 +sub-16 M 19 diff --git a/inputs/bids_template/phenotype/EpilepsyClassification2017.json b/inputs/bids_template/phenotype/EpilepsyClassification2017.json index 6c819138..e6d2778a 100644 --- a/inputs/bids_template/phenotype/EpilepsyClassification2017.json +++ b/inputs/bids_template/phenotype/EpilepsyClassification2017.json @@ -1,263 +1,246 @@ { - "epilepsy_classification": { - "LongName": "Epilepsy Classification", - "Description": "ILAE classification of the epilepsies", - "TermURL": "", - "Citation": "Scheffer, I. E., Berkovic, S., Capovilla, G., Connolly, M. B., French, J., Guilhoto, L., ... & Nordli, D. R. (2017). ILAE classification of the epilepsies: position paper of the ILAE Commission for Classification and Terminology. Epilepsia, 58(4), 512-521.", + "epilepsy_classification": { + "LongName": "Epilepsy Classification", + "Description": "ILAE classification of the epilepsies", + "TermURL": "", + "Citation": "Scheffer, I. E., Berkovic, S., Capovilla, G., Connolly, M. B., French, J., Guilhoto, L., ... & Nordli, D. R. (2017). ILAE classification of the epilepsies: position paper of the ILAE Commission for Classification and Terminology. Epilepsia, 58(4), 512-521.", + "Levels": { + "seizure_type": { + "LongName": "Seizure type", + "Description": "Seizures are classified by onset: Generalised, Focal and Unknown", "Levels": { - "seizure_type": { - "LongName": "Seizure type", - "Description": "Seizures are classified by onset: Generalised, Focal and Unknown", - "Levels": { - "Generalised": { - "Levels": { - "Motor": [ - "GeneralizedTonicClonicAndVariants", - "GeneralizedTonic", - "GeneralizedAtonic", - "Myoclonic", - "MyoclonicAtonic", - "EpilepticSpasms" - ], - "NonMotor": [ - "TypicalAbsence", - "AtypicalAbsence", - "MyoclonicAbsence", - "AbsenceWithEyelidMyoclonia" - ] - } - }, - "Focal": { - "Levels": { - "Awareness": [ - "Aware", - "ImpairedAwareness" - ], - "Motor": [ - "FocalClonicSeizure", - "FocalTonicSeizure", - "FocalMotorSeizureWithDystonia", - "FocalMyoclonicSeizure", - "FocalAtonicSeizure", - "FocalMotorSeizureWithParesisOrParalysis", - "FocalEpilepticSpasms", - "FocalHyperkineticSeizure", - "FocalAutomatismSeizure", - "FocalMotorSeizureWithDysarthriaOrAnarthria", - "FocalMotorSeizureWithNegativeMyoclonus", - "FocalMotorSeizureWithVersion", - "FocalBilateralMotorSeizure" - ], - "NonMotor": { - "Levels": { - "FocalSensorySeizure": [ - "FocalSomatosensorySeizure", - "FocalSensoryVisualSeizure", - "FocalSensoryAuditorySeizure", - "FocalSensoryOlfactorySeizure", - "FocalSensoryGustatorySeizure", - "FocalSensoryVestibularSeizure", - "FocalSensorySeizureWithHotOrColdSensations", - "FocalSensorySeizureWithCephalicSensation" - ], - "FocalCognitiveSeizure": [ - "FocalCognitiveSeizureWithExpressiveDysphasiaOrAphasia", - "FocalCognitiveSeizureWithAnomia", - "FocalCognitiveSeizureWithReceptiveDysphasiaOrAphasia", - "FocalCognitiveSeizureWithAuditoryAgnosia", - "FocalCognitiveSeizureWithConductionDysphasiaOrAphasia", - "FocalCognitiveSeizureWithDyslexiaOrAlexia", - "FocalCognitiveSeizureWithMemoryIpairment", - "FocalCognitiveSeizureWithDejaVuOrJamaisVu", - "FocalCognitiveSeizureWithHallucination", - "FocalCognitiveSeizureWithIllusion", - "FocalCognitiveSeizureWithDissociation", - "FocalCognitiveSeizureWithForcedThinking", - "FocalCognitiveSeizureWithDyscalculiaOrAcalculia", - "FocalCognitiveSeizureWithDysgraphiaOrAgraphia", - "FocalCognitiveSeizureWithLeftRightConfusion", - "FocalCognitiveSeizureWithNeglect" - ], - "FocalEmotionalSeizure": [ - "FocalEmotionalSeizureWithFearOrAnxietyOrPanic", - "FocalEmotionalSeizureWithLaughingGelastic", - "FocalEmotionalSeizureWithCryingDacrystic", - "FocalEmotionalSeizureWithPleasure", - "FocalEmotionalSeizureWithAnger" - ], - "FocalAutonomicSeizure": [ - "FocalAutonomicSeizureWithPalpitationsOrTachycardiaOrBradycardiaOrAsystole", - "FocalAutonomicSeizureWithEpigastricSensation", - "FocalAutonomicSeizureWithPallorOrFlushing", - "FocalAutonomicSeizureWithHypoventilationOrHyperventilationOrAlteredRespiration", - "FocalAutonomicSeizureWithPiloerection", - "FocalAutonomicSeizureWithErection", - "FocalAutonomicSeizureWithUrgeToUrinateOrDefecate", - "FocalAutonomicSeizureWithLacrimation", - "FocalAutonomicSeizureWithPupillaryDilationOrConstriction" - ], - "FocalBehaviouralArrestSeizure": [ - "FocalBehaviouralArrestSeizure" - ] - } - }, - "FocalToBilateralTonicClonicSeizure": [ - "FocalToBilateralTonicClonicSeizure" - ] - } - }, - "Unknown": { - "Levels": { - "Motor": [ - "TonicClonic", - "EpilepticSpasms" - ], - "NonMotor": [ - "BehaviourArrest", - "Unclassified" - ] - } - } - } - }, - "epilepsy_type": { - "LongName": "Epilepsy type", - "Description": "Epilepsy types are divided into four categories: Generalised Epilepsy, Focal Epilepsy, Combined generalised and focal Epilepsy and Unknown Epilepsy", - "Levels": { - "Generalised": { - "LongName": "Generalised Epilepsy", - "Description": "Patients with generalized epilepsy have generalized seizure types, and may have typical interictal and/or ictal EEG findings that accompany generalized seizure types (for example generalized spike and wave)." - }, - "Focal": { - "LongName": "Focal Epilepsy", - "Description": "Patients with focal epilepsy have focal seizure types, and may have typical interictal and/or ictal EEG findings that accompany focal seizure types (such as focal sharp waves or focal interictal slowing)." - }, - "Combined": { - "LongName": "Combined generalised and focal Epilepsy", - "Description": "Patients may have both generalized and focal seizure types, with interictal and/or ictal EEG findings that accompany both seizure types." - }, - "Unknown": { - "LongName": "Unknown Epilepsy", - "Description": "The term 'unknown' is used to denote where it is understood that the patient has epilepsy, but it is not possible to denote whether it is focal, generalized, or combined focal and generalized. This may occur due to insufficient information to classify the epilepsy, for example if the EEG is normal/uninformative." - } - } - }, - "epilepsy_syndrome": { - "LongName": "Epilepsy Syndrome", - "Description": "Epilepsies are organized by reliably identifying common clinical and electrical characteristics into epilepsy syndromes. Such syndromes have a typical age of seizure onset, specific seizure types and EEG characteristics and often other features which when taken together allow the specific epilepsy syndrome diagnosis.", - "Levels": { - "NeonatalInfantile": [ - "SelfLimitedNeonatalSeizuresAndSelfLimitedFamilialNeonatalEpilepsy", - "SelfLimitedFamilialAndNonFamilialInfantileEpilepsy", - "EarlyMyoclonicEncephalopathy", - "OhtaharaSyndrome", - "WestSyndrome", - "DravetSyndrome", - "MyoclonicEpilepsyInInfancy", - "EpilepsyOfInfancyWithMigratingFocalSeizures", - "MyoclonicEncephalopathyInNonProgressiveDisorders", - "FebrileSeizuresPlusGeneticEpilepsyWithFebrileSeizuresPlus" - ], - "Childhood": [ - "EpilepsyWithMyoclonicAtonicSeizures", - "EpilepsyWithEyelidMyoclonias", - "LennoxGastautSyndrome", - "ChildhoodAbsenceEpilepsy", - "EpilepsyWithMyoclonicAbsences", - "PanayiotopoulosSyndrome", - "ChildhoodOccipitalEpilepsyGastautType", - "PhotosensitiveOccipitalLobeEpilepsy", - "ChildhoodEpilepsyWithCentrotemporalSpikes", - "AtypicalChildhoodEpilepsyWithCentrotemporalSpikes", - "EpilepticEncephalopathyWithContinuousSpikeAndWaveDuringSleep", - "LandauKleffnerSyndrome", - "AutosomalDominantNocturnalFrontalLobeEpilepsy" - ], - "AdolescentAdult": [ - "JuvenileAbsenceEpilepsy", - "JuvenileMyoclonicEpilepsy", - "EpilepsyWithGeneralizedTonicClonicSeizuresAlone", - "AutosomalDominantEpilepsyWithAuditoryFeatures", - "OtherFamilialTemporalLobeEpilepsies" - ], - "AnyAge": [ - "FamilialFocalEpilepsyWithVariableFoci", - "ReflexEpilepsies", - "ProgressiveMyoclonusEpilepsies" - ] - } - }, - "etiology": { - "LongName": "Epilepsy etiology", - "Description": "At each stage, etiology (cause and comorbidities) should be identified. These are divided into six categories.", + "Generalised": { + "Levels": { + "Motor": [ + "GeneralizedTonicClonicAndVariants", + "GeneralizedTonic", + "GeneralizedAtonic", + "Myoclonic", + "MyoclonicAtonic", + "EpilepticSpasms" + ], + "NonMotor": [ + "TypicalAbsence", + "AtypicalAbsence", + "MyoclonicAbsence", + "AbsenceWithEyelidMyoclonia" + ] + } + }, + "Focal": { + "Levels": { + "Awareness": ["Aware", "ImpairedAwareness"], + "Motor": [ + "FocalClonicSeizure", + "FocalTonicSeizure", + "FocalMotorSeizureWithDystonia", + "FocalMyoclonicSeizure", + "FocalAtonicSeizure", + "FocalMotorSeizureWithParesisOrParalysis", + "FocalEpilepticSpasms", + "FocalHyperkineticSeizure", + "FocalAutomatismSeizure", + "FocalMotorSeizureWithDysarthriaOrAnarthria", + "FocalMotorSeizureWithNegativeMyoclonus", + "FocalMotorSeizureWithVersion", + "FocalBilateralMotorSeizure" + ], + "NonMotor": { "Levels": { - "Genetic": { - "LongName": "Genetic Etiology", - "Description": "The concept of genetic epilepsy is that the epilepsy is, as best we understand, the direct result of a known or presumed genetic defect(s) in which seizures are the core symptom of the disorder.", - "Levels": [ - "ChromosomalAbnormalities", - "GeneAbnormalities" - ] - }, - "Structural": { - "LongName": "Structural Etiology", - "Description": "Structural epilepsies are conceptualized as having a distinct structural brain abnormality that has been demonstrated to be associated with a substantially increased risk of epilepsy in appropriately designed studies.", - "Levels": [ - "MalformationsOfCorticalDevelopment", - "VascularMalformations", - "HippocampalSclerosis", - "HypoxicIschemicStructuralAbnormalities", - "TraumaticBrainInjury", - "Tumors", - "PorencephalicCyst" - ] - }, - "Metabolic": { - "LongName": "Metabolic Etiology", - "Description": "Metabolic epilepsies are conceptualized as having a distinct metabolic abnormality that has been demonstrated to be associated with a substantially increased risk of developing epilepsy in appropriately designed studies.", - "Levels": [ - "BiotinidaseAndHolocarboxylaseSynthaseDeficiency", - "CerebralFolateDeficiency", - "CreatineDisorders", - "FolinicAcidResponsiveSeizures", - "GlucoseTransporter1Deficiency", - "MitochondrialDisorders", - "PeroxisomalDisorders", - "PyridoxineDependentEpilepsy" - ] - }, - "Immune": { - "LongName": "Immune Etiology", - "Description": "Immune epilepsies are conceptualized as having a distinct immune-mediated etiology with evidence of central nervous system inflammation, that has been demonstrated to be associated with a substantially increased risk of developing epilepsy.", - "Levels": [ - "RasmussenSyndrome", - "AntibodyMediatedEtiologies" - ] - }, - "Infectious": { - "LongName": "Infectious Etiology", - "Description": "The commonest etiology for epilepsy worldwide is infectious, especially in developing countries. Infections in the central nervous system can cause both acute symptomatic seizures (which occur closely related to the timing of the initial infection) and epilepsy.", - "Levels": [ - "BacterialMeningitis", - "CerebralMalaria", - "CerebralToxoplasmosis", - "CMV", - "HIV", - "Neurocysticercosis", - "Tuberculosis", - "ViralEncephalitis", - "OtherInfections" - ] - }, - "Unknown": { - "LongName": "Unknown Etiology", - "Description": "'Unknown' is meant to be viewed neutrally and to designate that the nature of the underlying cause of the epilepsy is as yet unknown; it may have a fundamental genetic defect at its core or there may be a separate as yet unrecognized disorder.", - "Levels": [ - "FebrileInfectionRelatedEpilepsySyndrome" - ] - } + "FocalSensorySeizure": [ + "FocalSomatosensorySeizure", + "FocalSensoryVisualSeizure", + "FocalSensoryAuditorySeizure", + "FocalSensoryOlfactorySeizure", + "FocalSensoryGustatorySeizure", + "FocalSensoryVestibularSeizure", + "FocalSensorySeizureWithHotOrColdSensations", + "FocalSensorySeizureWithCephalicSensation" + ], + "FocalCognitiveSeizure": [ + "FocalCognitiveSeizureWithExpressiveDysphasiaOrAphasia", + "FocalCognitiveSeizureWithAnomia", + "FocalCognitiveSeizureWithReceptiveDysphasiaOrAphasia", + "FocalCognitiveSeizureWithAuditoryAgnosia", + "FocalCognitiveSeizureWithConductionDysphasiaOrAphasia", + "FocalCognitiveSeizureWithDyslexiaOrAlexia", + "FocalCognitiveSeizureWithMemoryIpairment", + "FocalCognitiveSeizureWithDejaVuOrJamaisVu", + "FocalCognitiveSeizureWithHallucination", + "FocalCognitiveSeizureWithIllusion", + "FocalCognitiveSeizureWithDissociation", + "FocalCognitiveSeizureWithForcedThinking", + "FocalCognitiveSeizureWithDyscalculiaOrAcalculia", + "FocalCognitiveSeizureWithDysgraphiaOrAgraphia", + "FocalCognitiveSeizureWithLeftRightConfusion", + "FocalCognitiveSeizureWithNeglect" + ], + "FocalEmotionalSeizure": [ + "FocalEmotionalSeizureWithFearOrAnxietyOrPanic", + "FocalEmotionalSeizureWithLaughingGelastic", + "FocalEmotionalSeizureWithCryingDacrystic", + "FocalEmotionalSeizureWithPleasure", + "FocalEmotionalSeizureWithAnger" + ], + "FocalAutonomicSeizure": [ + "FocalAutonomicSeizureWithPalpitationsOrTachycardiaOrBradycardiaOrAsystole", + "FocalAutonomicSeizureWithEpigastricSensation", + "FocalAutonomicSeizureWithPallorOrFlushing", + "FocalAutonomicSeizureWithHypoventilationOrHyperventilationOrAlteredRespiration", + "FocalAutonomicSeizureWithPiloerection", + "FocalAutonomicSeizureWithErection", + "FocalAutonomicSeizureWithUrgeToUrinateOrDefecate", + "FocalAutonomicSeizureWithLacrimation", + "FocalAutonomicSeizureWithPupillaryDilationOrConstriction" + ], + "FocalBehaviouralArrestSeizure": [ + "FocalBehaviouralArrestSeizure" + ] } + }, + "FocalToBilateralTonicClonicSeizure": [ + "FocalToBilateralTonicClonicSeizure" + ] } + }, + "Unknown": { + "Levels": { + "Motor": ["TonicClonic", "EpilepticSpasms"], + "NonMotor": ["BehaviourArrest", "Unclassified"] + } + } + } + }, + "epilepsy_type": { + "LongName": "Epilepsy type", + "Description": "Epilepsy types are divided into four categories: Generalised Epilepsy, Focal Epilepsy, Combined generalised and focal Epilepsy and Unknown Epilepsy", + "Levels": { + "Generalised": { + "LongName": "Generalised Epilepsy", + "Description": "Patients with generalized epilepsy have generalized seizure types, and may have typical interictal and/or ictal EEG findings that accompany generalized seizure types (for example generalized spike and wave)." + }, + "Focal": { + "LongName": "Focal Epilepsy", + "Description": "Patients with focal epilepsy have focal seizure types, and may have typical interictal and/or ictal EEG findings that accompany focal seizure types (such as focal sharp waves or focal interictal slowing)." + }, + "Combined": { + "LongName": "Combined generalised and focal Epilepsy", + "Description": "Patients may have both generalized and focal seizure types, with interictal and/or ictal EEG findings that accompany both seizure types." + }, + "Unknown": { + "LongName": "Unknown Epilepsy", + "Description": "The term 'unknown' is used to denote where it is understood that the patient has epilepsy, but it is not possible to denote whether it is focal, generalized, or combined focal and generalized. This may occur due to insufficient information to classify the epilepsy, for example if the EEG is normal/uninformative." + } + } + }, + "epilepsy_syndrome": { + "LongName": "Epilepsy Syndrome", + "Description": "Epilepsies are organized by reliably identifying common clinical and electrical characteristics into epilepsy syndromes. Such syndromes have a typical age of seizure onset, specific seizure types and EEG characteristics and often other features which when taken together allow the specific epilepsy syndrome diagnosis.", + "Levels": { + "NeonatalInfantile": [ + "SelfLimitedNeonatalSeizuresAndSelfLimitedFamilialNeonatalEpilepsy", + "SelfLimitedFamilialAndNonFamilialInfantileEpilepsy", + "EarlyMyoclonicEncephalopathy", + "OhtaharaSyndrome", + "WestSyndrome", + "DravetSyndrome", + "MyoclonicEpilepsyInInfancy", + "EpilepsyOfInfancyWithMigratingFocalSeizures", + "MyoclonicEncephalopathyInNonProgressiveDisorders", + "FebrileSeizuresPlusGeneticEpilepsyWithFebrileSeizuresPlus" + ], + "Childhood": [ + "EpilepsyWithMyoclonicAtonicSeizures", + "EpilepsyWithEyelidMyoclonias", + "LennoxGastautSyndrome", + "ChildhoodAbsenceEpilepsy", + "EpilepsyWithMyoclonicAbsences", + "PanayiotopoulosSyndrome", + "ChildhoodOccipitalEpilepsyGastautType", + "PhotosensitiveOccipitalLobeEpilepsy", + "ChildhoodEpilepsyWithCentrotemporalSpikes", + "AtypicalChildhoodEpilepsyWithCentrotemporalSpikes", + "EpilepticEncephalopathyWithContinuousSpikeAndWaveDuringSleep", + "LandauKleffnerSyndrome", + "AutosomalDominantNocturnalFrontalLobeEpilepsy" + ], + "AdolescentAdult": [ + "JuvenileAbsenceEpilepsy", + "JuvenileMyoclonicEpilepsy", + "EpilepsyWithGeneralizedTonicClonicSeizuresAlone", + "AutosomalDominantEpilepsyWithAuditoryFeatures", + "OtherFamilialTemporalLobeEpilepsies" + ], + "AnyAge": [ + "FamilialFocalEpilepsyWithVariableFoci", + "ReflexEpilepsies", + "ProgressiveMyoclonusEpilepsies" + ] + } + }, + "etiology": { + "LongName": "Epilepsy etiology", + "Description": "At each stage, etiology (cause and comorbidities) should be identified. These are divided into six categories.", + "Levels": { + "Genetic": { + "LongName": "Genetic Etiology", + "Description": "The concept of genetic epilepsy is that the epilepsy is, as best we understand, the direct result of a known or presumed genetic defect(s) in which seizures are the core symptom of the disorder.", + "Levels": ["ChromosomalAbnormalities", "GeneAbnormalities"] + }, + "Structural": { + "LongName": "Structural Etiology", + "Description": "Structural epilepsies are conceptualized as having a distinct structural brain abnormality that has been demonstrated to be associated with a substantially increased risk of epilepsy in appropriately designed studies.", + "Levels": [ + "MalformationsOfCorticalDevelopment", + "VascularMalformations", + "HippocampalSclerosis", + "HypoxicIschemicStructuralAbnormalities", + "TraumaticBrainInjury", + "Tumors", + "PorencephalicCyst" + ] + }, + "Metabolic": { + "LongName": "Metabolic Etiology", + "Description": "Metabolic epilepsies are conceptualized as having a distinct metabolic abnormality that has been demonstrated to be associated with a substantially increased risk of developing epilepsy in appropriately designed studies.", + "Levels": [ + "BiotinidaseAndHolocarboxylaseSynthaseDeficiency", + "CerebralFolateDeficiency", + "CreatineDisorders", + "FolinicAcidResponsiveSeizures", + "GlucoseTransporter1Deficiency", + "MitochondrialDisorders", + "PeroxisomalDisorders", + "PyridoxineDependentEpilepsy" + ] + }, + "Immune": { + "LongName": "Immune Etiology", + "Description": "Immune epilepsies are conceptualized as having a distinct immune-mediated etiology with evidence of central nervous system inflammation, that has been demonstrated to be associated with a substantially increased risk of developing epilepsy.", + "Levels": ["RasmussenSyndrome", "AntibodyMediatedEtiologies"] + }, + "Infectious": { + "LongName": "Infectious Etiology", + "Description": "The commonest etiology for epilepsy worldwide is infectious, especially in developing countries. Infections in the central nervous system can cause both acute symptomatic seizures (which occur closely related to the timing of the initial infection) and epilepsy.", + "Levels": [ + "BacterialMeningitis", + "CerebralMalaria", + "CerebralToxoplasmosis", + "CMV", + "HIV", + "Neurocysticercosis", + "Tuberculosis", + "ViralEncephalitis", + "OtherInfections" + ] + }, + "Unknown": { + "LongName": "Unknown Etiology", + "Description": "'Unknown' is meant to be viewed neutrally and to designate that the nature of the underlying cause of the epilepsy is as yet unknown; it may have a fundamental genetic defect at its core or there may be a separate as yet unrecognized disorder.", + "Levels": ["FebrileInfectionRelatedEpilepsySyndrome"] + } } + } } + } } diff --git a/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-FullExample_run-01_T1w.json b/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-FullExample_run-01_T1w.json index f9e6edc3..9369d099 100644 --- a/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-FullExample_run-01_T1w.json +++ b/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-FullExample_run-01_T1w.json @@ -1,40 +1,40 @@ { - "Manufacturer": "Sielips / Phimens", - "ManufacturersModelName": "Terra", - "MagneticFieldStrength": 7, - "DeviceSerialNumber": 1234, - "StationName": "International space station", - "SoftwareVersions": " ", - "ReceiveCoilName": " ", - "ReceiveCoilActiveElements": " ", - "GradientSetType": " ", - "MRTransmitCoilSequence": " ", - "MatrixCoilMode": " ", - "CoilCombinationMethod": " ", - "PulseSequenceType": "MPRAGE", - "ScanningSequence": " ", - "SequenceVariant": " ", - "ScanOptions": " ", - "SequenceName": " ", - "PulseSequenceDetails": " ", - "NonlinearGradientCorrection": " ", - "NumberShots": 2, - "ParallelReductionFactorInPlane": 2, - "ParallelAcquisitionTechnique": "GRAPPA", - "PartialFourier": " ", - "PartialFourierDirection": " ", - "PhaseEncodingDirection": "i", - "WaterFatShift": " ", - "EchoTrainLength": " ", - "EchoTime": 2, - "InversionTime": " ", - "SliceEncodingDirection": " ", - "DwellTime": " ", - "FlipAngle": 90, - "MultibandAccelerationFactor": " ", - "AnatomicalLandmarkCoordinates": " ", - "InstitutionName": "BCBL", - "InstitutionAddress": "Zoomlandia", - "InstitutionalDepartmentName": " ", - "ContrastBolusIngredient": " " + "Manufacturer": "Sielips / Phimens", + "ManufacturersModelName": "Terra", + "MagneticFieldStrength": 7, + "DeviceSerialNumber": 1234, + "StationName": "International space station", + "SoftwareVersions": " ", + "ReceiveCoilName": " ", + "ReceiveCoilActiveElements": " ", + "GradientSetType": " ", + "MRTransmitCoilSequence": " ", + "MatrixCoilMode": " ", + "CoilCombinationMethod": " ", + "PulseSequenceType": "MPRAGE", + "ScanningSequence": " ", + "SequenceVariant": " ", + "ScanOptions": " ", + "SequenceName": " ", + "PulseSequenceDetails": " ", + "NonlinearGradientCorrection": " ", + "NumberShots": 2, + "ParallelReductionFactorInPlane": 2, + "ParallelAcquisitionTechnique": "GRAPPA", + "PartialFourier": " ", + "PartialFourierDirection": " ", + "PhaseEncodingDirection": "i", + "WaterFatShift": " ", + "EchoTrainLength": " ", + "EchoTime": 2, + "InversionTime": " ", + "SliceEncodingDirection": " ", + "DwellTime": " ", + "FlipAngle": 90, + "MultibandAccelerationFactor": " ", + "AnatomicalLandmarkCoordinates": " ", + "InstitutionName": "BCBL", + "InstitutionAddress": "Zoomlandia", + "InstitutionalDepartmentName": " ", + "ContrastBolusIngredient": " " } diff --git a/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-ShortExample_run-01_T1w.json b/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-ShortExample_run-01_T1w.json index 7c84958b..d4783dd1 100644 --- a/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-ShortExample_run-01_T1w.json +++ b/inputs/bids_template/sub-01/ses-01/anat/sub-01_ses-01_acq-ShortExample_run-01_T1w.json @@ -1,7 +1,7 @@ { - "PhaseEncodingDirection": " ", - "EffectiveEchoSpacing": " ", - "TotalReadoutTime": " ", - "EchoTime": " ", - "SliceTiming": " " + "PhaseEncodingDirection": " ", + "EffectiveEchoSpacing": " ", + "TotalReadoutTime": " ", + "EchoTime": " ", + "SliceTiming": " " } diff --git a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FilterExample_eeg.json b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FilterExample_eeg.json index bdd6c031..7cb3ef2d 100644 --- a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FilterExample_eeg.json +++ b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FilterExample_eeg.json @@ -1,9 +1,9 @@ { - "HardwareFilters": { - "Highpass RC filter": { - "Half amplitude cutoff (Hz)": 0.0159, - "Roll-off": "6dB/Octave" - } - }, - "SoftwareFilters": "n/a" + "HardwareFilters": { + "Highpass RC filter": { + "Half amplitude cutoff (Hz)": 0.0159, + "Roll-off": "6dB/Octave" + } + }, + "SoftwareFilters": "n/a" } diff --git a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FullExample_eeg.json b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FullExample_eeg.json index 094f659e..72f6a07d 100644 --- a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FullExample_eeg.json +++ b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-FullExample_eeg.json @@ -1,32 +1,32 @@ { - "TaskName": "Testdata", - "TaskDescription": "resting state", - "Instructions": "", - "CogAtlasID": "", - "CogPOID": "", - "InstitutionName": "University of Open Science", - "InstitutionalDepartmentName": "", - "InstitutionAddress": " Third rock from the sun", - "Manufacturer": "Biosemi", - "ManufacturersModelName": "ActiveTwo", - "DeviceSerialNumber": "BHD2020", - "SoftwareVersions": "13.11", - "PowerLineFrequency": 50, - "SamplingFrequency": 512, - "EEGChannelCount": 64, - "EOGChannelCount": 2, - "ECGChannelCount": 2, - "EMGChannelCount": 3, - "MiscChannelCount": [], - "TriggerChannelCount": [], - "EEGPlacementScheme": "10-20 international system", - "EEGReference": "right and left earlobes", - "EEGGround": "CMS-DRL", - "CapManufacturer": "", - "CapManufacturersModelName": "", - "HardwareFilters": "", - "SoftwareFilters": "", - "RecordingDuration": 5, - "RecordingType": "continuous", - "SubjectArtefactDescription": "" + "TaskName": "Testdata", + "TaskDescription": "resting state", + "Instructions": "", + "CogAtlasID": "", + "CogPOID": "", + "InstitutionName": "University of Open Science", + "InstitutionalDepartmentName": "", + "InstitutionAddress": " Third rock from the sun", + "Manufacturer": "Biosemi", + "ManufacturersModelName": "ActiveTwo", + "DeviceSerialNumber": "BHD2020", + "SoftwareVersions": "13.11", + "PowerLineFrequency": 50, + "SamplingFrequency": 512, + "EEGChannelCount": 64, + "EOGChannelCount": 2, + "ECGChannelCount": 2, + "EMGChannelCount": 3, + "MiscChannelCount": [], + "TriggerChannelCount": [], + "EEGPlacementScheme": "10-20 international system", + "EEGReference": "right and left earlobes", + "EEGGround": "CMS-DRL", + "CapManufacturer": "", + "CapManufacturersModelName": "", + "HardwareFilters": "", + "SoftwareFilters": "", + "RecordingDuration": 5, + "RecordingType": "continuous", + "SubjectArtefactDescription": "" } diff --git a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-MinimalExample_eeg.json b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-MinimalExample_eeg.json index 8e906e13..df0a0394 100644 --- a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-MinimalExample_eeg.json +++ b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-MinimalExample_eeg.json @@ -1,10 +1,10 @@ { - "TaskName": "", - "SamplingFrequency": [], - "EEGChannelCount": [], - "EOGChannelCount": [], - "ECGChannelCount": [], - "EMGChannelCount": [], - "EEGReference": "", - "PowerLineFrequency": [] + "TaskName": "", + "SamplingFrequency": [], + "EEGChannelCount": [], + "EOGChannelCount": [], + "ECGChannelCount": [], + "EMGChannelCount": [], + "EEGReference": "", + "PowerLineFrequency": [] } diff --git a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-ReferenceExample_eeg.json b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-ReferenceExample_eeg.json index 84685231..069171de 100644 --- a/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-ReferenceExample_eeg.json +++ b/inputs/bids_template/sub-01/ses-01/eeg/sub-01_ses-01_task-ReferenceExample_eeg.json @@ -1,6 +1,6 @@ { - "Manufacturer": "Biosemi", - "ManufacturersModelName": "ActiveTwo", - "EEGReference": "CMS, placed on Cz", - "EEGGround": "DRL, placed on Fz" + "Manufacturer": "Biosemi", + "ManufacturersModelName": "ActiveTwo", + "EEGReference": "CMS, placed on Cz", + "EEGGround": "DRL, placed on Fz" } diff --git a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case1_run-01_phasediff.json b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case1_run-01_phasediff.json index 3b526d76..177c54a2 100644 --- a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case1_run-01_phasediff.json +++ b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case1_run-01_phasediff.json @@ -1,5 +1,5 @@ { - "EchoTime1": "", - "EchoTime2": "", - "IntendedFor": "" + "EchoTime1": "", + "EchoTime2": "", + "IntendedFor": "" } diff --git a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase1.json b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase1.json index 78edee63..008125cb 100644 --- a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase1.json +++ b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase1.json @@ -1,4 +1,4 @@ { - "EchoTime": "", - "IntendedFor": "" + "EchoTime": "", + "IntendedFor": "" } diff --git a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase2.json b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase2.json index 78edee63..008125cb 100644 --- a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase2.json +++ b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case2_run-01_phase2.json @@ -1,4 +1,4 @@ { - "EchoTime": "", - "IntendedFor": "" + "EchoTime": "", + "IntendedFor": "" } diff --git a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case3_run-01_fieldmap.json b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case3_run-01_fieldmap.json index 701be5b5..b7c47944 100644 --- a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case3_run-01_fieldmap.json +++ b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case3_run-01_fieldmap.json @@ -1,4 +1,4 @@ { - "Units": "", - "IntendedFor": "" + "Units": "", + "IntendedFor": "" } diff --git a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case4_dir-LR_run-01_epi.json b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case4_dir-LR_run-01_epi.json index f895c797..aaf2fac0 100644 --- a/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case4_dir-LR_run-01_epi.json +++ b/inputs/bids_template/sub-01/ses-01/fmap/sub-01_ses-01_task-Case4_dir-LR_run-01_epi.json @@ -1,5 +1,5 @@ { - "PhaseEncodingDirection": "", - "TotalReadoutTime": "", - "IntendedFor": "" + "PhaseEncodingDirection": "", + "TotalReadoutTime": "", + "IntendedFor": "" } diff --git a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_bold.json b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_bold.json index dd0196e1..f0d9071e 100644 --- a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_bold.json +++ b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_bold.json @@ -1,53 +1,53 @@ { - "TaskName": "", - "RepetitionTime": [], - "VolumeTiming": [], - "DelayTime": [], - "SliceTiming": "", - "AcquisitionDuration": [], - "PhaseEncodingDirection": "", - "EffectiveEchoSpacing": "", - "EchoTime": "", - "Manufacturer": "", - "ManufacturersModelName": "", - "MagneticFieldStrength": "", - "DeviceSerialNumber": "", - "StationName": " ", - "SoftwareVersions": " ", - "HardcopyDeviceSoftwareVersion": "", - "ReceiveCoilName": " ", - "GradientSetType": "", - "MRTransmitCoilSequence": "", - "MatrixCoilMode": "", - "CoilCombinationMethod": "", - "PulseSequenceType": "", - "ScanningSequence": "", - "SequenceVariant": "", - "ScanOptions": "", - "SequenceName": "", - "PulseSequenceDetails": "", - "NonlinearGradientCorrection": "", - "NumberShots": "", - "ParallelReductionFactorInPlane": "", - "ParallelAcquisitionTechnique": "", - "PartialFourier": "", - "PartialFourierDirection": "", - "WaterFatShift": "", - "EchoTrainLength": "", - "InversionTime": "", - "SliceEncodingDirection": "", - "DwellTime": "", - "TotalReadoutTime": "", - "DelayAfterTrigger": [], - "NumberOfVolumesDiscardedByScanner": "", - "NumberOfVolumesDiscardedByUser": "", - "FlipAngle": "", - "MultibandAccelerationFactor": "", - "Instructions": "", - "TaskDescription": "", - "CogAtlasID": "", - "CogPOID": "", - "InstitutionName": "", - "InstitutionAddress": "", - "InstitutionalDepartmentName": "" + "TaskName": "", + "RepetitionTime": [], + "VolumeTiming": [], + "DelayTime": [], + "SliceTiming": "", + "AcquisitionDuration": [], + "PhaseEncodingDirection": "", + "EffectiveEchoSpacing": "", + "EchoTime": "", + "Manufacturer": "", + "ManufacturersModelName": "", + "MagneticFieldStrength": "", + "DeviceSerialNumber": "", + "StationName": " ", + "SoftwareVersions": " ", + "HardcopyDeviceSoftwareVersion": "", + "ReceiveCoilName": " ", + "GradientSetType": "", + "MRTransmitCoilSequence": "", + "MatrixCoilMode": "", + "CoilCombinationMethod": "", + "PulseSequenceType": "", + "ScanningSequence": "", + "SequenceVariant": "", + "ScanOptions": "", + "SequenceName": "", + "PulseSequenceDetails": "", + "NonlinearGradientCorrection": "", + "NumberShots": "", + "ParallelReductionFactorInPlane": "", + "ParallelAcquisitionTechnique": "", + "PartialFourier": "", + "PartialFourierDirection": "", + "WaterFatShift": "", + "EchoTrainLength": "", + "InversionTime": "", + "SliceEncodingDirection": "", + "DwellTime": "", + "TotalReadoutTime": "", + "DelayAfterTrigger": [], + "NumberOfVolumesDiscardedByScanner": "", + "NumberOfVolumesDiscardedByUser": "", + "FlipAngle": "", + "MultibandAccelerationFactor": "", + "Instructions": "", + "TaskDescription": "", + "CogAtlasID": "", + "CogPOID": "", + "InstitutionName": "", + "InstitutionAddress": "", + "InstitutionalDepartmentName": "" } diff --git a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_events.json b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_events.json index ef826855..ecc5cb70 100644 --- a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_events.json +++ b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-FullExample_run-01_events.json @@ -1,23 +1,23 @@ { - "trial_type": { - "LongName": "", - "Description": "Emotion image type", - "Levels": { - "afraid": "A face showing fear is displayed", - "angry": "A face showing anger is displayed" - }, - "Units": "", - "TermURL": "" + "trial_type": { + "LongName": "", + "Description": "Emotion image type", + "Levels": { + "afraid": "A face showing fear is displayed", + "angry": "A face showing anger is displayed" }, - "identifier": { - "LongName": "Unique identifier from Karolinska (KDEF) database", - "Description": "ID from KDEF database used to identify the displayed image" - }, - "StimulusPresentation": { - "OperatingSystem": "Linux Ubuntu 18.04.5", - "SoftwareName": "Psychtoolbox", - "SoftwareRRID": "SCR_002881", - "SoftwareVersion": "3.0.14", - "Code": "doi:10.5281/zenodo.3361717" - } + "Units": "", + "TermURL": "" + }, + "identifier": { + "LongName": "Unique identifier from Karolinska (KDEF) database", + "Description": "ID from KDEF database used to identify the displayed image" + }, + "StimulusPresentation": { + "OperatingSystem": "Linux Ubuntu 18.04.5", + "SoftwareName": "Psychtoolbox", + "SoftwareRRID": "SCR_002881", + "SoftwareVersion": "3.0.14", + "Code": "doi:10.5281/zenodo.3361717" + } } diff --git a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-ShortExample_run-01_bold.json b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-ShortExample_run-01_bold.json index c174d522..d22eef01 100644 --- a/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-ShortExample_run-01_bold.json +++ b/inputs/bids_template/sub-01/ses-01/func/sub-01_ses-01_task-ShortExample_run-01_bold.json @@ -1,4 +1,4 @@ { - "TaskName": "", - "RepetitionTime": "" + "TaskName": "", + "RepetitionTime": "" } diff --git a/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_coordsystem.json b/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_coordsystem.json index 584414b7..445eb6ab 100644 --- a/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_coordsystem.json +++ b/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_coordsystem.json @@ -1,8 +1,8 @@ { - "iEEGCoordinateSystem": "", - "iEEGCoordinateUnits": "", - "iEEGCoordinateProcessingDescripton": "", - "IndendedFor": "", - "iEEGCoordinateProcessingDescription": "", - "iEEGCoordinateProcessingReference": "" + "iEEGCoordinateSystem": "", + "iEEGCoordinateUnits": "", + "iEEGCoordinateProcessingDescripton": "", + "IndendedFor": "", + "iEEGCoordinateProcessingDescription": "", + "iEEGCoordinateProcessingReference": "" } diff --git a/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_task-LongExample_run-01_ieeg.json b/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_task-LongExample_run-01_ieeg.json index 3eaab252..43df8494 100644 --- a/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_task-LongExample_run-01_ieeg.json +++ b/inputs/bids_template/sub-01/ses-01/ieeg/sub-01_ses-01_task-LongExample_run-01_ieeg.json @@ -1,45 +1,45 @@ { - "TaskName": "", - "SamplingFrequency": "", - "PowerLineFrequency": "", - "SoftwareFilters": "", - "DCOffsetCorrection": "", - "HardwareFilters": { - "HighpassFilter": { - "CutoffFrequency": [] - }, - "LowpassFilter": { - "CutoffFrequency": [] - } + "TaskName": "", + "SamplingFrequency": "", + "PowerLineFrequency": "", + "SoftwareFilters": "", + "DCOffsetCorrection": "", + "HardwareFilters": { + "HighpassFilter": { + "CutoffFrequency": [] }, - "Manufacturer": "", - "ManufacturersModelName": "", - "TaskDescription": "", - "Instructions": "", - "CogAtlasID": "", - "CogPOID": "", - "InstitutionName": "", - "InstitutionAddress": "", - "DeviceSerialNumber": "", - "ECOGChannelCount": "", - "SEEGChannelCount": "", - "EEGChannelCount": "", - "EOGChannelCount": "", - "ECGChannelCount": "", - "EMGChannelCount": "", - "MiscChannelCount": "", - "TriggerChannelCount": "", - "RecordingDuration": "", - "RecordingType": "", - "EpochLength": "", - "SubjectArtefactDescription": "", - "SoftwareVersions": "", - "iEEGReference": "", - "ElectrodeManufacturer": "", - "ElectrodeManufacturersModelName": "", - "iEEGGround": "", - "iEEGPlacementScheme": "", - "iEEGElectrodeGroups": "", - "ElectricalStimulation": "", - "ElectricalStimulationParameters": "" + "LowpassFilter": { + "CutoffFrequency": [] + } + }, + "Manufacturer": "", + "ManufacturersModelName": "", + "TaskDescription": "", + "Instructions": "", + "CogAtlasID": "", + "CogPOID": "", + "InstitutionName": "", + "InstitutionAddress": "", + "DeviceSerialNumber": "", + "ECOGChannelCount": "", + "SEEGChannelCount": "", + "EEGChannelCount": "", + "EOGChannelCount": "", + "ECGChannelCount": "", + "EMGChannelCount": "", + "MiscChannelCount": "", + "TriggerChannelCount": "", + "RecordingDuration": "", + "RecordingType": "", + "EpochLength": "", + "SubjectArtefactDescription": "", + "SoftwareVersions": "", + "iEEGReference": "", + "ElectrodeManufacturer": "", + "ElectrodeManufacturersModelName": "", + "iEEGGround": "", + "iEEGPlacementScheme": "", + "iEEGElectrodeGroups": "", + "ElectricalStimulation": "", + "ElectricalStimulationParameters": "" } diff --git a/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-FullExample_acq-CTF_run-1_proc-sss_meg.json b/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-FullExample_acq-CTF_run-1_proc-sss_meg.json index 8c1b41f6..08c6708b 100644 --- a/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-FullExample_acq-CTF_run-1_proc-sss_meg.json +++ b/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-FullExample_acq-CTF_run-1_proc-sss_meg.json @@ -1,40 +1,40 @@ { - "TaskName": "resting", - "InstitutionName": "University of open science", - "InstitutionAddress": "3rd planet from the sun", - "Manufacturer": "", - "ManufacturersModelName": "", - "SoftwareVersions": "", - "TaskDescription": "", - "Instructions": "Close your eyes and enjoy the ride.", - "CogPOID": "", - "DeviceSerialNumber": "", - "SamplingFrequency": "", - "PowerLineFrequency": 50, - "DewarPosition": "", - "SoftwareFilters": "", - "DigitizedLandmarks": "", - "DigitizedHeadPoints": "", - "MEGChannelCount": 42, - "MEGREFChannelCount": 42, - "EEGChannelCount": 42, - "ECOGChannelCount": 42, - "SEEGChannelCount": 42, - "EOGChannelCount": 42, - "ECGChannelCount": 42, - "EMGChannelCount": 42, - "MiscChannelCount": "", - "TriggerChannelCount": "", - "RecordingDuration": 600, - "RecordingType": "continuous", - "EpochLength": 2, - "ContinuousHeadLocalization": "", - "HeadCoilFrequency": [1470], - "MaxMovement": "", - "SubjectArtefactDescription": "", - "AssociatedEmptyRoom": "", - "EEGSamplingFrequency": "", - "EEGPlacementScheme": "", - "ManufacturersAmplifierModelName": "", - "EEGReference": "" + "TaskName": "resting", + "InstitutionName": "University of open science", + "InstitutionAddress": "3rd planet from the sun", + "Manufacturer": "", + "ManufacturersModelName": "", + "SoftwareVersions": "", + "TaskDescription": "", + "Instructions": "Close your eyes and enjoy the ride.", + "CogPOID": "", + "DeviceSerialNumber": "", + "SamplingFrequency": "", + "PowerLineFrequency": 50, + "DewarPosition": "", + "SoftwareFilters": "", + "DigitizedLandmarks": "", + "DigitizedHeadPoints": "", + "MEGChannelCount": 42, + "MEGREFChannelCount": 42, + "EEGChannelCount": 42, + "ECOGChannelCount": 42, + "SEEGChannelCount": 42, + "EOGChannelCount": 42, + "ECGChannelCount": 42, + "EMGChannelCount": 42, + "MiscChannelCount": "", + "TriggerChannelCount": "", + "RecordingDuration": 600, + "RecordingType": "continuous", + "EpochLength": 2, + "ContinuousHeadLocalization": "", + "HeadCoilFrequency": [1470], + "MaxMovement": "", + "SubjectArtefactDescription": "", + "AssociatedEmptyRoom": "", + "EEGSamplingFrequency": "", + "EEGPlacementScheme": "", + "ManufacturersAmplifierModelName": "", + "EEGReference": "" } diff --git a/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-ShortExample_acq-CTF_run-1_proc-sss_meg.json b/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-ShortExample_acq-CTF_run-1_proc-sss_meg.json index 3c6e1852..fdeca9e5 100644 --- a/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-ShortExample_acq-CTF_run-1_proc-sss_meg.json +++ b/inputs/bids_template/sub-01/ses-01/meg/sub-01_task-ShortExample_acq-CTF_run-1_proc-sss_meg.json @@ -1,28 +1,28 @@ { - "InstitutionName": "Stanford University", - "InstitutionAddress": "450 Serra Mall, Stanford, CA 94305-2004, USA", - "Manufacturer": "CTF", - "ManufacturersModelName": "CTF-275", - "DeviceSerialNumber": "11035", - "SoftwareVersions": "Acq 5.4.2-linux-20070507", - "PowerLineFrequency": 60, - "SamplingFrequency": 2400, - "MEGChannelCount": 270, - "MEGREFChannelCount": 26, - "EEGChannelCount": 0, - "EOGChannelCount": 2, - "ECGChannelCount": 1, - "EMGChannelCount": 0, - "DewarPosition": "upright", - "SoftwareFilters": { - "SpatialCompensation": {"GradientOrder": "3rd"} - }, - "RecordingDuration": 600, - "RecordingType": "continuous", - "EpochLength": 0, - "TaskName": "rest", - "ContinuousHeadLocalization": true, - "HeadCoilFrequency": [1470,1530,1590], - "DigitizedLandmarks": true, - "DigitizedHeadPoints": true + "InstitutionName": "Stanford University", + "InstitutionAddress": "450 Serra Mall, Stanford, CA 94305-2004, USA", + "Manufacturer": "CTF", + "ManufacturersModelName": "CTF-275", + "DeviceSerialNumber": "11035", + "SoftwareVersions": "Acq 5.4.2-linux-20070507", + "PowerLineFrequency": 60, + "SamplingFrequency": 2400, + "MEGChannelCount": 270, + "MEGREFChannelCount": 26, + "EEGChannelCount": 0, + "EOGChannelCount": 2, + "ECGChannelCount": 1, + "EMGChannelCount": 0, + "DewarPosition": "upright", + "SoftwareFilters": { + "SpatialCompensation": { "GradientOrder": "3rd" } + }, + "RecordingDuration": 600, + "RecordingType": "continuous", + "EpochLength": 0, + "TaskName": "rest", + "ContinuousHeadLocalization": true, + "HeadCoilFrequency": [1470, 1530, 1590], + "DigitizedLandmarks": true, + "DigitizedHeadPoints": true } diff --git a/inputs/bids_template/task-auditoryLocalizer_bold.json b/inputs/bids_template/task-auditoryLocalizer_bold.json new file mode 100755 index 00000000..d61f4425 --- /dev/null +++ b/inputs/bids_template/task-auditoryLocalizer_bold.json @@ -0,0 +1,80 @@ +{ + "AcquisitionMatrixPE": 136, + "AcquisitionNumber": 1, + "AcquisitionTime": "11:06:33.777500", + "BandwidthPerPixelPhaseEncode": 37.388, + "BaseResolution": 134, + "BodyPartExamined": "BRAIN", + "CoilCombinationMethod": "Sum of Squares", + "CoilString": "A32", + "ConsistencyInfo": "N4_VE12U_LATEST_20181126", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20220720", + "DerivedVendorReportedEchoSpacing": 0.000589997, + "DeviceSerialNumber": "79116", + "DwellTime": 1.8e-6, + "EchoTime": 0.022, + "EchoTrainLength": 45, + "EffectiveEchoSpacing": 0.000196666, + "FlipAngle": 70, + "HeudiconvVersion": "0.12.2", + "ImageComments": "Unaliased MB2/PE2/LB", + "ImageOrientationPatientDICOM": [ + 0.999976, 0.00314557, 0.00619129, -0.000174468, 0.902631, -0.430415 + ], + "ImageOrientationText": "Tra>Cor(-25.5)>Sag(0.4)", + "ImageType": ["ORIGINAL", "PRIMARY", "M", "MB", "ND", "MOSAIC"], + "ImagingFrequency": 297.161, + "InPlanePhaseEncodingDirectionDICOM": "COL", + "InstitutionAddress": "Allee du 6 Aout 8,Liege,Liege,BE,4000", + "InstitutionName": "CRC Liege", + "InstitutionalDepartmentName": "Department", + "MRAcquisitionType": "2D", + "MagneticFieldStrength": 7, + "Manufacturer": "Siemens", + "ManufacturersModelName": "Terra", + "MatrixCoilMode": "GRAPPA", + "Modality": "MR", + "MultibandAccelerationFactor": 2, + "NonlinearGradientCorrection": false, + "ParallelReductionFactorInPlane": 3, + "PartialFourier": 1, + "PatientPosition": "HFS", + "PercentPhaseFOV": 101.493, + "PercentSampling": 100, + "PhaseEncodingDirection": "j-", + "PhaseEncodingSteps": 135, + "PhaseResolution": 1, + "PixelBandwidth": 2075, + "ProcedureStepDescription": "BLAM", + "ProtocolName": "cmrr_mbep2d_p3_mb2_1.6iso_AABrain", + "PulseSequenceDetails": "%CustomerSeq%\\cmrr_mbep2d_bold", + "ReceiveCoilName": "1Tx32Rx_Head", + "ReconMatrixPE": 136, + "RefLinesPE": 36, + "RepetitionTime": 1.8, + "SAR": 0.0728539, + "ScanOptions": "FS\\EXT", + "ScanningSequence": "EP", + "SequenceName": "epfid2d1_136", + "SequenceVariant": "SK\\SS\\OSP", + "SeriesDescription": "cmrr_mbep2d_p3_mb2_1.6iso_AABrain", + "SeriesNumber": 11, + "ShimSetting": [180, 191, -50, 81, 46, -213, -216, -65], + "SliceThickness": 1.6, + "SliceTiming": [ + 0, 0.85, 1.7, 0.75, 1.6, 0.65, 1.5, 0.55, 1.4, 0.45, 1.3, 0.35, 1.2, 0.25, + 1.1, 0.15, 1, 0.05, 0.9, 1.75, 0.8, 1.65, 0.7, 1.55, 0.6, 1.45, 0.5, 1.35, + 0.4, 1.25, 0.3, 1.15, 0.2, 1.05, 0.1, 0.95, 0, 0.85, 1.7, 0.75, 1.6, 0.65, + 1.5, 0.55, 1.4, 0.45, 1.3, 0.35, 1.2, 0.25, 1.1, 0.15, 1, 0.05, 0.9, 1.75, + 0.8, 1.65, 0.7, 1.55, 0.6, 1.45, 0.5, 1.35, 0.4, 1.25, 0.3, 1.15, 0.2, 1.05, + 0.1, 0.95 + ], + "SoftwareVersions": "syngo MR E12", + "SpacingBetweenSlices": 1.6, + "StationName": "AWP79116", + "TaskName": "auditoryLocalizer", + "TotalReadoutTime": 0.0265499, + "TxRefAmp": 204.476, + "WipMemBlock": "892ba1da-48b0-4d69-9197-d97ef06e2eeb||Sequence: R016 ve12u/SP01_R016a r/af3652dd; Apr 1 2021 14:05:17 by eja" +} diff --git a/inputs/boilerplate/mri/preprocessing/brain-extraction.md b/inputs/boilerplate/mri/preprocessing/brain-extraction.md deleted file mode 100644 index ed67bc41..00000000 --- a/inputs/boilerplate/mri/preprocessing/brain-extraction.md +++ /dev/null @@ -1,7 +0,0 @@ -# Template text for skull stripping/brain extraction - -Brain extraction/Skull stripping was performed using `bet_method` -(`bet_software` version `bet_version`) with the following parameters: -`bet_parameters`. {if bet_manual_edit != ''} `bet_manual_edit`. else `` - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/coregistration.md b/inputs/boilerplate/mri/preprocessing/coregistration.md deleted file mode 100644 index c8adf168..00000000 --- a/inputs/boilerplate/mri/preprocessing/coregistration.md +++ /dev/null @@ -1,8 +0,0 @@ -# Coregistration - -As part of the coregistration, the `func-anat_coreg__source_volume` scan was -aligned to the `func-anat_coreg_target_volume` scan using -`func-anat_coreg_method` in `func-anat_coreg_software` `func-anat_coreg_version` -(cost function: `func-anat_coreg_cost_function`, df: `func-anat_coreg_dof`) - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/intensity-norm.md b/inputs/boilerplate/mri/preprocessing/intensity-norm.md deleted file mode 100644 index 9fa49751..00000000 --- a/inputs/boilerplate/mri/preprocessing/intensity-norm.md +++ /dev/null @@ -1,11 +0,0 @@ -# Normalization - -{if intensity_normalization} `intensity_normalization_choice` intensity -normalization was performed. - -{if structural_intensity_correction} T1 images were bias field corrected. - -{if functional_intensity_correction} Functional images were intensity corrected -to reduce interleaved acquisition artifacts. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/operations-performed.md b/inputs/boilerplate/mri/preprocessing/operations-performed.md deleted file mode 100644 index ca390c1e..00000000 --- a/inputs/boilerplate/mri/preprocessing/operations-performed.md +++ /dev/null @@ -1,5 +0,0 @@ -# Operations performed + order of operation - -The following preprocessing steps were performed: `order_of_operation`. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/quality-control-reports.md b/inputs/boilerplate/mri/preprocessing/quality-control-reports.md deleted file mode 100644 index ab86269c..00000000 --- a/inputs/boilerplate/mri/preprocessing/quality-control-reports.md +++ /dev/null @@ -1,6 +0,0 @@ -# Quality control reports - -The following measures were taken to control image quality: -`quality_control_reports`. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/segmentation.md b/inputs/boilerplate/mri/preprocessing/segmentation.md deleted file mode 100644 index 7fde938f..00000000 --- a/inputs/boilerplate/mri/preprocessing/segmentation.md +++ /dev/null @@ -1,7 +0,0 @@ -# Segmentation - -Structural images were segmented using `segmentation_software` -`segmentation_version` by `segmentation_method` with the following parameters: -`segmentation_parameters` - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/slice-timing-correction.md b/inputs/boilerplate/mri/preprocessing/slice-timing-correction.md deleted file mode 100644 index 14b2b8ad..00000000 --- a/inputs/boilerplate/mri/preprocessing/slice-timing-correction.md +++ /dev/null @@ -1,8 +0,0 @@ -# Slice timing correction - -Slice timing correction was implemented in `stc_software` (`stc_version`) and -applied using `stc_method`. Individual slices were realigned with slice -`stc_reference` as a reference. As interpolation method, `stc_interpolation` -interpolation was used. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/smoothing.md b/inputs/boilerplate/mri/preprocessing/smoothing.md deleted file mode 100644 index 1e238dfe..00000000 --- a/inputs/boilerplate/mri/preprocessing/smoothing.md +++ /dev/null @@ -1,13 +0,0 @@ -# Smoothing - -`smoothing_target_space` were smoothed using `smoothing_software` -(`smoothing_version`) using a `smoothing_type` (FWHM = `smoothing_size` mm) with -a `filtering_approach`. - -## Example - -Native volumes were smoothed using SPM (SPM12 - r7487) using a gaussian (FWHM = -8 mm) fixed kernel. - -Template surfaces were smoothed using Freeesurfer (6.0) using a gaussian (FWHM = -8 mm) with iterative smoothing until the desired FWHM was reached. diff --git a/inputs/boilerplate/mri/preprocessing/software.md b/inputs/boilerplate/mri/preprocessing/software.md deleted file mode 100644 index b3b25cfe..00000000 --- a/inputs/boilerplate/mri/preprocessing/software.md +++ /dev/null @@ -1,6 +0,0 @@ -# Preprocessing software - -Raw fMRI data were preprocessed using `preprocessing_software` -`preprocessing_software_version`. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/t1-stabilization.md b/inputs/boilerplate/mri/preprocessing/t1-stabilization.md deleted file mode 100644 index 1418a877..00000000 --- a/inputs/boilerplate/mri/preprocessing/t1-stabilization.md +++ /dev/null @@ -1,6 +0,0 @@ -# T1 stabilization - -For each functional run, the first `t1_stabilization` volumes were removed to -discard unsteady signals. - -## Example diff --git a/inputs/boilerplate/mri/preprocessing/volume-censoring.md b/inputs/boilerplate/mri/preprocessing/volume-censoring.md deleted file mode 100644 index 5764dc10..00000000 --- a/inputs/boilerplate/mri/preprocessing/volume-censoring.md +++ /dev/null @@ -1,10 +0,0 @@ -#Template text for volume_censoring - -{if volume_censoring_used == 1} - -Volume censoring was applied using `volume_censoring_method` -(`volume_censoring_software` version `volume_censoring_version`) with the -following criteria `volume_censoring_criteria` {if interpolation == 'none'} and -`interpolation` interpolation. - -## Example diff --git a/mkdocs.yml b/mkdocs.yml index 86d76fbd..b1357869 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,51 +10,51 @@ theme: name: material language: en palette: - - media: (prefers-color-scheme) - toggle: - icon: material/brightness-auto - name: Switch to light mode - - media: "(prefers-color-scheme: light)" - primary: blue - accent: light blue - scheme: default - toggle: - icon: material/brightness-7 - name: Switch to dark mode - - media: "(prefers-color-scheme: dark)" - primary: blue - accent: light blue - scheme: slate - toggle: - icon: material/brightness-4 - name: Switch to system preference + - media: (prefers-color-scheme) + toggle: + icon: material/brightness-auto + name: Switch to light mode + - media: '(prefers-color-scheme: light)' + primary: blue + accent: light blue + scheme: default + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - media: '(prefers-color-scheme: dark)' + primary: blue + accent: light blue + scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to system preference features: - - announce.dismiss - - content.action.edit - - content.code.annotate - - content.tooltips - - footnotes - - header.autohide - - navigation.footer - - navigation.indexes - - navigation.instant - - navigation.path - - navigation.sections - - navigation.tabs - - navigation.tabs.sticky - - navigation.top - - search.suggest - - search.highlight - - toc.follow + - announce.dismiss + - content.action.edit + - content.code.annotate + - content.tooltips + - footnotes + - header.autohide + - navigation.footer + - navigation.indexes + - navigation.instant + - navigation.path + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky + - navigation.top + - search.suggest + - search.highlight + - toc.follow icon: repo: fontawesome/brands/github edit: material/pencil annotation: material/arrow-right-circle plugins: - - search - - macros: - module_name: macros/main +- search +- macros: + module_name: macros/main edit_uri: https://github.com/Remi-Gau/eCobidas/edit/main/docs/ @@ -98,9 +98,9 @@ markdown_extensions: - pymdownx.snippets - pymdownx.superfences: custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format - tables - toc: anchorlink: true diff --git a/mlc_config.json b/mlc_config.json index 234eb33a..b9fb1b2e 100644 --- a/mlc_config.json +++ b/mlc_config.json @@ -1,19 +1,19 @@ { - "ignorePatterns": [ - { - "pattern": "^https://doi.org/.*" - }, - { - "pattern": "^.*shinyapps.*" - }, - { - "pattern": "^https://static-content.springer.com" - }, - { - "pattern": "^https://twitter.com/.*$" - }, - { - "pattern": "^https://neurovault.org/.*$" - } - ] + "ignorePatterns": [ + { + "pattern": "^https://doi.org/.*" + }, + { + "pattern": "^.*shinyapps.*" + }, + { + "pattern": "^https://static-content.springer.com" + }, + { + "pattern": "^https://twitter.com/.*$" + }, + { + "pattern": "^https://neurovault.org/.*$" + } + ] } diff --git a/pyproject.toml b/pyproject.toml index 3402d887..50a32ad7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ ecobidas = "ecobidas.cli:cli" line-length = 100 [tool.codespell] -ignore-words-list = "jist,softwares,te,fwe,als" +ignore-words-list = "jist,softwares,te,fwe,als,nd" skip = "./.git,*.svg,reproschema-ui,node_modules,env,reproschema-py,htmlcov,package-lock.json" [tool.hatch.build.hooks.vcs] diff --git a/reproschema-py b/reproschema-py index 68996c17..1043ffe1 160000 --- a/reproschema-py +++ b/reproschema-py @@ -1 +1 @@ -Subproject commit 68996c17155489cb8019ff50cec1fb52d8698f11 +Subproject commit 1043ffe1d6a5fbc8393bc587281a9741170f6a87 diff --git a/reproschema-ui b/reproschema-ui deleted file mode 160000 index eb11cd6c..00000000 --- a/reproschema-ui +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eb11cd6ce4ad250e4bf053cfe2932b466190ac73 diff --git a/tests/data/activities/activity_2/items/number_of_subjects.jsonld b/tests/data/activities/activity_2/items/number_of_subjects.jsonld index 3d949131..3d869bef 100644 --- a/tests/data/activities/activity_2/items/number_of_subjects.jsonld +++ b/tests/data/activities/activity_2/items/number_of_subjects.jsonld @@ -12,7 +12,7 @@ "inputType": "number" }, "question": { - "en": "1.1 - Number of subjects entering into the analysis" + "en": "Number of subjects entering into the analysis" }, "responseOptions": { "valueType": "xsd:integer" diff --git a/tests/data/activities/activity_3/items/integer_item.jsonld b/tests/data/activities/activity_3/items/integer_item.jsonld index f2a25d89..75d23579 100644 --- a/tests/data/activities/activity_3/items/integer_item.jsonld +++ b/tests/data/activities/activity_3/items/integer_item.jsonld @@ -12,7 +12,7 @@ "inputType": "number" }, "question": { - "en": "2.1 - This is an integer item" + "en": "This is an integer item" }, "responseOptions": { "valueType": "xsd:integer" diff --git a/tests/data/activities/activity_3/items/slider_item.jsonld b/tests/data/activities/activity_3/items/slider_item.jsonld index c0a876cf..1733cbc0 100644 --- a/tests/data/activities/activity_3/items/slider_item.jsonld +++ b/tests/data/activities/activity_3/items/slider_item.jsonld @@ -12,7 +12,7 @@ "inputType": "slider" }, "question": { - "en": "2.2 - This is a slider item" + "en": "This is a slider item" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/activity_4/items/TEXT.jsonld b/tests/data/activities/activity_4/items/TEXT.jsonld index 571f3c8c..e28e9b95 100644 --- a/tests/data/activities/activity_4/items/TEXT.jsonld +++ b/tests/data/activities/activity_4/items/TEXT.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "3.1 - This is a text item" + "en": "This is a text item" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/activity_4/items/float_item.jsonld b/tests/data/activities/activity_4/items/float_item.jsonld index db4a3131..f4bb2d7e 100644 --- a/tests/data/activities/activity_4/items/float_item.jsonld +++ b/tests/data/activities/activity_4/items/float_item.jsonld @@ -12,7 +12,7 @@ "inputType": "float" }, "question": { - "en": "3.3 - This is a float item" + "en": "This is a float item" }, "responseOptions": { "valueType": "xsd:float" diff --git a/tests/data/activities/activity_4/items/multitext_item.jsonld b/tests/data/activities/activity_4/items/multitext_item.jsonld index ec8b3c3d..39c0de32 100644 --- a/tests/data/activities/activity_4/items/multitext_item.jsonld +++ b/tests/data/activities/activity_4/items/multitext_item.jsonld @@ -12,7 +12,7 @@ "inputType": "multitext" }, "question": { - "en": "3.2 - This is a multitext item" + "en": "This is a multitext item" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/select_activity/items/mri_softwares.jsonld b/tests/data/activities/select_activity/items/mri_softwares.jsonld index b1b2752b..aa54b067 100644 --- a/tests/data/activities/select_activity/items/mri_softwares.jsonld +++ b/tests/data/activities/select_activity/items/mri_softwares.jsonld @@ -12,7 +12,7 @@ "inputType": "select" }, "question": { - "en": "4.6 - mri software" + "en": "mri software" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/select_activity/items/radio_item.jsonld b/tests/data/activities/select_activity/items/radio_item.jsonld index 22386dd9..463220ca 100644 --- a/tests/data/activities/select_activity/items/radio_item.jsonld +++ b/tests/data/activities/select_activity/items/radio_item.jsonld @@ -12,7 +12,7 @@ "inputType": "radio" }, "question": { - "en": "4.1 - radio item - one answer allowed" + "en": "radio item - one answer allowed" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/select_activity/items/radio_item_multiple_choice.jsonld b/tests/data/activities/select_activity/items/radio_item_multiple_choice.jsonld index dca97be7..689221d3 100644 --- a/tests/data/activities/select_activity/items/radio_item_multiple_choice.jsonld +++ b/tests/data/activities/select_activity/items/radio_item_multiple_choice.jsonld @@ -12,7 +12,7 @@ "inputType": "radio" }, "question": { - "en": "4.2 - radio item - several answers allowed" + "en": "radio item - several answers allowed" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/select_activity/items/select_item.jsonld b/tests/data/activities/select_activity/items/select_item.jsonld index f8ab3475..22150d44 100644 --- a/tests/data/activities/select_activity/items/select_item.jsonld +++ b/tests/data/activities/select_activity/items/select_item.jsonld @@ -12,7 +12,7 @@ "inputType": "select" }, "question": { - "en": "4.3 - select item - one answer allowed" + "en": "select item - one answer allowed" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/select_activity/items/select_item_multiple_choice.jsonld b/tests/data/activities/select_activity/items/select_item_multiple_choice.jsonld index 766f5e12..66b626de 100644 --- a/tests/data/activities/select_activity/items/select_item_multiple_choice.jsonld +++ b/tests/data/activities/select_activity/items/select_item_multiple_choice.jsonld @@ -12,7 +12,7 @@ "inputType": "select" }, "question": { - "en": "4.4 - select item - several answer allowed" + "en": "select item - several answer allowed" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/select_activity/items/yes_no_do_not_know.jsonld b/tests/data/activities/select_activity/items/yes_no_do_not_know.jsonld index a3e9954e..e26c58f0 100644 --- a/tests/data/activities/select_activity/items/yes_no_do_not_know.jsonld +++ b/tests/data/activities/select_activity/items/yes_no_do_not_know.jsonld @@ -12,7 +12,7 @@ "inputType": "radio" }, "question": { - "en": "4.5 - yes or no" + "en": "yes or no" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/visibility/items/base.jsonld b/tests/data/activities/visibility/items/base.jsonld index a0ac0d9a..e94234ea 100644 --- a/tests/data/activities/visibility/items/base.jsonld +++ b/tests/data/activities/visibility/items/base.jsonld @@ -12,7 +12,7 @@ "inputType": "radio" }, "question": { - "en": "5.1 - select one answer" + "en": "select one answer" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/visibility/items/base0.jsonld b/tests/data/activities/visibility/items/base0.jsonld index 061abdde..e3d33d43 100644 --- a/tests/data/activities/visibility/items/base0.jsonld +++ b/tests/data/activities/visibility/items/base0.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.3 - this should only show if you selected \u2018no\u2019" + "en": "this should only show if you selected \u2018no\u2019" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/base1.jsonld b/tests/data/activities/visibility/items/base1.jsonld index 5c700309..f3627aae 100644 --- a/tests/data/activities/visibility/items/base1.jsonld +++ b/tests/data/activities/visibility/items/base1.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.2 - this should only show if you selected \u2018yes\u2019" + "en": "this should only show if you selected \u2018yes\u2019" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/multi_2_or_5.jsonld b/tests/data/activities/visibility/items/multi_2_or_5.jsonld index 58ce1333..bbfd7285 100644 --- a/tests/data/activities/visibility/items/multi_2_or_5.jsonld +++ b/tests/data/activities/visibility/items/multi_2_or_5.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.7 - should appear for answers 2 or 5" + "en": "should appear for answers 2 or 5" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/multi_gt_5.jsonld b/tests/data/activities/visibility/items/multi_gt_5.jsonld index 57851507..7bd033ce 100644 --- a/tests/data/activities/visibility/items/multi_gt_5.jsonld +++ b/tests/data/activities/visibility/items/multi_gt_5.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.5 - should appear for answers greater than 5" + "en": "should appear for answers greater than 5" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/multi_lt_2.jsonld b/tests/data/activities/visibility/items/multi_lt_2.jsonld index 530e9322..e6277e66 100644 --- a/tests/data/activities/visibility/items/multi_lt_2.jsonld +++ b/tests/data/activities/visibility/items/multi_lt_2.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.6 - should appear for answers less than 2" + "en": "should appear for answers less than 2" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/radio_vis.jsonld b/tests/data/activities/visibility/items/radio_vis.jsonld index 2b024ae4..e6aeb769 100644 --- a/tests/data/activities/visibility/items/radio_vis.jsonld +++ b/tests/data/activities/visibility/items/radio_vis.jsonld @@ -12,7 +12,7 @@ "inputType": "radio" }, "question": { - "en": "5.4 - select one or several answer" + "en": "select one or several answer" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/visibility/items/select_boolean.jsonld b/tests/data/activities/visibility/items/select_boolean.jsonld index 7445bfd1..34e32b3e 100644 --- a/tests/data/activities/visibility/items/select_boolean.jsonld +++ b/tests/data/activities/visibility/items/select_boolean.jsonld @@ -12,7 +12,7 @@ "inputType": "select" }, "question": { - "en": "5.8 - select one answer" + "en": "select one answer" }, "responseOptions": { "valueType": "xsd:integer", diff --git a/tests/data/activities/visibility/items/select_boolean0.jsonld b/tests/data/activities/visibility/items/select_boolean0.jsonld index c520e8f7..1473c66f 100644 --- a/tests/data/activities/visibility/items/select_boolean0.jsonld +++ b/tests/data/activities/visibility/items/select_boolean0.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.10 - this should only show if you selected \u2018no\u2019" + "en": "this should only show if you selected \u2018no\u2019" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/activities/visibility/items/select_boolean1.jsonld b/tests/data/activities/visibility/items/select_boolean1.jsonld index 81bee605..083c34bc 100644 --- a/tests/data/activities/visibility/items/select_boolean1.jsonld +++ b/tests/data/activities/visibility/items/select_boolean1.jsonld @@ -12,7 +12,7 @@ "inputType": "text" }, "question": { - "en": "5.9 - this should only show if you selected \u2018yes\u2019" + "en": "this should only show if you selected \u2018yes\u2019" }, "responseOptions": { "valueType": "xsd:string", diff --git a/tests/data/protocols/test_schema.jsonld b/tests/data/protocols/test_schema.jsonld index 198efb70..66f2adc0 100644 --- a/tests/data/protocols/test_schema.jsonld +++ b/tests/data/protocols/test_schema.jsonld @@ -2,16 +2,12 @@ "@context": "https://raw.githubusercontent.com/ReproNim/reproschema/1.0.0-rc4/contexts/generic", "@type": "reproschema:Protocol", "@id": "test_schema.jsonld", + "schemaVersion": "1.0.0-rc4", + "version": "0.0.1", "prefLabel": { "en": "test" }, "description": "test", - "schemaVersion": "1.0.0-rc4", - "version": "0.0.1", - "landingPage": { - "@id": "../README_eCOBIDAS-en.md", - "inLanguage": "en" - }, "preamble": { "en": "" }, @@ -90,5 +86,9 @@ "reproschema:AutoAdvance", "reproschema:AllowExport" ] + }, + "landingPage": { + "@id": "../README_eCOBIDAS-en.html", + "inLanguage": "en" } } diff --git a/tests/test_convert_to_schema.py b/tests/test_convert_to_schema.py index 4d9adfec..9aeeff9a 100644 --- a/tests/test_convert_to_schema.py +++ b/tests/test_convert_to_schema.py @@ -15,16 +15,17 @@ def data_path(): def test_create_schema(tmp_path): this_schema = Path(__file__).parent / "inputs" / "test.tsv" - # out_dir = Path(__file__).parent / "outputs" + out_dir = Path(__file__).parent / "outputs" + # out_dir = tmp_path print("\n") - create_schema(this_schema, tmp_path) + create_schema(this_schema, out_dir) # Check protocol protocol_folder = "protocols" - output_file = tmp_path / "test" / protocol_folder / "test_schema.jsonld" + output_file = out_dir / "test" / protocol_folder / "test_schema.jsonld" protocol_content = read_json(output_file) data_file = data_path() / protocol_folder / "test_schema.jsonld" @@ -79,7 +80,7 @@ def test_create_schema(tmp_path): this_activity_folder = os.path.join(activities_folder, activity_name) - output_file = tmp_path / "test" / this_activity_folder / f"{activity_name}_schema.jsonld" + output_file = out_dir / "test" / this_activity_folder / f"{activity_name}_schema.jsonld" activity_content = read_json(output_file) data_file = data_path() / this_activity_folder / f"{activity_name}_schema.jsonld" expected = read_json(data_file) @@ -90,7 +91,7 @@ def test_create_schema(tmp_path): item_list = activity["items"] for item in item_list: - output_file = tmp_path / "test" / this_activity_folder / "items" / f"{item}.jsonld" + output_file = out_dir / "test" / this_activity_folder / "items" / f"{item}.jsonld" item_content = read_json(output_file) data_file = data_path() / this_activity_folder / "items" / f"{item}.jsonld" expected = read_json(data_file) diff --git a/tests/test_generate_files.py b/tests/test_generate_files.py index 56b4604a..e9dd0008 100644 --- a/tests/test_generate_files.py +++ b/tests/test_generate_files.py @@ -1,4 +1,3 @@ -from ecobidas.generate_landing_page import main as landing_page_main from ecobidas.macros import main as app_list_table_main @@ -6,8 +5,3 @@ def test_generate_table(tmp_path): app_list_table_main(tmp_path) assert (tmp_path / "apps_table.md").exists() assert (tmp_path / "preset_responses_table.md").exists() - - -def test_landing_page(tmp_path): - landing_page_main(tmp_path) - assert (tmp_path / "landing_page.html").exists() diff --git a/tests/test_item.py b/tests/test_item.py index 98bc7cc6..86d6500e 100644 --- a/tests/test_item.py +++ b/tests/test_item.py @@ -39,14 +39,14 @@ def test_preset(): @pytest.mark.parametrize( - "input, expected", + "input_str, expected", [ ("_i[t]em-n:a m!e", "_item-na_me"), # alphanumeric with _ and - only ("item name", "item_name"), ], ) -def test_set_item_name(input, expected): - this_item = pd.DataFrame({"item_pref_label": [input]}) +def test_set_item_name(input_str, expected): + this_item = pd.DataFrame({"item_pref_label": [input_str]}) name = set_item_name(this_item) @@ -164,7 +164,7 @@ def test_get_item_info_with_only_name(): @pytest.mark.parametrize( - "input, expected", + "input_value, expected", [ (float("nan"), True), ("1", True), @@ -174,8 +174,8 @@ def test_get_item_info_with_only_name(): ("javascript expression", "javascript expression"), ], ) -def test_get_visibility(input, expected): - this_item = pd.DataFrame({"visibility": [input]}) +def test_get_visibility(input_value, expected): + this_item = pd.DataFrame({"visibility": [input_value]}) visibility = get_visibility(this_item) assert visibility == expected diff --git a/tests/test_utils.py b/tests/test_utils.py index 279f4092..864b35bb 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -38,8 +38,8 @@ def test_get_output_dir(tmp_path): "this_schema, filename", [ ("neurovault", "../README_eCOBIDAS-en.html"), - ("test", "../README_eCOBIDAS-en.md"), - ("pet", "../README_PET-en.md"), + ("test", "../README_eCOBIDAS-en.html"), + ("pet", "../README_PET-en.html"), ], ) def test_get_landing_page(this_schema, filename):