{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "\n", "\"Open " ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "# pyBIDS - a Python API for working with BIDS datasets\n", "\n", "Author: Monika Doerig\n", "\n", "Citation:\n", "\n", "**Data from OpenNeuro**\n", "- Gorgolewski KJ and Storkey A and Bastin ME and Whittle IR and Wardlaw JM and Pernet CR (2022). A test-retest fMRI dataset for motor, language and spatial attention functions. OpenNeuro. [Dataset] doi: doi[10.18112/openneuro.ds000114.v1.0.2](https://doi.org/10.18112/openneuro.ds000114.v1.0.2)\n", "\n", "\n", "**pyBIDS**: \n", "\n", "- Yarkoni et al., (2019). PyBIDS: Python tools for BIDS datasets. Journal of Open Source Software, 4(40), 1294, [https://doi.org/10.21105/joss.01294](https://doi.org/10.21105/joss.01294)\n", "\n", "- Yarkoni, T., Markiewicz, C. J., de la Vega, A., Gorgolewski, K. J., Salo, T., Gau, R., Halchenko, Y. O., Papadopoulos Orfanos, D., Esteban, O., McNamara, Q., DeStasio, K., Poline, J.-B., Johnson, H., Kalenkovich, E., Petrov, D., Nielson, D. M., James Kent, Kent, J. D., Appelhoff, S., … pierre-nedelec. (2024). PyBIDS: Python tools for BIDS datasets (0.18.1). Zenodo. [https://doi.org/10.5281/zenodo.14285569](https://doi.org/10.5281/zenodo.14285569)\n", "- This example is highly inspired by the [pybids documentation](https://bids-standard.github.io/pybids/index.html)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Setup Neurodesk" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "vscode": { "languageId": "plaintext" } }, "outputs": [], "source": [ "%%capture\n", "import os\n", "import sys\n", "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", " os.environ[\"LD_PRELOAD\"] = \"\";\n", " os.environ[\"APPTAINER_BINDPATH\"] = \"/content,/tmp,/cvmfs\"\n", " os.environ[\"MPLCONFIGDIR\"] = \"/content/matplotlib-mpldir\"\n", " os.environ[\"LMOD_CMD\"] = \"/usr/share/lmod/lmod/libexec/lmod\"\n", "\n", " !curl -J -O https://raw.githubusercontent.com/NeuroDesk/neurocommand/main/googlecolab_setup.sh\n", " !chmod +x googlecolab_setup.sh\n", " !./googlecolab_setup.sh\n", "\n", " os.environ[\"MODULEPATH\"] = ':'.join(map(str, list(map(lambda x: os.path.join(os.path.abspath('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/'), x),os.listdir('/cvmfs/neurodesk.ardc.edu.au/neurodesk-modules/')))))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "vendor_id\t: GenuineIntel\n", "model name\t: Intel(R) Xeon(R) Gold 6126 CPU @ 2.60GHz\n" ] } ], "source": [ "# Output CPU information:\n", "!cat /proc/cpuinfo | grep 'vendor' | uniq\n", "!cat /proc/cpuinfo | grep 'model name' | uniq" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Installation\n", "\n", "PyBIDS simplifies the process of querying, summarizing, and managing data for neuroimaging researchers using the BIDS standard. Several Python packages for neuroimaging analysis—such as Nipype and Nilearn—are designed to integrate seamlessly with BIDS-formatted datasets" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [], "source": [ "%%capture\n", "! pip install pybids" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Data download" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ], "vscode": { "languageId": "plaintext" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Cloning: 0%| | 0.00/2.00 [00:00 \u001b[01;31m../../../.git/annex/objects/xm/25/MD5E-s8503839--3b3b49b2396b59ddd5a73b7f596f9e46.nii.gz/MD5E-s8503839--3b3b49b2396b59ddd5a73b7f596f9e46.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-01_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/0K/16/MD5E-s99899518--5ebac8e9e23180638dd68dde10b818be.nii.gz/MD5E-s99899518--5ebac8e9e23180638dd68dde10b818be.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[01;36msub-01_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/3q/Qf/MD5E-s22317848--b30f5b2f7a6039a3e384bcb40bec7e55.nii.gz/MD5E-s22317848--b30f5b2f7a6039a3e384bcb40bec7e55.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-01_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/26/6j/MD5E-s23793248--327e42d440f0557105bf7c05a3b9f1e8.nii.gz/MD5E-s23793248--327e42d440f0557105bf7c05a3b9f1e8.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-01_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/qv/gf/MD5E-s30728838--58392e3ead9caeefe148a57c71dd5b44.nii.gz/MD5E-s30728838--58392e3ead9caeefe148a57c71dd5b44.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-01_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[01;36msub-01_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Fx/6K/MD5E-s11839146--5f62c005467de0dabc6ebcd09c3e7ec3.nii.gz/MD5E-s11839146--5f62c005467de0dabc6ebcd09c3e7ec3.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;36msub-01_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/x3/qW/MD5E-s10162063--a86a0f448872de33a901a6b639e975c9.nii.gz/MD5E-s10162063--a86a0f448872de33a901a6b639e975c9.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[01;36msub-01_ses-test_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/QP/jm/MD5E-s8677710--d6820f6cb8fb965e864419c14f6a22d5.nii.gz/MD5E-s8677710--d6820f6cb8fb965e864419c14f6a22d5.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[01;36msub-01_ses-test_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/X2/kJ/MD5E-s104193417--454850ac9ed1c96c40b6b7946e51bf71.nii.gz/MD5E-s104193417--454850ac9ed1c96c40b6b7946e51bf71.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[01;36msub-01_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/mx/zJ/MD5E-s22944165--71b1eda077a1003a177552f6c380323a.nii.gz/MD5E-s22944165--71b1eda077a1003a177552f6c380323a.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-01_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/k6/4f/MD5E-s24454931--e9ab535d84a922b0c7ed52461244cf47.nii.gz/MD5E-s24454931--e9ab535d84a922b0c7ed52461244cf47.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-01_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/32/Qq/MD5E-s31617092--151bc230c3b577110883369b6fad0daa.nii.gz/MD5E-s31617092--151bc230c3b577110883369b6fad0daa.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-01_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[01;36msub-01_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/p3/fZ/MD5E-s12048980--648c9094579aa5d047a5f6db468f9bc9.nii.gz/MD5E-s12048980--648c9094579aa5d047a5f6db468f9bc9.nii.gz\u001b[0m\n", "│   └── \u001b[01;36msub-01_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/56/GV/MD5E-s10362270--6a5c483d118db28ff8a62455def5501c.nii.gz/MD5E-s10362270--6a5c483d118db28ff8a62455def5501c.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-02\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-02_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/VV/x2/MD5E-s8901003--6ad41304cbd57904227d914c054dcdc3.nii.gz/MD5E-s8901003--6ad41304cbd57904227d914c054dcdc3.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-02_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/ZZ/4X/MD5E-s101314358--9be934908a88073bc070e524651ee665.nii.gz/MD5E-s101314358--9be934908a88073bc070e524651ee665.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[01;36msub-02_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/vk/gK/MD5E-s22730907--26df7900a64e1d9f90e17ad0fa53145d.nii.gz/MD5E-s22730907--26df7900a64e1d9f90e17ad0fa53145d.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-02_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Jg/vq/MD5E-s24364271--593256c66ce88ed8aaef140a4b37c6ec.nii.gz/MD5E-s24364271--593256c66ce88ed8aaef140a4b37c6ec.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-02_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/pZ/GJ/MD5E-s31238024--929a3999fa92002e571bec60f7343b65.nii.gz/MD5E-s31238024--929a3999fa92002e571bec60f7343b65.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-02_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[01;36msub-02_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/35/2V/MD5E-s12039294--070d0299974f916bdee0791985381593.nii.gz/MD5E-s12039294--070d0299974f916bdee0791985381593.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;36msub-02_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Z4/0G/MD5E-s10369674--71d655f61e4ce98ae7761ce76e3c30f9.nii.gz/MD5E-s10369674--71d655f61e4ce98ae7761ce76e3c30f9.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[01;36msub-02_ses-test_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/qq/gm/MD5E-s10025785--0e790e210a275d76e3f2f4d895df6358.nii.gz/MD5E-s10025785--0e790e210a275d76e3f2f4d895df6358.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[01;36msub-02_ses-test_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/8x/vp/MD5E-s104222416--86575d07809e9c717079592a12c69344.nii.gz/MD5E-s104222416--86575d07809e9c717079592a12c69344.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[01;36msub-02_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/F6/6J/MD5E-s23349944--2a2b8bc1f3d90e84d879bdd4638103c8.nii.gz/MD5E-s23349944--2a2b8bc1f3d90e84d879bdd4638103c8.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-02_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/pG/k1/MD5E-s24882575--75c39bee9e25e02c629dfcce1b378589.nii.gz/MD5E-s24882575--75c39bee9e25e02c629dfcce1b378589.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-02_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/WM/m9/MD5E-s32248732--4cd877de7b4c66e073610dffb67dfbcc.nii.gz/MD5E-s32248732--4cd877de7b4c66e073610dffb67dfbcc.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-02_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[01;36msub-02_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Jz/zM/MD5E-s12348374--67f259c7e0bbb0fe39e747be5f905a4b.nii.gz/MD5E-s12348374--67f259c7e0bbb0fe39e747be5f905a4b.nii.gz\u001b[0m\n", "│   └── \u001b[01;36msub-02_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/6g/Zw/MD5E-s10496422--bae24132d514bb028ca8a3d749363bd9.nii.gz/MD5E-s10496422--bae24132d514bb028ca8a3d749363bd9.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-03\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-03_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/64/vk/MD5E-s8125470--75575589e60ce58d95b4d72d3b4bf222.nii.gz/MD5E-s8125470--75575589e60ce58d95b4d72d3b4bf222.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-03_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Pf/07/MD5E-s101660442--50491e142880d5f32b6c33cde372fb05.nii.gz/MD5E-s101660442--50491e142880d5f32b6c33cde372fb05.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[01;36msub-03_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/z1/0p/MD5E-s22709259--a01b5167228be96f007e84bab43e8b60.nii.gz/MD5E-s22709259--a01b5167228be96f007e84bab43e8b60.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-03_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/WG/k5/MD5E-s24175561--769ba7da6cac3318c47bc9215a77359b.nii.gz/MD5E-s24175561--769ba7da6cac3318c47bc9215a77359b.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-03_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Qf/QX/MD5E-s31217356--89a8e84fbe0b5f019ce69d4ad643863c.nii.gz/MD5E-s31217356--89a8e84fbe0b5f019ce69d4ad643863c.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-03_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[01;36msub-03_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Xx/q2/MD5E-s11992800--894dac07de9c8cddf6ea7e42f39f5c80.nii.gz/MD5E-s11992800--894dac07de9c8cddf6ea7e42f39f5c80.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;36msub-03_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/7F/8p/MD5E-s10359493--9b3e5cc9933645901049c64c600ec6ca.nii.gz/MD5E-s10359493--9b3e5cc9933645901049c64c600ec6ca.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[01;36msub-03_ses-test_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/P9/kj/MD5E-s7970968--75bb38265ea96864bfa0b012ba21b0b0.nii.gz/MD5E-s7970968--75bb38265ea96864bfa0b012ba21b0b0.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[01;36msub-03_ses-test_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/F3/Pf/MD5E-s106544064--badea2659bd4440ff4c20e2f149034cc.nii.gz/MD5E-s106544064--badea2659bd4440ff4c20e2f149034cc.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[01;36msub-03_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/J6/f0/MD5E-s23145742--a792c0592cb77a161eb5d000a618c17c.nii.gz/MD5E-s23145742--a792c0592cb77a161eb5d000a618c17c.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-03_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/gp/QM/MD5E-s24520513--0fd08e07bbee37ac9efe14c7b265299a.nii.gz/MD5E-s24520513--0fd08e07bbee37ac9efe14c7b265299a.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-03_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/mP/mg/MD5E-s31785134--76856b9d6c90730144196aa48e4d9a9f.nii.gz/MD5E-s31785134--76856b9d6c90730144196aa48e4d9a9f.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-03_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[01;36msub-03_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/w3/XQ/MD5E-s12159084--67f84031d332467dae91107e53f0d89e.nii.gz/MD5E-s12159084--67f84031d332467dae91107e53f0d89e.nii.gz\u001b[0m\n", "│   └── \u001b[01;36msub-03_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Qk/kK/MD5E-s10552089--e00b7544d9c44dddcd966e2c1dcd468f.nii.gz/MD5E-s10552089--e00b7544d9c44dddcd966e2c1dcd468f.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-04\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-04_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/z9/V6/MD5E-s10125819--92fcdbdd50bb334651e474417237a7f2.nii.gz/MD5E-s10125819--92fcdbdd50bb334651e474417237a7f2.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-04_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/0Q/z6/MD5E-s102315940--827455ba66acecb6a2c8b9222bcd9fa1.nii.gz/MD5E-s102315940--827455ba66acecb6a2c8b9222bcd9fa1.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[01;36msub-04_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/6G/PV/MD5E-s24644977--c2411e3bad71cddeb2c083f999d22f93.nii.gz/MD5E-s24644977--c2411e3bad71cddeb2c083f999d22f93.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-04_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Jf/m1/MD5E-s26197435--1ec999d21c0039897b67f38f5870d70c.nii.gz/MD5E-s26197435--1ec999d21c0039897b67f38f5870d70c.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-04_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/J2/v9/MD5E-s33748727--044de5969956d86b7cdee0eb36e26c9e.nii.gz/MD5E-s33748727--044de5969956d86b7cdee0eb36e26c9e.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-04_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[01;36msub-04_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Kf/5K/MD5E-s12862957--a356882c1f18391f2f5215bda39f817f.nii.gz/MD5E-s12862957--a356882c1f18391f2f5215bda39f817f.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;36msub-04_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/70/k3/MD5E-s11172082--dcd559966a66e0645cb98a9b13c67a6c.nii.gz/MD5E-s11172082--dcd559966a66e0645cb98a9b13c67a6c.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[01;36msub-04_ses-test_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/mg/5z/MD5E-s9717713--7764ef9c3fb344f69f1c2eb34cd56046.nii.gz/MD5E-s9717713--7764ef9c3fb344f69f1c2eb34cd56046.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[01;36msub-04_ses-test_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/W0/Gk/MD5E-s104883316--ec0aec8977aa5a5c0901cd9d2e25347c.nii.gz/MD5E-s104883316--ec0aec8977aa5a5c0901cd9d2e25347c.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[01;36msub-04_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/GX/QK/MD5E-s24677139--d835385cb69d9907d6b0cb7311a91ff3.nii.gz/MD5E-s24677139--d835385cb69d9907d6b0cb7311a91ff3.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-04_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Qv/qX/MD5E-s26270785--61f837b1ef1f667975ab25b820844d93.nii.gz/MD5E-s26270785--61f837b1ef1f667975ab25b820844d93.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-04_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/gk/3p/MD5E-s33823763--377e091ada8819942070a374b71ea986.nii.gz/MD5E-s33823763--377e091ada8819942070a374b71ea986.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-04_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[01;36msub-04_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/0Q/jG/MD5E-s12907201--46e3c39a8f7ec6c2f5b1ab157efa10d1.nii.gz/MD5E-s12907201--46e3c39a8f7ec6c2f5b1ab157efa10d1.nii.gz\u001b[0m\n", "│   └── \u001b[01;36msub-04_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/X5/FJ/MD5E-s11171792--bc9ba9ef24fcf364f3057401c17b1c49.nii.gz/MD5E-s11171792--bc9ba9ef24fcf364f3057401c17b1c49.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-05\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-05_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/JK/PV/MD5E-s9511479--cec6ad961369ea1b21521d33040406d1.nii.gz/MD5E-s9511479--cec6ad961369ea1b21521d33040406d1.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[01;36msub-05_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/Mx/KM/MD5E-s104024235--7a107b0b7d70f0e0a60e5fccbda23f41.nii.gz/MD5E-s104024235--7a107b0b7d70f0e0a60e5fccbda23f41.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[01;36msub-05_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/x3/7x/MD5E-s24240966--89dc3e4888f5788e390be04cc91565ef.nii.gz/MD5E-s24240966--89dc3e4888f5788e390be04cc91565ef.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-05_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/V4/fV/MD5E-s25998505--071b1bd89a8d245b7a7a23323b434706.nii.gz/MD5E-s25998505--071b1bd89a8d245b7a7a23323b434706.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;36msub-05_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/3v/1w/MD5E-s33598359--952f5c8625b962a9f5ccb3d2bb58d1aa.nii.gz/MD5E-s33598359--952f5c8625b962a9f5ccb3d2bb58d1aa.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-05_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[01;36msub-05_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/w0/75/MD5E-s12942731--e26171327d6bbdd4f392e1e327f92850.nii.gz/MD5E-s12942731--e26171327d6bbdd4f392e1e327f92850.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;36msub-05_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/2V/K8/MD5E-s11109819--e0875ced4e44d9a144316893937a063b.nii.gz/MD5E-s11109819--e0875ced4e44d9a144316893937a063b.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[01;36msub-05_ses-test_T1w.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/f1/XP/MD5E-s9942928--e32c1d5fb1d6db6449b19be10b5efc67.nii.gz/MD5E-s9942928--e32c1d5fb1d6db6449b19be10b5efc67.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[01;36msub-05_ses-test_dwi.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/q3/gK/MD5E-s108049676--0d107c0acf9bed884baedfb7bc6a76e7.nii.gz/MD5E-s108049676--0d107c0acf9bed884baedfb7bc6a76e7.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[01;36msub-05_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/0z/1V/MD5E-s24924488--f11c9aec356aa58e53e7a154222f4e74.nii.gz/MD5E-s24924488--f11c9aec356aa58e53e7a154222f4e74.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-05_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/GK/P9/MD5E-s26693258--a904caebfaa372a21eb37231bae55299.nii.gz/MD5E-s26693258--a904caebfaa372a21eb37231bae55299.nii.gz\u001b[0m\n", "│   ├── \u001b[01;36msub-05_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/jW/X3/MD5E-s34416273--467b8d34b985d8caa2ac26e93506b775.nii.gz/MD5E-s34416273--467b8d34b985d8caa2ac26e93506b775.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-05_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[01;36msub-05_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/fZ/Qx/MD5E-s13124683--f6b7dbf08272097300cf977ddc06a3a3.nii.gz/MD5E-s13124683--f6b7dbf08272097300cf977ddc06a3a3.nii.gz\u001b[0m\n", "│   └── \u001b[01;36msub-05_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[01;31m../../../.git/annex/objects/wP/ZP/MD5E-s11526323--f99a4f1f281cc1213c556b1f446724e5.nii.gz/MD5E-s11526323--f99a4f1f281cc1213c556b1f446724e5.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-06\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-06_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/9W/pF/MD5E-s9712028--b4fbccf8add0667a4cba4306d2609bf6.nii.gz/MD5E-s9712028--b4fbccf8add0667a4cba4306d2609bf6.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-06_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/82/0m/MD5E-s102946238--20e290d95ed62fe68f5c73c3e057aa68.nii.gz/MD5E-s102946238--20e290d95ed62fe68f5c73c3e057aa68.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-06_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/KQ/41/MD5E-s24361814--23edea0b5a1c7b770ae89a700099482a.nii.gz/MD5E-s24361814--23edea0b5a1c7b770ae89a700099482a.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-06_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/MW/2q/MD5E-s26020756--5525a120e543de5a7c561eb0ac058c50.nii.gz/MD5E-s26020756--5525a120e543de5a7c561eb0ac058c50.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-06_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/kz/g4/MD5E-s33607078--55b31ff735c4a5d571e49ca0fa44ef3b.nii.gz/MD5E-s33607078--55b31ff735c4a5d571e49ca0fa44ef3b.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-06_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-06_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/qf/92/MD5E-s12884913--85e85fa3810ffbc274163169994516ce.nii.gz/MD5E-s12884913--85e85fa3810ffbc274163169994516ce.nii.gz\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-06_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/zx/Mx/MD5E-s11071105--d4dc6401799624f330849cb2a26ecce0.nii.gz/MD5E-s11071105--d4dc6401799624f330849cb2a26ecce0.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-06_ses-test_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/gm/9z/MD5E-s10429286--0dcb4734fa4f0bccc2f7b953e630e24d.nii.gz/MD5E-s10429286--0dcb4734fa4f0bccc2f7b953e630e24d.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-06_ses-test_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/q4/Jf/MD5E-s111500846--b91fca5d1ca3b959becfc5da8923aab1.nii.gz/MD5E-s111500846--b91fca5d1ca3b959becfc5da8923aab1.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[40;31;01msub-06_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/K1/PM/MD5E-s25380586--d07bdf55b059b9532106bdf96c3d5be6.nii.gz/MD5E-s25380586--d07bdf55b059b9532106bdf96c3d5be6.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-06_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/V9/52/MD5E-s26868014--5c133cbc6d656f72433b1c5da1ea66e7.nii.gz/MD5E-s26868014--5c133cbc6d656f72433b1c5da1ea66e7.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-06_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/x0/Z9/MD5E-s34846203--cd71c6d597806515b0f8b956637c33a1.nii.gz/MD5E-s34846203--cd71c6d597806515b0f8b956637c33a1.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-06_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[40;31;01msub-06_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/KV/31/MD5E-s13292168--c6397d91154050fe59a42da6316b0d4b.nii.gz/MD5E-s13292168--c6397d91154050fe59a42da6316b0d4b.nii.gz\u001b[0m\n", "│   └── \u001b[40;31;01msub-06_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/6K/wQ/MD5E-s11225007--3a39708bd39fa2e4fadccbbf3056bb4e.nii.gz/MD5E-s11225007--3a39708bd39fa2e4fadccbbf3056bb4e.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-07\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-07_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/wz/fx/MD5E-s8725991--d2be2d444bca2a33e53521f5aa9fafaa.nii.gz/MD5E-s8725991--d2be2d444bca2a33e53521f5aa9fafaa.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-07_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/wP/wJ/MD5E-s101870616--440ae52ddacae1affe2e1f59ac795dd3.nii.gz/MD5E-s101870616--440ae52ddacae1affe2e1f59ac795dd3.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-07_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Kk/4J/MD5E-s22958973--c4ed743b362967e6fa2da91f07fb5e4b.nii.gz/MD5E-s22958973--c4ed743b362967e6fa2da91f07fb5e4b.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-07_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/V3/KV/MD5E-s24493127--2a5924ea580a6156a268fd785ed5a920.nii.gz/MD5E-s24493127--2a5924ea580a6156a268fd785ed5a920.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-07_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Fq/0m/MD5E-s31692006--899332b77616cec163c34a33133db1ad.nii.gz/MD5E-s31692006--899332b77616cec163c34a33133db1ad.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-07_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-07_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/qf/Fx/MD5E-s12040345--b22b478fbe5db9a29a44a6181a9ca742.nii.gz/MD5E-s12040345--b22b478fbe5db9a29a44a6181a9ca742.nii.gz\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-07_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/qZ/36/MD5E-s10217500--ff1be72ed50f666ffeca2aec2b33c9ed.nii.gz/MD5E-s10217500--ff1be72ed50f666ffeca2aec2b33c9ed.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-07_ses-test_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/2Q/jJ/MD5E-s8580756--2f14ce817190386a6b4cbf77f89492e1.nii.gz/MD5E-s8580756--2f14ce817190386a6b4cbf77f89492e1.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-07_ses-test_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/zG/84/MD5E-s103326300--7fdd20ad61b709937d1cc5bb2e0798c6.nii.gz/MD5E-s103326300--7fdd20ad61b709937d1cc5bb2e0798c6.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[40;31;01msub-07_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/V3/g1/MD5E-s23258547--3eac6de7ef215928b8e3124f19ea8a8c.nii.gz/MD5E-s23258547--3eac6de7ef215928b8e3124f19ea8a8c.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-07_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Xf/kK/MD5E-s24751878--661682e4f762d7c99dbf049fcc658c87.nii.gz/MD5E-s24751878--661682e4f762d7c99dbf049fcc658c87.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-07_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/pG/qJ/MD5E-s32129273--5d4591dadeabaed078c7519da44178fb.nii.gz/MD5E-s32129273--5d4591dadeabaed078c7519da44178fb.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-07_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[40;31;01msub-07_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/x4/J8/MD5E-s12271868--80db70ef7a5e5c78f7a5cdd16a636f11.nii.gz/MD5E-s12271868--80db70ef7a5e5c78f7a5cdd16a636f11.nii.gz\u001b[0m\n", "│   └── \u001b[40;31;01msub-07_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/zZ/61/MD5E-s10521017--969638eda30b31ad90b2403d5cc10b20.nii.gz/MD5E-s10521017--969638eda30b31ad90b2403d5cc10b20.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-08\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-08_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/G3/j0/MD5E-s9815716--3ccef5772c262fd48ee053f97a3381ce.nii.gz/MD5E-s9815716--3ccef5772c262fd48ee053f97a3381ce.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-08_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/QJ/gw/MD5E-s104814386--e6cab512bec21cf56a56833041fb513c.nii.gz/MD5E-s104814386--e6cab512bec21cf56a56833041fb513c.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-08_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/QP/w0/MD5E-s24230763--51bc4ea41cba2f3a9d15be16f6c34d02.nii.gz/MD5E-s24230763--51bc4ea41cba2f3a9d15be16f6c34d02.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-08_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/48/X1/MD5E-s25800747--f446847b95b4e32814564f9197271ed9.nii.gz/MD5E-s25800747--f446847b95b4e32814564f9197271ed9.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-08_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/fP/63/MD5E-s33353778--6a1da1d5367e05e8a62702feeae571d9.nii.gz/MD5E-s33353778--6a1da1d5367e05e8a62702feeae571d9.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-08_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-08_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/75/86/MD5E-s12754775--52ec0425828a22ec5770d853aca3a446.nii.gz/MD5E-s12754775--52ec0425828a22ec5770d853aca3a446.nii.gz\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-08_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/gW/KF/MD5E-s10970580--4060fc6ee9f4383aed5c49e4cded633a.nii.gz/MD5E-s10970580--4060fc6ee9f4383aed5c49e4cded633a.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-08_ses-test_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/85/WP/MD5E-s9325328--35d0ce9fd75157df786d11c84b3c2178.nii.gz/MD5E-s9325328--35d0ce9fd75157df786d11c84b3c2178.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-08_ses-test_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/MM/v4/MD5E-s102691986--702eadb2a87f9cc17b8c62c64b27a8fb.nii.gz/MD5E-s102691986--702eadb2a87f9cc17b8c62c64b27a8fb.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[40;31;01msub-08_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/4g/25/MD5E-s24002538--085dc82910b78be26a215d4c51194aea.nii.gz/MD5E-s24002538--085dc82910b78be26a215d4c51194aea.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-08_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/4g/pV/MD5E-s25655723--fddb912934403f6cd56dd32277e4be69.nii.gz/MD5E-s25655723--fddb912934403f6cd56dd32277e4be69.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-08_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/v0/Vf/MD5E-s33201889--0647f2251ac5f125b4b84ca5a93e37ca.nii.gz/MD5E-s33201889--0647f2251ac5f125b4b84ca5a93e37ca.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-08_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[40;31;01msub-08_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Kf/11/MD5E-s12622070--c140fdd9e3e5747b9c9a8ff8dcc949cf.nii.gz/MD5E-s12622070--c140fdd9e3e5747b9c9a8ff8dcc949cf.nii.gz\u001b[0m\n", "│   └── \u001b[40;31;01msub-08_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/8g/2p/MD5E-s10907328--1188c30e16c68cd270d02aa8d554f24d.nii.gz/MD5E-s10907328--1188c30e16c68cd270d02aa8d554f24d.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-09\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-09_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/XM/9P/MD5E-s9038046--abcb37f89145be848b1b6c19c69b4e66.nii.gz/MD5E-s9038046--abcb37f89145be848b1b6c19c69b4e66.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-09_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/g5/GQ/MD5E-s104913036--9af1945a4e26239a938536e6eb962630.nii.gz/MD5E-s104913036--9af1945a4e26239a938536e6eb962630.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-09_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/qp/56/MD5E-s23883001--7eb7d4a5b01596f680d0d748473f1f38.nii.gz/MD5E-s23883001--7eb7d4a5b01596f680d0d748473f1f38.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-09_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/KM/3m/MD5E-s25333347--98c608533e6f0f0148d1b4223578a7e0.nii.gz/MD5E-s25333347--98c608533e6f0f0148d1b4223578a7e0.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-09_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/jG/KZ/MD5E-s32759028--0e0b0badca8ad941baea5212d0bbd4c8.nii.gz/MD5E-s32759028--0e0b0badca8ad941baea5212d0bbd4c8.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-09_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-09_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Wk/x1/MD5E-s12607832--fa71f8dbe19dbb58fc8e56fd4c0d74a9.nii.gz/MD5E-s12607832--fa71f8dbe19dbb58fc8e56fd4c0d74a9.nii.gz\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-09_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/1F/Qk/MD5E-s10992778--c0e5683ec6bed25d407e896cef3a4cc3.nii.gz/MD5E-s10992778--c0e5683ec6bed25d407e896cef3a4cc3.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-09_ses-test_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/0w/6v/MD5E-s9093983--6307afbbcebf1d2bfe945a1e963d3a9d.nii.gz/MD5E-s9093983--6307afbbcebf1d2bfe945a1e963d3a9d.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-09_ses-test_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/F8/6K/MD5E-s106806289--ed3b50d7d009964e8fbfb2d0250fc67e.nii.gz/MD5E-s106806289--ed3b50d7d009964e8fbfb2d0250fc67e.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[40;31;01msub-09_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/9x/8z/MD5E-s24415813--8c4d3158eda8efb430816469342f2d83.nii.gz/MD5E-s24415813--8c4d3158eda8efb430816469342f2d83.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-09_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Pp/J2/MD5E-s25892719--8591a417c483510c6492132b5f0cecb8.nii.gz/MD5E-s25892719--8591a417c483510c6492132b5f0cecb8.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-09_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/vf/7Z/MD5E-s33605998--6a5422bb4dfded010105d8fd14a3f454.nii.gz/MD5E-s33605998--6a5422bb4dfded010105d8fd14a3f454.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-09_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[40;31;01msub-09_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/mV/29/MD5E-s12849009--d9afb889bde8c40bc778bff8ba55060b.nii.gz/MD5E-s12849009--d9afb889bde8c40bc778bff8ba55060b.nii.gz\u001b[0m\n", "│   └── \u001b[40;31;01msub-09_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/pk/wX/MD5E-s10859124--729337dd4c06fb3aceae73a91fbd5300.nii.gz/MD5E-s10859124--729337dd4c06fb3aceae73a91fbd5300.nii.gz\u001b[0m\n", "├── \u001b[01;34msub-10\u001b[0m\n", "│   ├── \u001b[01;34mses-retest\u001b[0m\n", "│   │   ├── \u001b[01;34manat\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-10_ses-retest_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/pZ/57/MD5E-s8165420--f72be15a6c60658bac5148423087bb85.nii.gz/MD5E-s8165420--f72be15a6c60658bac5148423087bb85.nii.gz\u001b[0m\n", "│   │   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   │   └── \u001b[40;31;01msub-10_ses-retest_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/v0/JM/MD5E-s101212223--f7d66db879a83e55b4caa332fb60f0a9.nii.gz/MD5E-s101212223--f7d66db879a83e55b4caa332fb60f0a9.nii.gz\u001b[0m\n", "│   │   └── \u001b[01;34mfunc\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-10_ses-retest_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/kx/8m/MD5E-s22613897--fedb2d74d4c0426bda2660a0194a6e3c.nii.gz/MD5E-s22613897--fedb2d74d4c0426bda2660a0194a6e3c.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-10_ses-retest_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/4j/Q5/MD5E-s24086519--a813253ad6218481c5ac211a7b70cb2a.nii.gz/MD5E-s24086519--a813253ad6218481c5ac211a7b70cb2a.nii.gz\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-10_ses-retest_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/0V/7G/MD5E-s31223672--4817426ded5dcaa26ab61206c8c25a01.nii.gz/MD5E-s31223672--4817426ded5dcaa26ab61206c8c25a01.nii.gz\u001b[0m\n", "│   │   ├── \u001b[00msub-10_ses-retest_task-linebisection_events.tsv\u001b[0m\n", "│   │   ├── \u001b[40;31;01msub-10_ses-retest_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/PK/m9/MD5E-s12012688--f84bcd3565935a28933f3f6ec778b7e4.nii.gz/MD5E-s12012688--f84bcd3565935a28933f3f6ec778b7e4.nii.gz\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-10_ses-retest_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/wj/XP/MD5E-s10205344--4dae96535f63a91e230ceee0567731cb.nii.gz/MD5E-s10205344--4dae96535f63a91e230ceee0567731cb.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mses-test\u001b[0m\n", "│   ├── \u001b[01;34manat\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-10_ses-test_T1w.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/Mq/mJ/MD5E-s8625770--9aad310eebc17dfa2a14de13ae26c9a0.nii.gz/MD5E-s8625770--9aad310eebc17dfa2a14de13ae26c9a0.nii.gz\u001b[0m\n", "│   ├── \u001b[01;34mdwi\u001b[0m\n", "│   │   └── \u001b[40;31;01msub-10_ses-test_dwi.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/vW/Jp/MD5E-s408320142--0e710fe67a26868893112fdbcf441fe1.nii.gz/MD5E-s408320142--0e710fe67a26868893112fdbcf441fe1.nii.gz\u001b[0m\n", "│   └── \u001b[01;34mfunc\u001b[0m\n", "│   ├── \u001b[40;31;01msub-10_ses-test_task-covertverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/p2/69/MD5E-s23125294--db06785e844b7705bf4eb76c3934e515.nii.gz/MD5E-s23125294--db06785e844b7705bf4eb76c3934e515.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-10_ses-test_task-fingerfootlips_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/wg/wQ/MD5E-s24873409--ef5680f23a727a842c0259fbd38b8207.nii.gz/MD5E-s24873409--ef5680f23a727a842c0259fbd38b8207.nii.gz\u001b[0m\n", "│   ├── \u001b[40;31;01msub-10_ses-test_task-linebisection_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/zP/g6/MD5E-s32217029--be5d868e5a99f7ae36db9965035197ba.nii.gz/MD5E-s32217029--be5d868e5a99f7ae36db9965035197ba.nii.gz\u001b[0m\n", "│   ├── \u001b[00msub-10_ses-test_task-linebisection_events.tsv\u001b[0m\n", "│   ├── \u001b[40;31;01msub-10_ses-test_task-overtverbgeneration_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/xZ/3P/MD5E-s12286926--5194547f3ddf306eca340a7e67ae3376.nii.gz/MD5E-s12286926--5194547f3ddf306eca340a7e67ae3376.nii.gz\u001b[0m\n", "│   └── \u001b[40;31;01msub-10_ses-test_task-overtwordrepetition_bold.nii.gz\u001b[0m -> \u001b[00m../../../.git/annex/objects/9G/VZ/MD5E-s10338205--6cd9153fc2727a337c055c687c8ef705.nii.gz/MD5E-s10338205--6cd9153fc2727a337c055c687c8ef705.nii.gz\u001b[0m\n", "├── \u001b[00mtask-covertverbgeneration_bold.json\u001b[0m\n", "├── \u001b[00mtask-covertverbgeneration_events.tsv\u001b[0m\n", "├── \u001b[00mtask-fingerfootlips_bold.json\u001b[0m\n", "├── \u001b[00mtask-fingerfootlips_events.tsv\u001b[0m\n", "├── \u001b[00mtask-linebisection_bold.json\u001b[0m\n", "├── \u001b[00mtask-overtverbgeneration_bold.json\u001b[0m\n", "├── \u001b[00mtask-overtverbgeneration_events.tsv\u001b[0m\n", "├── \u001b[00mtask-overtwordrepetition_bold.json\u001b[0m\n", "└── \u001b[00mtask-overtwordrepetition_events.tsv\u001b[0m\n", "\n", "90 directories, 174 files\n" ] } ], "source": [ "!tree -L 4 ds000114" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## Querying BIDS datasets" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### Loading BIDS datasets\n", "The BIDSLayout instance is a lightweight container for all of the files in the BIDS project directory. It automatically detects any BIDS entities found in the file paths, and allows us to perform simple but relatively powerful queries over the file tree. By default, defined BIDS entities include things like “subject”, “session”, “run”, and “type”." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "from bids.layout import BIDSLayout\n", "layout = BIDSLayout(\"ds000114\")" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### Querying the ```BIDSLayout``` using ```get```\n", "\n", "When a BIDSLayout is initialized, it scans and indexes all files and metadata within the specified root directory. Once the indexing is complete, you can start exploring the dataset through different types of queries. The main method for this is ```.get()```. If you call ```.get()``` without any arguments, it simply returns a list of all BIDS files in the dataset:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 174 files in the layout.\n", "\n", "The first 3 files are:\n" ] }, { "data": { "text/plain": [ "[,\n", " ,\n", " ]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_files = layout.get()\n", "print(\"There are {} files in the layout.\".format(len(all_files)))\n", "print(\"\\nThe first 3 files are:\")\n", "all_files[:3]" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "In this Python list, each elementis a BIDSFile object. If you want to work with just file names, you can simpliy it with:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/CHANGES',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/dataset_description.json',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/dwi.bval']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get(return_type='filename')[:3]" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "__Common BIDS Entities:__\n", "\n", "The ```.get()```method supports various arguments that let us narrow down the results based on specific criteria. Any BIDS-defined keywords - referred to as entities in PyBIDS - can be used as filters. Here are the most common ones:\n", "\n", "```suffix```: The part of a BIDS filename just before the extension (e.g., 'bold', 'events', 'physio', etc.).\n", "\n", "```subject```: The subject label\n", "\n", "```session```: The session label\n", "\n", "```run```: The run index\n", "\n", "```task```: The task name" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [ { "data": { "text/plain": [ "{'subject': )>,\n", " 'session': )>,\n", " 'sample': )>,\n", " 'task': )>,\n", " 'tracksys': )>,\n", " 'acquisition': )>,\n", " 'nucleus': )>,\n", " 'volume': )>,\n", " 'ceagent': )>,\n", " 'staining': )>,\n", " 'tracer': )>,\n", " 'reconstruction': )>,\n", " 'direction': )>,\n", " 'run': )>,\n", " 'proc': )>,\n", " 'modality': )>,\n", " 'echo': )>,\n", " 'flip': )>,\n", " 'inv': )>,\n", " 'mt': )>,\n", " 'part': )>,\n", " 'recording': )>,\n", " 'space': )>,\n", " 'chunk': )>,\n", " 'suffix': )>,\n", " 'scans': )>,\n", " 'fmap': )>,\n", " 'datatype': )>,\n", " 'extension': )>,\n", " 'EchoTime': )>,\n", " 'FlipAngle': )>,\n", " 'RepetitionTime': )>,\n", " 'SliceTiming': )>,\n", " 'TaskName': )>}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get_entities()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "*Query by subjects:*" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['01', '02', '03', '04', '05', '06', '07', '08', '09', '10']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get_subjects()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "*Query by sessions:*" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['retest', 'test']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get_sessions()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "*Query by tasks:*" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['covertverbgeneration',\n", " 'fingerfootlips',\n", " 'linebisection',\n", " 'overtverbgeneration',\n", " 'overtwordrepetition']" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get_task()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "Here’s how we would retrieve all BOLD runs with *.nii.gz* extensions for *subject '02'*:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-retest/func/sub-02_ses-retest_task-covertverbgeneration_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-retest/func/sub-02_ses-retest_task-fingerfootlips_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-retest/func/sub-02_ses-retest_task-linebisection_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-retest/func/sub-02_ses-retest_task-overtverbgeneration_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-retest/func/sub-02_ses-retest_task-overtwordrepetition_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-test/func/sub-02_ses-test_task-covertverbgeneration_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-test/func/sub-02_ses-test_task-fingerfootlips_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-test/func/sub-02_ses-test_task-linebisection_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-test/func/sub-02_ses-test_task-overtverbgeneration_bold.nii.gz',\n", " '/home/jovyan/Git_repositories/example-notebooks/books/workflows/ds000114/sub-02/ses-test/func/sub-02_ses-test_task-overtwordrepetition_bold.nii.gz']" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Retrieve filenames of all BOLD runs for subject 02\n", "layout.get(subject='02', extension='nii.gz', suffix='bold', return_type='filename')" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### Extracting metadata\n", "All the entities mentioned above are derived from the filenames in a BIDS dataset. However, sometimes we want to filter files not just by their names, but also using **metadata** defined in sidecar JSON files, as specified by the BIDS standard. When a BIDSLayout is initialized, it automatically indexes all associated metadata files. This means we can use any key found in a JSON file as a filter in ```.get()```, and we can even combine these with core BIDS entities like subject, run, and task.\n", "\n", "For example, suppose we want to retrieve all files that meet the following criteria:\n", "(a) the RepetitionTime metadata value is 2.5,\n", "(b) the task is either 'covert_verb_generation' or 'finger_foot_lips', and\n", "(c) the subject is '01' or '02'.\n", "\n", "Here’s how we can do that:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layout.get(subject=['01', '02'], RepetitionTime=2.5, TaskName=['covert_verb_generation', 'finger_foot_lips'] )" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## The ```BIDSFile```\n", "\n", "Calling ```.get()``` on a ```BIDSLayout``` returns a list of ```BIDSFile``` objects by default. These are lightweight representations of individual files within a BIDS dataset and offer convenient access to various attributes and methods. Let’s explore what a ```BIDSFile``` can do. To start, we’ll select a random file from the layout." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pick the 11th file in the dataset\n", "bf = layout.get()[11]\n", "\n", "# Print it\n", "bf" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "A ```BIDSFile``` provides a convenient interface to interact with individual files in a BIDS dataset. Depending on the file type, different attributes and methods are available. Keep in mind that some methods are only applicable to specific types of files—for example, you can’t use ```.get_image()``` on a non-image file.\n", "\n", "Here are some commonly used attributes and methods:\n", "\n", "```.path``` – Full path to the file\n", "\n", "```.filename``` – Name of the file (excluding the directory)\n", "\n", "```.dirname``` – Directory where the file is located\n", "\n", "```.get_entities()``` – Returns a dictionary of entities (e.g., subject, task) associated with the file; metadata can be optionally included\n", "\n", "```.get_image()``` – Loads the file as a nibabel image (only valid for image files)\n", "\n", "```.get_df()``` – Loads the file into a pandas DataFrame (works for .tsv files)\n", "\n", "```.get_metadata()``` – Retrieves a dictionary of metadata from the related JSON sidecar(s)\n", "\n", "```.get_associations()``` – Lists other files that are linked to this one (e.g., JSON, events, or anatomical associations)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'datatype': 'func',\n", " 'extension': '.nii.gz',\n", " 'session': 'retest',\n", " 'subject': '01',\n", " 'suffix': 'bold',\n", " 'task': 'overtverbgeneration'}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print all the entities associated with this file, and their values\n", "bf.get_entities()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [ { "data": { "text/plain": [ "{'EchoTime': 0.05,\n", " 'FlipAngle': 90,\n", " 'RepetitionTime': 5.0,\n", " 'SliceTiming': [0.0,\n", " 1.2499999999999998,\n", " 0.08333333333333333,\n", " 1.333333333333333,\n", " 0.16666666666666666,\n", " 1.4166666666666663,\n", " 0.25,\n", " 1.4999999999999996,\n", " 0.3333333333333333,\n", " 1.5833333333333328,\n", " 0.41666666666666663,\n", " 1.666666666666666,\n", " 0.5,\n", " 1.7499999999999993,\n", " 0.5833333333333333,\n", " 1.8333333333333326,\n", " 0.6666666666666666,\n", " 1.9166666666666659,\n", " 0.75,\n", " 1.9999999999999991,\n", " 0.8333333333333333,\n", " 2.083333333333332,\n", " 0.9166666666666666,\n", " 2.1666666666666656,\n", " 1.0,\n", " 2.249999999999999,\n", " 1.0833333333333333,\n", " 2.333333333333332,\n", " 1.1666666666666665,\n", " 2.416666666666665],\n", " 'TaskName': 'overt_verb_generation'}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print all metadata of this file\n", "bf.get_metadata()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [ "scroll-output" ] }, "outputs": [ { "data": { "text/plain": [ "{'EchoTime': 0.05,\n", " 'FlipAngle': 90,\n", " 'RepetitionTime': 5.0,\n", " 'SliceTiming': [0.0,\n", " 1.2499999999999998,\n", " 0.08333333333333333,\n", " 1.333333333333333,\n", " 0.16666666666666666,\n", " 1.4166666666666663,\n", " 0.25,\n", " 1.4999999999999996,\n", " 0.3333333333333333,\n", " 1.5833333333333328,\n", " 0.41666666666666663,\n", " 1.666666666666666,\n", " 0.5,\n", " 1.7499999999999993,\n", " 0.5833333333333333,\n", " 1.8333333333333326,\n", " 0.6666666666666666,\n", " 1.9166666666666659,\n", " 0.75,\n", " 1.9999999999999991,\n", " 0.8333333333333333,\n", " 2.083333333333332,\n", " 0.9166666666666666,\n", " 2.1666666666666656,\n", " 1.0,\n", " 2.249999999999999,\n", " 1.0833333333333333,\n", " 2.333333333333332,\n", " 1.1666666666666665,\n", " 2.416666666666665],\n", " 'TaskName': 'overt_verb_generation',\n", " 'datatype': 'func',\n", " 'extension': '.nii.gz',\n", " 'session': 'retest',\n", " 'subject': '01',\n", " 'suffix': 'bold',\n", " 'task': 'overtverbgeneration'}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get union of both of the above in one shot like this\n", "bf.get_entities(metadata='all')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Here are all the files associated with our target file in some way\n", "bf.get_associations()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### Exporting a BIDSLayout to a pandas Dataframe\n", "If you’re looking for a high-level overview of all the files in your BIDSLayout without manually iterating through each ```BIDSFile``` and extracting their entities, the ```.to_df()``` method offers a convenient solution. It provides a structured summary of the dataset in the form of a pandas DataFrame." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
entitypathdatatypeextensionsessionsubjectsuffixtask
0/home/jovyan/Git_repositories/example-notebook...NaN.jsonNaNNaNdescriptionNaN
1/home/jovyan/Git_repositories/example-notebook...NaN.bvalNaNNaNdwiNaN
2/home/jovyan/Git_repositories/example-notebook...NaN.bvecNaNNaNdwiNaN
3/home/jovyan/Git_repositories/example-notebook...NaN.tsvNaNNaNparticipantsNaN
4/home/jovyan/Git_repositories/example-notebook...anat.nii.gzretest01T1wNaN
\n", "
" ], "text/plain": [ "entity path datatype extension \\\n", "0 /home/jovyan/Git_repositories/example-notebook... NaN .json \n", "1 /home/jovyan/Git_repositories/example-notebook... NaN .bval \n", "2 /home/jovyan/Git_repositories/example-notebook... NaN .bvec \n", "3 /home/jovyan/Git_repositories/example-notebook... NaN .tsv \n", "4 /home/jovyan/Git_repositories/example-notebook... anat .nii.gz \n", "\n", "entity session subject suffix task \n", "0 NaN NaN description NaN \n", "1 NaN NaN dwi NaN \n", "2 NaN NaN dwi NaN \n", "3 NaN NaN participants NaN \n", "4 retest 01 T1w NaN " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Convert the layout to a pandas dataframe\n", "df = layout.to_df()\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
entitypathEchoTimeFlipAngleRepetitionTimeSliceTimingTaskNamedatatypeextensionsessionsubjectsuffixtask
0/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNNaN.jsonNaNNaNdescriptionNaN
1/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNNaN.bvalNaNNaNdwiNaN
2/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNNaN.bvecNaNNaNdwiNaN
3/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNNaN.tsvNaNNaNparticipantsNaN
4/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNanat.nii.gzretest01T1wNaN
5/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNdwi.nii.gzretest01dwiNaN
6/home/jovyan/Git_repositories/example-notebook...0.05902.5[0.0, 1.2499999999999998, 0.08333333333333333,...covert_verb_generationfunc.nii.gzretest01boldcovertverbgeneration
7/home/jovyan/Git_repositories/example-notebook...0.05902.5[0.0, 1.2499999999999998, 0.08333333333333333,...finger_foot_lipsfunc.nii.gzretest01boldfingerfootlips
8/home/jovyan/Git_repositories/example-notebook...0.05902.5[0.0, 1.2499999999999998, 0.08333333333333333,...line_bisectionfunc.nii.gzretest01boldlinebisection
9/home/jovyan/Git_repositories/example-notebook...NaNNaNNaNNaNNaNfunc.tsvretest01eventslinebisection
\n", "
" ], "text/plain": [ "entity path EchoTime FlipAngle \\\n", "0 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "1 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "2 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "3 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "4 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "5 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "6 /home/jovyan/Git_repositories/example-notebook... 0.05 90 \n", "7 /home/jovyan/Git_repositories/example-notebook... 0.05 90 \n", "8 /home/jovyan/Git_repositories/example-notebook... 0.05 90 \n", "9 /home/jovyan/Git_repositories/example-notebook... NaN NaN \n", "\n", "entity RepetitionTime SliceTiming \\\n", "0 NaN NaN \n", "1 NaN NaN \n", "2 NaN NaN \n", "3 NaN NaN \n", "4 NaN NaN \n", "5 NaN NaN \n", "6 2.5 [0.0, 1.2499999999999998, 0.08333333333333333,... \n", "7 2.5 [0.0, 1.2499999999999998, 0.08333333333333333,... \n", "8 2.5 [0.0, 1.2499999999999998, 0.08333333333333333,... \n", "9 NaN NaN \n", "\n", "entity TaskName datatype extension session subject \\\n", "0 NaN NaN .json NaN NaN \n", "1 NaN NaN .bval NaN NaN \n", "2 NaN NaN .bvec NaN NaN \n", "3 NaN NaN .tsv NaN NaN \n", "4 NaN anat .nii.gz retest 01 \n", "5 NaN dwi .nii.gz retest 01 \n", "6 covert_verb_generation func .nii.gz retest 01 \n", "7 finger_foot_lips func .nii.gz retest 01 \n", "8 line_bisection func .nii.gz retest 01 \n", "9 NaN func .tsv retest 01 \n", "\n", "entity suffix task \n", "0 description NaN \n", "1 dwi NaN \n", "2 dwi NaN \n", "3 participants NaN \n", "4 T1w NaN \n", "5 dwi NaN \n", "6 bold covertverbgeneration \n", "7 bold fingerfootlips \n", "8 bold linebisection \n", "9 events linebisection " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Include metadata\n", "layout.to_df(metadata=True).head(10)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "## BIDS Validator\n", "```PyBIDS``` includes an implicit import of the ```BIDSValidator``` class from the separate ```bids-validator``` package. This class can be used to check whether a given file path conforms to BIDS naming conventions and to infer what type of data the file represents.\n", "\n", "However, it's important to note that the Python-based validator may lag behind the official JavaScript implementation available online. Additionally, the Python version only validates individual file paths - it doesn't support validation of an entire ```BIDS dataset```. For full dataset validation, it's recommended to use the online [BIDS Validator](https://bids-standard.github.io/bids-validator/)." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "from bids.layout import BIDSValidator" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# When using the bids validator, the filepath MUST be relative to the top level bids directory\n", "validator = BIDSValidator()\n", "validator.is_bids('/sub-02/ses-retest/func/sub-02_ses-retest_task-covertverbgeneration_bold.nii.gz')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Can decide if a filepath represents a file part of the specification\n", "validator.is_file('/sub-02/ses-retest/func/sub-02_ses-retest_task-covertverbgeneration_bold.nii.gz')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Can check if a file is at the top level of the dataset\n", "validator.is_top_level('/dataset_description.json')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# or subject (or session) level\n", "validator.is_subject_level('/dataset_description.json')" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Can decide if a filepath represents phenotypic data\n", "validator.is_phenotypic('/sub-02/ses-test/anat/sub-02_ses-test_T1w.nii.gz')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" } }, "nbformat": 4, "nbformat_minor": 4 }