From 93d0694d3c83628967157fe3574007281500fc08 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Wed, 7 Oct 2020 14:00:29 -0400 Subject: [PATCH 01/41] add initial testing --- docs/usage.rst | 5 +++++ setup.cfg | 6 +++++- setup.py | 8 +++----- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/usage.rst b/docs/usage.rst index be402e4c0..f943ac851 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -5,3 +5,8 @@ Usage To use BOnD in a project:: import bond + + + +Use Cases +--------- diff --git a/setup.cfg b/setup.cfg index 4999dbb67..94e93d721 100644 --- a/setup.cfg +++ b/setup.cfg @@ -16,6 +16,11 @@ universal = 1 [flake8] exclude = docs +doctests = True +exclude=*build/ +putty-ignore = + */__init__.py : +F401 + /^\s*\.\. _.*?: http/ : +E501 [aliases] # Define setup.py command aliases here @@ -23,4 +28,3 @@ test = pytest [tool:pytest] collect_ignore = ['setup.py'] - diff --git a/setup.py b/setup.py index 4804c9f5e..81466c039 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ with open('HISTORY.rst') as history_file: history = history_file.read() -requirements = [ ] +requirements = ['pybids'] setup_requirements = ['pytest-runner', ] @@ -23,11 +23,9 @@ classifiers=[ 'Development Status :: 2 - Pre-Alpha', 'Intended Audience :: Developers', - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'License :: OSI Approved :: MIT', 'Natural Language :: English', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', ], @@ -47,7 +45,7 @@ setup_requires=setup_requirements, test_suite='tests', tests_require=test_requirements, - url='https://github.com/mattcieslak/bond', + url='https://github.com/pennlinc/bond', version='0.1.0', zip_safe=False, ) From 8576f7375cf23bc6dcaa0b02fcba0957ac3fa822 Mon Sep 17 00:00:00 2001 From: Tinashe Tapera Date: Wed, 7 Oct 2020 15:25:07 -0400 Subject: [PATCH 02/41] first proof --- notebooks/FirstProofofConcept.ipynb | 132 ++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 notebooks/FirstProofofConcept.ipynb diff --git a/notebooks/FirstProofofConcept.ipynb b/notebooks/FirstProofofConcept.ipynb new file mode 100644 index 000000000..1252a1f10 --- /dev/null +++ b/notebooks/FirstProofofConcept.ipynb @@ -0,0 +1,132 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proof of Concept\n", + "\n", + "In this notebook we will test out some proofs of concept for our package.\n", + "\n", + "First step: going through a directory to read the files in it" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "\n", + "root_dir = '/Users/ttapera/BBL/Projects/BOnD/'\n", + "\n", + "bids_dir = 'data/'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/ttapera/BBL/Projects/BOnD/data/'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "root_dir + bids_dir" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bval',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bvec',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bval',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bvec',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# use glob to list all of the files recursively\n", + "\n", + "all_files = glob.glob(root_dir + bids_dir + '**/**/**/*')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is how we use glob to list all of the files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From e721e3b41399f899078808f3ca2dd8ac2613424e Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Wed, 7 Oct 2020 15:58:19 -0400 Subject: [PATCH 03/41] add tests --- bond/bond.py | 17 ++++++++ setup.cfg | 4 -- tests/test_bond.py | 101 +++++++++++++++++++++++++++++++++++++++------ 3 files changed, 105 insertions(+), 17 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index dd0b80ede..14ab03369 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1 +1,18 @@ """Main module.""" + +class BOnD(object): + + def __init__(self, data_root): + self.path = data_root + + def fieldmaps_ok(self): + pass + + def rename_files(self, pattern, replacement): + pass + + def find_param_sets(self, pattern): + pass + + def fill_metadata(self, pattern, metadata): + pass diff --git a/setup.cfg b/setup.cfg index 94e93d721..26e524942 100644 --- a/setup.cfg +++ b/setup.cfg @@ -15,7 +15,6 @@ replace = __version__ = '{new_version}' universal = 1 [flake8] -exclude = docs doctests = True exclude=*build/ putty-ignore = @@ -25,6 +24,3 @@ putty-ignore = [aliases] # Define setup.py command aliases here test = pytest - -[tool:pytest] -collect_ignore = ['setup.py'] diff --git a/tests/test_bond.py b/tests/test_bond.py index 382ab22a0..92ea9dd39 100644 --- a/tests/test_bond.py +++ b/tests/test_bond.py @@ -1,24 +1,99 @@ #!/usr/bin/env python """Tests for `bond` package.""" - +import sys +sys.path.append("..") +import os +import argparse import pytest +import tempfile +import os.path as op +from copy import deepcopy +import base64 +import shutil +from glob import glob + +# Can't use pytest's temp_dir because input directories have to be mocked +WORKING_DIR = tempfile.mkdtemp() +BIDS_DATA_ZIP_URL = "https://github.com/PennLINC/bids-examples/" \ + "archive/master.tar.gz" + + +@pytest.fixture(scope="session") +def bids_data(work_dir=WORKING_DIR): + """Download example bids data.""" + status = os.system('curl -sSL {} | tar xfz - -C {}'.format( + BIDS_DATA_ZIP_URL, work_dir)) + assert status == 0 + assert 'bids-examples-master' in os.listdir(work_dir) + return work_dir + + +def test_synthetic(bids_data): + assert 1 == 1 + assert True + assert op.exists(op.join(bids_data, "bids-examples-master/synthetic/")) + + +def test_fill_metadata(bids_data): + data_root = op.join(bids_data + "/incomplete/fill-metadata") + my_bond = bond.BOnD(data_root) + # fill_metadata should add metadata elements to the json sidecar + my_bond.fill_metadata(pattern="*acq-multiband_bold.nii.gz", + metadata={"EchoTime": 0.005}) + # get_metadata shold return a list of dictionaries that contain metadata for + # scans matching `pattern` + for metadata in my_bond.get_metadata(pattern="*acq-multiband_bold"): + assert metadata['EchoTime'] == 0.005 + + # fill_metadata should add metadata elements to the json sidecar + my_bond.fill_metadata(pattern="*acq-multiband_bold.nii.gz", + metadata={"EchoTime": 0.009}) + # get_metadata shold return a list of dictionaries that contain metadata for + # scans matching `pattern` + for metadata in my_bond.get_metadata(pattern="*acq-multiband_bold"): + assert metadata['EchoTime'] == 0.009 + + +def test_detect_unique_parameter_sets(bids_data): + data_root = op.join(bids_data + "/incomplete/multi_param_sets") + my_bond = bond.BOnD(data_root) + + # Ground truth groups + true_combinations = [ + {"EchoTime": 0.005, "PhaseEncodingDirection": "j"}, + {"EchoTime": 0.005, "PhaseEncodingDirection": "j-"} + ] + + # Find param sets from the data on + combinations = my_bond.find_param_sets(pattern="*_bold") + + assert len(true_combinations) == len(combinations) + + +def test_rename_files(bids_data): + data_root = op.join(bids_data + "/incomplete/to-rename") + my_bond = bond.BOnD(data_root) + + original_suffix = "_run-01_bold" + renamed_suffix = "_acq-multiband_run-01_bold" + # Show that there are none of these files already there + assert not glob("*" + renamed_suffix + "*") -from bond import bond + # Actually do the renaming + my_bond.rename_files(original_suffix, renamed_suffix) + # Show that these files are now there + assert not glob("*" + renamed_suffix + "*") -@pytest.fixture -def response(): - """Sample pytest fixture. - See more at: http://doc.pytest.org/en/latest/fixture.html - """ - # import requests - # return requests.get('https://github.com/audreyr/cookiecutter-pypackage') +def test_fieldmap_exists(bids_data): + ok_data_root = op.join(bids_data + "/complete/fieldmaps") + not_ok_data_root = op.join(bids_data + "/incomplete/fieldmaps") + ok_bond = bond.BOnD(ok_data_root) + assert ok_bond.fieldmaps_ok() -def test_content(response): - """Sample pytest test function with the pytest fixture as an argument.""" - # from bs4 import BeautifulSoup - # assert 'GitHub' in BeautifulSoup(response.content).title.string + not_ok_bond = bond.BOnD(not_ok_data_root) + assert not not_ok_bond.fieldmaps_ok() From 14e80f8862e45648ca0ce7340ba18d34fbf2b197 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Wed, 7 Oct 2020 16:01:33 -0400 Subject: [PATCH 04/41] add nipype as dependency --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 81466c039..ddde1b95e 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ with open('HISTORY.rst') as history_file: history = history_file.read() -requirements = ['pybids'] +requirements = ['pybids', 'nipype'] setup_requirements = ['pytest-runner', ] From 18868915aeb28c0ac48d3c7daec9451e97cfb18f Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 11:28:44 -0400 Subject: [PATCH 05/41] Add testing data --- .gitignore | 2 + bond/testdata/complete/README | 1 + .../complete/dataset_description.json | 7 ++ .../anat/sub-01_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes ...sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 0 -> 176 bytes ...b-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 176 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes ...sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 0 -> 176 bytes ...b-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 176 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes ...sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 0 -> 176 bytes ...b-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 176 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 0 -> 176 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes 63 files changed, 1426 insertions(+) create mode 100644 bond/testdata/complete/README create mode 100644 bond/testdata/complete/dataset_description.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz diff --git a/.gitignore b/.gitignore index 830844813..ce29b82fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.DS_Store + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/bond/testdata/complete/README b/bond/testdata/complete/README new file mode 100644 index 000000000..8cbaa34f6 --- /dev/null +++ b/bond/testdata/complete/README @@ -0,0 +1 @@ +Heavily downsampled CS-DSI testing datasets diff --git a/bond/testdata/complete/dataset_description.json b/bond/testdata/complete/dataset_description.json new file mode 100644 index 000000000..9ee88dbcc --- /dev/null +++ b/bond/testdata/complete/dataset_description.json @@ -0,0 +1,7 @@ +{ + "BIDSVersion": "1.0.0", + "License": "BSD 3-clause", + "Name": "Heavily downsampled CS-DSI simulated data", + "ReferencesAndLinks": [], + "Authors": ["PennLINC", "PennBBL"] +} diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json new file mode 100644 index 000000000..a86cdd647 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json @@ -0,0 +1,33 @@ +{ + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "DeviceSerialNumber": "167024", + "SoftwareVersions": "syngo_MR_E11", + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "ScanningSequence": "GR_IR", + "SequenceVariant": "SK_SP_MP", + "SeriesDescription": "ABCD_T1w_MPR_vNav", + "BodyPartExamined": "BRAIN", + "ProtocolName": "ABCD_T1w_MPR_vNav", + "SequenceName": "tfl3d1_16ns", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND", + "NORM" + ], + "AcquisitionTime": "16:15:31.770000", + "MagneticFieldStrength": 3, + "FlipAngle": 8, + "EchoTime": 0.0029, + "RepetitionTime": 2.5, + "InversionTime": 1.07, + "PhaseEncodingLines": 256, + "PhaseEncodingDirection": "i-", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0" +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..5dd2f5e700903dca2315324c96b97e7dde443f0a GIT binary patch literal 123172 zcmeI)Z&b~99Ki83)FGAmlRvAN#6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 0000000000000000000000000000000000000000..8992014cfbdedd74a09545e1bbe0d776210621b5 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json new file mode 100644 index 000000000..66333fe0d --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json @@ -0,0 +1,67 @@ +{ + "AcquisitionMatrixPE": 64, + "AcquisitionNumber": 1, + "BaseResolution": 64, + "BodyPartExamined": "BRAIN", + "ConsistencyInfo": "N4_VE11C_LATEST_20160120", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20180622 GCC6.3.0", + "EchoTime": 0.004, + "FlipAngle": 60, + "ImageOrientationPatientDICOM": [ + 1, + 0, + 0, + 0, + 1, + 0 + ], + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND" + ], + "InPlanePhaseEncodingDirectionDICOM": "COL", + "InstitutionName": "HUP6", + "MRAcquisitionType": "2D", + "MagneticFieldStrength": 3, + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "Modality": "MR", + "PartialFourier": 0.75, + "PatientPosition": "HFS", + "PercentPhaseFOV": 100, + "PhaseEncodingDirection": "j-", + "PhaseEncodingSteps": 48, + "PhaseResolution": 1, + "PixelBandwidth": 500, + "ProtocolName": "B0map_v4", + "PulseSequenceDetails": "%SiemensSeq%_gre_field_mapping", + "ReceiveCoilActiveElements": "HEA;HEP", + "ReceiveCoilName": "Head_32", + "ReconMatrixPE": 64, + "RepetitionTime": 1.5, + "SAR": 0.0935879, + "ScanOptions": "PFP_FS", + "ScanningSequence": "GR", + "SequenceName": "_fm2d2", + "SequenceVariant": "SP", + "SeriesDescription": "B0map_v4", + "SeriesNumber": 7, + "ShimSetting": [ + 1747, + -3883, + -285, + 583, + 125, + -23, + -45, + -40 + ], + "SliceThickness": 4, + "SoftwareVersions": "syngo_MR_E11", + "SpacingBetweenSlices": 4, + "StationName": "HUP_FNDBA_MR2", + "TxRefAmp": 220.327 +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a7f44f4d5dcb18c14bd616af8cca0d868579d06 GIT binary patch literal 2107 zcmb2|=HTcOua9T?UtF4`>m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..413d4b247 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHO$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 0000000000000000000000000000000000000000..8992014cfbdedd74a09545e1bbe0d776210621b5 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json new file mode 100644 index 000000000..66333fe0d --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json @@ -0,0 +1,67 @@ +{ + "AcquisitionMatrixPE": 64, + "AcquisitionNumber": 1, + "BaseResolution": 64, + "BodyPartExamined": "BRAIN", + "ConsistencyInfo": "N4_VE11C_LATEST_20160120", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20180622 GCC6.3.0", + "EchoTime": 0.004, + "FlipAngle": 60, + "ImageOrientationPatientDICOM": [ + 1, + 0, + 0, + 0, + 1, + 0 + ], + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND" + ], + "InPlanePhaseEncodingDirectionDICOM": "COL", + "InstitutionName": "HUP6", + "MRAcquisitionType": "2D", + "MagneticFieldStrength": 3, + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "Modality": "MR", + "PartialFourier": 0.75, + "PatientPosition": "HFS", + "PercentPhaseFOV": 100, + "PhaseEncodingDirection": "j-", + "PhaseEncodingSteps": 48, + "PhaseResolution": 1, + "PixelBandwidth": 500, + "ProtocolName": "B0map_v4", + "PulseSequenceDetails": "%SiemensSeq%_gre_field_mapping", + "ReceiveCoilActiveElements": "HEA;HEP", + "ReceiveCoilName": "Head_32", + "ReconMatrixPE": 64, + "RepetitionTime": 1.5, + "SAR": 0.0935879, + "ScanOptions": "PFP_FS", + "ScanningSequence": "GR", + "SequenceName": "_fm2d2", + "SequenceVariant": "SP", + "SeriesDescription": "B0map_v4", + "SeriesNumber": 7, + "ShimSetting": [ + 1747, + -3883, + -285, + 583, + 125, + -23, + -45, + -40 + ], + "SliceThickness": 4, + "SoftwareVersions": "syngo_MR_E11", + "SpacingBetweenSlices": 4, + "StationName": "HUP_FNDBA_MR2", + "TxRefAmp": 220.327 +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a7f44f4d5dcb18c14bd616af8cca0d868579d06 GIT binary patch literal 2107 zcmb2|=HTcOua9T?UtF4`>m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..6808f4d64 --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHO$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 0000000000000000000000000000000000000000..8992014cfbdedd74a09545e1bbe0d776210621b5 GIT binary patch literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json new file mode 100644 index 000000000..66333fe0d --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json @@ -0,0 +1,67 @@ +{ + "AcquisitionMatrixPE": 64, + "AcquisitionNumber": 1, + "BaseResolution": 64, + "BodyPartExamined": "BRAIN", + "ConsistencyInfo": "N4_VE11C_LATEST_20160120", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20180622 GCC6.3.0", + "EchoTime": 0.004, + "FlipAngle": 60, + "ImageOrientationPatientDICOM": [ + 1, + 0, + 0, + 0, + 1, + 0 + ], + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND" + ], + "InPlanePhaseEncodingDirectionDICOM": "COL", + "InstitutionName": "HUP6", + "MRAcquisitionType": "2D", + "MagneticFieldStrength": 3, + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "Modality": "MR", + "PartialFourier": 0.75, + "PatientPosition": "HFS", + "PercentPhaseFOV": 100, + "PhaseEncodingDirection": "j-", + "PhaseEncodingSteps": 48, + "PhaseResolution": 1, + "PixelBandwidth": 500, + "ProtocolName": "B0map_v4", + "PulseSequenceDetails": "%SiemensSeq%_gre_field_mapping", + "ReceiveCoilActiveElements": "HEA;HEP", + "ReceiveCoilName": "Head_32", + "ReconMatrixPE": 64, + "RepetitionTime": 1.5, + "SAR": 0.0935879, + "ScanOptions": "PFP_FS", + "ScanningSequence": "GR", + "SequenceName": "_fm2d2", + "SequenceVariant": "SP", + "SeriesDescription": "B0map_v4", + "SeriesNumber": 7, + "ShimSetting": [ + 1747, + -3883, + -285, + 583, + 125, + -23, + -45, + -40 + ], + "SliceThickness": 4, + "SoftwareVersions": "syngo_MR_E11", + "SpacingBetweenSlices": 4, + "StationName": "HUP_FNDBA_MR2", + "TxRefAmp": 220.327 +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a7f44f4d5dcb18c14bd616af8cca0d868579d06 GIT binary patch literal 2107 zcmb2|=HTcOua9T?UtF4`>m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..543f6bbf7 --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHO$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_ Date: Thu, 8 Oct 2020 12:12:38 -0400 Subject: [PATCH 06/41] rename_files function --- bond/bond.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 14ab03369..e57c71b41 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1,15 +1,23 @@ """Main module.""" +import pathlib + class BOnD(object): def __init__(self, data_root): self.path = data_root - + def fieldmaps_ok(self): pass - def rename_files(self, pattern, replacement): - pass + def rename_files(self, path_to_dir, pattern, replacement): + for path in pathlib.Path(path_to_dir).iterdir(): + if path.is_file(): + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(pathlib.Path(directory, new_name)) def find_param_sets(self, pattern): pass From 04e8386723eddafb96e9b9af087a56cca32e0c8b Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 12:17:46 -0400 Subject: [PATCH 07/41] update tests --- ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes ...sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 176 -> 0 bytes ...b-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 176 -> 0 bytes ...sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes tests/test_bond.py | 43 ++++++++---------- 5 files changed, 20 insertions(+), 23 deletions(-) delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-02/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 8992014cfbdedd74a09545e1bbe0d776210621b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ diff --git a/bond/testdata/complete/sub-02/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-02/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 8992014cfbdedd74a09545e1bbe0d776210621b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c 5 -def test_synthetic(bids_data): - assert 1 == 1 - assert True - assert op.exists(op.join(bids_data, "bids-examples-master/synthetic/")) - -def test_fill_metadata(bids_data): +""" +def test_fill_metadata(tmp_path): + data_root = tmp_path / "testdata" + shutil.copytree(TEST_DATA, str(data_root)) data_root = op.join(bids_data + "/incomplete/fill-metadata") my_bond = bond.BOnD(data_root) # fill_metadata should add metadata elements to the json sidecar @@ -70,9 +61,13 @@ def test_detect_unique_parameter_sets(bids_data): assert len(true_combinations) == len(combinations) +""" + -def test_rename_files(bids_data): - data_root = op.join(bids_data + "/incomplete/to-rename") +def test_rename_files(tmp_path): + data_root = tmp_path / "testdata" + shutil.copytree(TEST_DATA, str(data_root)) + data_root = str(data_root / "complete") my_bond = bond.BOnD(data_root) original_suffix = "_run-01_bold" @@ -88,6 +83,7 @@ def test_rename_files(bids_data): assert not glob("*" + renamed_suffix + "*") +""" def test_fieldmap_exists(bids_data): ok_data_root = op.join(bids_data + "/complete/fieldmaps") not_ok_data_root = op.join(bids_data + "/incomplete/fieldmaps") @@ -97,3 +93,4 @@ def test_fieldmap_exists(bids_data): not_ok_bond = bond.BOnD(not_ok_data_root) assert not not_ok_bond.fieldmaps_ok() +""" From 3477bbcc73a908c58188b1b2355033a6bc41f504 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Thu, 8 Oct 2020 13:56:55 -0400 Subject: [PATCH 08/41] rename_files now performs find/replace onall path names in a BIDS directory --- bond/bond.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index e57c71b41..0c0168337 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -9,15 +9,22 @@ def __init__(self, data_root): def fieldmaps_ok(self): pass - - def rename_files(self, path_to_dir, pattern, replacement): - for path in pathlib.Path(path_to_dir).iterdir(): - if path.is_file(): - old_name = path.stem - old_ext = path.suffix - directory = path.parent - new_name = old_name.replace(pattern, replacement) + old_ext - path.rename(pathlib.Path(directory, new_name)) + + def rename_files(self, bids_dir, pattern, replacement): + # This function performs find/replace on path names in a BIDS directory + # @Params + # - bids_dir: a string contianing the path to the bids directory inside which we want to change files + # - pattern: the substring of the file we would like to replace + # - replacement: the substring that will replace "pattern" + # @Returns + # - None + files_and_dirs = Path(bids_dir).rglob('*') + for path in files_and_dirs: + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(pathlib.Path(directory, new_name)) def find_param_sets(self, pattern): pass From 3dad96091088755dd07303ae0a0d1f36ecf21e0e Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Thu, 8 Oct 2020 14:00:31 -0400 Subject: [PATCH 09/41] function has been tested on testdata --- notebooks/rename_files_work.ipynb | 446 ++++++++++++++++++++++++++++++ 1 file changed, 446 insertions(+) create mode 100644 notebooks/rename_files_work.ipynb diff --git a/notebooks/rename_files_work.ipynb b/notebooks/rename_files_work.ipynb new file mode 100644 index 000000000..ddea8bc62 --- /dev/null +++ b/notebooks/rename_files_work.ipynb @@ -0,0 +1,446 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "happy.json\n" + ] + } + ], + "source": [ + "# TEST BED \n", + "\n", + "test = \"happy.py\"\n", + "new = test.replace(\".py\", \".json\")\n", + "print(new)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import sys \n", + "sys.path.append(\"..\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/Covitz/BOnD/notebooks/testdata'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# USE THIS BEFORE TESTING! \n", + "\n", + "from pathlib import Path \n", + "import shutil\n", + "import os\n", + "\n", + "from pkg_resources import resource_filename as pkgrf \n", + "\n", + "# returns stirng path to testdata\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "# should give you the full path \n", + "tmp_path = Path().resolve()\n", + "#print(tmp_path)\n", + "\n", + "# dest path\n", + "data_root = tmp_path / \"testdata\"\n", + "\n", + "# ensure path does not already exist in cwd\n", + "if data_root.exists():\n", + " shutil.rmtree(str(data_root))\n", + "\n", + "# equivalent of command line \"cp\"\n", + "cwd = shutil.copytree(TEST_DATA, str(data_root))\n", + "\n", + "cwd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testdata\n", + "testdata/complete\n", + "testdata/complete/sub-01\n", + "testdata/complete/sub-01/ses-phdiff\n", + "testdata/complete/sub-01/ses-phdiff/dwi\n", + "testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-01/ses-phdiff/anat\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/func\n", + "testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/README\n", + "testdata/complete/dataset_description.json\n", + "testdata/complete/sub-02\n", + "testdata/complete/sub-02/ses-phdiff\n", + "testdata/complete/sub-02/ses-phdiff/dwi\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-02/ses-phdiff/anat\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", + "testdata/complete/sub-02/ses-phdiff/func\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03\n", + "testdata/complete/sub-03/ses-phdiff\n", + "testdata/complete/sub-03/ses-phdiff/dwi\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-03/ses-phdiff/fmap\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/anat\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/func\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + ] + } + ], + "source": [ + "! find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import glob \n", + "import os\n", + "\n", + "\n", + "\n", + "\n", + "for path in pathlib.Path(\"/Users/Covitz/BOnD/data/sub-1832999514/ses-PNC2/func/\").iterdir():\n", + " if path.is_file():\n", + " old_name = path.stem \n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " new_name = \"A_\" + old_name + old_ext\n", + " path.rename(pathlib.Path(directory, new_name))\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# @Params\n", + "# - path: a string contianing the path to the directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files_old(files, pattern, replacement):\n", + " # what are \"pattern\" and \"replacement\"\n", + " # if you want to do a string replace, \n", + " # you need the sub string that needs to be added to the file \n", + " # and the portion you want cut\n", + " # but before you do the replace, shouldn't you run isValid() on the new filename? \n", + " new_files = []\n", + " for file in files:\n", + " new_filename = file.replace(pattern, replacement)\n", + " os.rename(file, new_filename)\n", + " \n", + " #if isvalid(test_filename) == True:\n", + " # new_file = test_filename\n", + " #else: \n", + " # exception will be raised inside the function isValid \n", + " # print(\"Invalid Filename\")\n", + " return new_files \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files_1(path_to_dir, pattern, replacement):\n", + " for path in pathlib.Path(path_to_dir).iterdir():\n", + " if path.is_file():\n", + " old_name = path.stem \n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " new_name = old_name.replace(pattern, replacement) + old_ext\n", + " path.rename(pathlib.Path(directory, new_name))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the bids directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files(bids_dir, pattern, replacement):\n", + " files_and_dirs = Path(bids_dir).rglob('*')\n", + " for path in files_and_dirs:\n", + " old_name = path.stem \n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " new_name = old_name.replace(pattern, replacement) + old_ext\n", + " path.rename(pathlib.Path(directory, new_name))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "testdata\n", + "testdata/complete\n", + "testdata/complete/README\n", + "testdata/complete/dataset_description.json\n", + "testdata/complete/sub-001\n", + "testdata/complete/sub-001/ses-phdiff\n", + "testdata/complete/sub-001/ses-phdiff/dwi\n", + "testdata/complete/sub-001/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-001/ses-phdiff/fmap\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-001/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-001/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-001/ses-phdiff/anat\n", + "testdata/complete/sub-001/ses-phdiff/anat/sub-001_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-001/ses-phdiff/anat/sub-001_ses-phdiff_T1w.json\n", + "testdata/complete/sub-001/ses-phdiff/func\n", + "testdata/complete/sub-001/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-001/ses-phdiff/func/sub-001_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-001/ses-phdiff/func/sub-001_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-02\n", + "testdata/complete/sub-02/ses-phdiff\n", + "testdata/complete/sub-02/ses-phdiff/dwi\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-02/ses-phdiff/anat\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", + "testdata/complete/sub-02/ses-phdiff/func\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03\n", + "testdata/complete/sub-03/ses-phdiff\n", + "testdata/complete/sub-03/ses-phdiff/dwi\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-03/ses-phdiff/fmap\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/anat\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/func\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + ] + } + ], + "source": [ + "import glob \n", + "import pathlib \n", + "\n", + "# testing out our function rename_files \n", + "# changes all filenames in all_files containing substrings \"PNC2\" to \"PNC20\" \n", + "\n", + "#root_dir = \"/Users/Covitz/BOnD/data/sub-1832999514/ses-PNC2/func/\"\n", + "\n", + "#rename_files(root_dir, \"PNC2\", \"PNC02\")\n", + "\n", + "# path to complete BIDS data\n", + "bids_dir = cwd + \"/complete\"\n", + "print(type(bids_dir))\n", + "p = Path(bids_dir)\n", + "\n", + "\n", + "rename_files(bids_dir, \"01\", \"001\")\n", + "\n", + "\n", + "! find testdata\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# PROCESS NOTES \n", + "\n", + "# in BIDS, want to replace everything up to the BIDS root \n", + "# don't want to replace all filenames up to the BIDS root \n", + "\n", + "# could have a rename subject funciton and a rename session function\n", + "# also have a rename files funciton \n", + "\n", + "# wants a single function that lets you replace any part of the string \n", + "\n", + "# pathlib.rglob - like \"find\" in the command line\n", + "# bids_dir.rglob\n", + "# pybids.parsentities - if not valid BIDS, will get error from parse entities \n", + "\n", + "# replace directory names and filenames " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 841ac755813401d00cc694417aa9fb2c31f25308 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Thu, 8 Oct 2020 15:08:00 -0400 Subject: [PATCH 10/41] using member var --- bond/bond.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 0c0168337..a3831633c 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -10,7 +10,7 @@ def __init__(self, data_root): def fieldmaps_ok(self): pass - def rename_files(self, bids_dir, pattern, replacement): + def rename_files(self, pattern, replacement): # This function performs find/replace on path names in a BIDS directory # @Params # - bids_dir: a string contianing the path to the bids directory inside which we want to change files @@ -18,7 +18,7 @@ def rename_files(self, bids_dir, pattern, replacement): # - replacement: the substring that will replace "pattern" # @Returns # - None - files_and_dirs = Path(bids_dir).rglob('*') + files_and_dirs = Path(self.path).rglob('*') for path in files_and_dirs: old_name = path.stem old_ext = path.suffix From 2c4f357a95285b666084af6462935898eab78b86 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 15:09:07 -0400 Subject: [PATCH 11/41] add import to init --- bond/__init__.py | 2 ++ notebooks/FirstProofofConcept.ipynb | 2 +- tests/__init__.py | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) delete mode 100644 tests/__init__.py diff --git a/bond/__init__.py b/bond/__init__.py index edfe0efb6..cbfe4180a 100644 --- a/bond/__init__.py +++ b/bond/__init__.py @@ -3,3 +3,5 @@ __author__ = """Matt Cieslak""" __email__ = 'mattcieslak@gmail.com' __version__ = '0.1.0' + +from .bond import BOnD diff --git a/notebooks/FirstProofofConcept.ipynb b/notebooks/FirstProofofConcept.ipynb index 1252a1f10..6b602aafd 100644 --- a/notebooks/FirstProofofConcept.ipynb +++ b/notebooks/FirstProofofConcept.ipynb @@ -124,7 +124,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.7" + "version": "3.8.5" } }, "nbformat": 4, diff --git a/tests/__init__.py b/tests/__init__.py deleted file mode 100644 index db3e3403d..000000000 --- a/tests/__init__.py +++ /dev/null @@ -1 +0,0 @@ -"""Unit test package for bond.""" From c3611290cf33463463c09d300fc1ead7e396a3cb Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 15:13:06 -0400 Subject: [PATCH 12/41] test commit --- bond/bond.py | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index a3831633c..b4aca9fde 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1,33 +1,20 @@ """Main module.""" -import pathlib - class BOnD(object): def __init__(self, data_root): self.path = data_root - + def fieldmaps_ok(self): pass - + def rename_files(self, pattern, replacement): - # This function performs find/replace on path names in a BIDS directory - # @Params - # - bids_dir: a string contianing the path to the bids directory inside which we want to change files - # - pattern: the substring of the file we would like to replace - # - replacement: the substring that will replace "pattern" - # @Returns - # - None - files_and_dirs = Path(self.path).rglob('*') - for path in files_and_dirs: - old_name = path.stem - old_ext = path.suffix - directory = path.parent - new_name = old_name.replace(pattern, replacement) + old_ext - path.rename(pathlib.Path(directory, new_name)) + pass def find_param_sets(self, pattern): pass def fill_metadata(self, pattern, metadata): pass +if __name__ == '__main__': + pass From c5e6fd33db66384d0bf1b774f7ce80ce32f540b2 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Thu, 8 Oct 2020 15:18:02 -0400 Subject: [PATCH 13/41] should be here now --- bond/bond.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/bond/bond.py b/bond/bond.py index b4aca9fde..3ba0870f1 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -9,7 +9,20 @@ def fieldmaps_ok(self): pass def rename_files(self, pattern, replacement): - pass + # @Params + # - path: a string contianing the path to the bids directory inside which we want to change files + # - pattern: the substring of the file we would like to replace + # - replacement: the substring that will replace "pattern" + # @Returns + # - None + def rename_files(self.path, pattern, replacement): + files_and_dirs = Path(self.path).rglob('*') + for path in files_and_dirs: + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(pathlib.Path(directory, new_name)) def find_param_sets(self, pattern): pass From 95e2d26ad7a69047308d94b7ab7ea018d2b6c3fd Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 15:21:15 -0400 Subject: [PATCH 14/41] passes a test!!! --- bond/bond.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 3ba0870f1..7454a909e 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1,4 +1,6 @@ """Main module.""" +from pathlib import Path + class BOnD(object): @@ -10,19 +12,18 @@ def fieldmaps_ok(self): def rename_files(self, pattern, replacement): # @Params - # - path: a string contianing the path to the bids directory inside which we want to change files + # - path: a string contianing the path to the bids directory inside which we want to change files # - pattern: the substring of the file we would like to replace # - replacement: the substring that will replace "pattern" # @Returns - # - None - def rename_files(self.path, pattern, replacement): + # - None files_and_dirs = Path(self.path).rglob('*') for path in files_and_dirs: - old_name = path.stem + old_name = path.stem old_ext = path.suffix directory = path.parent new_name = old_name.replace(pattern, replacement) + old_ext - path.rename(pathlib.Path(directory, new_name)) + path.rename(Path(directory, new_name)) def find_param_sets(self, pattern): pass From 5f41043625b4da4b28edc9190016c508a7716ba0 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Thu, 8 Oct 2020 15:23:26 -0400 Subject: [PATCH 15/41] closes #8 --- bond/bond.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 7454a909e..e5f31cffb 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -30,5 +30,4 @@ def find_param_sets(self, pattern): def fill_metadata(self, pattern, metadata): pass -if __name__ == '__main__': - pass + From 92ae0193a0594e9c2fa91a9d95546e412034ee23 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Thu, 8 Oct 2020 16:53:38 -0400 Subject: [PATCH 16/41] remove hidden files --- .../._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes .../._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 176 -> 0 bytes ...._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 176 -> 0 bytes .../._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes .../._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes .../._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json | Bin 176 -> 0 bytes ...._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 176 -> 0 bytes .../._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json | Bin 176 -> 0 bytes 8 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 8992014cfbdedd74a09545e1bbe0d776210621b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ diff --git a/bond/testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 8992014cfbdedd74a09545e1bbe0d776210621b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0cEO*#}_ diff --git a/bond/testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 8992014cfbdedd74a09545e1bbe0d776210621b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aUBqY_#1$j2;dkJ5(HHS(y;)D1)zKw z#Rz090AirHRC0c Date: Thu, 8 Oct 2020 16:55:09 -0400 Subject: [PATCH 17/41] Add files via upload proof of concept for dictionary of bids filename info --- notebooks/PofC_Key_Values2.ipynb | 258 +++++++++++++++++++++++++++++++ 1 file changed, 258 insertions(+) create mode 100644 notebooks/PofC_Key_Values2.ipynb diff --git a/notebooks/PofC_Key_Values2.ipynb b/notebooks/PofC_Key_Values2.ipynb new file mode 100644 index 000000000..8c5654788 --- /dev/null +++ b/notebooks/PofC_Key_Values2.ipynb @@ -0,0 +1,258 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 2)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m pip install bids\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "# Install bids\n", + "pip install bids" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [], + "source": [ + "# Import modules\n", + "from bids import BIDSLayout\n", + "from bids.tests import get_test_data_path\n", + "from bids.layout import parse_file_entities\n", + "import os\n", + "import glob\n", + "import json" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = '/Users/krmurtha/Desktop/informatics/BOnD/'\n", + "bids_dir = 'data/'" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/anat', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-nofmap/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phdiff/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phdiff/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/anat', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phases/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phases/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bval', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bvec', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bval', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bvec', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json']\n" + ] + } + ], + "source": [ + "# use glob to list all of the files recursively\n", + "\n", + "all_files=glob.glob(root_dir + bids_dir + '**/**/**/*')\n", + "print(all_files)" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': 'PNC', 'session': 'pepolar'}\n" + ] + } + ], + "source": [ + "# use pybids to extract BIDS entities from single subject \n", + "\n", + "path = all_files[0]\n", + "dict1= parse_file_entities(path)\n", + "print(dict1)" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'fmap': 'phase2', 'datatype': 'fmap', 'extension': 'nii.gz'}\n" + ] + } + ], + "source": [ + "# test another example\n", + "\n", + "dict2= parse_file_entities(all_files[14])\n", + "print(dict2)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'nofmap'}, {'subject': 'PNC', 'session': 'phdiff'}, {'subject': 'PNC', 'session': 'phdiff'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'phases'}, {'subject': 'PNC', 'session': 'phases'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude2', 'fmap': 'magnitude2', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude2', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'fmap': 'phase2', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude1', 'fmap': 'magnitude1', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude1', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase1', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase1', 'fmap': 'phase1', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'reconstruction': 'refaced', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'reconstruction': 'refaced', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'idemo', 'suffix': 'idemo', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'frac2back', 'suffix': 'frac2back', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'idemo', 'suffix': 'idemo', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'frac2back', 'suffix': 'frac2back', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bval'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bvec'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bval'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bvec'}, {'subject': '1832999514', 'session': 'PNC1', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'json'}]\n" + ] + } + ], + "source": [ + "entities = []\n", + "#initialize list\n", + "\n", + "for file in all_files:\n", + "#for each file in the list, parse the information into a dictionary and add it to the list we just initalized\n", + " result = parse_file_entities(file) \n", + " \n", + " entities.append(result)\n", + " #entities.add(string_result)\n", + "print(entities)" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': ['1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514'], 'session': ['PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1'], 'suffix': ['magnitude2', 'phase2', 'magnitude2', 'phase2', 'magnitude1', 'magnitude1', 'phase1', 'phase1', 'T1w', 'T1w', 'T1w', 'T1w', 'idemo', 'frac2back', 'idemo', 'bold', 'frac2back', 'bold', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'bold', 'bold'], 'fmap': ['magnitude2', 'phase2', 'magnitude1', 'phase1'], 'datatype': ['fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'anat', 'anat', 'anat', 'anat', 'func', 'func', 'func', 'func', 'func', 'func', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'func', 'func'], 'extension': ['nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'json', 'bval', 'json', 'bvec', 'nii.gz', 'nii.gz', 'json', 'bval', 'bvec', 'nii.gz', 'json'], 'reconstruction': ['refaced', 'refaced'], 'task': ['idemo', 'frac2back', 'idemo', 'rest', 'frac2back', 'rest', 'rest', 'rest'], 'acquisition': ['singleband', 'singleband', 'singleband', 'singleband'], 'run': [2, 1, 2, 1, 2, 2, 1, 1]}\n" + ] + } + ], + "source": [ + "\n", + "# loop through files to create a bigger dictionary of discrete keys, adding each value to a list \n", + "dictionary = {}\n", + "# initalize a new dictionary\n", + "for e in entities:\n", + "# for each dictionary in the list we created above \n", + " for k,v in e.items():\n", + " #for each set of key-value pairs in each dictionary \n", + " #print(k,v)\n", + " if k not in dictionary.keys():\n", + " #if the key is not in the larger dictionary keys, set the value as value, but in a list\n", + " dictionary[k]=[v]\n", + " else: \n", + " #if the key is in the dictionary, add the new value to the existing value list \n", + " dictionary[k].append(v)\n", + " \n", + " \n", + "print(dictionary) " + ] + }, + { + "cell_type": "code", + "execution_count": 210, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'1832999514': 28}, {'PNC2': 18, 'PNC1': 10}, {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, {'refaced': 2}, {'idemo': 2, 'frac2back': 2, 'rest': 4}, {'singleband': 4}, {2: 4, 1: 4}]\n" + ] + } + ], + "source": [ + "#create one dictionary value per key in original dictionary \n", + "# loop through dictionary values and create dictionaries for instances of each list \n", + "l_dicts = [] \n", + "for key in dictionary.keys():\n", + "# for each list that is the value of the big dictionary:\n", + " #print (key)\n", + " counts = {} #initialize a new dictionary for # of instances \n", + " l_labels = dictionary[key]\n", + " #print(l_labels)\n", + " for item in l_labels:\n", + " #for each item in those lists \n", + " if item not in counts.keys():\n", + " #if the item is not in the new dictionary, set it to 1\n", + " counts[item]= 1 \n", + " else:\n", + " #if it already exists, add 1\n", + " counts[item]+= 1\n", + " l_dicts.append(counts)\n", + "#list of dictionaries where KEYS: BIDS entities values and VALUES: instances of that key \n", + "print(l_dicts)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': {'1832999514': 28}, 'session': {'PNC2': 18, 'PNC1': 10}, 'suffix': {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, 'fmap': {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, 'datatype': {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, 'extension': {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, 'reconstruction': {'refaced': 2}, 'task': {'idemo': 2, 'frac2back': 2, 'rest': 4}, 'acquisition': {'singleband': 4}, 'run': {2: 4, 1: 4}}\n" + ] + } + ], + "source": [ + "#make a new dictionary with KEYS: BIDS entities (ie: subject, session, etc) and VALUES: dicionaries of ID's and instances\n", + "\n", + "new_dictionary = {}\n", + "counter = 0 \n", + "for key in dictionary.keys():\n", + " #assign values from l_dicts to each key \n", + " new_dictionary[key] = l_dicts[counter]\n", + " counter += 1\n", + "\n", + "print(new_dictionary)\n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From ddd6c0a0ad84beb112d1592d6eb3b9fb3165b455 Mon Sep 17 00:00:00 2001 From: jaberbasma Date: Thu, 8 Oct 2020 18:04:13 -0400 Subject: [PATCH 18/41] basma's notebook to work with json metadata --- notebooks/JSON_PoC_read_write.ipynb | 274 ++++++++++++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 notebooks/JSON_PoC_read_write.ipynb diff --git a/notebooks/JSON_PoC_read_write.ipynb b/notebooks/JSON_PoC_read_write.ipynb new file mode 100644 index 000000000..2df0b79c1 --- /dev/null +++ b/notebooks/JSON_PoC_read_write.ipynb @@ -0,0 +1,274 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this proof of concept we will read & write JSON files in Jupyter notebook. \n", + "\n", + "1. display the data in the sidecar []\n", + "2. edit this data []\n", + "3. check that the sidecar will write valid JSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#import json module to be able to read & write json files \n", + "import json" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first part will include displaying the data in the sidecar by reading the JSON files " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#open the json file in your directory \n", + "\n", + "file = open('/Users/bjaber/Desktop/package_project/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#use json.load command to read the file. \n", + "\n", + "json_data = json.load(file)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'AcquisitionDateTime': '2010-02-18T19:45:55.120000',\n", + " 'AcquisitionMatrixPE': 64,\n", + " 'AcquisitionNumber': 1,\n", + " 'AcquisitionTime': '19:45:55.120000',\n", + " 'BandwidthPerPixelPhaseEncode': 28.409,\n", + " 'BaseResolution': 64,\n", + " 'ConversionSoftware': 'dcm2niix',\n", + " 'ConversionSoftwareVersion': 'v1.0.20190410 (JP2:OpenJPEG) GCC4.8.4',\n", + " 'DeidentificationMethod': 'Penn_BSC_profile_v1.0',\n", + " 'DerivedVendorReportedEchoSpacing': 0.000550002,\n", + " 'DeviceSerialNumber': '35069',\n", + " 'EchoTime': 0.032,\n", + " 'EffectiveEchoSpacing': 0.000550002,\n", + " 'FlipAngle': 90,\n", + " 'ImageOrientationPatientDICOM': [1, 0, 0, 0, 1, 0],\n", + " 'ImageType': ['ORIGINAL', 'PRIMARY', 'M', 'ND', 'MOSAIC'],\n", + " 'ImagingFrequency': 123.259,\n", + " 'InPlanePhaseEncodingDirectionDICOM': 'COL',\n", + " 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_20DBC9_Pennsylvania_US_19104',\n", + " 'InstitutionName': 'HUP6',\n", + " 'MRAcquisitionType': '2D',\n", + " 'MagneticFieldStrength': 3,\n", + " 'Manufacturer': 'Siemens',\n", + " 'ManufacturersModelName': 'TrioTim',\n", + " 'Modality': 'MR',\n", + " 'PartialFourier': 1,\n", + " 'PatientPosition': 'HFS',\n", + " 'PatientSex': 'M',\n", + " 'PercentPhaseFOV': 100,\n", + " 'PhaseEncodingDirection': 'j-',\n", + " 'PhaseEncodingSteps': 64,\n", + " 'PhaseResolution': 1,\n", + " 'PixelBandwidth': 2056,\n", + " 'ProcedureStepDescription': 'mri_brain',\n", + " 'ProtocolName': 'bbl1_restbold1_124',\n", + " 'PulseSequenceDetails': '%SiemensSeq%_ep2d_bold',\n", + " 'ReceiveCoilName': '32Ch_Head',\n", + " 'ReconMatrixPE': 64,\n", + " 'RepetitionTime': 3,\n", + " 'SAR': 0.169109,\n", + " 'ScanOptions': 'FS',\n", + " 'ScanningSequence': 'EP',\n", + " 'SequenceName': 'epfid2d1_64',\n", + " 'SequenceVariant': 'SK',\n", + " 'SeriesDescription': 'bbl1_restbold1_124',\n", + " 'SeriesInstanceUID': '1.3.12.2.1107.5.2.32.35069.2010021819452274312204584.0.0.0',\n", + " 'SeriesNumber': 12,\n", + " 'ShimSetting': [4030, -6590, -3870, 1022, -21, 207, -186, 41],\n", + " 'SliceThickness': 3,\n", + " 'SliceTiming': [1.505,\n", + " 0,\n", + " 1.57,\n", + " 0.065,\n", + " 1.635,\n", + " 0.13,\n", + " 1.7,\n", + " 0.195,\n", + " 1.7675,\n", + " 0.26,\n", + " 1.8325,\n", + " 0.325,\n", + " 1.8975,\n", + " 0.3925,\n", + " 1.9625,\n", + " 0.4575,\n", + " 2.0275,\n", + " 0.5225,\n", + " 2.095,\n", + " 0.5875,\n", + " 2.16,\n", + " 0.6525,\n", + " 2.225,\n", + " 0.72,\n", + " 2.29,\n", + " 0.785,\n", + " 2.355,\n", + " 0.85,\n", + " 2.4225,\n", + " 0.915,\n", + " 2.4875,\n", + " 0.98,\n", + " 2.5525,\n", + " 1.0475,\n", + " 2.6175,\n", + " 1.1125,\n", + " 2.6825,\n", + " 1.1775,\n", + " 2.7475,\n", + " 1.2425,\n", + " 2.815,\n", + " 1.3075,\n", + " 2.88,\n", + " 1.375,\n", + " 2.945,\n", + " 1.44],\n", + " 'SoftwareVersions': 'syngo_MR_B17',\n", + " 'SpacingBetweenSlices': 3,\n", + " 'StationName': 'hup6',\n", + " 'StudyID': '6318483',\n", + " 'StudyInstanceUID': '1.2.840.113745.101000.1002000.40224.6628.27668004',\n", + " 'TaskName': 'rest',\n", + " 'TotalReadoutTime': 0.0346501,\n", + " 'TxRefAmp': 315.784}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Uncomment below to view data\n", + "json_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following part is used to edit JSON file data. \n", + "\n", + "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Here we change the value for AcquisionNumber from 1 to 2. \n", + "json_data[\"AcquisitionNumber\"] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view edited data\n", + "#json_data" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "#Reverting back to original data\n", + "json_data[\"AcquisitionNumber\"] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Checking that the sidecare will write valid JSON files " + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "def validateJSON(json_data): \n", + " try: \n", + " json.loads(json_data)\n", + " except ValueError as err: \n", + " return False \n", + " return True " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "validJsonData = " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "json.dumps = writes valid json no matter what because it will turn it into a string " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From eddd31dca4c5c663430d5fde367074c72af6eff7 Mon Sep 17 00:00:00 2001 From: Tinashe Tapera Date: Thu, 8 Oct 2020 18:11:58 -0400 Subject: [PATCH 19/41] fieldmaps PofC --- .gitignore | 1 + bond/testdata/complete/README | 1 - .../complete/dataset_description.json | 7 - .../anat/sub-01_ses-phdiff_T1w.json | 33 --- .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----- .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 ----- ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 ----- ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ----- .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ----- .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 ----- .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 --- .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----- .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 ----- ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 ----- ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ----- .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 78 ----- .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 ----- .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 --- .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----- .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 ----- ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 ----- ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ----- .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ----- .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 ----- .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes notebooks/Fieldmaps.ipynb | 267 ++++++++++++++++++ 52 files changed, 268 insertions(+), 1424 deletions(-) delete mode 100644 bond/testdata/complete/README delete mode 100644 bond/testdata/complete/dataset_description.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json delete mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json delete mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json delete mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz create mode 100644 notebooks/Fieldmaps.ipynb diff --git a/.gitignore b/.gitignore index ce29b82fd..7d6990f9e 100644 --- a/.gitignore +++ b/.gitignore @@ -133,3 +133,4 @@ dmypy.json # extra stuff data/* .DS_Store +testdata/ diff --git a/bond/testdata/complete/README b/bond/testdata/complete/README deleted file mode 100644 index 8cbaa34f6..000000000 --- a/bond/testdata/complete/README +++ /dev/null @@ -1 +0,0 @@ -Heavily downsampled CS-DSI testing datasets diff --git a/bond/testdata/complete/dataset_description.json b/bond/testdata/complete/dataset_description.json deleted file mode 100644 index 9ee88dbcc..000000000 --- a/bond/testdata/complete/dataset_description.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "BIDSVersion": "1.0.0", - "License": "BSD 3-clause", - "Name": "Heavily downsampled CS-DSI simulated data", - "ReferencesAndLinks": [], - "Authors": ["PennLINC", "PennBBL"] -} diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json deleted file mode 100644 index a86cdd647..000000000 --- a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "Manufacturer": "Siemens", - "ManufacturersModelName": "Prisma_fit", - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "DeviceSerialNumber": "167024", - "SoftwareVersions": "syngo_MR_E11", - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "ScanningSequence": "GR_IR", - "SequenceVariant": "SK_SP_MP", - "SeriesDescription": "ABCD_T1w_MPR_vNav", - "BodyPartExamined": "BRAIN", - "ProtocolName": "ABCD_T1w_MPR_vNav", - "SequenceName": "tfl3d1_16ns", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "M", - "ND", - "NORM" - ], - "AcquisitionTime": "16:15:31.770000", - "MagneticFieldStrength": 3, - "FlipAngle": 8, - "EchoTime": 0.0029, - "RepetitionTime": 2.5, - "InversionTime": 1.07, - "PhaseEncodingLines": 256, - "PhaseEncodingDirection": "i-", - "ConversionSoftware": "dcm2niix", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0" -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz deleted file mode 100644 index 5dd2f5e700903dca2315324c96b97e7dde443f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123172 zcmeI)Z&b~99Ki83)FGAmlRvAN#6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 413d4b247..000000000 --- a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 6808f4d64..000000000 --- a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 543f6bbf7..000000000 --- a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_ Date: Thu, 8 Oct 2020 20:18:12 -0400 Subject: [PATCH 20/41] re-adding testdata --- .gitignore | 1 - bond/testdata/complete/README | 1 + .../complete/dataset_description.json | 7 ++ .../anat/sub-01_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes notebooks/Fieldmaps.ipynb | 32 +++---- notebooks/testdata/complete/README | 1 + .../complete/dataset_description.json | 7 ++ .../anat/sub-01_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes 102 files changed, 2858 insertions(+), 23 deletions(-) create mode 100644 bond/testdata/complete/README create mode 100644 bond/testdata/complete/dataset_description.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz create mode 100644 notebooks/testdata/complete/README create mode 100644 notebooks/testdata/complete/dataset_description.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json create mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json create mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json create mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz diff --git a/.gitignore b/.gitignore index 7d6990f9e..ce29b82fd 100644 --- a/.gitignore +++ b/.gitignore @@ -133,4 +133,3 @@ dmypy.json # extra stuff data/* .DS_Store -testdata/ diff --git a/bond/testdata/complete/README b/bond/testdata/complete/README new file mode 100644 index 000000000..8cbaa34f6 --- /dev/null +++ b/bond/testdata/complete/README @@ -0,0 +1 @@ +Heavily downsampled CS-DSI testing datasets diff --git a/bond/testdata/complete/dataset_description.json b/bond/testdata/complete/dataset_description.json new file mode 100644 index 000000000..9ee88dbcc --- /dev/null +++ b/bond/testdata/complete/dataset_description.json @@ -0,0 +1,7 @@ +{ + "BIDSVersion": "1.0.0", + "License": "BSD 3-clause", + "Name": "Heavily downsampled CS-DSI simulated data", + "ReferencesAndLinks": [], + "Authors": ["PennLINC", "PennBBL"] +} diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json new file mode 100644 index 000000000..a86cdd647 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json @@ -0,0 +1,33 @@ +{ + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "DeviceSerialNumber": "167024", + "SoftwareVersions": "syngo_MR_E11", + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "ScanningSequence": "GR_IR", + "SequenceVariant": "SK_SP_MP", + "SeriesDescription": "ABCD_T1w_MPR_vNav", + "BodyPartExamined": "BRAIN", + "ProtocolName": "ABCD_T1w_MPR_vNav", + "SequenceName": "tfl3d1_16ns", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND", + "NORM" + ], + "AcquisitionTime": "16:15:31.770000", + "MagneticFieldStrength": 3, + "FlipAngle": 8, + "EchoTime": 0.0029, + "RepetitionTime": 2.5, + "InversionTime": 1.07, + "PhaseEncodingLines": 256, + "PhaseEncodingDirection": "i-", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0" +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..5dd2f5e700903dca2315324c96b97e7dde443f0a GIT binary patch literal 123172 zcmeI)Z&b~99Ki83)FGAmlRvAN#6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..413d4b247 --- /dev/null +++ b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..6808f4d64 --- /dev/null +++ b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..543f6bbf7 --- /dev/null +++ b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..413d4b247 --- /dev/null +++ b/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..6808f4d64 --- /dev/null +++ b/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..543f6bbf7 --- /dev/null +++ b/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_ Date: Fri, 9 Oct 2020 01:01:50 -0400 Subject: [PATCH 21/41] Add data with multiple parameter groups. --- bond/bond.py | 56 ++++++++++++- bond/testdata/complete/README | 3 +- bond/testdata/inconsistent/README | 10 +++ .../inconsistent/dataset_description.json | 7 ++ .../anat/sub-01_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 75 +++++++++++++++++ .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 ++++++++ .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 0 -> 123172 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 + .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 +++++++++++++++++ .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 0 -> 30889 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 +++++++++++++++ ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 0 -> 2107 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ++++++++++++++++ .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 0 -> 2106 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ++++++++++++++++++ .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 0 -> 1502 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 +++++++++++++++++ .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 0 -> 30889 bytes 52 files changed, 1486 insertions(+), 3 deletions(-) create mode 100644 bond/testdata/inconsistent/README create mode 100644 bond/testdata/inconsistent/dataset_description.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json create mode 100644 bond/testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz diff --git a/bond/bond.py b/bond/bond.py index e5f31cffb..1a4adc029 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1,6 +1,10 @@ """Main module.""" from pathlib import Path +import bids +bids.config.set_option('extension_initial_dot', True) +from bids.util import parse_file_entities +NON_KEY_ENTITIES = set(["subject", "session", "extension"]) class BOnD(object): @@ -11,12 +15,14 @@ def fieldmaps_ok(self): pass def rename_files(self, pattern, replacement): + """ # @Params # - path: a string contianing the path to the bids directory inside which we want to change files # - pattern: the substring of the file we would like to replace # - replacement: the substring that will replace "pattern" # @Returns # - None + """ files_and_dirs = Path(self.path).rglob('*') for path in files_and_dirs: old_name = path.stem @@ -25,9 +31,55 @@ def rename_files(self, pattern, replacement): new_name = old_name.replace(pattern, replacement) + old_ext path.rename(Path(directory, new_name)) - def find_param_sets(self, pattern): - pass + def get_param_groups(self, key_group): + key_entities = _key_group_to_entities(key_group) + matching_files = self.layout.get(return_type="file", scope="self", + **key_entities) + return _get_param_groups(matching_files) + + def get_key_groups(self): + key_groups = set() + for path in Path(self.path).rglob("*.*"): + if path.suffix == ".json": + continue + key_groups.update(_file_to_key_group(path),) + return sorted(key_groups) def fill_metadata(self, pattern, metadata): pass + +def _key_group_to_entities(key_group): + return dict([group.split("-") for group in key_group.split("_")]) + + +def _entities_to_key_group(entities): + group_keys = sorted(entities.keys() - NON_KEY_ENTITIES) + return "_".join( + ["{}-{}".format(key, entities[key]) for key in group_keys]) + + +def _file_to_key_group(filename): + entities = parse_file_entities(str(filename)) + return _entities_to_key_group(entities) + + +def _get_param_groups(files): + """Finds a list of *parameter groups* from a list of files. + + Parameters: + ----------- + + files : list + List of file names + + Returns: + -------- + + parameter_groups : list + A list of unique parameter groups + + For each file in `files`, find critical parameters for metadata. Then find + unique sets of these critical parameters. + """ + pass diff --git a/bond/testdata/complete/README b/bond/testdata/complete/README index 8cbaa34f6..37e15a422 100644 --- a/bond/testdata/complete/README +++ b/bond/testdata/complete/README @@ -1 +1,2 @@ -Heavily downsampled CS-DSI testing datasets +Heavily downsampled CS-DSI testing datasets. +This dataset is valid BIDS. diff --git a/bond/testdata/inconsistent/README b/bond/testdata/inconsistent/README new file mode 100644 index 000000000..f96d811a8 --- /dev/null +++ b/bond/testdata/inconsistent/README @@ -0,0 +1,10 @@ +Heavily downsampled CS-DSI testing datasets + +This data has had some parameters changed so that there are different +parameter groups in the same key groups. + +## Changes + + - sub-01_ses-phdiff_acq-HASC55AP_dwi: EchoTime set to 0.04 from 0.089 + - sub-02_ses-phdiff_task-rest_bold: Fieldmap has been removed + - sub-03_ses-phdiff_task-rest_bold: FlipAngle set to 70 from 90 diff --git a/bond/testdata/inconsistent/dataset_description.json b/bond/testdata/inconsistent/dataset_description.json new file mode 100644 index 000000000..9ee88dbcc --- /dev/null +++ b/bond/testdata/inconsistent/dataset_description.json @@ -0,0 +1,7 @@ +{ + "BIDSVersion": "1.0.0", + "License": "BSD 3-clause", + "Name": "Heavily downsampled CS-DSI simulated data", + "ReferencesAndLinks": [], + "Authors": ["PennLINC", "PennBBL"] +} diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json b/bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json new file mode 100644 index 000000000..a86cdd647 --- /dev/null +++ b/bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json @@ -0,0 +1,33 @@ +{ + "Manufacturer": "Siemens", + "ManufacturersModelName": "Prisma_fit", + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "DeviceSerialNumber": "167024", + "SoftwareVersions": "syngo_MR_E11", + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "ScanningSequence": "GR_IR", + "SequenceVariant": "SK_SP_MP", + "SeriesDescription": "ABCD_T1w_MPR_vNav", + "BodyPartExamined": "BRAIN", + "ProtocolName": "ABCD_T1w_MPR_vNav", + "SequenceName": "tfl3d1_16ns", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "M", + "ND", + "NORM" + ], + "AcquisitionTime": "16:15:31.770000", + "MagneticFieldStrength": 3, + "FlipAngle": 8, + "EchoTime": 0.0029, + "RepetitionTime": 2.5, + "InversionTime": 1.07, + "PhaseEncodingLines": 256, + "PhaseEncodingDirection": "i-", + "ConversionSoftware": "dcm2niix", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0" +} \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz b/bond/testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..5dd2f5e700903dca2315324c96b97e7dde443f0a GIT binary patch literal 123172 zcmeI)Z&b~99Ki83)FGAmlRvAN#6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..808322c4f --- /dev/null +++ b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.04, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..413d4b247 --- /dev/null +++ b/bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..bb7d0adb2 --- /dev/null +++ b/bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11" +} diff --git a/bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval new file mode 100644 index 000000000..551603c53 --- /dev/null +++ b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval @@ -0,0 +1 @@ +0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec new file mode 100644 index 000000000..d31e09213 --- /dev/null +++ b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec @@ -0,0 +1,3 @@ +0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 +0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 +0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json new file mode 100644 index 000000000..81d414f5c --- /dev/null +++ b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json @@ -0,0 +1,75 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "SeriesDescription": "ABCD_dMRI", + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j", + "SoftwareVersions": "syngo_MR_E11" +} \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/bond/testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..af8d3e5ac63c7935741be9a94f6df8164219aaec GIT binary patch literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc literal 0 HcmV?d00001 diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json new file mode 100644 index 000000000..543f6bbf7 --- /dev/null +++ b/bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json @@ -0,0 +1,78 @@ +{ + "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", + "DeviceSerialNumber": "167024", + "EffectiveEchoSpacing": 0.000689998, + "TotalReadoutTime": 0.0717598, + "ManufacturersModelName": "Prisma_fit", + "ProtocolName": "ABCD_dMRI", + "BandwidthPerPixelPhaseEncode": 10.352, + "PhaseEncodingLines": 140, + "RepetitionTime": 4.2, + "EchoTrainLength": 105, + "MagneticFieldStrength": 3, + "AcquisitionNumber": 1, + "InstitutionName": "HUP", + "BodyPartExamined": "BRAIN", + "ConversionSoftware": "dcm2niix", + "ScanningSequence": "EP", + "Manufacturer": "Siemens", + "FlipAngle": 90, + "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", + "SeriesDescription": "ABCD_dMRI", + "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", + "AcquisitionTime": "16:31:6.145000", + "SequenceName": "ep_b0", + "ImageType": [ + "ORIGINAL", + "PRIMARY", + "DIFFUSION", + "NONE", + "ND", + "MOSAIC" + ], + "EchoTime": 0.089, + "SequenceVariant": "SK_SP", + "SliceTiming": [ + 0.0, + 0.11666666666666667, + 0.23333333333333334, + 0.35, + 0.4666666666666667, + 0.5833333333333334, + 0.7, + 0.8166666666666667, + 0.9333333333333333, + 1.05, + 1.1666666666666667, + 1.2833333333333334, + 1.4, + 1.5166666666666666, + 1.6333333333333333, + 1.75, + 1.8666666666666667, + 1.9833333333333334, + 2.1, + 2.216666666666667, + 2.3333333333333335, + 2.45, + 2.566666666666667, + 2.6833333333333336, + 2.8, + 2.9166666666666665, + 3.033333333333333, + 3.15, + 3.2666666666666666, + 3.3833333333333333, + 3.5, + 3.6166666666666667, + 3.7333333333333334, + 3.85, + 3.966666666666667, + 4.083333333333333 + ], + "PhaseEncodingDirection": "j-", + "SoftwareVersions": "syngo_MR_E11", + "IntendedFor": [ + "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" + ] +} \ No newline at end of file diff --git a/bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/bond/testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..b60186d5ad8b1173eaee849a5a828e70f4aedc66 GIT binary patch literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_ Date: Fri, 9 Oct 2020 11:59:21 -0400 Subject: [PATCH 22/41] Update docs --- README.rst | 33 +++++++++++++-------------------- bond/bond.py | 2 +- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/README.rst b/README.rst index 1457a56b6..f10cfbaf8 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,6 @@ -==== -BOnD -==== +================== +BOnD: BIDS On Disk +================== .. image:: https://img.shields.io/pypi/v/bond.svg @@ -13,25 +13,18 @@ BOnD :target: https://bond.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status +``BOnD`` is designed to facilitate the curation and sanity-checking of BIDS +datasets that live on a hard drive. Its has many functions that help curators +follow the Three Steps of Curation. These steps are + 1. Ensure the data is valid BIDS. + 2. Detect potentially multiple *parameter groups* within *key groups* + 3. Test preprocessing pipelines on an example of each *parameter group*. -BIDS On Disk Editor +Step 1: Ensure the data is valid BIDS +------------------------------------- -* Free software: GNU General Public License v3 -* Documentation: https://bond.readthedocs.io. - - -Features --------- - -* TODO - -Credits -------- - -This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template. - -.. _Cookiecutter: https://github.com/audreyr/cookiecutter -.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage +The BOnD class has a call to a containerized version of the BIDS Validator. The +output of the BIDS validator is collected and converted to a convenient Python object. diff --git a/bond/bond.py b/bond/bond.py index 1a4adc029..9a24cf02a 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -2,7 +2,7 @@ from pathlib import Path import bids bids.config.set_option('extension_initial_dot', True) -from bids.util import parse_file_entities +from bids.layout import parse_file_entities NON_KEY_ENTITIES = set(["subject", "session", "extension"]) From 15a2d6f6797a014759857310c0e60808e892bb1b Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Fri, 9 Oct 2020 12:56:00 -0400 Subject: [PATCH 23/41] use pybids filters --- bond/bond.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 9a24cf02a..e8ce52a39 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -6,6 +6,7 @@ NON_KEY_ENTITIES = set(["subject", "session", "extension"]) + class BOnD(object): def __init__(self, data_root): @@ -14,17 +15,23 @@ def __init__(self, data_root): def fieldmaps_ok(self): pass - def rename_files(self, pattern, replacement): + def rename_files(self, filters, pattern, replacement): """ # @Params - # - path: a string contianing the path to the bids directory inside which we want to change files + # - filters: pybids entities dictionary to find files to rename # - pattern: the substring of the file we would like to replace # - replacement: the substring that will replace "pattern" # @Returns # - None + + >>> my_bond.rename_files({"PhaseEncodingDirection": 'j-', + ... "EchoTime": 0.005}, + ... "acq-123", "acq-12345_dir-PA" + ... ) """ - files_and_dirs = Path(self.path).rglob('*') - for path in files_and_dirs: + files_to_change = self.layout.get(return_type='filename', **filters) + for bidsfile in files_to_change: + path = Path(bidsfile.path) old_name = path.stem old_ext = path.suffix directory = path.parent @@ -45,10 +52,17 @@ def get_key_groups(self): key_groups.update(_file_to_key_group(path),) return sorted(key_groups) - def fill_metadata(self, pattern, metadata): + def change_metadata(self, filter, pattern, metadata): pass +def _update_json(json_file, metadata): + with open(json_file, "r") as meta_in: + metadata = json.read(meta_in) + + metadata.update + + def _key_group_to_entities(key_group): return dict([group.split("-") for group in key_group.split("_")]) From a98096b5920fb0a41183cdd8ef4dad57bce2de43 Mon Sep 17 00:00:00 2001 From: jaberbasma <65818039+jaberbasma@users.noreply.github.com> Date: Fri, 9 Oct 2020 13:00:43 -0400 Subject: [PATCH 24/41] Add files via upload --- notebooks/JSON_PoC_read_write.ipynb | 451 +++++++++++++++++++--------- 1 file changed, 302 insertions(+), 149 deletions(-) diff --git a/notebooks/JSON_PoC_read_write.ipynb b/notebooks/JSON_PoC_read_write.ipynb index 2df0b79c1..b4e594eec 100644 --- a/notebooks/JSON_PoC_read_write.ipynb +++ b/notebooks/JSON_PoC_read_write.ipynb @@ -6,195 +6,205 @@ "source": [ "In this proof of concept we will read & write JSON files in Jupyter notebook. \n", "\n", - "1. display the data in the sidecar []\n", - "2. edit this data []\n", + "1. display the data in the sidecar \n", + "2. edit this data \n", "3. check that the sidecar will write valid JSON files. " ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "#import json module to be able to read & write json files \n", - "import json" + "import json\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from glob import glob \n", + "from pathlib import Path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The first part will include displaying the data in the sidecar by reading the JSON files " + "1. The first part will include displaying the data in the sidecar by reading the JSON files \n", + "2. We then use json.load to turn it into a python object \n", + "3. The data we have includes an array of information under SliceTiming so we will create a dataframe within our dataframe to include SliceTiming as SliceTime 00, 01 , etc. (individual values of SliceTiming). " ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 157, "metadata": {}, - "outputs": [], + "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", + "
0
ProcedureStepDescriptionMR_HEAD_WO_IV_CONTRAST
DeviceSerialNumber167024
EffectiveEchoSpacing0.000689998
TotalReadoutTime0.0717598
ManufacturersModelNamePrisma_fit
......
SliceTime0313.61667
SliceTime0323.73333
SliceTime0333.85
SliceTime0343.96667
SliceTime0354.08333
\n", + "

64 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 0\n", + "ProcedureStepDescription MR_HEAD_WO_IV_CONTRAST\n", + "DeviceSerialNumber 167024\n", + "EffectiveEchoSpacing 0.000689998\n", + "TotalReadoutTime 0.0717598\n", + "ManufacturersModelName Prisma_fit\n", + "... ...\n", + "SliceTime031 3.61667\n", + "SliceTime032 3.73333\n", + "SliceTime033 3.85\n", + "SliceTime034 3.96667\n", + "SliceTime035 4.08333\n", + "\n", + "[64 rows x 1 columns]" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#open the json file in your directory \n", + "#testing the code with a single json file. \n", + "\n", + "file_test = open('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json')\n", + "sample_data = json.load(file_test)\n", + "sample_data.keys()\n", + "sample_data.get('SliceTiming')\n", + "SliceTime = sample_data.get('SliceTiming') #the way you can snatch things out of a dictionary \n", + "#if dict doens't have the key it will return none vs. error\n", "\n", - "file = open('/Users/bjaber/Desktop/package_project/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json')" + "if SliceTime: \n", + " sample_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del sample_data['SliceTiming']\n", + " \n", + "array_data = pd.DataFrame.from_dict(sample_data, orient='index')\n", + "array_data" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 156, "metadata": {}, "outputs": [], "source": [ - "#use json.load command to read the file. \n", + "#{\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the next one might not have slice timing but you concatonate the next row -- if the file doesn't have slice timing it fills with NaN and if it doesn't then google! \n", "\n", - "json_data = json.load(file)" + "rglob to get all the files in the bids tree then load it with json.load " ] }, { - "cell_type": "code", - "execution_count": 25, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'AcquisitionDateTime': '2010-02-18T19:45:55.120000',\n", - " 'AcquisitionMatrixPE': 64,\n", - " 'AcquisitionNumber': 1,\n", - " 'AcquisitionTime': '19:45:55.120000',\n", - " 'BandwidthPerPixelPhaseEncode': 28.409,\n", - " 'BaseResolution': 64,\n", - " 'ConversionSoftware': 'dcm2niix',\n", - " 'ConversionSoftwareVersion': 'v1.0.20190410 (JP2:OpenJPEG) GCC4.8.4',\n", - " 'DeidentificationMethod': 'Penn_BSC_profile_v1.0',\n", - " 'DerivedVendorReportedEchoSpacing': 0.000550002,\n", - " 'DeviceSerialNumber': '35069',\n", - " 'EchoTime': 0.032,\n", - " 'EffectiveEchoSpacing': 0.000550002,\n", - " 'FlipAngle': 90,\n", - " 'ImageOrientationPatientDICOM': [1, 0, 0, 0, 1, 0],\n", - " 'ImageType': ['ORIGINAL', 'PRIMARY', 'M', 'ND', 'MOSAIC'],\n", - " 'ImagingFrequency': 123.259,\n", - " 'InPlanePhaseEncodingDirectionDICOM': 'COL',\n", - " 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_20DBC9_Pennsylvania_US_19104',\n", - " 'InstitutionName': 'HUP6',\n", - " 'MRAcquisitionType': '2D',\n", - " 'MagneticFieldStrength': 3,\n", - " 'Manufacturer': 'Siemens',\n", - " 'ManufacturersModelName': 'TrioTim',\n", - " 'Modality': 'MR',\n", - " 'PartialFourier': 1,\n", - " 'PatientPosition': 'HFS',\n", - " 'PatientSex': 'M',\n", - " 'PercentPhaseFOV': 100,\n", - " 'PhaseEncodingDirection': 'j-',\n", - " 'PhaseEncodingSteps': 64,\n", - " 'PhaseResolution': 1,\n", - " 'PixelBandwidth': 2056,\n", - " 'ProcedureStepDescription': 'mri_brain',\n", - " 'ProtocolName': 'bbl1_restbold1_124',\n", - " 'PulseSequenceDetails': '%SiemensSeq%_ep2d_bold',\n", - " 'ReceiveCoilName': '32Ch_Head',\n", - " 'ReconMatrixPE': 64,\n", - " 'RepetitionTime': 3,\n", - " 'SAR': 0.169109,\n", - " 'ScanOptions': 'FS',\n", - " 'ScanningSequence': 'EP',\n", - " 'SequenceName': 'epfid2d1_64',\n", - " 'SequenceVariant': 'SK',\n", - " 'SeriesDescription': 'bbl1_restbold1_124',\n", - " 'SeriesInstanceUID': '1.3.12.2.1107.5.2.32.35069.2010021819452274312204584.0.0.0',\n", - " 'SeriesNumber': 12,\n", - " 'ShimSetting': [4030, -6590, -3870, 1022, -21, 207, -186, 41],\n", - " 'SliceThickness': 3,\n", - " 'SliceTiming': [1.505,\n", - " 0,\n", - " 1.57,\n", - " 0.065,\n", - " 1.635,\n", - " 0.13,\n", - " 1.7,\n", - " 0.195,\n", - " 1.7675,\n", - " 0.26,\n", - " 1.8325,\n", - " 0.325,\n", - " 1.8975,\n", - " 0.3925,\n", - " 1.9625,\n", - " 0.4575,\n", - " 2.0275,\n", - " 0.5225,\n", - " 2.095,\n", - " 0.5875,\n", - " 2.16,\n", - " 0.6525,\n", - " 2.225,\n", - " 0.72,\n", - " 2.29,\n", - " 0.785,\n", - " 2.355,\n", - " 0.85,\n", - " 2.4225,\n", - " 0.915,\n", - " 2.4875,\n", - " 0.98,\n", - " 2.5525,\n", - " 1.0475,\n", - " 2.6175,\n", - " 1.1125,\n", - " 2.6825,\n", - " 1.1775,\n", - " 2.7475,\n", - " 1.2425,\n", - " 2.815,\n", - " 1.3075,\n", - " 2.88,\n", - " 1.375,\n", - " 2.945,\n", - " 1.44],\n", - " 'SoftwareVersions': 'syngo_MR_B17',\n", - " 'SpacingBetweenSlices': 3,\n", - " 'StationName': 'hup6',\n", - " 'StudyID': '6318483',\n", - " 'StudyInstanceUID': '1.2.840.113745.101000.1002000.40224.6628.27668004',\n", - " 'TaskName': 'rest',\n", - " 'TotalReadoutTime': 0.0346501,\n", - " 'TxRefAmp': 315.784}" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "#Uncomment below to view data\n", - "json_data" + "Next steps \n", + "\n", + "1. Slice Timing turn it into a column where each column would have its own float \n", + "2. multiple columns with the umber of them filled out to the maximum number of slice times " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The following part is used to edit JSON file data. \n", + "2. The following part is used to edit JSON file data. \n", "\n", - "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. " + "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. \n", + "\n", + "Note that this code is commented out as it will be different when we are using this with Pandas DataFrame. This was code written when working with a single .json file. " ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ - "# Here we change the value for AcquisionNumber from 1 to 2. \n", - "json_data[\"AcquisitionNumber\"] = 2" + "#Here we change the value for AcquisionNumber from 1 to 2. \n", + "#json_data[\"AcquisitionNumber\"] = 2" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -204,50 +214,193 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "#Reverting back to original data\n", - "json_data[\"AcquisitionNumber\"] = 1" + "#json_data[\"AcquisitionNumber\"] = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Checking that the sidecare will write valid JSON files " + "3. Checking that the sidecare will write valid JSON files \n", + "\n", + "In order to do this, we use the json.dumps function as it will turn the python object into a JSON string, and therefore, will wirte a valid JSON file always. \n", + "\n", + "Note: same as the previous chunk of code, this was written for a single .json file and therefore is commentend out " ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ - "def validateJSON(json_data): \n", - " try: \n", - " json.loads(json_data)\n", - " except ValueError as err: \n", - " return False \n", - " return True " + "#json_string = json.dumps(json_data)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ - "validJsonData = " + "#Uncomment below to view the python object as a JSON string \n", + "#json_string" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "#notes from Matt \n", + "\n", + "# have a function that does the reading and creates 1 row then you have to loop and the dataframe grows through concatanation \n", + "# pandas.concat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next section is the for loop attempting to extract, open and turn into a dataframe each json file in the \"complete\" directory! " + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "0\n", + "\n", + "1\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "2\n", + "\n", + "3\n", + "\n", + "4\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "5\n", + "\n", + "6\n", + "\n", + "7\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n", + "\n", + "8\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "9\n", + "\n", + "10\n", + "\n", + "11\n", + "\n", + "12\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "13\n", + "\n", + "14\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n", + "\n", + "15\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "16\n", + "\n", + "17\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "18\n", + "\n", + "19\n", + "\n", + "20\n", + "\n", + "21\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n" + ] + } + ], + "source": [ + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'): \n", + " #print(path)\n", + "\n", + " counter=0\n", + "\n", + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'):\n", + " print(type(path))\n", + " print(counter)\n", + " s_path = str(path)\n", + " #print(s_path)\n", + " file_tree = open(s_path)\n", + " example_data = json.load(file_tree)\n", + " SliceTime = example_data.get('SliceTiming') #the way you can snatch things out of a dictionary #if dict doens't have the key it will return none vs. error\n", + " if SliceTime: \n", + " example_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + " print(example_data)\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') \n", + " #data\n", + " counter += 1\n", + " \n", + "\n", + "#NOTE: error when trying to put the data into a pandas dataframe. \n", + "# print(example_data) was used to make sure that inputs that are an array such as in the field SliceTiming are being separated into indenpendent values of SliceTime00x that should feed into the dataframe. \n", + "# it is doing that across all json files that are being loaded from the directory " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "json.dumps = writes valid json no matter what because it will turn it into a string " + "These are just documented attempts at the above for loop! \n", + "\n", + "attempt at directory stuff #1 \n", + "\n", + "import os, json\n", + "import pandas as pd\n", + "\n", + "path_to_json = '/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/anat'\n", + "json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]\n", + "print(json_files)\n", + "\n", + "attempt #2\n", + "\n", + "for filename in glob('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/*.json'):\n", + " print(filename)\n", + " \n", + " \n", + "attempt # 3 \n", + " \n", + " for name in files: \n", + " f = open(name, 'r')\n", + " print(f)\n", + " content=f.readlines()\n", + " print(f'Content of %s:\\n %s' %(name,content))\n", + " f.close()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From c5615826d0230d6b7b7333d158435a27929d1bba Mon Sep 17 00:00:00 2001 From: krmurtha Date: Fri, 9 Oct 2020 15:03:04 -0400 Subject: [PATCH 25/41] added pandas df --- notebooks/PofC_Key_Values2.ipynb | 130 +++++++++++++++++++++++++++---- 1 file changed, 115 insertions(+), 15 deletions(-) diff --git a/notebooks/PofC_Key_Values2.ipynb b/notebooks/PofC_Key_Values2.ipynb index 8c5654788..af04870bf 100644 --- a/notebooks/PofC_Key_Values2.ipynb +++ b/notebooks/PofC_Key_Values2.ipynb @@ -2,17 +2,17 @@ "cells": [ { "cell_type": "code", - "execution_count": 166, + "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [ { "ename": "SyntaxError", - "evalue": "invalid syntax (, line 2)", + "evalue": "invalid syntax (, line 2)", "output_type": "error", "traceback": [ - "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m pip install bids\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m pip install bids\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -68,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -77,6 +77,14 @@ "text": [ "{'subject': 'PNC', 'session': 'pepolar'}\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/krmurtha/anaconda3/envs/bond/lib/python3.8/site-packages/bids/layout/models.py:148: FutureWarning: The 'extension' entity currently excludes the leading dot ('.'). As of version 0.14.0, it will include the leading dot. To suppress this warning and include the leading dot, use `bids.config.set_option('extension_initial_dot', True)`.\n", + " warnings.warn(\"The 'extension' entity currently excludes the leading dot ('.'). \"\n" + ] } ], "source": [ @@ -89,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -109,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -135,14 +143,14 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'subject': ['1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514'], 'session': ['PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1'], 'suffix': ['magnitude2', 'phase2', 'magnitude2', 'phase2', 'magnitude1', 'magnitude1', 'phase1', 'phase1', 'T1w', 'T1w', 'T1w', 'T1w', 'idemo', 'frac2back', 'idemo', 'bold', 'frac2back', 'bold', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'bold', 'bold'], 'fmap': ['magnitude2', 'phase2', 'magnitude1', 'phase1'], 'datatype': ['fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'anat', 'anat', 'anat', 'anat', 'func', 'func', 'func', 'func', 'func', 'func', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'func', 'func'], 'extension': ['nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'json', 'bval', 'json', 'bvec', 'nii.gz', 'nii.gz', 'json', 'bval', 'bvec', 'nii.gz', 'json'], 'reconstruction': ['refaced', 'refaced'], 'task': ['idemo', 'frac2back', 'idemo', 'rest', 'frac2back', 'rest', 'rest', 'rest'], 'acquisition': ['singleband', 'singleband', 'singleband', 'singleband'], 'run': [2, 1, 2, 1, 2, 2, 1, 1]}\n" + "{'subject': ['PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514'], 'session': ['pepolar', 'pepolar', 'pepolar', 'nofmap', 'phdiff', 'phdiff', 'buds', 'buds', 'buds', 'phases', 'phases', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1'], 'suffix': ['magnitude2', 'phase2', 'magnitude2', 'phase2', 'magnitude1', 'magnitude1', 'phase1', 'phase1', 'T1w', 'T1w', 'T1w', 'T1w', 'idemo', 'frac2back', 'idemo', 'bold', 'frac2back', 'bold', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'bold', 'bold'], 'fmap': ['magnitude2', 'phase2', 'magnitude1', 'phase1'], 'datatype': ['fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'anat', 'anat', 'anat', 'anat', 'func', 'func', 'func', 'func', 'func', 'func', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'func', 'func'], 'extension': ['nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'json', 'bval', 'json', 'bvec', 'nii.gz', 'nii.gz', 'json', 'bval', 'bvec', 'nii.gz', 'json'], 'reconstruction': ['refaced', 'refaced'], 'task': ['idemo', 'frac2back', 'idemo', 'rest', 'frac2back', 'rest', 'rest', 'rest'], 'acquisition': ['singleband', 'singleband', 'singleband', 'singleband'], 'run': [2, 1, 2, 1, 2, 2, 1, 1]}\n" ] } ], @@ -169,7 +177,7 @@ }, { "cell_type": "code", - "execution_count": 210, + "execution_count": 11, "metadata": { "scrolled": false }, @@ -178,7 +186,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[{'1832999514': 28}, {'PNC2': 18, 'PNC1': 10}, {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, {'refaced': 2}, {'idemo': 2, 'frac2back': 2, 'rest': 4}, {'singleband': 4}, {2: 4, 1: 4}]\n" + "[{'PNC': 11, '1832999514': 28}, {'pepolar': 3, 'nofmap': 1, 'phdiff': 2, 'buds': 3, 'phases': 2, 'PNC2': 18, 'PNC1': 10}, {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, {'refaced': 2}, {'idemo': 2, 'frac2back': 2, 'rest': 4}, {'singleband': 4}, {2: 4, 1: 4}]\n" ] } ], @@ -208,14 +216,14 @@ }, { "cell_type": "code", - "execution_count": 209, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'subject': {'1832999514': 28}, 'session': {'PNC2': 18, 'PNC1': 10}, 'suffix': {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, 'fmap': {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, 'datatype': {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, 'extension': {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, 'reconstruction': {'refaced': 2}, 'task': {'idemo': 2, 'frac2back': 2, 'rest': 4}, 'acquisition': {'singleband': 4}, 'run': {2: 4, 1: 4}}\n" + "{'subject': {'PNC': 11, '1832999514': 28}, 'session': {'pepolar': 3, 'nofmap': 1, 'phdiff': 2, 'buds': 3, 'phases': 2, 'PNC2': 18, 'PNC1': 10}, 'suffix': {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, 'fmap': {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, 'datatype': {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, 'extension': {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, 'reconstruction': {'refaced': 2}, 'task': {'idemo': 2, 'frac2back': 2, 'rest': 4}, 'acquisition': {'singleband': 4}, 'run': {2: 4, 1: 4}}\n" ] } ], @@ -232,6 +240,98 @@ "print(new_dictionary)\n", " " ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#initialize new list for tuples \n", + "l_tups= []\n", + "for key in new_dictionary:\n", + " #list out all keys\n", + " e1 = key\n", + " #print(e1)\n", + " for s_key in new_dictionary[key]:\n", + " #list out all\n", + " e2 = s_key\n", + " #print(e2)\n", + " e3 = new_dictionary[key][s_key]\n", + " #print(e3)\n", + " l_tups.append((e1,e2,e3))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " key val count\n", + "0 subject PNC 11\n", + "1 subject 1832999514 28\n", + "2 session pepolar 3\n", + "3 session nofmap 1\n", + "4 session phdiff 2\n", + "5 session buds 3\n", + "6 session phases 2\n", + "7 session PNC2 18\n", + "8 session PNC1 10\n", + "9 suffix magnitude2 2\n", + "10 suffix phase2 2\n", + "11 suffix magnitude1 2\n", + "12 suffix phase1 2\n", + "13 suffix T1w 4\n", + "14 suffix idemo 2\n", + "15 suffix frac2back 2\n", + "16 suffix bold 4\n", + "17 suffix dwi 8\n", + "18 fmap magnitude2 1\n", + "19 fmap phase2 1\n", + "20 fmap magnitude1 1\n", + "21 fmap phase1 1\n", + "22 datatype fmap 8\n", + "23 datatype anat 4\n", + "24 datatype func 8\n", + "25 datatype dwi 8\n", + "26 extension nii.gz 12\n", + "27 extension json 12\n", + "28 extension bval 2\n", + "29 extension bvec 2\n", + "30 reconstruction refaced 2\n", + "31 task idemo 2\n", + "32 task frac2back 2\n", + "33 task rest 4\n", + "34 acquisition singleband 4\n", + "35 run 2 4\n", + "36 run 1 4\n" + ] + } + ], + "source": [ + "df = pd.DataFrame(l_tups, columns = ['key', 'val', 'count'])\n", + "print(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From d184e70949baeefa1dab08ce7e9e42d898e13b6b Mon Sep 17 00:00:00 2001 From: Tinashe Tapera Date: Fri, 9 Oct 2020 15:04:17 -0400 Subject: [PATCH 26/41] `change_metadata` functional Partially addresses #6 and #3 --- bond/bond.py | 66 ++++++++++++++++++++++++++++++++++----- notebooks/Fieldmaps.ipynb | 2 +- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index e8ce52a39..80d6c1667 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1,8 +1,11 @@ """Main module.""" -from pathlib import Path import bids -bids.config.set_option('extension_initial_dot', True) +import json +from pathlib import Path from bids.layout import parse_file_entities +from bids.layout import BIDSFile + +bids.config.set_option('extension_initial_dot', True) NON_KEY_ENTITIES = set(["subject", "session", "extension"]) @@ -11,6 +14,7 @@ class BOnD(object): def __init__(self, data_root): self.path = data_root + self.layout = bids.BIDSLayout(self.path, validate = False) def fieldmaps_ok(self): pass @@ -52,15 +56,63 @@ def get_key_groups(self): key_groups.update(_file_to_key_group(path),) return sorted(key_groups) - def change_metadata(self, filter, pattern, metadata): - pass + def change_metadata(self, filters, pattern, metadata): + + # TODO: clean prints and add warnings + + files_to_change = self.layout.get(return_type='object', **filters) + + if not files_to_change: + + print('NO FILES FOUND') + for bidsfile in files_to_change: + + # get the sidecar file + bidsjson_file = bidsfile.get_associations() + + if not bidsjson_file: + print("NO JSON FILES FOUND IN ASSOCIATIONS") + continue + + json_file = [x for x in bidsjson_file if 'json' in x.filename] + + if len(json_file) is not 1: + + print("FOUND IRREGULAR ASSOCIATIONS") + + else: + + # get the data from it + json_file = json_file[0] + + sidecar = json_file.get_dict() + sidecar.update(metadata) + + # write out + _update_json(json_file.path, sidecar) def _update_json(json_file, metadata): - with open(json_file, "r") as meta_in: - metadata = json.read(meta_in) - metadata.update + if _validateJSON(metadata): + with open(json_file, 'w', encoding='utf-8') as f: + json.dump(metadata, f, ensure_ascii=False, indent=4) + else: + + print("INVALID JSON DATA") + #metadata.update + + +def _validateJSON(json_data): + + # TODO + return True + '''try: + json.load(json_data) + except ValueError as err: + return False + return True + ''' def _key_group_to_entities(key_group): diff --git a/notebooks/Fieldmaps.ipynb b/notebooks/Fieldmaps.ipynb index 459e77348..8f60d4609 100644 --- a/notebooks/Fieldmaps.ipynb +++ b/notebooks/Fieldmaps.ipynb @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 56, "metadata": {}, "outputs": [], "source": [ From 7b204b3ee9515e4beefe9f72dc234927b0a5bec4 Mon Sep 17 00:00:00 2001 From: Tinashe Tapera Date: Fri, 9 Oct 2020 15:15:18 -0400 Subject: [PATCH 27/41] removing testdata from `notebooks/testdata` --- .gitignore | 1 + notebooks/testdata/complete/README | 1 - .../complete/dataset_description.json | 7 -- .../anat/sub-01_ses-phdiff_T1w.json | 33 -------- .../anat/sub-01_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-01_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----------------- .../sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_magnitude1.json | 67 --------------- ...sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_magnitude2.json | 68 --------------- ...sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-01_ses-phdiff_acq-v4_phasediff.json | 71 ---------------- .../sub-01_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-01_ses-phdiff_dir-PA_epi.json | 78 ------------------ .../fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-01_ses-phdiff_task-rest_bold.json | 76 ----------------- .../sub-01_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes .../anat/sub-02_ses-phdiff_T1w.json | 33 -------- .../anat/sub-02_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-02_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----------------- .../sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_magnitude1.json | 67 --------------- ...sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_magnitude2.json | 68 --------------- ...sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-02_ses-phdiff_acq-v4_phasediff.json | 71 ---------------- .../sub-02_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-02_ses-phdiff_dir-PA_epi.json | 78 ------------------ .../fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-02_ses-phdiff_task-rest_bold.json | 76 ----------------- .../sub-02_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes .../anat/sub-03_ses-phdiff_T1w.json | 33 -------- .../anat/sub-03_ses-phdiff_T1w.nii.gz | Bin 123172 -> 0 bytes .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bval | 1 - .../sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec | 3 - .../sub-03_ses-phdiff_acq-HASC55AP_dwi.json | 75 ----------------- .../sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz | Bin 30889 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_magnitude1.json | 67 --------------- ...sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz | Bin 2107 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_magnitude2.json | 68 --------------- ...sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz | Bin 2107 -> 0 bytes .../sub-03_ses-phdiff_acq-v4_phasediff.json | 71 ---------------- .../sub-03_ses-phdiff_acq-v4_phasediff.nii.gz | Bin 2106 -> 0 bytes .../fmap/sub-03_ses-phdiff_dir-PA_epi.json | 78 ------------------ .../fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz | Bin 1502 -> 0 bytes .../sub-03_ses-phdiff_task-rest_bold.json | 76 ----------------- .../sub-03_ses-phdiff_task-rest_bold.nii.gz | Bin 30889 -> 0 bytes 51 files changed, 1 insertion(+), 1424 deletions(-) delete mode 100644 notebooks/testdata/complete/README delete mode 100644 notebooks/testdata/complete/dataset_description.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json delete mode 100644 notebooks/testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json delete mode 100644 notebooks/testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json delete mode 100644 notebooks/testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz diff --git a/.gitignore b/.gitignore index ce29b82fd..64d8d289b 100644 --- a/.gitignore +++ b/.gitignore @@ -133,3 +133,4 @@ dmypy.json # extra stuff data/* .DS_Store +notebooks/testdata diff --git a/notebooks/testdata/complete/README b/notebooks/testdata/complete/README deleted file mode 100644 index 8cbaa34f6..000000000 --- a/notebooks/testdata/complete/README +++ /dev/null @@ -1 +0,0 @@ -Heavily downsampled CS-DSI testing datasets diff --git a/notebooks/testdata/complete/dataset_description.json b/notebooks/testdata/complete/dataset_description.json deleted file mode 100644 index 9ee88dbcc..000000000 --- a/notebooks/testdata/complete/dataset_description.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "BIDSVersion": "1.0.0", - "License": "BSD 3-clause", - "Name": "Heavily downsampled CS-DSI simulated data", - "ReferencesAndLinks": [], - "Authors": ["PennLINC", "PennBBL"] -} diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json b/notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json deleted file mode 100644 index a86cdd647..000000000 --- a/notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "Manufacturer": "Siemens", - "ManufacturersModelName": "Prisma_fit", - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "DeviceSerialNumber": "167024", - "SoftwareVersions": "syngo_MR_E11", - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "ScanningSequence": "GR_IR", - "SequenceVariant": "SK_SP_MP", - "SeriesDescription": "ABCD_T1w_MPR_vNav", - "BodyPartExamined": "BRAIN", - "ProtocolName": "ABCD_T1w_MPR_vNav", - "SequenceName": "tfl3d1_16ns", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "M", - "ND", - "NORM" - ], - "AcquisitionTime": "16:15:31.770000", - "MagneticFieldStrength": 3, - "FlipAngle": 8, - "EchoTime": 0.0029, - "RepetitionTime": 2.5, - "InversionTime": 1.07, - "PhaseEncodingLines": 256, - "PhaseEncodingDirection": "i-", - "ConversionSoftware": "dcm2niix", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0" -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz b/notebooks/testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz deleted file mode 100644 index 5dd2f5e700903dca2315324c96b97e7dde443f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123172 zcmeI)Z&b~99Ki83)FGAmlRvAN#6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 413d4b247..000000000 --- a/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 6808f4d64..000000000 --- a/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_6W7Z-Fs_MXw$f(&DCm} z#==Z0RxM>$l1iEuN#Q2eT;kSrtJzh$J3QI*J+QO0_wUj7+3%e1_w)KZe49)4^>>=2 z2Iy+zMZxoyu6ldbvVeGD{Ja=pO!UT}xB&0BBvw)3;X0~o9V@4=enscDw|u9)%Q-_6 zpU558o7BHt*|)u^@DsOXp%V*=i`~w8Ej?#(Pd{}b5&Bma?6c!#dqbEaoR(J1-&D@|BNzKa&<-6kB$3dCO+-^u&21cG0ihQ zx%>9&;?`)98hJ?m&5Y{cnR9EdXAdWR>+sb`dFU0Z0l#F| z+484K@xkVZN#cyO`b)PTcT{vML#@L_+sjr&FEDzXT$NRyQl?#--x1z3JMCJ&(zib3 z&jI@!$)3x*0^=%M72&2wss^o%ZgeZfPWpA@XRD3Qn7UfZ(>2Zal-lKYYHJ0hw?4>- zSm7}tG2$)3j&FP#q_O2bQHu9wT@DtCPEM1h2g?Uc60X&ccdgvw)g3*Ir>Azp4YzF zzC27B6BnxaZcg5w=7#r|iIX~~o`2Y)R@W`-{JOex;HY};+HDtiJy~z?ZjF1_t^TVC zPmVWwnS_SEbJ)^LHdgjX;T|(z-r7(aw#K%r-*J@r$*{VHAnTF@t?E>6$=<@&7J;*% zU{^)vneIcTW19ViVXcuWg|t!Mdaz*1;|FTPpVrk@+CI3Vjwl~*ooSh8II+lPjBldd z25;YMUpAMzt~I)t+53*H(0E1R4^I9ET(cy5t!y(h)dG)LmkycvU71N+y2iGs%1YmO zhT9gM5xOHea0yHT3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3jT?L zp$0=!eVu2YrgEYCwwLq_UvY@JeReAcE`dov0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZunf)}JfM||Jyc?;-*wsicrP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=JEJ6`WYAr~51hvIxJ)Q|{~ zp#TLaKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZK*0-Fu*Gz-@v|0? zjyg5+rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)U{+9|ysG7DuZvlO--7w3-fgBAHq^+!i|K%#+-PwL@KNO$<1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZunf`3!N`t;qSp2dJhYy2{T17?Pt-7?~((FRj& z0y%IAOacl}fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ hfC3bt00k&O0SZun0u=mL6a-Gyx1R2#A2>gM#9vW>2$KK+ diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval deleted file mode 100644 index 551603c53..000000000 --- a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval +++ /dev/null @@ -1 +0,0 @@ -0 0 2000 3780 3800 4380 2195 2205 4200 3570 1005 2800 3790 3390 0 3605 3980 2575 3605 4195 3570 4175 3385 3395 4185 2395 4985 0 1800 1800 3780 1610 4000 4170 1190 2785 3215 200 1985 3980 0 3385 4385 4955 395 3975 3390 3965 3395 205 3385 4385 5015 990 1800 1010 1190 2605 2195 4380 0 \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec deleted file mode 100644 index d31e09213..000000000 --- a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec +++ /dev/null @@ -1,3 +0,0 @@ -0 0 0.947306 -0.689491 -0.687391 -0.640236 0.904801 0.301134 0.218033 0.236237 -0.00045876 -0.267232 -0.229644 0.727918 0 -0.235344 -0.895859 0.556585 -0.235344 -0.872345 0.236237 0.218536 -0.485657 -0.969313 0.873651 0.577663 0.999993 0 -0.665829 0.665829 -0.689491 0.704677 -0.00022427 -0.437403 0.409502 0.26769 -0.00031134 0.999772 -0.00016233 0.895859 0 0.971029 0.426584 0 -0.712479 -0.00011346 -0.727918 -0.448521 -0.484877 -0.00487633 -0.485657 -0.426584 -0.00019956 -0.00045946 0.665829 -0.445079 0.409502 -0.830354 -0.904801 0.640236 0 -0 0 -0.320301 -0.233031 0.690471 -0.429664 -0.305819 -0.906545 0.874886 0.239537 0.898412 0.804939 0.691594 0.488404 0 -0.943991 -0.00303821 -0.00388069 0.943991 -0.439269 -0.239537 0.439998 0.488955 -0.245811 0.221429 -0.581525 -0.00280889 0 0.670455 -0.670455 0.233031 -0.709514 -0.896432 0.221712 -0.414997 -0.538836 -0.999995 -0.0151408 0.32154 -0.00303821 0 -0.00329842 0.642719 -0.00262411 -0.0090312 -0.450857 0.488404 -0.00293403 -0.730564 -0.999882 -0.488955 -0.642719 -0.999997 -0.454441 0.670455 -0.895473 0.414997 -0.557225 -0.305819 -0.429664 0 -0 0 -0.00426696 -0.685783 -0.225265 -0.636779 -0.296327 -0.295796 -0.432477 -0.941708 -0.439154 -0.529773 -0.684807 -0.481245 0 -0.231289 -0.444328 -0.830781 -0.231289 -0.214611 -0.941708 -0.871001 -0.724611 -0.00307126 -0.433248 -0.57283 -0.00260781 0 -0.327355 -0.327355 -0.685783 -0.00439859 -0.443181 -0.871506 -0.812457 -0.798748 -0.00311231 -0.0150655 -0.946896 -0.444328 0 -0.238939 -0.636348 -0.999997 -0.701635 -0.892596 -0.481245 -0.893768 -0.480802 -0.014558 -0.724611 -0.636348 -0.00259323 -0.890777 -0.327355 -0.00576167 -0.812457 -0.00362001 -0.296327 -0.636779 0 diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json deleted file mode 100644 index 81d414f5c..000000000 --- a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "SeriesDescription": "ABCD_dMRI", - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j", - "SoftwareVersions": "syngo_MR_E11" -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz b/notebooks/testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz deleted file mode 100644 index af8d3e5ac63c7935741be9a94f6df8164219aaec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30889 zcmeIx_fr!F90hQ!iXh7lKt!Ml#VQwqwGa%!$VR}#jjRNbDHxUn0+M)o2b`>mqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_m2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9Rm2M7>=|F2TC7`;k&>B~7N3}0s9RDUQBq?@L!gABw94X#E=vqVy&N0oy`B80SbgsO8&A3m z&s*m15;|Lb&DFW>?W2q8=QrJ5e9miG_NHe!kH7r<^}6`)*RAVQ^=x%g-`dLMy}TC7 ycU?=xp@D&siG@QzVU#f%2%{-sG#8BKg3(+snhORt7yR>n!1~whnC^pfYzzP;q$FJc diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json b/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json deleted file mode 100644 index 543f6bbf7..000000000 --- a/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "ProcedureStepDescription": "MR_HEAD_WO_IV_CONTRAST", - "DeviceSerialNumber": "167024", - "EffectiveEchoSpacing": 0.000689998, - "TotalReadoutTime": 0.0717598, - "ManufacturersModelName": "Prisma_fit", - "ProtocolName": "ABCD_dMRI", - "BandwidthPerPixelPhaseEncode": 10.352, - "PhaseEncodingLines": 140, - "RepetitionTime": 4.2, - "EchoTrainLength": 105, - "MagneticFieldStrength": 3, - "AcquisitionNumber": 1, - "InstitutionName": "HUP", - "BodyPartExamined": "BRAIN", - "ConversionSoftware": "dcm2niix", - "ScanningSequence": "EP", - "Manufacturer": "Siemens", - "FlipAngle": 90, - "InstitutionAddress": "Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104", - "SeriesDescription": "ABCD_dMRI", - "ConversionSoftwareVersion": "v1.0.20170724 (OpenJPEG build) GCC6.1.0", - "AcquisitionTime": "16:31:6.145000", - "SequenceName": "ep_b0", - "ImageType": [ - "ORIGINAL", - "PRIMARY", - "DIFFUSION", - "NONE", - "ND", - "MOSAIC" - ], - "EchoTime": 0.089, - "SequenceVariant": "SK_SP", - "SliceTiming": [ - 0.0, - 0.11666666666666667, - 0.23333333333333334, - 0.35, - 0.4666666666666667, - 0.5833333333333334, - 0.7, - 0.8166666666666667, - 0.9333333333333333, - 1.05, - 1.1666666666666667, - 1.2833333333333334, - 1.4, - 1.5166666666666666, - 1.6333333333333333, - 1.75, - 1.8666666666666667, - 1.9833333333333334, - 2.1, - 2.216666666666667, - 2.3333333333333335, - 2.45, - 2.566666666666667, - 2.6833333333333336, - 2.8, - 2.9166666666666665, - 3.033333333333333, - 3.15, - 3.2666666666666666, - 3.3833333333333333, - 3.5, - 3.6166666666666667, - 3.7333333333333334, - 3.85, - 3.966666666666667, - 4.083333333333333 - ], - "PhaseEncodingDirection": "j-", - "SoftwareVersions": "syngo_MR_E11", - "IntendedFor": [ - "ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz" - ] -} \ No newline at end of file diff --git a/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz b/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz deleted file mode 100644 index b60186d5ad8b1173eaee849a5a828e70f4aedc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmeIu`8V4K004094on?mM&s%_gx1lPHE|_qSIa8P=qpl38VwpzN7Ap5XtJlz8I z%L|5xBd%JT)|EQKP*%J~%`%coQjMU9FeJ@V?El!?Z=at(E({ZsQad{4=phM6_P%iC z;uQpjltS{(PRY*7z!EVyJkk5dFic7|-X{}}H&XwVNCI88H@f~%{(=q1f|aX9(I@=H z&zk`=USf4wWT;aF$Ehkb25hq+6OQ{_CDvo^wQG^|_}QllG~&e#2h zf)Fd_I~EMROcJ+f?wYTy z*-!L%ed@c}Rk`c~C$IehPrVIY4}l#gU($Pkfct%T&DQn2c}aq4#cWtXjO0+O&B7GW z4_o8&{%|~IW~_iGnj#$#0ygh1>)kT zqZ~g|{f#}>so3MC6>ST5z!^;%@|#caL|MF6dO39&>L*5d5~=L)t6LjAYb;s=+r^T? znTayY@hv;Fs}=WJ_ofhCv!VvEZzB zYUSc;dvQ)@Ur#wL)+hCM&hE|kU2sQZPO?Dvj0F_8K#Ya*m*8od*M2a;#nu8fUHdIz zHewOFew*47l>-{wx?Q<{t%lhOUE4$5mnubA%Dl6H(Vg0jCb*ByOen+8IFmb)1qv8V z1r6CqDH1}}j=JSAI%ohk)Y%$cI@#{fGe2Fc}_OiY;K@@?Fjl*E*N<;TjuaknG)uNJYgaied zeU<-^Q}V5Ibu3CF`@C*Vj62=tliKhzGc&P}NA=I( zRxdI3;opH~Gp8VPf6t^>s-DmV+W!8>V!=w2%|9F%|4%|bfOgd{M@gkf0sB-9tU+(5^qfF{8wDBb$Db_iBTk|-3Yhs==%8$lK0+WX|ab2~u&E0Iji zu$D6&n9U)@*4462zp*hx|H@W4uUloBaPcz+Q8*Ks>(Ci_N^k*LT*un?pSL~9F_?3) zNV<8mCz~HL$5#UcDkQThJ_k5!sd3(PI{>=Yf~c>tfF-0Lf#d6jHOmqC_xw zPy{7m$Oto1bFy~?WD7A+BVmOdNZS9PKlkqYetJK@dmp`I1%-#2G~#!%$S5C#&1Kum z=ZKMhk%+KB-ynZ~;*Fc(2uG{SHm0Ul7l^*mLB^z@Ai23A5l(wpOU}FW3DGe#R#D$Q zh!IO&~a{g%K#fb#y8?CMoD(5h%yuHiChrkz2oeKK(_GRTslcK?W1;KMriuUez0 z7^Py)?CF5CbeZ(3K%=83wsg6r9W_oC$(V>{C<8J0q;(^$oZAMwVBTX$52~b7)$! zw39jfwa>&7t&6%xR^>0SO{T@2KJ1bv!BQm=W4R5~gR6vGyZW8*CrpR%)hS^!*B#;X zW~mvQH!>At@-?^Nw63jl;_SkNL-BBMkoj}vSA7-s?Ap5LR6V3#F6TTRS7;Tu8MxtN zat3XQ4_341PCam4$S*+g|LR-BxOcxtG+OG&YCL_*Fj|Zpo%O;8+?6t{2pJlcJC;B~H;dOZIDY*g?$B)Nx^$ezDY^c!x;FND zmwQZgqnl(VkL_+@*P|%#UqGHP#m(4_&|(>DYyB*8WGJe`;wK%nUrd0y!szzd30Ltr zvZNom7q8}?`a)(S?<$myTh(u3QqZXc_MFP9!M>uFZ(6pOif2b}<#0bnro=Rw6IFHs zy7}4^0JAS{=9Lq2;5(`Q)m)gzkY6Vf66!mr1 z?5g9#npJmtfEKbRzw_AZr%TD(!4%8K(;Nfi`C@^fgsDks_KO#bSC8iY8J2?DUm8pG z5*o^uEs(eYx{!Ka6%I{Tqd_Lc7wJ3g{dDkpu|)4-=QKQ{73#`_vXiqi^%4EE_vChcw@2Z?&ro0l zcmgN@1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zKmjNK1)u;FfC5ke3P1rU00p1`6o3Ly017|>C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 zK*9e}fplC|M@jDAC@-^hn;F)v_jc`;S3YRs-2??jfG2C;$bZ02F`%Pyh-*0Vn_kpa2wr0#E=7 UK*4`0_ Date: Fri, 9 Oct 2020 15:38:45 -0400 Subject: [PATCH 28/41] Added imaging params --- bond/bond.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bond/bond.py b/bond/bond.py index 80d6c1667..9639c5203 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -8,7 +8,12 @@ bids.config.set_option('extension_initial_dot', True) NON_KEY_ENTITIES = set(["subject", "session", "extension"]) - +# Multi-dimensional keys SliceTiming +IMAGING_PARAMS = set(["ParallelReductionFactorInPlane", "ParallelAcquisitionTechnique", + "ParallelAcquisitionTechnique", "PartialFourier", "PhaseEncodingDirection", + "EffectiveEchoSpacing", "TotalReadoutTime", "EchoTime", "SliceEncodingDirection", + "DwellTime", "FlipAngle", "MultibandAccelerationFactor", "RepetitionTime", + "VolumeTiming", "NumberOfVolumesDiscardedByScanner", "NumberOfVolumesDiscardedByUser"]) class BOnD(object): From 3d61e6a068c05f1a743da35684c7217a0bf8d86d Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Fri, 9 Oct 2020 15:58:24 -0400 Subject: [PATCH 29/41] Add SliceTiming --- bond/bond.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bond/bond.py b/bond/bond.py index 9639c5203..215f546b9 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -12,7 +12,7 @@ IMAGING_PARAMS = set(["ParallelReductionFactorInPlane", "ParallelAcquisitionTechnique", "ParallelAcquisitionTechnique", "PartialFourier", "PhaseEncodingDirection", "EffectiveEchoSpacing", "TotalReadoutTime", "EchoTime", "SliceEncodingDirection", - "DwellTime", "FlipAngle", "MultibandAccelerationFactor", "RepetitionTime", + "DwellTime", "FlipAngle", "MultibandAccelerationFactor", "RepetitionTime", "SliceTiming", "VolumeTiming", "NumberOfVolumesDiscardedByScanner", "NumberOfVolumesDiscardedByUser"]) class BOnD(object): From a329af697aa54826c2767afe162054fa57a468ac Mon Sep 17 00:00:00 2001 From: jaberbasma <65818039+jaberbasma@users.noreply.github.com> Date: Fri, 9 Oct 2020 16:15:38 -0400 Subject: [PATCH 30/41] Add files via upload From 906a6a59d19eca71c4118dd67fd36887c541a53f Mon Sep 17 00:00:00 2001 From: jaberbasma <65818039+jaberbasma@users.noreply.github.com> Date: Fri, 9 Oct 2020 16:18:21 -0400 Subject: [PATCH 31/41] Add files via upload --- notebooks/metadata_image_param.ipynb | 554 +++++++++++++++++++++++++++ 1 file changed, 554 insertions(+) create mode 100644 notebooks/metadata_image_param.ipynb diff --git a/notebooks/metadata_image_param.ipynb b/notebooks/metadata_image_param.ipynb new file mode 100644 index 000000000..a7b9f567b --- /dev/null +++ b/notebooks/metadata_image_param.ipynb @@ -0,0 +1,554 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this proof of concept we will read & write JSON files in Jupyter notebook. \n", + "\n", + "1. display the data in the sidecar \n", + "2. edit this data \n", + "3. check that the sidecar will write valid JSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "#import json module to be able to read & write json files \n", + "import json\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from glob import glob \n", + "from pathlib import Path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. The first part will include displaying the data in the sidecar by reading the JSON files \n", + "2. We then use json.load to turn it into a python object \n", + "3. The data we have includes an array of information under SliceTiming so we will create a dataframe within our dataframe to include SliceTiming as SliceTime 00, 01 , etc. (individual values of SliceTiming). " + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "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", + "
1
ProcedureStepDescriptionMR_HEAD_WO_IV_CONTRAST
DeviceSerialNumber167024
EffectiveEchoSpacing0.000689998
TotalReadoutTime0.0717598
ManufacturersModelNamePrisma_fit
......
SliceTime0313.61667
SliceTime0323.73333
SliceTime0333.85
SliceTime0343.96667
SliceTime0354.08333
\n", + "

64 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 1\n", + "ProcedureStepDescription MR_HEAD_WO_IV_CONTRAST\n", + "DeviceSerialNumber 167024\n", + "EffectiveEchoSpacing 0.000689998\n", + "TotalReadoutTime 0.0717598\n", + "ManufacturersModelName Prisma_fit\n", + "... ...\n", + "SliceTime031 3.61667\n", + "SliceTime032 3.73333\n", + "SliceTime033 3.85\n", + "SliceTime034 3.96667\n", + "SliceTime035 4.08333\n", + "\n", + "[64 rows x 1 columns]" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#testing the code with a single json file. \n", + "\n", + "file_test = open('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json')\n", + "sample_data = json.load(file_test)\n", + "sample_data.keys()\n", + "sample_data.get('SliceTiming')\n", + "SliceTime = sample_data.get('SliceTiming') #the way you can snatch things out of a dictionary \n", + "#if dict doens't have the key it will return none vs. error\n", + "\n", + "if SliceTime: \n", + " sample_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del sample_data['SliceTiming']\n", + " \n", + "array_data = pd.DataFrame.from_dict(sample_data, orient='index', columns = ['1'])\n", + "array_data" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [], + "source": [ + "#{\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the next one might not have slice timing but you concatonate the next row -- if the file doesn't have slice timing it fills with NaN and if it doesn't then google! \n", + "\n", + "rglob to get all the files in the bids tree then load it with json.load " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next steps \n", + "\n", + "1. Slice Timing turn it into a column where each column would have its own float \n", + "2. multiple columns with the umber of them filled out to the maximum number of slice times " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. The following part is used to edit JSON file data. \n", + "\n", + "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. \n", + "\n", + "Note that this code is commented out as it will be different when we are using this with Pandas DataFrame. This was code written when working with a single .json file. " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "#Here we change the value for AcquisionNumber from 1 to 2. \n", + "#json_data[\"AcquisitionNumber\"] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view edited data\n", + "#json_data" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Reverting back to original data\n", + "#json_data[\"AcquisitionNumber\"] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Checking that the sidecare will write valid JSON files \n", + "\n", + "In order to do this, we use the json.dumps function as it will turn the python object into a JSON string, and therefore, will wirte a valid JSON file always. \n", + "\n", + "Note: same as the previous chunk of code, this was written for a single .json file and therefore is commentend out " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#json_string = json.dumps(json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view the python object as a JSON string \n", + "#json_string" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "#notes from Matt \n", + "\n", + "# have a function that does the reading and creates 1 row then you have to loop and the dataframe grows through concatanation \n", + "# pandas.concat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next section is the for loop attempting to extract, open and turn into a dataframe each json file in the \"complete\" directory! " + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n" + ] + }, + { + "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", + "
EchoTimeEffectiveEchoSpacingTotalReadoutTimeFlipAngleRepetitionTimePhaseEncodingDirectionPartialFourier
0NaNNaNNaNNaNNaNNaNNaN
10.089000.000690.0717690.04.2jNaN
2NaNNaNNaN60.01.5j-0.75
30.00646NaNNaN60.01.5j-0.75
40.089000.000690.0717690.04.2j-NaN
\n", + "
" + ], + "text/plain": [ + " EchoTime EffectiveEchoSpacing TotalReadoutTime FlipAngle \\\n", + "0 NaN NaN NaN NaN \n", + "1 0.08900 0.00069 0.07176 90.0 \n", + "2 NaN NaN NaN 60.0 \n", + "3 0.00646 NaN NaN 60.0 \n", + "4 0.08900 0.00069 0.07176 90.0 \n", + "\n", + " RepetitionTime PhaseEncodingDirection PartialFourier \n", + "0 NaN NaN NaN \n", + "1 4.2 j NaN \n", + "2 1.5 j- 0.75 \n", + "3 1.5 j- 0.75 \n", + "4 4.2 j- NaN " + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IMAGING_PARAMS = set([\"ParallelReductionFactorInPlane\", \"ParallelAcquisitionTechnique\",\n", + " \"ParallelAcquisitionTechnique\", \"PartialFourier\", \"PhaseEncodingDirection\",\n", + " \"EffectiveEchoSpacing\", \"TotalReadoutTime\", \"EchoTime\", \"SliceEncodingDirection\",\n", + " \"DwellTime\", \"FlipAngle\", \"MultibandAccelerationFactor\", \"RepetitionTime\",\n", + " \"VolumeTiming\", \"NumberOfVolumesDiscardedByScanner\", \"NumberOfVolumesDiscardedByUser\"])\n", + "\n", + "dfs = [] # an empty list to store the data frames\n", + "\n", + "counter=0\n", + "\n", + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'):\n", + " print(type(path))\n", + " print(counter)\n", + " s_path = str(path)\n", + " #print(s_path)\n", + " file_tree = open(s_path)\n", + " example_data = json.load(file_tree)\n", + " wanted_keys = example_data.keys() & IMAGING_PARAMS\n", + " example_data = {key: example_data[key] for key in wanted_keys} \n", + " SliceTime = example_data.get('SliceTiming') #the way you can snatch things out of a dictionary #if dict doens't have the key it will return none vs. error\n", + " if SliceTime: \n", + " example_data.update({\"SliceTime%03d\"%SliceNum : [time] for SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + " #if ShimSetting:\n", + " \n", + " dfs.append(example_data)\n", + " \n", + "df = pd.DataFrame(dfs)\n", + "#df.drop_duplicates()\n", + "df.head()\n", + "\n", + "\n", + "\n", + "#create dataframe of unique rows \n", + "#bids entities filter in the bond class to fileter through the files \n", + "#loop over , get metadata, and put into the dataframe \n", + "\n", + "\n", + "\n", + " #print(example_data)\n", + "\n", + "\n", + " \n", + "#for file in example_data:\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') # read data frame from json file\n", + " #dfs.append(data) # append the data frame to the list\n", + " #temp = pd.concat(dfs, ignore_index=True) # concatenate all the data frames in the list.\n", + "\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') \n", + " #data\n", + " #counter += 1\n", + " \n", + "\n", + "#NOTE: error when trying to put the data into a pandas dataframe. This error happens regardless of the way SliceTiming is setup. \n", + "# print(example_data) was used to make sure that inputs that are an array such as in the field SliceTiming are being separated into indenpendent values of SliceTime00x that should feed into the dataframe. \n", + "# it is doing that across all json files that are being loaded from the directory " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are just documented attempts at the above for loop! \n", + "\n", + "attempt at directory stuff #1 \n", + "\n", + "import os, json\n", + "import pandas as pd\n", + "\n", + "path_to_json = '/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/anat'\n", + "json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]\n", + "print(json_files)\n", + "\n", + "attempt #2\n", + "\n", + "for filename in glob('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/*.json'):\n", + " print(filename)\n", + " \n", + " \n", + "attempt # 3 \n", + " \n", + " for name in files: \n", + " f = open(name, 'r')\n", + " print(f)\n", + " content=f.readlines()\n", + " print(f'Content of %s:\\n %s' %(name,content))\n", + " f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From c16a500f280aa1999e811073a21ce9da3bfbd29d Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Fri, 9 Oct 2020 23:20:44 -0400 Subject: [PATCH 32/41] key groups and param groups work! --- bond/bond.py | 42 +++- notebooks/Untitled.ipynb | 430 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 461 insertions(+), 11 deletions(-) create mode 100644 notebooks/Untitled.ipynb diff --git a/bond/bond.py b/bond/bond.py index 215f546b9..2b277595b 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -3,17 +3,21 @@ import json from pathlib import Path from bids.layout import parse_file_entities -from bids.layout import BIDSFile +import pandas as pd bids.config.set_option('extension_initial_dot', True) NON_KEY_ENTITIES = set(["subject", "session", "extension"]) # Multi-dimensional keys SliceTiming -IMAGING_PARAMS = set(["ParallelReductionFactorInPlane", "ParallelAcquisitionTechnique", +IMAGING_PARAMS = set([ + "ParallelReductionFactorInPlane", "ParallelAcquisitionTechnique", "ParallelAcquisitionTechnique", "PartialFourier", "PhaseEncodingDirection", - "EffectiveEchoSpacing", "TotalReadoutTime", "EchoTime", "SliceEncodingDirection", - "DwellTime", "FlipAngle", "MultibandAccelerationFactor", "RepetitionTime", "SliceTiming", - "VolumeTiming", "NumberOfVolumesDiscardedByScanner", "NumberOfVolumesDiscardedByUser"]) + "EffectiveEchoSpacing", "TotalReadoutTime", "EchoTime", + "SliceEncodingDirection", "DwellTime", "FlipAngle", + "MultibandAccelerationFactor", "RepetitionTime", "SliceTiming", + "VolumeTiming", "NumberOfVolumesDiscardedByScanner", + "NumberOfVolumesDiscardedByUser"]) + class BOnD(object): @@ -49,16 +53,17 @@ def rename_files(self, filters, pattern, replacement): def get_param_groups(self, key_group): key_entities = _key_group_to_entities(key_group) + key_entities["extension"] = ".nii[.gz]*" matching_files = self.layout.get(return_type="file", scope="self", - **key_entities) - return _get_param_groups(matching_files) + regex_search=True, **key_entities) + return _get_param_groups(matching_files, self.layout) def get_key_groups(self): key_groups = set() for path in Path(self.path).rglob("*.*"): if path.suffix == ".json": continue - key_groups.update(_file_to_key_group(path),) + key_groups.update((_file_to_key_group(path),)) return sorted(key_groups) def change_metadata(self, filters, pattern, metadata): @@ -81,7 +86,7 @@ def change_metadata(self, filters, pattern, metadata): json_file = [x for x in bidsjson_file if 'json' in x.filename] - if len(json_file) is not 1: + if not len(json_file) == 1: print("FOUND IRREGULAR ASSOCIATIONS") @@ -135,7 +140,7 @@ def _file_to_key_group(filename): return _entities_to_key_group(entities) -def _get_param_groups(files): +def _get_param_groups(files, layout): """Finds a list of *parameter groups* from a list of files. Parameters: @@ -153,4 +158,19 @@ def _get_param_groups(files): For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. """ - pass + dfs = [] + for path in files: + metadata = layout.get_metadata(path) + wanted_keys = metadata.keys() & IMAGING_PARAMS + example_data = {key: metadata[key] for key in wanted_keys} + + # Expand slice timing to multiple columns + SliceTime = example_data.get('SliceTiming') + if SliceTime: + example_data.update( + {"SliceTime%03d" % SliceNum: time for + SliceNum, time in enumerate(SliceTime)}) + del example_data['SliceTiming'] + dfs.append(example_data) + + return pd.DataFrame(dfs).drop_duplicates() diff --git a/notebooks/Untitled.ipynb b/notebooks/Untitled.ipynb new file mode 100644 index 000000000..9142245f2 --- /dev/null +++ b/notebooks/Untitled.ipynb @@ -0,0 +1,430 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#!/usr/bin/env python\n", + "\n", + "\"\"\"Tests for `bond` package.\"\"\"\n", + "import sys\n", + "from pathlib import Path\n", + "sys.path.append(\"..\")\n", + "import os\n", + "import pytest\n", + "from pkg_resources import resource_filename as pkgrf\n", + "import shutil\n", + "import bond\n", + "import tempfile\n", + "import os.path as op\n", + "from copy import deepcopy\n", + "import base64\n", + "from glob import glob\n", + "\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "\n", + "data_root = Path(\".\") / \"testdata\" / \"complete\"\n", + "#shutil.copytree(TEST_DATA, str(data_root))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testdata\r\n", + "testdata/complete\r\n", + "testdata/complete/README\r\n", + "testdata/complete/sub-01\r\n", + "testdata/complete/sub-01/ses-phdiff\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/func\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-02\r\n", + "testdata/complete/sub-02/ses-phdiff\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-02/ses-phdiff/func\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/anat\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03\r\n", + "testdata/complete/sub-03/ses-phdiff\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-03/ses-phdiff/func\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/dataset_description.json\r\n", + "testdata/inconsistent\r\n", + "testdata/inconsistent/README\r\n", + "testdata/inconsistent/sub-01\r\n", + "testdata/inconsistent/sub-01/ses-phdiff\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-02\r\n", + "testdata/inconsistent/sub-02/ses-phdiff\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03\r\n", + "testdata/inconsistent/sub-03/ses-phdiff\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/dataset_description.json\r\n" + ] + } + ], + "source": [ + "!find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['acquisition-HASC55AP_datatype-dwi_suffix-dwi', 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1', 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2', 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff', 'datatype-anat_suffix-T1w', 'datatype-fmap_direction-PA_fmap-epi_suffix-epi', 'datatype-func_suffix-bold_task-rest']\n" + ] + } + ], + "source": [ + "from bond import BOnD\n", + "\n", + "bod = BOnD(str(data_root))\n", + "key_groups = bod.get_key_groups()\n", + "print(key_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "acquisition-HASC55AP_datatype-dwi_suffix-dwi\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.089 j 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 4.2 0.0 0.116667 0.233333 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 3.5 3.616667 3.733333 3.85 3.966667 \n", + "\n", + " SliceTime035 \n", + "0 4.083333 \n", + "\n", + "[1 rows x 42 columns]\n", + "acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1\n", + " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", + "0 0.004 0.75 60 j- 1.5\n", + "acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2\n", + " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", + "0 0.00646 0.75 60 j- 1.5\n", + "acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff\n", + " FlipAngle PhaseEncodingDirection PartialFourier RepetitionTime\n", + "0 60 j- 0.75 1.5\n", + "datatype-anat_suffix-T1w\n", + " FlipAngle PhaseEncodingDirection EchoTime RepetitionTime\n", + "0 8 i- 0.0029 2.5\n", + "datatype-fmap_direction-PA_fmap-epi_suffix-epi\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.089 j- 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 4.2 0.0 0.116667 0.233333 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 3.5 3.616667 3.733333 3.85 3.966667 \n", + "\n", + " SliceTime035 \n", + "0 4.083333 \n", + "\n", + "[1 rows x 42 columns]\n", + "datatype-func_suffix-bold_task-rest\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.089 j 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 1.0 0.0 0.027132 0.054264 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 0.813953 0.841085 0.868217 0.895349 0.922481 \n", + "\n", + " SliceTime035 \n", + "0 0.949612 \n", + "\n", + "[1 rows x 42 columns]\n" + ] + } + ], + "source": [ + "for key_group in key_groups:\n", + " print(key_group)\n", + " print(bod.get_param_groups(key_group))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['acquisition-HASC55AP_datatype-dwi_suffix-dwi', 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1', 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2', 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff', 'datatype-anat_suffix-T1w', 'datatype-fmap_direction-PA_fmap-epi_suffix-epi', 'datatype-func_suffix-bold_task-rest']\n" + ] + } + ], + "source": [ + "data_root = Path(\".\") / \"testdata\" / \"inconsistent\"\n", + "multigroup_bod = BOnD(str(data_root))\n", + "key_groups = multigroup_bod.get_key_groups()\n", + "print(key_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "acquisition-HASC55AP_datatype-dwi_suffix-dwi\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.040 j 0.07176 \n", + "1 0.00069 0.089 j 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 4.2 0.0 0.116667 0.233333 \n", + "1 90 4.2 0.0 0.116667 0.233333 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", + "1 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 3.5 3.616667 3.733333 3.85 3.966667 \n", + "1 3.5 3.616667 3.733333 3.85 3.966667 \n", + "\n", + " SliceTime035 \n", + "0 4.083333 \n", + "1 4.083333 \n", + "\n", + "[2 rows x 42 columns]\n", + "acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1\n", + " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", + "0 0.004 0.75 60 j- 1.5\n", + "acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2\n", + " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", + "0 0.00646 0.75 60 j- 1.5\n", + "acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff\n", + " FlipAngle PhaseEncodingDirection PartialFourier RepetitionTime\n", + "0 60 j- 0.75 1.5\n", + "datatype-anat_suffix-T1w\n", + " FlipAngle PhaseEncodingDirection EchoTime RepetitionTime\n", + "0 8 i- 0.0029 2.5\n", + "datatype-fmap_direction-PA_fmap-epi_suffix-epi\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.089 j- 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 4.2 0.0 0.116667 0.233333 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 3.5 3.616667 3.733333 3.85 3.966667 \n", + "\n", + " SliceTime035 \n", + "0 4.083333 \n", + "\n", + "[1 rows x 42 columns]\n", + "datatype-func_suffix-bold_task-rest\n", + " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", + "0 0.00069 0.089 j 0.07176 \n", + "2 0.00069 0.089 j 0.07176 \n", + "\n", + " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", + "0 90 1.0 0.0 0.027132 0.054264 \n", + "2 70 1.0 0.0 0.027132 0.054264 \n", + "\n", + " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", + "0 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", + "2 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 0.813953 0.841085 0.868217 0.895349 0.922481 \n", + "2 0.813953 0.841085 0.868217 0.895349 0.922481 \n", + "\n", + " SliceTime035 \n", + "0 0.949612 \n", + "2 0.949612 \n", + "\n", + "[2 rows x 42 columns]\n" + ] + } + ], + "source": [ + "for key_group in key_groups:\n", + " print(key_group)\n", + " print(multigroup_bod.get_param_groups(key_group))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 4ab6edd1e73691c611a9da1bb0fc3c16be9eda62 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Mon, 12 Oct 2020 16:59:56 -0400 Subject: [PATCH 33/41] rounding slice timing --- bond/bond.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bond/bond.py b/bond/bond.py index 2b277595b..c02b3f5ec 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -167,6 +167,9 @@ def _get_param_groups(files, layout): # Expand slice timing to multiple columns SliceTime = example_data.get('SliceTiming') if SliceTime: + # round each slice time to one place after the decimal + for i in range(len(SliceTime)): + SliceTime[i] = round(SliceTime[i], 1) example_data.update( {"SliceTime%03d" % SliceNum: time for SliceNum, time in enumerate(SliceTime)}) From 1503ddd71f563b73e4b3f984f0772c517d38dc91 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Mon, 12 Oct 2020 17:13:08 -0400 Subject: [PATCH 34/41] testing Key and Param Groups --- notebooks/HTML_param_groups.ipynb | 459 +++++++++++++++++++++++++++ notebooks/Key_and_Param_Groups.ipynb | 253 +++++++++++++++ notebooks/Untitled.ipynb | 430 ------------------------- 3 files changed, 712 insertions(+), 430 deletions(-) create mode 100644 notebooks/HTML_param_groups.ipynb create mode 100644 notebooks/Key_and_Param_Groups.ipynb delete mode 100644 notebooks/Untitled.ipynb diff --git a/notebooks/HTML_param_groups.ipynb b/notebooks/HTML_param_groups.ipynb new file mode 100644 index 000000000..7be5cebfe --- /dev/null +++ b/notebooks/HTML_param_groups.ipynb @@ -0,0 +1,459 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import sys \n", + "sys.path.append(\"..\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/Covitz/BOnD/notebooks/testdata'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# USE THIS BEFORE TESTING! \n", + "\n", + "from pathlib import Path \n", + "import shutil\n", + "import os\n", + "#import bond\n", + "from bids.layout import parse_file_entities \n", + "\n", + "from pkg_resources import resource_filename as pkgrf \n", + "\n", + "# returns stirng path to testdata\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "# should give you the full path \n", + "tmp_path = Path().resolve()\n", + "#print(tmp_path)\n", + "\n", + "# dest path\n", + "data_root = tmp_path / \"testdata\"\n", + "\n", + "# ensure path does not already exist in cwd\n", + "if data_root.exists():\n", + " shutil.rmtree(str(data_root))\n", + "\n", + "# equivalent of command line \"cp\"\n", + "cwd = shutil.copytree(TEST_DATA, str(data_root))\n", + "\n", + "cwd\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testdata\n", + "testdata/complete\n", + "testdata/complete/sub-01\n", + "testdata/complete/sub-01/ses-phdiff\n", + "testdata/complete/sub-01/ses-phdiff/dwi\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-01/ses-phdiff/anat\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/func\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/README\n", + "testdata/complete/dataset_description.json\n", + "testdata/complete/sub-02\n", + "testdata/complete/sub-02/ses-phdiff\n", + "testdata/complete/sub-02/ses-phdiff/dwi\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-02/ses-phdiff/anat\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", + "testdata/complete/sub-02/ses-phdiff/func\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03\n", + "testdata/complete/sub-03/ses-phdiff\n", + "testdata/complete/sub-03/ses-phdiff/dwi\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/complete/sub-03/ses-phdiff/fmap\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/anat\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", + "testdata/complete/sub-03/ses-phdiff/func\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/inconsistent\n", + "testdata/inconsistent/sub-01\n", + "testdata/inconsistent/sub-01/ses-phdiff\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", + "testdata/inconsistent/README\n", + "testdata/inconsistent/dataset_description.json\n", + "testdata/inconsistent/sub-02\n", + "testdata/inconsistent/sub-02/ses-phdiff\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", + "testdata/inconsistent/sub-03\n", + "testdata/inconsistent/sub-03/ses-phdiff\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + ] + } + ], + "source": [ + "! find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': '01', 'session': 'phdiff', 'acquisition': 'v4', 'suffix': 'magnitude1', 'datatype': 'fmap', 'extension': '.json'}\n", + "acquisition-v4_datatype-fmap_suffix-magnitude1\n", + "acquisition-v4_datatype-fmap_suffix-magnitude1\n" + ] + } + ], + "source": [ + "# TEST BED FOR HTML THING\n", + "\n", + "\n", + "\n", + "# ISSUE! Grouping by char! \n", + "\n", + "#param_group = bond_obj.get_param_groups(key_group)\n", + "# print(key_group)\n", + "# #print(param_group)\n", + "\n", + "NON_KEY_ENTITIES = set([\"subject\", \"session\", \"extension\"])\n", + "\n", + "def key_group_to_entities(key_group):\n", + " return dict([group.split(\"-\") for group in key_group.split(\"_\")])\n", + "\n", + "\n", + "def entities_to_key_group(entities):\n", + " group_keys = sorted(set(entities.keys()) - NON_KEY_ENTITIES)\n", + " return \"_\".join(\n", + " [\"{}-{}\".format(key, entities[key]) for key in group_keys])\n", + "\n", + "def file_to_entities(filename):\n", + " entities = parse_file_entities(str(filename))\n", + " return entities \n", + "\n", + "def file_to_key_group(filename): \n", + " entities = parse_file_entities(str(filename))\n", + " keys = entities_to_key_group(entities)\n", + " return keys\n", + "\n", + "#def get_param_groups(key_group, path):\n", + "# key_entities = key_group_to_entities(key_group)\n", + "# path = Path(path)\n", + "# matching_files = path.layout.get(return_type=\"file\", scope=\"self\",\n", + "# **key_entities)\n", + "# return _get_param_groups(matching_files)\n", + "\n", + "filename = \"/Users/Covitz/BOnD/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\"\n", + "path = \"/Users/Covitz/BOnD/bond/testdata/complete/\"\n", + "ret_entities = file_to_entities(filename)\n", + "print(ret_entities) \n", + "key_group = entities_to_key_group(ret_entities) \n", + "print(key_group)\n", + "f_to_key = file_to_key_group(filename)\n", + "print(key_group)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['-',\n", + " '1',\n", + " '2',\n", + " '4',\n", + " '5',\n", + " 'A',\n", + " 'C',\n", + " 'H',\n", + " 'P',\n", + " 'S',\n", + " 'T',\n", + " '_',\n", + " 'a',\n", + " 'b',\n", + " 'c',\n", + " 'd',\n", + " 'e',\n", + " 'f',\n", + " 'g',\n", + " 'h',\n", + " 'i',\n", + " 'k',\n", + " 'l',\n", + " 'm',\n", + " 'n',\n", + " 'o',\n", + " 'p',\n", + " 'q',\n", + " 'r',\n", + " 's',\n", + " 't',\n", + " 'u',\n", + " 'v',\n", + " 'w',\n", + " 'x',\n", + " 'y']" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import bond\n", + "\n", + "# IMPORT SET TRACE \n", + "# assert 0, debug \n", + "import ipdb # USE THIS TO DEBUG PYTHON LIKE GDB \n", + "\n", + "import pybids \n", + "\n", + "bond_obj = bond.BOnD(\"/Users/Covitz/BOnD/bond/testdata/complete/\")\n", + "key_group = bond_obj.get_key_groups()\n", + "key_group" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pybids in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (0.12.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.1.3)\n", + "Requirement already satisfied: scipy in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (1.5.2)\n", + "Requirement already satisfied: sqlalchemy in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.3.19)\n", + "Requirement already satisfied: bids-validator in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.5.6)\n", + "Requirement already satisfied: patsy in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (0.5.1)\n", + "Requirement already satisfied: numpy in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (1.19.2)\n", + "Requirement already satisfied: num2words in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (0.5.10)\n", + "Requirement already satisfied: nibabel>=2.1 in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (3.1.1)\n", + "Requirement already satisfied: click in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (7.1.2)\n", + "Requirement already satisfied: pytz>=2017.2 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pandas>=0.23->pybids) (2020.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Users/Covitz/.local/lib/python3.8/site-packages (from pandas>=0.23->pybids) (2.8.1)\n", + "Requirement already satisfied: six in /Users/Covitz/.local/lib/python3.8/site-packages (from patsy->pybids) (1.15.0)\n", + "Requirement already satisfied: docopt>=0.6.2 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from num2words->pybids) (0.6.2)\n", + "Requirement already satisfied: packaging>=14.3 in /Users/Covitz/.local/lib/python3.8/site-packages (from nibabel>=2.1->pybids) (20.4)\n", + "Requirement already satisfied: pyparsing>=2.0.2 in /Users/Covitz/.local/lib/python3.8/site-packages (from packaging>=14.3->nibabel>=2.1->pybids) (2.4.7)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install pybids" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the bids directory inside which we want to change files \n", + "# @Returns\n", + "# - HTML report of acquisitions and their parameter groups \n", + "\n", + "\n", + "# WHERE DO WE FIND THE ACQUISITION TYPE? \n", + "\n", + "\n", + "\n", + "\n", + "def _entities_to_key_group(entities):\n", + " group_keys = sorted(entities.keys() - NON_KEY_ENTITIES)\n", + " return \"_\".join(\n", + " [\"{}-{}\".format(key, entities[key]) for key in group_keys])\n", + "\n", + "\n", + "def _file_to_key_group(filename):\n", + " entities = parse_file_entities(str(filename))\n", + " return _entities_to_key_group(entities)\n", + "\n", + "\n", + "def html_groups(bids_dir):\n", + " # get key groups using bond.get_key_groups\n", + " # use key_group_to_entities to get entities \n", + " # get param groups for each entity \n", + " \n", + " \n", + " # initialize dictionary of acquisition types \n", + " d_acts = {}\n", + " for path in pathlib.Path(path_to_dir).iterdir():\n", + " if path.is_file():\n", + " ext = path.suffix\n", + " # check if the file is a .json file \n", + " if ext == \".json\":\n", + " # parse keys\n", + " d_keys = parse_file_entities(path)\n", + " \n", + " \n", + " \n", + " # create html file \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/Key_and_Param_Groups.ipynb b/notebooks/Key_and_Param_Groups.ipynb new file mode 100644 index 000000000..0a8c06a32 --- /dev/null +++ b/notebooks/Key_and_Param_Groups.ipynb @@ -0,0 +1,253 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#!/usr/bin/env python\n", + "\n", + "\"\"\"Tests for `bond` package.\"\"\"\n", + "import sys\n", + "from pathlib import Path\n", + "sys.path.append(\"..\")\n", + "import os\n", + "import pytest\n", + "from pkg_resources import resource_filename as pkgrf\n", + "import shutil\n", + "import bond\n", + "import tempfile\n", + "import os.path as op\n", + "from copy import deepcopy\n", + "import base64\n", + "from glob import glob\n", + "\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "\n", + "#data_root = Path(\".\") / \"testdata\" / \"complete\"\n", + "\n", + "data_root2 = Path(\"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\")\n", + "\n", + "#shutil.copytree(TEST_DATA, str(data_root))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#!find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['datatype-anat_reconstruction-refaced_suffix-T1w', 'datatype-func_run-1_suffix-bold_task-rest', 'datatype-func_run-2_suffix-bold_task-rest', 'suffix-', 'suffix-BIDS']\n" + ] + } + ], + "source": [ + "from bond import BOnD\n", + "\n", + "bod = BOnD(str(data_root2))\n", + "key_groups = bod.get_key_groups()\n", + "print(key_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "datatype-anat_reconstruction-refaced_suffix-T1w\n", + " DwellTime EchoTime PartialFourier RepetitionTime FlipAngle\n", + "0 0.000015 0.00302 0.75 2.6 8.0\n", + "111 NaN NaN NaN NaN NaN\n", + "datatype-func_run-1_suffix-bold_task-rest\n", + " DwellTime TotalReadoutTime PhaseEncodingDirection EchoTime \\\n", + "0 0.000003 0.03621 j- 0.03 \n", + "1 0.000003 0.03621 j- 0.03 \n", + "2 0.000003 0.03621 j- 0.03 \n", + "\n", + " PartialFourier EffectiveEchoSpacing RepetitionTime FlipAngle \\\n", + "0 1 0.00051 2.5 80 \n", + "1 1 0.00051 2.5 80 \n", + "2 1 0.00051 2.5 80 \n", + "\n", + " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 SliceTime030 \\\n", + "0 1.2 0 ... 2.2 0.9 2.2 \n", + "1 1.2 0 ... 2.2 0.9 2.2 \n", + "2 1.2 0 ... 2.2 0.9 2.2 \n", + "\n", + " SliceTime031 SliceTime032 SliceTime033 SliceTime034 SliceTime035 \\\n", + "0 1.0 2.3 1.0 2.4 1.1 \n", + "1 1.0 2.3 1.0 2.4 1.1 \n", + "2 1.0 2.3 1.1 2.4 1.1 \n", + "\n", + " SliceTime036 SliceTime037 \n", + "0 2.4 1.2 \n", + "1 2.4 1.2 \n", + "2 2.4 1.2 \n", + "\n", + "[3 rows x 46 columns]\n", + "datatype-func_run-2_suffix-bold_task-rest\n", + " DwellTime TotalReadoutTime PhaseEncodingDirection EchoTime \\\n", + "0 0.000003 0.03621 j- 0.03 \n", + "1 0.000003 0.03621 j- 0.03 \n", + "2 0.000003 0.03621 j- 0.03 \n", + "33 0.000003 0.03621 i 0.03 \n", + "\n", + " PartialFourier EffectiveEchoSpacing RepetitionTime FlipAngle \\\n", + "0 1 0.00051 2.5 80 \n", + "1 1 0.00051 2.5 80 \n", + "2 1 0.00051 2.5 80 \n", + "33 1 0.00051 2.5 80 \n", + "\n", + " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 SliceTime030 \\\n", + "0 1.2 0 ... 2.2 0.9 2.2 \n", + "1 1.2 0 ... 2.2 0.9 2.2 \n", + "2 1.2 0 ... 2.2 0.9 2.2 \n", + "33 1.2 0 ... 2.2 0.9 2.2 \n", + "\n", + " SliceTime031 SliceTime032 SliceTime033 SliceTime034 SliceTime035 \\\n", + "0 1.0 2.3 1.0 2.4 1.1 \n", + "1 1.0 2.3 1.1 2.4 1.1 \n", + "2 1.0 2.3 1.0 2.4 1.1 \n", + "33 1.0 2.3 1.0 2.4 1.1 \n", + "\n", + " SliceTime036 SliceTime037 \n", + "0 2.4 1.2 \n", + "1 2.4 1.2 \n", + "2 2.4 1.2 \n", + "33 2.4 1.2 \n", + "\n", + "[4 rows x 46 columns]\n", + "suffix-\n", + " DwellTime EchoTime PartialFourier RepetitionTime FlipAngle \\\n", + "0 0.000015 0.00302 0.75 2.6 8.0 \n", + "1 0.000003 0.03000 1.00 2.5 80.0 \n", + "4 0.000003 0.03000 1.00 2.5 80.0 \n", + "5 0.000003 0.03000 1.00 2.5 80.0 \n", + "101 0.000003 0.03000 1.00 2.5 80.0 \n", + "333 NaN NaN NaN NaN NaN \n", + "\n", + " TotalReadoutTime PhaseEncodingDirection EffectiveEchoSpacing \\\n", + "0 NaN NaN NaN \n", + "1 0.03621 j- 0.00051 \n", + "4 0.03621 j- 0.00051 \n", + "5 0.03621 j- 0.00051 \n", + "101 0.03621 i 0.00051 \n", + "333 NaN NaN NaN \n", + "\n", + " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 \\\n", + "0 NaN NaN ... NaN NaN \n", + "1 1.2 0.0 ... 2.2 0.9 \n", + "4 1.2 0.0 ... 2.2 0.9 \n", + "5 1.2 0.0 ... 2.2 0.9 \n", + "101 1.2 0.0 ... 2.2 0.9 \n", + "333 NaN NaN ... NaN NaN \n", + "\n", + " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", + "0 NaN NaN NaN NaN NaN \n", + "1 2.2 1.0 2.3 1.0 2.4 \n", + "4 2.2 1.0 2.3 1.0 2.4 \n", + "5 2.2 1.0 2.3 1.1 2.4 \n", + "101 2.2 1.0 2.3 1.0 2.4 \n", + "333 NaN NaN NaN NaN NaN \n", + "\n", + " SliceTime035 SliceTime036 SliceTime037 \n", + "0 NaN NaN NaN \n", + "1 1.1 2.4 1.2 \n", + "4 1.1 2.4 1.2 \n", + "5 1.1 2.4 1.2 \n", + "101 1.1 2.4 1.2 \n", + "333 NaN NaN NaN \n", + "\n", + "[6 rows x 46 columns]\n", + "suffix-BIDS\n", + "Empty DataFrame\n", + "Columns: []\n", + "Index: []\n" + ] + } + ], + "source": [ + "for key_group in key_groups:\n", + " print(key_group)\n", + " print(bod.get_param_groups(key_group))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data_root = Path(\".\") / \"testdata\" / \"inconsistent\"\n", + "multigroup_bod = BOnD(str(data_root2))\n", + "key_groups = multigroup_bod.get_key_groups()\n", + "print(key_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for key_group in key_groups:\n", + " print(key_group)\n", + " print(multigroup_bod.get_param_groups(key_group))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/Untitled.ipynb b/notebooks/Untitled.ipynb deleted file mode 100644 index 9142245f2..000000000 --- a/notebooks/Untitled.ipynb +++ /dev/null @@ -1,430 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "#!/usr/bin/env python\n", - "\n", - "\"\"\"Tests for `bond` package.\"\"\"\n", - "import sys\n", - "from pathlib import Path\n", - "sys.path.append(\"..\")\n", - "import os\n", - "import pytest\n", - "from pkg_resources import resource_filename as pkgrf\n", - "import shutil\n", - "import bond\n", - "import tempfile\n", - "import os.path as op\n", - "from copy import deepcopy\n", - "import base64\n", - "from glob import glob\n", - "\n", - "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", - "\n", - "\n", - "data_root = Path(\".\") / \"testdata\" / \"complete\"\n", - "#shutil.copytree(TEST_DATA, str(data_root))" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "testdata\r\n", - "testdata/complete\r\n", - "testdata/complete/README\r\n", - "testdata/complete/sub-01\r\n", - "testdata/complete/sub-01/ses-phdiff\r\n", - "testdata/complete/sub-01/ses-phdiff/dwi\r\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/complete/sub-01/ses-phdiff/func\r\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", - "testdata/complete/sub-01/ses-phdiff/anat\r\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/complete/sub-02\r\n", - "testdata/complete/sub-02/ses-phdiff\r\n", - "testdata/complete/sub-02/ses-phdiff/dwi\r\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/complete/sub-02/ses-phdiff/func\r\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/anat\r\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/complete/sub-03\r\n", - "testdata/complete/sub-03/ses-phdiff\r\n", - "testdata/complete/sub-03/ses-phdiff/dwi\r\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/complete/sub-03/ses-phdiff/func\r\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", - "testdata/complete/sub-03/ses-phdiff/anat\r\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/complete/dataset_description.json\r\n", - "testdata/inconsistent\r\n", - "testdata/inconsistent/README\r\n", - "testdata/inconsistent/sub-01\r\n", - "testdata/inconsistent/sub-01/ses-phdiff\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/inconsistent/sub-02\r\n", - "testdata/inconsistent/sub-02/ses-phdiff\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/inconsistent/sub-03\r\n", - "testdata/inconsistent/sub-03/ses-phdiff\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", - "testdata/inconsistent/dataset_description.json\r\n" - ] - } - ], - "source": [ - "!find testdata" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['acquisition-HASC55AP_datatype-dwi_suffix-dwi', 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1', 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2', 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff', 'datatype-anat_suffix-T1w', 'datatype-fmap_direction-PA_fmap-epi_suffix-epi', 'datatype-func_suffix-bold_task-rest']\n" - ] - } - ], - "source": [ - "from bond import BOnD\n", - "\n", - "bod = BOnD(str(data_root))\n", - "key_groups = bod.get_key_groups()\n", - "print(key_groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "acquisition-HASC55AP_datatype-dwi_suffix-dwi\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.089 j 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 4.2 0.0 0.116667 0.233333 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 3.5 3.616667 3.733333 3.85 3.966667 \n", - "\n", - " SliceTime035 \n", - "0 4.083333 \n", - "\n", - "[1 rows x 42 columns]\n", - "acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1\n", - " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", - "0 0.004 0.75 60 j- 1.5\n", - "acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2\n", - " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", - "0 0.00646 0.75 60 j- 1.5\n", - "acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff\n", - " FlipAngle PhaseEncodingDirection PartialFourier RepetitionTime\n", - "0 60 j- 0.75 1.5\n", - "datatype-anat_suffix-T1w\n", - " FlipAngle PhaseEncodingDirection EchoTime RepetitionTime\n", - "0 8 i- 0.0029 2.5\n", - "datatype-fmap_direction-PA_fmap-epi_suffix-epi\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.089 j- 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 4.2 0.0 0.116667 0.233333 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 3.5 3.616667 3.733333 3.85 3.966667 \n", - "\n", - " SliceTime035 \n", - "0 4.083333 \n", - "\n", - "[1 rows x 42 columns]\n", - "datatype-func_suffix-bold_task-rest\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.089 j 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 1.0 0.0 0.027132 0.054264 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 0.813953 0.841085 0.868217 0.895349 0.922481 \n", - "\n", - " SliceTime035 \n", - "0 0.949612 \n", - "\n", - "[1 rows x 42 columns]\n" - ] - } - ], - "source": [ - "for key_group in key_groups:\n", - " print(key_group)\n", - " print(bod.get_param_groups(key_group))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['acquisition-HASC55AP_datatype-dwi_suffix-dwi', 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1', 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2', 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff', 'datatype-anat_suffix-T1w', 'datatype-fmap_direction-PA_fmap-epi_suffix-epi', 'datatype-func_suffix-bold_task-rest']\n" - ] - } - ], - "source": [ - "data_root = Path(\".\") / \"testdata\" / \"inconsistent\"\n", - "multigroup_bod = BOnD(str(data_root))\n", - "key_groups = multigroup_bod.get_key_groups()\n", - "print(key_groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "acquisition-HASC55AP_datatype-dwi_suffix-dwi\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.040 j 0.07176 \n", - "1 0.00069 0.089 j 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 4.2 0.0 0.116667 0.233333 \n", - "1 90 4.2 0.0 0.116667 0.233333 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", - "1 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 3.5 3.616667 3.733333 3.85 3.966667 \n", - "1 3.5 3.616667 3.733333 3.85 3.966667 \n", - "\n", - " SliceTime035 \n", - "0 4.083333 \n", - "1 4.083333 \n", - "\n", - "[2 rows x 42 columns]\n", - "acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1\n", - " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", - "0 0.004 0.75 60 j- 1.5\n", - "acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2\n", - " EchoTime PartialFourier FlipAngle PhaseEncodingDirection RepetitionTime\n", - "0 0.00646 0.75 60 j- 1.5\n", - "acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff\n", - " FlipAngle PhaseEncodingDirection PartialFourier RepetitionTime\n", - "0 60 j- 0.75 1.5\n", - "datatype-anat_suffix-T1w\n", - " FlipAngle PhaseEncodingDirection EchoTime RepetitionTime\n", - "0 8 i- 0.0029 2.5\n", - "datatype-fmap_direction-PA_fmap-epi_suffix-epi\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.089 j- 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 4.2 0.0 0.116667 0.233333 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.35 ... 3.033333 3.15 3.266667 3.383333 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 3.5 3.616667 3.733333 3.85 3.966667 \n", - "\n", - " SliceTime035 \n", - "0 4.083333 \n", - "\n", - "[1 rows x 42 columns]\n", - "datatype-func_suffix-bold_task-rest\n", - " EffectiveEchoSpacing EchoTime PhaseEncodingDirection TotalReadoutTime \\\n", - "0 0.00069 0.089 j 0.07176 \n", - "2 0.00069 0.089 j 0.07176 \n", - "\n", - " FlipAngle RepetitionTime SliceTime000 SliceTime001 SliceTime002 \\\n", - "0 90 1.0 0.0 0.027132 0.054264 \n", - "2 70 1.0 0.0 0.027132 0.054264 \n", - "\n", - " SliceTime003 ... SliceTime026 SliceTime027 SliceTime028 SliceTime029 \\\n", - "0 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", - "2 0.081395 ... 0.705426 0.732558 0.75969 0.786822 \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 0.813953 0.841085 0.868217 0.895349 0.922481 \n", - "2 0.813953 0.841085 0.868217 0.895349 0.922481 \n", - "\n", - " SliceTime035 \n", - "0 0.949612 \n", - "2 0.949612 \n", - "\n", - "[2 rows x 42 columns]\n" - ] - } - ], - "source": [ - "for key_group in key_groups:\n", - " print(key_group)\n", - " print(multigroup_bod.get_param_groups(key_group))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} From c8e1c959f4532d67d30e31751bd0cdf1d5079668 Mon Sep 17 00:00:00 2001 From: Sydney Covitz Date: Wed, 14 Oct 2020 22:15:55 -0400 Subject: [PATCH 35/41] new notebooks --- bond/bond.py | 106 +- notebooks/CCNP_KeyGroups.zip | Bin 0 -> 2480 bytes notebooks/HTML_param_groups.ipynb | 418 +-- notebooks/Key_and_Param_Groups.ipynb | 268 +- ...anat_reconstruction-refaced_suffix-T1w.csv | 3 + ...atype-func_run-1_suffix-bold_task-rest.csv | 4 + ...atype-func_run-2_suffix-bold_task-rest.csv | 4 + notebooks/rename_files_work.ipynb | 2261 +++++++++++++++-- 8 files changed, 2554 insertions(+), 510 deletions(-) create mode 100644 notebooks/CCNP_KeyGroups.zip create mode 100644 notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv create mode 100644 notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv create mode 100644 notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv diff --git a/bond/bond.py b/bond/bond.py index c02b3f5ec..b8b627dee 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -4,6 +4,7 @@ from pathlib import Path from bids.layout import parse_file_entities import pandas as pd +import pdb bids.config.set_option('extension_initial_dot', True) @@ -21,10 +22,12 @@ class BOnD(object): - def __init__(self, data_root): + def __init__(self, data_root): + self.path = data_root self.layout = bids.BIDSLayout(self.path, validate = False) - + self.keys_files = {} + def fieldmaps_ok(self): pass @@ -58,14 +61,58 @@ def get_param_groups(self, key_group): regex_search=True, **key_entities) return _get_param_groups(matching_files, self.layout) + def get_file_params(self, key_group): + # files = self.keys_files[key_group] + # return _get_file_params(files, self.layout) + key_entities = _key_group_to_entities(key_group) + key_entities["extension"] = ".nii[.gz]*" + matching_files = self.layout.get(return_type="file", scope="self", + regex_search=True, **key_entities) + return _get_file_params(matching_files, self.layout) + + def get_key_groups(self): key_groups = set() for path in Path(self.path).rglob("*.*"): - if path.suffix == ".json": - continue - key_groups.update((_file_to_key_group(path),)) + if path.suffix == ".json" and path.stem != "dataset_description": + key_groups.update((_file_to_key_group(path),)) + # FILL THE DICTIONARY OF KEY GROUP, LIST OF FILENAMES PAIRS + ret = _file_to_key_group(path) + if ret not in self.keys_files.keys(): + self.keys_files[ret] = [] + self.keys_files[ret].append(path) return sorted(key_groups) - + + + def get_filenames(self, key_group): + # NEW - WORKS + return self.keys_files[key_group] + + + + + def change_filenames(self, key_group, split_params, pattern, replacement): + # NEW + #files = self.keys_files[key_group] + # for each filename in the key group, check if it's params match split_params + # if they match, perform the replacement acc to pattern/replacement + new_paths = [] + changes = 0 + dict_files_params = self.get_file_params(key_group) + for filename in dict_files_params.keys(): + if dict_files_params[filename] == split_params: + # DO REPLACEMENT! + path = Path(filename) + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(Path(directory, new_name)) + new_paths.append(path) + changes += 1 + return (new_paths, changes) + + def change_metadata(self, filters, pattern, metadata): # TODO: clean prints and add warnings @@ -158,12 +205,13 @@ def _get_param_groups(files, layout): For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. """ + dfs = [] for path in files: metadata = layout.get_metadata(path) wanted_keys = metadata.keys() & IMAGING_PARAMS example_data = {key: metadata[key] for key in wanted_keys} - + # Expand slice timing to multiple columns SliceTime = example_data.get('SliceTiming') if SliceTime: @@ -174,6 +222,50 @@ def _get_param_groups(files, layout): {"SliceTime%03d" % SliceNum: time for SliceNum, time in enumerate(SliceTime)}) del example_data['SliceTiming'] + dfs.append(example_data) return pd.DataFrame(dfs).drop_duplicates() + + +def _get_file_params(files, layout): + """Finds a list of *parameter groups* from a list of files. + + Parameters: + ----------- + + files : list + List of file names + + Returns: + -------- + + parameter_groups : list + A list of unique parameter groups + + For each file in `files`, find critical parameters for metadata. Then find + unique sets of these critical parameters. + """ + dict_files_params = {} + + for path in files: + metadata = layout.get_metadata(path) + wanted_keys = metadata.keys() & IMAGING_PARAMS + example_data = {key: metadata[key] for key in wanted_keys} + + # Expand slice timing to multiple columns + SliceTime = example_data.get('SliceTiming') + if SliceTime: + # round each slice time to one place after the decimal + for i in range(len(SliceTime)): + SliceTime[i] = round(SliceTime[i], 1) + example_data.update( + {"SliceTime%03d" % SliceNum: time for + SliceNum, time in enumerate(SliceTime)}) + del example_data['SliceTiming'] + + dict_files_params[path] = example_data + + return dict_files_params + + diff --git a/notebooks/CCNP_KeyGroups.zip b/notebooks/CCNP_KeyGroups.zip new file mode 100644 index 0000000000000000000000000000000000000000..396da91ee2315d941e26eceb9f5ba7c26eaffc48 GIT binary patch literal 2480 zcmWIWW@Zs#00G+?-#{<}O7Jr%FgQE=1;l%&R=OAEmlhQ3hlcPnu&Xn+#k&Dkx)90}YhJG_1HZEiJP`*U8f*STDJ_3~aVDYg;@c z&|DCWW_EDUBPNCbZ+4DFPu@4P0*wS2i`_yoHUJ=-6P+}a_Vm;7OI}#ieZ`pHENn z{A?dqtQkJRySyVu>t%@R)R5u}TjujEKOkfhzBWWSlQ(LW*-BR3R}R^sRT-L%tTmc$pOCghG$Jp))#)*#XZrV#9ef^sv>~vxE zoU>Rvs%Tzp=0unBEv;X{{HRb?ACU@Yc9=q zy}8|3s<^9IoNt}=@!vI{=AYYhf0zDszFM2#4|jc@{5oBp{c@b%%eS|;{?(N`zV7;} zo9y=cc&|V3v8s)EzwBmtqWt^G<&$sz-61gT(81okZ!510^&kAMw>L7|P=M{2f%wCf92872VS))J6fi-C6S9(f&wiQU8UAaduj6(%v)mnZS9l~(p2#h&pCj64 zWEM7mk!#R1hcGd(y_2UNh>6s^{8lPLOFDJwT-^;}m%RSYt~>0Vzk15lmFjDs@cw;n zILrRng5`!kM2}b8YvVZcFutrO9+W_9Hw&%N1tw5X_xPTZY$ z*nr3Ndrfyz$C7wS?jtk1RqPckycRia<++|&zkkZ(hfJ|n+q(PLXIyMwV7dI}(Z%J{ zzsxxQ@b2vEyMKSUdtte^MBZ}I&fSUZjTag) z;l&0F=x_lA&gwPYcEMRK_T_Ce_PbIy_dNU-X`He|VgJ>?g@KYoY21g?E_mqxs@HJTZ^-t5%3$O&3seTfz>>xiCX4{1L5Ym+9^}jj zDk))LNn;$a+DD5(xO=EkZlb#cIhmolL=;$15OfIzML~c!E3mF)U|<8ntH4+|3g!U- D4n9n3 literal 0 HcmV?d00001 diff --git a/notebooks/HTML_param_groups.ipynb b/notebooks/HTML_param_groups.ipynb index 7be5cebfe..694273aa3 100644 --- a/notebooks/HTML_param_groups.ipynb +++ b/notebooks/HTML_param_groups.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -21,7 +21,7 @@ "'/Users/Covitz/BOnD/notebooks/testdata'" ] }, - "execution_count": 19, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -34,7 +34,7 @@ "import os\n", "#import bond\n", "from bids.layout import parse_file_entities \n", - "\n", + "from bond import BOnD\n", "from pkg_resources import resource_filename as pkgrf \n", "\n", "# returns stirng path to testdata\n", @@ -60,152 +60,152 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "testdata\n", - "testdata/complete\n", - "testdata/complete/sub-01\n", - "testdata/complete/sub-01/ses-phdiff\n", - "testdata/complete/sub-01/ses-phdiff/dwi\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-01/ses-phdiff/anat\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/func\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/README\n", - "testdata/complete/dataset_description.json\n", - "testdata/complete/sub-02\n", - "testdata/complete/sub-02/ses-phdiff\n", - "testdata/complete/sub-02/ses-phdiff/dwi\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-02/ses-phdiff/anat\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", - "testdata/complete/sub-02/ses-phdiff/func\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03\n", - "testdata/complete/sub-03/ses-phdiff\n", - "testdata/complete/sub-03/ses-phdiff/dwi\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-03/ses-phdiff/fmap\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/anat\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/func\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/inconsistent\n", - "testdata/inconsistent/sub-01\n", - "testdata/inconsistent/sub-01/ses-phdiff\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", - "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/func\n", - "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", - "testdata/inconsistent/README\n", - "testdata/inconsistent/dataset_description.json\n", - "testdata/inconsistent/sub-02\n", - "testdata/inconsistent/sub-02/ses-phdiff\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", - "testdata/inconsistent/sub-02/ses-phdiff/func\n", - "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", - "testdata/inconsistent/sub-03\n", - "testdata/inconsistent/sub-03/ses-phdiff\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", - "testdata/inconsistent/sub-03/ses-phdiff/func\n", - "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", - "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + "testdata\r\n", + "testdata/complete\r\n", + "testdata/complete/sub-01\r\n", + "testdata/complete/sub-01/ses-phdiff\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/README\r\n", + "testdata/complete/dataset_description.json\r\n", + "testdata/complete/sub-02\r\n", + "testdata/complete/sub-02/ses-phdiff\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/anat\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-02/ses-phdiff/func\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03\r\n", + "testdata/complete/sub-03/ses-phdiff\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/anat\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/func\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent\r\n", + "testdata/inconsistent/sub-01\r\n", + "testdata/inconsistent/sub-01/ses-phdiff\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/README\r\n", + "testdata/inconsistent/dataset_description.json\r\n", + "testdata/inconsistent/sub-02\r\n", + "testdata/inconsistent/sub-02/ses-phdiff\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03\r\n", + "testdata/inconsistent/sub-03/ses-phdiff\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n" ] } ], @@ -215,16 +215,18 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "{'a': [0, 2], 'b': [1, 3], 'c': [4], 'd': [5]}\n", "{'subject': '01', 'session': 'phdiff', 'acquisition': 'v4', 'suffix': 'magnitude1', 'datatype': 'fmap', 'extension': '.json'}\n", - "acquisition-v4_datatype-fmap_suffix-magnitude1\n", - "acquisition-v4_datatype-fmap_suffix-magnitude1\n" + "acquisition-v4_datatype-fmap_extension-.json_session-phdiff_subject-01_suffix-magnitude1\n", + "Entities: {'acquisition': 'v4', 'datatype': 'fmap', 'extension': '.json', 'session': 'phdiff', 'subject': '01', 'suffix': 'magnitude1'}\n", + "F_2_K: acquisition-v4_datatype-fmap_extension-.json_session-phdiff_subject-01_suffix-magnitude1\n" ] } ], @@ -246,7 +248,7 @@ "\n", "\n", "def entities_to_key_group(entities):\n", - " group_keys = sorted(set(entities.keys()) - NON_KEY_ENTITIES)\n", + " group_keys = sorted(entities.keys())\n", " return \"_\".join(\n", " [\"{}-{}\".format(key, entities[key]) for key in group_keys])\n", "\n", @@ -259,6 +261,52 @@ " keys = entities_to_key_group(entities)\n", " return keys\n", "\n", + "def key_group_to_entities(key_group): \n", + " return dict([group.split(\"-\") for group in key_group.split(\"_\")])\n", + "\n", + "def get_file_params(files):\n", + " \"\"\"Finds a list of *parameter groups* from a list of files.\n", + "\n", + " Parameters:\n", + " -----------\n", + "\n", + " files : list\n", + " List of file names\n", + "\n", + " Returns:\n", + " --------\n", + "\n", + " files_params : dictionary \n", + " A dictionary of filename, param_dict pairs\n", + "\n", + " For each file in `files`, find critical parameters for metadata. Then find\n", + " unique sets of these critical parameters.\n", + " \"\"\"\n", + "\n", + " # # DICTIONARY OF FILENAME, DICT_PARAMS \n", + " files_params = {}\n", + " for path in files:\n", + " metadata = self.layout.get_metadata(path)\n", + " wanted_keys = metadata.keys() & IMAGING_PARAMS\n", + " example_data = {key: metadata[key] for key in wanted_keys}\n", + "\n", + " # Expand slice timing to multiple columns\n", + " SliceTime = example_data.get('SliceTiming')\n", + " if SliceTime:\n", + " # round each slice time to one place after the decimal\n", + " for i in range(len(SliceTime)):\n", + " SliceTime[i] = round(SliceTime[i], 1)\n", + " example_data.update(\n", + " {\"SliceTime%03d\" % SliceNum: time for\n", + " SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + "\n", + " # ADD TO THE DICTIONARY \n", + " files_params[path] = example_data \n", + "\n", + " return files_params\n", + " \n", + "\n", "#def get_param_groups(key_group, path):\n", "# key_entities = key_group_to_entities(key_group)\n", "# path = Path(path)\n", @@ -266,79 +314,59 @@ "# **key_entities)\n", "# return _get_param_groups(matching_files)\n", "\n", + "\n", + "\n", "filename = \"/Users/Covitz/BOnD/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\"\n", "path = \"/Users/Covitz/BOnD/bond/testdata/complete/\"\n", "ret_entities = file_to_entities(filename)\n", "print(ret_entities) \n", "key_group = entities_to_key_group(ret_entities) \n", "print(key_group)\n", - "f_to_key = file_to_key_group(filename)\n", - "print(key_group)\n", + "\n", + "entities = key_group_to_entities(key_group)\n", + "print(\"Entities: \", entities)\n", + "\n", + "key_groups = file_to_key_group(filename)\n", + "print(\"F_2_K: \", key_groups)\n", + "\n", + "\n", + "\n", "\n", "\n" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "['-',\n", - " '1',\n", - " '2',\n", - " '4',\n", - " '5',\n", - " 'A',\n", - " 'C',\n", - " 'H',\n", - " 'P',\n", - " 'S',\n", - " 'T',\n", - " '_',\n", - " 'a',\n", - " 'b',\n", - " 'c',\n", - " 'd',\n", - " 'e',\n", - " 'f',\n", - " 'g',\n", - " 'h',\n", - " 'i',\n", - " 'k',\n", - " 'l',\n", - " 'm',\n", - " 'n',\n", - " 'o',\n", - " 'p',\n", - " 'q',\n", - " 'r',\n", - " 's',\n", - " 't',\n", - " 'u',\n", - " 'v',\n", - " 'w',\n", - " 'x',\n", - " 'y']" + "['acquisition-HASC55AP_datatype-dwi_suffix-dwi',\n", + " 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1',\n", + " 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2',\n", + " 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff',\n", + " 'datatype-anat_suffix-T1w',\n", + " 'datatype-fmap_direction-PA_fmap-epi_suffix-epi',\n", + " 'datatype-func_suffix-bold_task-rest']" ] }, - "execution_count": 22, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import bond\n", + "\n", "\n", "# IMPORT SET TRACE \n", "# assert 0, debug \n", - "import ipdb # USE THIS TO DEBUG PYTHON LIKE GDB \n", "\n", - "import pybids \n", "\n", - "bond_obj = bond.BOnD(\"/Users/Covitz/BOnD/bond/testdata/complete/\")\n", + "\n", + "\n", + "bond_obj = BOnD(\"/Users/Covitz/BOnD/bond/testdata/complete/\")\n", "key_group = bond_obj.get_key_groups()\n", "key_group" ] @@ -372,9 +400,7 @@ ] } ], - "source": [ - "pip install pybids" - ] + "source": [] }, { "cell_type": "code", @@ -451,7 +477,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.3" } }, "nbformat": 4, diff --git a/notebooks/Key_and_Param_Groups.ipynb b/notebooks/Key_and_Param_Groups.ipynb index 0a8c06a32..f00a5b52c 100644 --- a/notebooks/Key_and_Param_Groups.ipynb +++ b/notebooks/Key_and_Param_Groups.ipynb @@ -10,32 +10,36 @@ "\n", "\"\"\"Tests for `bond` package.\"\"\"\n", "import sys\n", + "import time\n", "from pathlib import Path\n", - "sys.path.append(\"..\")\n", + "import csv\n", + "import pandas as pd\n", + "#sys.path.append(\"..\")\n", "import os\n", - "import pytest\n", + "#import pytest\n", "from pkg_resources import resource_filename as pkgrf\n", - "import shutil\n", - "import bond\n", - "import tempfile\n", - "import os.path as op\n", - "from copy import deepcopy\n", - "import base64\n", - "from glob import glob\n", + "from bond import BOnD\n", + "#import shutil\n", + "#import bond\n", + "#import tempfile\n", + "#import os.path as op\n", + "#from copy import deepcopy\n", + "#import base64\n", + "#from glob import glob\n", "\n", "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", "\n", "\n", "#data_root = Path(\".\") / \"testdata\" / \"complete\"\n", "\n", - "data_root2 = Path(\"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\")\n", + "data_root2 = \"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\"\n", "\n", "#shutil.copytree(TEST_DATA, str(data_root))" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -44,25 +48,45 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": 2, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['datatype-anat_reconstruction-refaced_suffix-T1w', 'datatype-func_run-1_suffix-bold_task-rest', 'datatype-func_run-2_suffix-bold_task-rest', 'suffix-', 'suffix-BIDS']\n" + "['datatype-anat_reconstruction-refaced_suffix-T1w', 'datatype-func_run-1_suffix-bold_task-rest', 'datatype-func_run-2_suffix-bold_task-rest']\n" ] } ], "source": [ - "from bond import BOnD\n", - "\n", - "bod = BOnD(str(data_root2))\n", + "bod = BOnD(data_root2)\n", "key_groups = bod.get_key_groups()\n", "print(key_groups)" ] }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "190\n" + ] + } + ], + "source": [ + "files = bod.get_filenames('datatype-func_run-2_suffix-bold_task-rest')\n", + "files\n", + "#print(files)\n", + "print(len(files))" + ] + }, { "cell_type": "code", "execution_count": 4, @@ -73,122 +97,34 @@ "output_type": "stream", "text": [ "datatype-anat_reconstruction-refaced_suffix-T1w\n", - " DwellTime EchoTime PartialFourier RepetitionTime FlipAngle\n", - "0 0.000015 0.00302 0.75 2.6 8.0\n", - "111 NaN NaN NaN NaN NaN\n", + "191\n", "datatype-func_run-1_suffix-bold_task-rest\n", - " DwellTime TotalReadoutTime PhaseEncodingDirection EchoTime \\\n", - "0 0.000003 0.03621 j- 0.03 \n", - "1 0.000003 0.03621 j- 0.03 \n", - "2 0.000003 0.03621 j- 0.03 \n", - "\n", - " PartialFourier EffectiveEchoSpacing RepetitionTime FlipAngle \\\n", - "0 1 0.00051 2.5 80 \n", - "1 1 0.00051 2.5 80 \n", - "2 1 0.00051 2.5 80 \n", - "\n", - " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 SliceTime030 \\\n", - "0 1.2 0 ... 2.2 0.9 2.2 \n", - "1 1.2 0 ... 2.2 0.9 2.2 \n", - "2 1.2 0 ... 2.2 0.9 2.2 \n", - "\n", - " SliceTime031 SliceTime032 SliceTime033 SliceTime034 SliceTime035 \\\n", - "0 1.0 2.3 1.0 2.4 1.1 \n", - "1 1.0 2.3 1.0 2.4 1.1 \n", - "2 1.0 2.3 1.1 2.4 1.1 \n", - "\n", - " SliceTime036 SliceTime037 \n", - "0 2.4 1.2 \n", - "1 2.4 1.2 \n", - "2 2.4 1.2 \n", - "\n", - "[3 rows x 46 columns]\n", + "191\n", "datatype-func_run-2_suffix-bold_task-rest\n", - " DwellTime TotalReadoutTime PhaseEncodingDirection EchoTime \\\n", - "0 0.000003 0.03621 j- 0.03 \n", - "1 0.000003 0.03621 j- 0.03 \n", - "2 0.000003 0.03621 j- 0.03 \n", - "33 0.000003 0.03621 i 0.03 \n", - "\n", - " PartialFourier EffectiveEchoSpacing RepetitionTime FlipAngle \\\n", - "0 1 0.00051 2.5 80 \n", - "1 1 0.00051 2.5 80 \n", - "2 1 0.00051 2.5 80 \n", - "33 1 0.00051 2.5 80 \n", - "\n", - " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 SliceTime030 \\\n", - "0 1.2 0 ... 2.2 0.9 2.2 \n", - "1 1.2 0 ... 2.2 0.9 2.2 \n", - "2 1.2 0 ... 2.2 0.9 2.2 \n", - "33 1.2 0 ... 2.2 0.9 2.2 \n", - "\n", - " SliceTime031 SliceTime032 SliceTime033 SliceTime034 SliceTime035 \\\n", - "0 1.0 2.3 1.0 2.4 1.1 \n", - "1 1.0 2.3 1.1 2.4 1.1 \n", - "2 1.0 2.3 1.0 2.4 1.1 \n", - "33 1.0 2.3 1.0 2.4 1.1 \n", - "\n", - " SliceTime036 SliceTime037 \n", - "0 2.4 1.2 \n", - "1 2.4 1.2 \n", - "2 2.4 1.2 \n", - "33 2.4 1.2 \n", - "\n", - "[4 rows x 46 columns]\n", - "suffix-\n", - " DwellTime EchoTime PartialFourier RepetitionTime FlipAngle \\\n", - "0 0.000015 0.00302 0.75 2.6 8.0 \n", - "1 0.000003 0.03000 1.00 2.5 80.0 \n", - "4 0.000003 0.03000 1.00 2.5 80.0 \n", - "5 0.000003 0.03000 1.00 2.5 80.0 \n", - "101 0.000003 0.03000 1.00 2.5 80.0 \n", - "333 NaN NaN NaN NaN NaN \n", - "\n", - " TotalReadoutTime PhaseEncodingDirection EffectiveEchoSpacing \\\n", - "0 NaN NaN NaN \n", - "1 0.03621 j- 0.00051 \n", - "4 0.03621 j- 0.00051 \n", - "5 0.03621 j- 0.00051 \n", - "101 0.03621 i 0.00051 \n", - "333 NaN NaN NaN \n", - "\n", - " SliceTime000 SliceTime001 ... SliceTime028 SliceTime029 \\\n", - "0 NaN NaN ... NaN NaN \n", - "1 1.2 0.0 ... 2.2 0.9 \n", - "4 1.2 0.0 ... 2.2 0.9 \n", - "5 1.2 0.0 ... 2.2 0.9 \n", - "101 1.2 0.0 ... 2.2 0.9 \n", - "333 NaN NaN ... NaN NaN \n", - "\n", - " SliceTime030 SliceTime031 SliceTime032 SliceTime033 SliceTime034 \\\n", - "0 NaN NaN NaN NaN NaN \n", - "1 2.2 1.0 2.3 1.0 2.4 \n", - "4 2.2 1.0 2.3 1.0 2.4 \n", - "5 2.2 1.0 2.3 1.1 2.4 \n", - "101 2.2 1.0 2.3 1.0 2.4 \n", - "333 NaN NaN NaN NaN NaN \n", - "\n", - " SliceTime035 SliceTime036 SliceTime037 \n", - "0 NaN NaN NaN \n", - "1 1.1 2.4 1.2 \n", - "4 1.1 2.4 1.2 \n", - "5 1.1 2.4 1.2 \n", - "101 1.1 2.4 1.2 \n", - "333 NaN NaN NaN \n", - "\n", - "[6 rows x 46 columns]\n", - "suffix-BIDS\n", - "Empty DataFrame\n", - "Columns: []\n", - "Index: []\n" + "190\n" ] } ], "source": [ + "\n", "for key_group in key_groups:\n", " print(key_group)\n", - " print(bod.get_param_groups(key_group))\n", - " " + " output = bod.get_file_params(key_group)\n", + " print(len(output))\n", + " #print(output)\n", + " \n", + "\n", + " #print(output)\n", + " #output2 = bod.get_param_groups(key_group)\n", + " #print(output2[1])\n", + " #print(output[1])\n", + " #print(output[0])\n", + " #print(len(output[0]))\n", + " #output.to_csv('Tests/' + key_group + '.csv')\n", + " # export the line above to a csv\n", + " # data = data.append(pd.DataFrame(DwellTime: key_group.\n", + "#print(output['/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest195/ses-1/func/sub-colornest195_ses-1_task-rest_run-02_bold.nii.gz'])\n", + "#print(output)\n" ] }, { @@ -196,29 +132,89 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "key_group = 'datatype-func_run-2_suffix-bold_task-rest'\n", + "file_params_dict = bod.get_file_params(key_group)\n", + "print(len(file_params_dict))\n", + "print(file_params_dict)\n", + "#print(output[1])\n", + "#print(output[0])\n", + "# filenames = list(output.keys())\n", + "# first_params = output[filenames[0]] \n", + "# #for path in filenames: \n", + "# #print(path + \"\\n\")\n", + "# #print(first_params)\n", + "\n", + "\n", + "\n", + "# GET ALL FILENAMES ASSOCIATED WITH A KEY GROUP\n", + "# USE GLOB TO FIND ALL INSTANCES \n", + "# IF THEY MATCH AND DICTS MATCH, DO THE REPLACEMENT \n", + "\n", + "\n", + "# for i in range(len(files)):\n", + "# files[i] = str(files[i])\n", + "# files_size = len(files)\n", + "# print(files_size)\n", + "# print(files[0])\n", + "\n", + "# filenames_size = len(filenames)\n", + "# print(filenames_size)\n", + "# print(filenames[0])\n", + "\n", + "# param_groups = bod.get_param_groups(key_group)\n", + "# print(len(param_groups))\n", + " " + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest003/ses-1/func/sub-colornest003_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest004/ses-1/func/sub-colornest004_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest005/ses-1/func/sub-colornest005_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest007/ses-1/func/sub-colornest007_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest008/ses-1/func/sub-colornest008_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest013/ses-1/func/sub-colornest013_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest015/ses-1/func/sub-colornest015_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest016/ses-1/func/sub-colornest016_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest023/ses-1/func/sub-colornest023_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest026/ses-1/func/sub-colornest026_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest027/ses-1/func/sub-colornest027_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest029/ses-1/func/sub-colornest029_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest032/ses-1/func/sub-colornest032_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest033/ses-1/func/sub-colornest033_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest041/ses-1/func/sub-colornest041_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest045/ses-1/func/sub-colornest045_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest047/ses-1/func/sub-colornest047_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest049/ses-1/func/sub-colornest049_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest052/ses-1/func/sub-colornest052_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest053/ses-1/func/sub-colornest053_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest056/ses-1/func/sub-colornest056_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest059/ses-1/func/sub-colornest059_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest061/ses-1/func/sub-colornest061_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest063/ses-1/func/sub-colornest063_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest064/ses-1/func/sub-colornest064_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest066/ses-1/func/sub-colornest066_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest067/ses-1/func/sub-colornest067_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest070/ses-1/func/sub-colornest070_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest071/ses-1/func/sub-colornest071_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest073/ses-1/func/sub-colornest073_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest074/ses-1/func/sub-colornest074_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest077/ses-1/func/sub-colornest077_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest080/ses-1/func/sub-colornest080_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest085/ses-1/func/sub-colornest085_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest086/ses-1/func/sub-colornest086_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest087/ses-1/func/sub-colornest087_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest088/ses-1/func/sub-colornest088_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest090/ses-1/func/sub-colornest090_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest093/ses-1/func/sub-colornest093_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest095/ses-1/func/sub-colornest095_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest098/ses-1/func/sub-colornest098_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest106/ses-1/func/sub-colornest106_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest107/ses-1/func/sub-colornest107_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest110/ses-1/func/sub-colornest110_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest111/ses-1/func/sub-colornest111_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest113/ses-1/func/sub-colornest113_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest114/ses-1/func/sub-colornest114_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest115/ses-1/func/sub-colornest115_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest116/ses-1/func/sub-colornest116_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest117/ses-1/func/sub-colornest117_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest120/ses-1/func/sub-colornest120_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest125/ses-1/func/sub-colornest125_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest127/ses-1/func/sub-colornest127_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest130/ses-1/func/sub-colornest130_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest131/ses-1/func/sub-colornest131_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest133/ses-1/func/sub-colornest133_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest143/ses-1/func/sub-colornest143_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest144/ses-1/func/sub-colornest144_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest147/ses-1/func/sub-colornest147_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest148/ses-1/func/sub-colornest148_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest152/ses-1/func/sub-colornest152_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest154/ses-1/func/sub-colornest154_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest155/ses-1/func/sub-colornest155_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest159/ses-1/func/sub-colornest159_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest161/ses-1/func/sub-colornest161_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest169/ses-1/func/sub-colornest169_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest173/ses-1/func/sub-colornest173_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest175/ses-1/func/sub-colornest175_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest177/ses-1/func/sub-colornest177_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest182/ses-1/func/sub-colornest182_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest184/ses-1/func/sub-colornest184_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest194/ses-1/func/sub-colornest194_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest195/ses-1/func/sub-colornest195_ses-1_task-rest_run-02_bold.nii.gz')]\n" + ] + } + ], "source": [ - "data_root = Path(\".\") / \"testdata\" / \"inconsistent\"\n", - "multigroup_bod = BOnD(str(data_root2))\n", - "key_groups = multigroup_bod.get_key_groups()\n", - "print(key_groups)" + "# TESTING THE change_filename method!\n", + "key_group = 'datatype-func_run-2_suffix-bold_task-rest'\n", + "split_params = {'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PartialFourier': 1, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'EchoTime': 0.03, 'PhaseEncodingDirection': 'j-', 'DwellTime': 3.1e-06, 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2}\n", + "pattern = \"task\"\n", + "replacement = \"TASK\"\n", + "ret = bod.change_filenames(key_group, split_params, pattern, replacement)\n", + "num_changes = ret[1]\n", + "changed_paths = ret[0]\n", + "\n", + "print(changed_paths)\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "for key_group in key_groups:\n", - " print(key_group)\n", - " print(multigroup_bod.get_param_groups(key_group))" + "# TESTING SOMOE SHIT WOOOOOOOOOOOOO\n", + "\n", + "dict_0 = {'EchoTime': 0.03, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'DwellTime': 3.1e-06, 'PartialFourier': 1, 'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PhaseEncodingDirection': 'j-', 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2} \n", + "dict_1 = {'EchoTime': 0.03, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'DwellTime': 3.1e-06, 'PartialFourier': 1, 'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PhaseEncodingDirection': 'j-', 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2}\n", + "\n", + "if dict_0 == split_params: \n", + " print(\"YAY\")\n", + "else:\n", + " print(\"STUPID\")" ] }, { @@ -245,7 +241,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.3" } }, "nbformat": 4, diff --git a/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv b/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv new file mode 100644 index 000000000..804f2e117 --- /dev/null +++ b/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv @@ -0,0 +1,3 @@ +,DwellTime,PartialFourier,FlipAngle,EchoTime,RepetitionTime +0,1.5e-05,0.75,8.0,0.00302,2.6 +111,,,,, diff --git a/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv b/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv new file mode 100644 index 000000000..ea7831e2f --- /dev/null +++ b/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv @@ -0,0 +1,4 @@ +,DwellTime,PhaseEncodingDirection,EffectiveEchoSpacing,PartialFourier,TotalReadoutTime,FlipAngle,EchoTime,RepetitionTime,SliceTime000,SliceTime001,SliceTime002,SliceTime003,SliceTime004,SliceTime005,SliceTime006,SliceTime007,SliceTime008,SliceTime009,SliceTime010,SliceTime011,SliceTime012,SliceTime013,SliceTime014,SliceTime015,SliceTime016,SliceTime017,SliceTime018,SliceTime019,SliceTime020,SliceTime021,SliceTime022,SliceTime023,SliceTime024,SliceTime025,SliceTime026,SliceTime027,SliceTime028,SliceTime029,SliceTime030,SliceTime031,SliceTime032,SliceTime033,SliceTime034,SliceTime035,SliceTime036,SliceTime037 +0,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.8,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +1,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +2,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.1,2.4,1.1,2.4,1.2 diff --git a/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv b/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv new file mode 100644 index 000000000..17251d719 --- /dev/null +++ b/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv @@ -0,0 +1,4 @@ +,DwellTime,PhaseEncodingDirection,EffectiveEchoSpacing,PartialFourier,TotalReadoutTime,FlipAngle,EchoTime,RepetitionTime,SliceTime000,SliceTime001,SliceTime002,SliceTime003,SliceTime004,SliceTime005,SliceTime006,SliceTime007,SliceTime008,SliceTime009,SliceTime010,SliceTime011,SliceTime012,SliceTime013,SliceTime014,SliceTime015,SliceTime016,SliceTime017,SliceTime018,SliceTime019,SliceTime020,SliceTime021,SliceTime022,SliceTime023,SliceTime024,SliceTime025,SliceTime026,SliceTime027,SliceTime028,SliceTime029,SliceTime030,SliceTime031,SliceTime032,SliceTime033,SliceTime034,SliceTime035,SliceTime036,SliceTime037 +0,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.1,2.4,1.1,2.4,1.2 +1,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +22,3.1e-06,i,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 diff --git a/notebooks/rename_files_work.ipynb b/notebooks/rename_files_work.ipynb index ddea8bc62..fde5f0014 100644 --- a/notebooks/rename_files_work.ipynb +++ b/notebooks/rename_files_work.ipynb @@ -78,91 +78,152 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "testdata\n", - "testdata/complete\n", - "testdata/complete/sub-01\n", - "testdata/complete/sub-01/ses-phdiff\n", - "testdata/complete/sub-01/ses-phdiff/dwi\n", - "testdata/complete/sub-01/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-01/ses-phdiff/anat\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\n", - "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/func\n", - "testdata/complete/sub-01/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/README\n", - "testdata/complete/dataset_description.json\n", - "testdata/complete/sub-02\n", - "testdata/complete/sub-02/ses-phdiff\n", - "testdata/complete/sub-02/ses-phdiff/dwi\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-02/ses-phdiff/anat\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", - "testdata/complete/sub-02/ses-phdiff/func\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03\n", - "testdata/complete/sub-03/ses-phdiff\n", - "testdata/complete/sub-03/ses-phdiff/dwi\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-03/ses-phdiff/fmap\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/anat\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/func\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + "testdata\r\n", + "testdata/complete\r\n", + "testdata/complete/sub-01\r\n", + "testdata/complete/sub-01/ses-phdiff\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/README\r\n", + "testdata/complete/dataset_description.json\r\n", + "testdata/complete/sub-02\r\n", + "testdata/complete/sub-02/ses-phdiff\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/anat\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-02/ses-phdiff/func\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03\r\n", + "testdata/complete/sub-03/ses-phdiff\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/anat\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/func\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent\r\n", + "testdata/inconsistent/sub-01\r\n", + "testdata/inconsistent/sub-01/ses-phdiff\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/README\r\n", + "testdata/inconsistent/dataset_description.json\r\n", + "testdata/inconsistent/sub-02\r\n", + "testdata/inconsistent/sub-02/ses-phdiff\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03\r\n", + "testdata/inconsistent/sub-03/ses-phdiff\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n" ] } ], @@ -172,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -182,19 +243,21 @@ "\n", "\n", "\n", - "for path in pathlib.Path(\"/Users/Covitz/BOnD/data/sub-1832999514/ses-PNC2/func/\").iterdir():\n", + "for path in Path(\"/Users/Covitz/BOnD/data/sub-1832999514/\").iterdir():\n", " if path.is_file():\n", + " print(path.stem)\n", " old_name = path.stem \n", " old_ext = path.suffix\n", " directory = path.parent\n", + " #print(type(directory))\n", " new_name = \"A_\" + old_name + old_ext\n", - " path.rename(pathlib.Path(directory, new_name))\n", + " path.rename(Path(directory, new_name))\n", " \n" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -226,7 +289,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -250,7 +313,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -265,7 +328,8 @@ "def rename_files(bids_dir, pattern, replacement):\n", " files_and_dirs = Path(bids_dir).rglob('*')\n", " for path in files_and_dirs:\n", - " old_name = path.stem \n", + " print(\"STEM\", path.stem)\n", + " old_name = path.stem\n", " old_ext = path.suffix\n", " directory = path.parent\n", " new_name = old_name.replace(pattern, replacement) + old_ext\n", @@ -274,92 +338,1947 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "testdata\n", - "testdata/complete\n", - "testdata/complete/README\n", - "testdata/complete/dataset_description.json\n", - "testdata/complete/sub-001\n", - "testdata/complete/sub-001/ses-phdiff\n", - "testdata/complete/sub-001/ses-phdiff/dwi\n", - "testdata/complete/sub-001/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-001/ses-phdiff/dwi/sub-001_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-001/ses-phdiff/fmap\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-001/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-001/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-001/ses-phdiff/fmap/sub-001_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-001/ses-phdiff/anat\n", - "testdata/complete/sub-001/ses-phdiff/anat/sub-001_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-001/ses-phdiff/anat/sub-001_ses-phdiff_T1w.json\n", - "testdata/complete/sub-001/ses-phdiff/func\n", - "testdata/complete/sub-001/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-001/ses-phdiff/func/sub-001_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-001/ses-phdiff/func/sub-001_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-02\n", - "testdata/complete/sub-02/ses-phdiff\n", - "testdata/complete/sub-02/ses-phdiff/dwi\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-02/ses-phdiff/anat\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\n", - "testdata/complete/sub-02/ses-phdiff/func\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\n", - "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03\n", - "testdata/complete/sub-03/ses-phdiff\n", - "testdata/complete/sub-03/ses-phdiff/dwi\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/dwi/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\n", - "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\n", - "testdata/complete/sub-03/ses-phdiff/fmap\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/fmap/._sub-CSDSI_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\n", - "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/anat\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\n", - "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\n", - "testdata/complete/sub-03/ses-phdiff/func\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\n", - "testdata/complete/sub-03/ses-phdiff/func/._sub-CSDSI_ses-phdiff_acq-HASC55AP_dwi.json\n", - "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\n" + "STEM sub-colornest099\n", + "STEM sub-colornest052\n", + "STEM sub-colornest097\n", + "STEM sub-colornest063\n", + "STEM sub-colornest064\n", + "STEM sub-colornest090\n", + "STEM sub-colornest030\n", + "STEM sub-colornest037\n", + "STEM sub-colornest008\n", + "STEM sub-colornest001\n", + "STEM sub-colornest006\n", + "STEM sub-colornest039\n", + "STEM sub-colornest091\n", + "STEM sub-colornest065\n", + "STEM sub-colornest062\n", + "STEM sub-colornest096\n", + "STEM sub-colornest054\n", + "STEM sub-colornest098\n", + "STEM sub-colornest053\n", + "STEM sub-colornest007\n", + "STEM sub-colornest038\n", + "STEM sub-colornest036\n", + "STEM sub-colornest009\n", + "STEM sub-colornest031\n", + "STEM sub-colornest188\n", + "STEM sub-colornest143\n", + "STEM sub-colornest144\n", + "STEM sub-colornest186\n", + "STEM sub-colornest172\n", + "STEM .DS_Store\n", + "STEM sub-colornest175\n", + "STEM sub-colornest181\n", + "STEM sub-colornest121\n", + "STEM sub-colornest126\n", + "STEM sub-colornest119\n", + "STEM sub-colornest110\n", + "STEM sub-colornest117\n", + "STEM sub-colornest128\n", + "STEM sub-colornest180\n", + "STEM sub-colornest174\n", + "STEM sub-colornest173\n", + "STEM sub-colornest187\n", + "STEM sub-colornest145\n", + "STEM sub-colornest189\n", + "STEM sub-colornest142\n", + "STEM sub-colornest116\n", + "STEM sub-colornest129\n", + "STEM sub-colornest111\n", + "STEM sub-colornest127\n", + "STEM sub-colornest118\n", + "STEM sub-colornest120\n", + "STEM sub-colornest102\n", + "STEM sub-colornest105\n", + "STEM sub-colornest133\n", + "STEM sub-colornest134\n", + "STEM sub-colornest194\n", + "STEM sub-colornest160\n", + "STEM sub-colornest167\n", + "STEM sub-colornest193\n", + "STEM sub-colornest158\n", + "STEM sub-colornest151\n", + "STEM sub-colornest156\n", + "STEM sub-colornest169\n", + "STEM sub-colornest135\n", + "STEM sub-colornest132\n", + "STEM sub-colornest104\n", + "STEM sub-colornest103\n", + "STEM sub-colornest157\n", + "STEM sub-colornest168\n", + "STEM sub-colornest150\n", + "STEM sub-colornest192\n", + "STEM sub-colornest166\n", + "STEM sub-colornest159\n", + "STEM sub-colornest161\n", + "STEM sub-colornest195\n", + "STEM sub-colornest013\n", + "STEM sub-colornest014\n", + "STEM sub-colornest022\n", + "STEM sub-colornest025\n", + "STEM sub-colornest085\n", + "STEM sub-colornest071\n", + "STEM sub-colornest076\n", + "STEM sub-colornest082\n", + "STEM sub-colornest049\n", + "STEM sub-colornest040\n", + "STEM sub-colornest047\n", + "STEM sub-colornest078\n", + "STEM sub-colornest024\n", + "STEM sub-colornest023\n", + "STEM sub-colornest015\n", + "STEM sub-colornest012\n", + "STEM sub-colornest046\n", + "STEM sub-colornest079\n", + "STEM sub-colornest041\n", + "STEM sub-colornest077\n", + "STEM sub-colornest048\n", + "STEM sub-colornest070\n", + "STEM sub-colornest084\n", + "STEM sub-colornest034\n", + "STEM sub-colornest033\n", + "STEM sub-colornest005\n", + "STEM sub-colornest002\n", + "STEM sub-colornest069\n", + "STEM sub-colornest056\n", + "STEM sub-colornest051\n", + "STEM sub-colornest058\n", + "STEM sub-colornest067\n", + "STEM sub-colornest093\n", + "STEM sub-colornest094\n", + "STEM sub-colornest060\n", + "STEM sub-colornest003\n", + "STEM sub-colornest004\n", + "STEM sub-colornest032\n", + "STEM sub-colornest035\n", + "STEM sub-colornest061\n", + "STEM sub-colornest095\n", + "STEM sub-colornest059\n", + "STEM sub-colornest092\n", + "STEM sub-colornest066\n", + "STEM sub-colornest050\n", + "STEM sub-colornest068\n", + "STEM sub-colornest057\n", + "STEM dataset_description\n", + "STEM sub-colornest125\n", + "STEM sub-colornest122\n", + "STEM sub-colornest114\n", + "STEM sub-colornest113\n", + "STEM sub-colornest178\n", + "STEM sub-colornest147\n", + "STEM sub-colornest140\n", + "STEM sub-colornest149\n", + "STEM sub-colornest176\n", + "STEM sub-colornest182\n", + "STEM sub-colornest185\n", + "STEM sub-colornest171\n", + "STEM sub-colornest112\n", + "STEM sub-colornest115\n", + "STEM sub-colornest123\n", + "STEM sub-colornest124\n", + "STEM sub-colornest170\n", + "STEM sub-colornest184\n", + "STEM sub-colornest148\n", + "STEM sub-colornest183\n", + "STEM sub-colornest177\n", + "STEM sub-colornest141\n", + "STEM sub-colornest179\n", + "STEM sub-colornest146\n", + "STEM sub-colornest164\n", + "STEM sub-colornest190\n", + "STEM sub-colornest163\n", + "STEM sub-colornest155\n", + "STEM sub-colornest152\n", + "STEM sub-colornest139\n", + "STEM sub-colornest106\n", + "STEM sub-colornest101\n", + "STEM sub-colornest108\n", + "STEM sub-colornest137\n", + "STEM sub-colornest130\n", + "STEM sub-colornest153\n", + "STEM sub-colornest154\n", + "STEM sub-colornest162\n", + "STEM sub-colornest191\n", + "STEM sub-colornest165\n", + "STEM sub-colornest131\n", + "STEM sub-colornest109\n", + "STEM sub-colornest100\n", + "STEM sub-colornest138\n", + "STEM sub-colornest107\n", + "STEM sub-colornest075\n", + "STEM sub-colornest081\n", + "STEM sub-colornest086\n", + "STEM sub-colornest072\n", + "STEM sub-colornest044\n", + "STEM sub-colornest043\n", + "STEM sub-colornest088\n", + "STEM sub-colornest028\n", + "STEM sub-colornest017\n", + "STEM sub-colornest019\n", + "STEM sub-colornest026\n", + "STEM sub-colornest021\n", + "STEM sub-colornest042\n", + "STEM sub-colornest089\n", + "STEM sub-colornest045\n", + "STEM sub-colornest073\n", + "STEM sub-colornest087\n", + "STEM sub-colornest080\n", + "STEM sub-colornest074\n", + "STEM sub-colornest020\n", + "STEM sub-colornest018\n", + "STEM sub-colornest027\n", + "STEM sub-colornest011\n", + "STEM sub-colornest029\n", + "STEM sub-colornest016\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest099_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest099_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest099_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest099_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest099_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest099_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest052_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest052_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest052_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest052_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest052_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest052_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest097_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest097_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest097_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest097_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest097_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest097_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest063_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest063_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest063_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest063_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest063_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest063_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest064_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest064_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest064_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest064_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest064_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest064_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest090_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest090_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest090_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest090_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest090_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest090_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest030_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest030_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest030_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest030_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest030_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest030_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest037_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest037_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest037_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest037_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest037_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest037_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest008_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest008_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest008_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest008_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest008_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest008_ses-1_task-rest_run-01_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest001_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest001_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest001_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest001_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest001_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest001_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest006_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest006_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest006_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest006_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest006_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest006_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest039_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest039_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest039_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest039_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest039_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest039_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest091_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest091_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest091_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest091_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest091_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest091_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest065_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest065_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest065_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest065_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest065_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest065_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest062_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest062_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest062_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest096_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest096_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest096_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest054_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest054_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest054_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest098_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest098_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest098_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest098_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest098_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest098_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest053_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest053_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest053_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest007_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest007_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest007_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest007_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest007_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest007_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest038_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest038_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest038_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest036_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest036_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest036_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest036_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest036_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest036_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest009_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest009_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest009_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest031_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest031_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest031_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest188_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest188_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest188_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest188_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest188_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest188_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest143_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest143_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest143_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest143_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest143_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest143_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest144_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest144_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest144_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest144_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest144_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest144_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest186_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest186_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest186_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest186_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest186_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest186_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest172_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest172_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest172_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest175_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest175_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest175_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest175_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest175_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest175_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest181_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest181_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest181_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest121_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest121_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest121_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest121_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest121_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest121_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest126_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest126_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest126_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest119_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest119_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest119_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest119_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest119_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest119_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest110_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest110_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest110_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest117_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest117_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest117_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest117_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest117_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest117_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest128_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest128_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest128_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest128_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest128_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest128_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest180_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest180_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest180_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest180_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest180_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest180_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest174_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest174_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest174_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest174_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest174_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest174_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest173_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest173_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest173_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest173_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest173_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest173_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest187_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest187_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest187_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest187_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest187_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest187_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest145_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest145_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest145_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest145_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest145_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest145_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest189_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest189_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest189_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest189_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest189_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest189_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest142_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest142_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest142_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest142_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest142_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest142_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest116_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest116_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest116_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest116_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest116_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest116_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest129_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest129_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest129_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest129_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest129_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest129_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest111_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest111_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest111_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest111_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest111_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest111_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest127_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest127_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest127_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest127_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest127_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest127_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest118_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest118_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest118_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest118_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest118_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest118_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest120_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest120_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest120_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest120_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest120_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest120_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest102_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest102_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest102_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest105_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest105_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest105_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest105_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest105_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest105_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest133_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest133_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest133_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest133_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest133_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest133_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest134_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest134_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest134_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest194_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest194_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest194_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest194_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest194_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest194_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest160_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest160_ses-1_rec-refaced_T1w\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM sub-colornest160_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest160_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest160_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest160_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest167_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest167_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest167_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest193_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest193_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest193_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest158_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest158_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest158_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest158_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest158_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest158_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest151_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest151_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest151_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest151_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest151_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest151_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest156_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest156_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest156_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest156_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest156_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest156_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest169_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest169_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest169_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest169_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest169_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest169_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest135_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest135_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest135_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest132_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest132_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest132_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest132_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest132_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest132_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest104_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest104_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest104_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest104_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest104_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest104_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest103_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest103_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest103_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest103_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest103_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest103_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest157_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest157_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest157_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest157_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest157_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest157_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest168_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest168_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest168_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest150_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest150_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest150_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest150_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest150_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest150_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest192_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest192_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest192_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest166_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest166_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest166_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest166_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest166_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest166_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest159_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest159_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest159_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest159_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest159_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest159_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest161_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest161_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest161_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest161_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest161_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest161_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest195_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest195_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest195_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest195_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest195_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest195_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest013_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest013_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest013_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest013_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest013_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest013_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest014_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest014_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest014_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest014_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest014_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest014_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest022_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest022_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest022_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest022_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest022_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest022_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest025_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest025_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest025_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest025_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest025_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest025_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest085_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest085_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest085_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest085_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest085_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest085_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest071_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest071_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest071_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest071_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest071_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest071_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest076_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest076_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest076_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest076_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest076_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest076_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest082_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest082_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest082_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest082_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest082_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest082_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest049_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest049_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest049_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest049_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest049_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest049_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest040_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest040_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest040_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest040_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest040_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest040_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest047_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest047_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest047_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest047_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest047_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest047_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest078_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest078_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest078_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest078_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest078_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest078_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest024_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest024_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest024_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest024_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest024_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest024_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest023_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest023_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest023_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest023_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest023_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest023_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest015_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest015_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest015_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest015_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest015_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest015_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest012_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest012_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest012_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest012_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest012_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest012_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest046_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest046_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest046_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest079_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest079_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest079_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest041_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest041_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest041_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest041_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest041_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest041_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest077_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest077_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest077_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest077_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest077_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest077_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest048_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest048_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest048_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest070_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest070_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest070_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest070_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest070_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest070_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest084_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest084_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest084_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest084_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest084_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest084_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest034_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest034_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest034_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest034_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest034_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest034_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest033_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest033_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest033_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest033_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest033_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest033_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest005_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest005_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest005_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest005_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest005_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest005_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest002_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest002_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest002_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest069_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest069_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest069_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest069_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest069_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest069_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest056_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest056_ses-1_rec-refaced_T1w\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM sub-colornest056_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest056_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest056_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest056_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest051_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest051_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest051_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest051_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest051_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest051_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest058_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest058_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest058_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest067_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest067_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest067_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest067_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest067_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest067_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest093_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest093_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest093_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest093_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest093_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest093_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest094_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest094_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest094_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest094_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest094_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest094_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest060_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest060_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest060_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest060_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest060_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest060_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest003_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest003_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest003_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest003_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest003_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest003_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest004_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest004_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest004_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest032_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest032_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest032_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest032_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest032_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest032_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest035_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest035_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest035_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest061_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest061_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest061_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest061_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest061_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest061_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest095_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest095_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest095_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest095_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest095_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest095_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest059_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest059_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest059_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest059_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest059_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest059_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest092_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest092_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest092_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest066_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest066_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest066_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest050_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest050_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest050_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest050_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest050_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest050_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest068_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest068_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest068_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest068_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest068_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest068_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest057_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest057_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest057_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest057_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest057_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest057_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest125_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest125_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest125_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest125_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest125_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest125_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest122_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest122_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest122_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest122_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest122_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest122_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest114_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest114_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest114_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest114_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest114_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest114_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest113_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest113_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest113_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest113_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest113_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest113_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest178_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest178_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest178_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest178_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest178_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest178_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest147_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest147_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest147_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest140_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest140_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest140_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest149_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest149_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest149_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest149_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest149_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest149_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest176_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest176_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest176_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest176_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest176_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest176_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest182_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest182_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest182_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest182_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest182_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest182_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest185_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest185_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest185_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest185_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest185_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest185_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest171_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest171_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest171_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest112_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest112_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest112_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest112_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest112_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest112_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest115_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest115_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest115_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest115_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest115_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest123_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest123_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest123_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest123_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest123_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest123_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest124_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest124_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest124_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest124_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest124_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest124_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest170_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest170_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest170_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest170_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest170_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest170_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest184_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest184_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest184_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest184_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest184_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest184_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest148_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest148_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest148_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest148_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest148_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest148_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest183_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest183_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest183_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest183_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest183_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest183_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest177_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest177_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest177_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest177_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest177_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest177_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest141_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest141_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest141_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest141_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest141_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest141_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest179_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest179_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest179_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest179_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest179_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest179_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest146_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest146_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest146_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest164_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest164_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest164_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest190_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest190_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest190_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest190_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest190_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest190_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest163_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest163_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest163_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest155_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest155_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest155_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest152_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest152_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest152_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest152_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest152_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest152_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest139_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest139_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest139_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest139_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest139_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest139_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest106_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest106_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest106_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest106_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest106_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest106_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest101_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest101_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest101_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest108_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest108_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest108_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest108_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest108_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest108_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest137_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest137_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest137_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest137_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest137_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest137_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest130_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest130_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest130_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest130_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest130_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest130_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest153_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest153_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest153_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest153_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest153_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest153_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest154_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest154_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest154_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest154_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest154_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest154_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest162_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest162_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest162_ses-1_task-rest_run-01_bold\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest191_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest191_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest191_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest191_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest191_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest191_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest165_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest165_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest165_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest165_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest165_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest165_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest131_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest131_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest131_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest131_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest131_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest131_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest109_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest109_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest109_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest100_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest100_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest100_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest100_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest100_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest100_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest138_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest138_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest138_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest107_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest107_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest107_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest075_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest075_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest075_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest075_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest075_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest075_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest081_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest081_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest081_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest086_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest086_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest086_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest086_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest086_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest086_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest072_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest072_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest072_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest072_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest072_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest072_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest044_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest044_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest044_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest044_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest044_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest044_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest043_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest043_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest043_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest043_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest043_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest043_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest088_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest088_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest088_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest088_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest088_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest088_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest028_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest028_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest028_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest028_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest028_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest028_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest017_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest017_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest017_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest017_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest017_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest017_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest019_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest019_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest019_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest019_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest019_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest019_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest026_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest026_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest026_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest021_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest021_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest021_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest021_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest021_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest021_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest042_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest042_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest042_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest089_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest089_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest089_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest089_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest089_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest089_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest045_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest045_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest045_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest045_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest045_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest045_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest073_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest073_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest073_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest073_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest073_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest073_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest087_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest087_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest087_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest080_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest080_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest080_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest080_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest080_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest080_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest074_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest074_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest074_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest074_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest074_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest074_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest020_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest020_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest020_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest018_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest018_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest018_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest018_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest018_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest018_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest027_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest027_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest027_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest027_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest027_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest027_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest011_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest011_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest011_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest029_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest029_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest029_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest029_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest029_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest029_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest016_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest016_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest016_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest016_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest016_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest016_ses-1_task-rest_run-02_bold\n" ] } ], @@ -375,15 +2294,15 @@ "#rename_files(root_dir, \"PNC2\", \"PNC02\")\n", "\n", "# path to complete BIDS data\n", - "bids_dir = cwd + \"/complete\"\n", - "print(type(bids_dir))\n", + "bids_dir = \"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\"\n", + "#print(type(bids_dir))\n", "p = Path(bids_dir)\n", "\n", "\n", - "rename_files(bids_dir, \"01\", \"001\")\n", + "rename_files(bids_dir, \"TASK\", \"task\")\n", + "\n", "\n", "\n", - "! find testdata\n", "\n", "\n", "\n", @@ -438,7 +2357,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.3" } }, "nbformat": 4, From 869e307f9b52d4a700694de644515dc6b66a46ef Mon Sep 17 00:00:00 2001 From: scovitz <70981267+scovitz@users.noreply.github.com> Date: Wed, 14 Oct 2020 22:26:57 -0400 Subject: [PATCH 36/41] Update bond.py --- bond/bond.py | 112 ++++----------------------------------------------- 1 file changed, 7 insertions(+), 105 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index b8b627dee..d9c7af887 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -4,7 +4,6 @@ from pathlib import Path from bids.layout import parse_file_entities import pandas as pd -import pdb bids.config.set_option('extension_initial_dot', True) @@ -22,12 +21,10 @@ class BOnD(object): - def __init__(self, data_root): - + def __init__(self, data_root): self.path = data_root self.layout = bids.BIDSLayout(self.path, validate = False) - self.keys_files = {} - + def fieldmaps_ok(self): pass @@ -39,7 +36,6 @@ def rename_files(self, filters, pattern, replacement): # - replacement: the substring that will replace "pattern" # @Returns # - None - >>> my_bond.rename_files({"PhaseEncodingDirection": 'j-', ... "EchoTime": 0.005}, ... "acq-123", "acq-12345_dir-PA" @@ -61,58 +57,14 @@ def get_param_groups(self, key_group): regex_search=True, **key_entities) return _get_param_groups(matching_files, self.layout) - def get_file_params(self, key_group): - # files = self.keys_files[key_group] - # return _get_file_params(files, self.layout) - key_entities = _key_group_to_entities(key_group) - key_entities["extension"] = ".nii[.gz]*" - matching_files = self.layout.get(return_type="file", scope="self", - regex_search=True, **key_entities) - return _get_file_params(matching_files, self.layout) - - def get_key_groups(self): key_groups = set() for path in Path(self.path).rglob("*.*"): - if path.suffix == ".json" and path.stem != "dataset_description": - key_groups.update((_file_to_key_group(path),)) - # FILL THE DICTIONARY OF KEY GROUP, LIST OF FILENAMES PAIRS - ret = _file_to_key_group(path) - if ret not in self.keys_files.keys(): - self.keys_files[ret] = [] - self.keys_files[ret].append(path) + if path.suffix == ".json": + continue + key_groups.update((_file_to_key_group(path),)) return sorted(key_groups) - - - def get_filenames(self, key_group): - # NEW - WORKS - return self.keys_files[key_group] - - - - - def change_filenames(self, key_group, split_params, pattern, replacement): - # NEW - #files = self.keys_files[key_group] - # for each filename in the key group, check if it's params match split_params - # if they match, perform the replacement acc to pattern/replacement - new_paths = [] - changes = 0 - dict_files_params = self.get_file_params(key_group) - for filename in dict_files_params.keys(): - if dict_files_params[filename] == split_params: - # DO REPLACEMENT! - path = Path(filename) - old_name = path.stem - old_ext = path.suffix - directory = path.parent - new_name = old_name.replace(pattern, replacement) + old_ext - path.rename(Path(directory, new_name)) - new_paths.append(path) - changes += 1 - return (new_paths, changes) - - + def change_metadata(self, filters, pattern, metadata): # TODO: clean prints and add warnings @@ -189,29 +141,23 @@ def _file_to_key_group(filename): def _get_param_groups(files, layout): """Finds a list of *parameter groups* from a list of files. - Parameters: ----------- - files : list List of file names - Returns: -------- - parameter_groups : list A list of unique parameter groups - For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. """ - dfs = [] for path in files: metadata = layout.get_metadata(path) wanted_keys = metadata.keys() & IMAGING_PARAMS example_data = {key: metadata[key] for key in wanted_keys} - + # Expand slice timing to multiple columns SliceTime = example_data.get('SliceTiming') if SliceTime: @@ -222,50 +168,6 @@ def _get_param_groups(files, layout): {"SliceTime%03d" % SliceNum: time for SliceNum, time in enumerate(SliceTime)}) del example_data['SliceTiming'] - dfs.append(example_data) return pd.DataFrame(dfs).drop_duplicates() - - -def _get_file_params(files, layout): - """Finds a list of *parameter groups* from a list of files. - - Parameters: - ----------- - - files : list - List of file names - - Returns: - -------- - - parameter_groups : list - A list of unique parameter groups - - For each file in `files`, find critical parameters for metadata. Then find - unique sets of these critical parameters. - """ - dict_files_params = {} - - for path in files: - metadata = layout.get_metadata(path) - wanted_keys = metadata.keys() & IMAGING_PARAMS - example_data = {key: metadata[key] for key in wanted_keys} - - # Expand slice timing to multiple columns - SliceTime = example_data.get('SliceTiming') - if SliceTime: - # round each slice time to one place after the decimal - for i in range(len(SliceTime)): - SliceTime[i] = round(SliceTime[i], 1) - example_data.update( - {"SliceTime%03d" % SliceNum: time for - SliceNum, time in enumerate(SliceTime)}) - del example_data['SliceTiming'] - - dict_files_params[path] = example_data - - return dict_files_params - - From 279d5dfa5c36aa5492cd71791202edbb4811cb49 Mon Sep 17 00:00:00 2001 From: scovitz <70981267+scovitz@users.noreply.github.com> Date: Wed, 14 Oct 2020 22:29:20 -0400 Subject: [PATCH 37/41] Update bond.py --- bond/bond.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bond/bond.py b/bond/bond.py index d9c7af887..c02b3f5ec 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -36,6 +36,7 @@ def rename_files(self, filters, pattern, replacement): # - replacement: the substring that will replace "pattern" # @Returns # - None + >>> my_bond.rename_files({"PhaseEncodingDirection": 'j-', ... "EchoTime": 0.005}, ... "acq-123", "acq-12345_dir-PA" @@ -141,14 +142,19 @@ def _file_to_key_group(filename): def _get_param_groups(files, layout): """Finds a list of *parameter groups* from a list of files. + Parameters: ----------- + files : list List of file names + Returns: -------- + parameter_groups : list A list of unique parameter groups + For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. """ From 7f6072c15ec66737c52a264d372f69f293a6d16b Mon Sep 17 00:00:00 2001 From: scovitz <70981267+scovitz@users.noreply.github.com> Date: Wed, 14 Oct 2020 22:30:47 -0400 Subject: [PATCH 38/41] Update bond.py --- bond/bond.py | 268 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) diff --git a/bond/bond.py b/bond/bond.py index dd0b80ede..76a65d7fe 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -1 +1,269 @@ """Main module.""" +import bids +import json +from pathlib import Path +from bids.layout import parse_file_entities +import pandas as pd +import pdb + +bids.config.set_option('extension_initial_dot', True) + +NON_KEY_ENTITIES = set(["subject", "session", "extension"]) +# Multi-dimensional keys SliceTiming +IMAGING_PARAMS = set([ + "ParallelReductionFactorInPlane", "ParallelAcquisitionTechnique", + "ParallelAcquisitionTechnique", "PartialFourier", "PhaseEncodingDirection", + "EffectiveEchoSpacing", "TotalReadoutTime", "EchoTime", + "SliceEncodingDirection", "DwellTime", "FlipAngle", + "MultibandAccelerationFactor", "RepetitionTime", "SliceTiming", + "VolumeTiming", "NumberOfVolumesDiscardedByScanner", + "NumberOfVolumesDiscardedByUser"]) + + +class BOnD(object): + + def __init__(self, data_root): + + self.path = data_root + self.layout = bids.BIDSLayout(self.path, validate = False) + self.keys_files = {} + + def fieldmaps_ok(self): + pass + + def rename_files(self, filters, pattern, replacement): + """ + # @Params + # - filters: pybids entities dictionary to find files to rename + # - pattern: the substring of the file we would like to replace + # - replacement: the substring that will replace "pattern" + # @Returns + # - None + + >>> my_bond.rename_files({"PhaseEncodingDirection": 'j-', + ... "EchoTime": 0.005}, + ... "acq-123", "acq-12345_dir-PA" + ... ) + """ + files_to_change = self.layout.get(return_type='filename', **filters) + for bidsfile in files_to_change: + path = Path(bidsfile.path) + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(Path(directory, new_name)) + + def get_param_groups(self, key_group): + key_entities = _key_group_to_entities(key_group) + key_entities["extension"] = ".nii[.gz]*" + matching_files = self.layout.get(return_type="file", scope="self", + regex_search=True, **key_entities) + return _get_param_groups(matching_files, self.layout) + + def get_file_params(self, key_group): + # files = self.keys_files[key_group] + # return _get_file_params(files, self.layout) + key_entities = _key_group_to_entities(key_group) + key_entities["extension"] = ".nii[.gz]*" + matching_files = self.layout.get(return_type="file", scope="self", + regex_search=True, **key_entities) + return _get_file_params(matching_files, self.layout) + + + def get_key_groups(self): + key_groups = set() + for path in Path(self.path).rglob("*.*"): + if path.suffix == ".json" and path.stem != "dataset_description": + key_groups.update((_file_to_key_group(path),)) + # FILL THE DICTIONARY OF KEY GROUP, LIST OF FILENAMES PAIRS + ret = _file_to_key_group(path) + if ret not in self.keys_files.keys(): + self.keys_files[ret] = [] + self.keys_files[ret].append(path) + return sorted(key_groups) + + + def get_filenames(self, key_group): + # NEW - WORKS + return self.keys_files[key_group] + + + + + def change_filenames(self, key_group, split_params, pattern, replacement): + # NEW + #files = self.keys_files[key_group] + # for each filename in the key group, check if it's params match split_params + # if they match, perform the replacement acc to pattern/replacement + new_paths = [] + changes = 0 + dict_files_params = self.get_file_params(key_group) + for filename in dict_files_params.keys(): + if dict_files_params[filename] == split_params: + # DO REPLACEMENT! + path = Path(filename) + old_name = path.stem + old_ext = path.suffix + directory = path.parent + new_name = old_name.replace(pattern, replacement) + old_ext + path.rename(Path(directory, new_name)) + new_paths.append(path) + changes += 1 + return (new_paths, changes) + + + def change_metadata(self, filters, pattern, metadata): + + # TODO: clean prints and add warnings + + files_to_change = self.layout.get(return_type='object', **filters) + + if not files_to_change: + + print('NO FILES FOUND') + for bidsfile in files_to_change: + + # get the sidecar file + bidsjson_file = bidsfile.get_associations() + + if not bidsjson_file: + print("NO JSON FILES FOUND IN ASSOCIATIONS") + continue + + json_file = [x for x in bidsjson_file if 'json' in x.filename] + + if not len(json_file) == 1: + + print("FOUND IRREGULAR ASSOCIATIONS") + + else: + + # get the data from it + json_file = json_file[0] + + sidecar = json_file.get_dict() + sidecar.update(metadata) + + # write out + _update_json(json_file.path, sidecar) + + +def _update_json(json_file, metadata): + + if _validateJSON(metadata): + with open(json_file, 'w', encoding='utf-8') as f: + json.dump(metadata, f, ensure_ascii=False, indent=4) + else: + + print("INVALID JSON DATA") + #metadata.update + + +def _validateJSON(json_data): + + # TODO + return True + '''try: + json.load(json_data) + except ValueError as err: + return False + return True + ''' + + +def _key_group_to_entities(key_group): + return dict([group.split("-") for group in key_group.split("_")]) + + +def _entities_to_key_group(entities): + group_keys = sorted(entities.keys() - NON_KEY_ENTITIES) + return "_".join( + ["{}-{}".format(key, entities[key]) for key in group_keys]) + + +def _file_to_key_group(filename): + entities = parse_file_entities(str(filename)) + return _entities_to_key_group(entities) + + +def _get_param_groups(files, layout): + """Finds a list of *parameter groups* from a list of files. + + Parameters: + ----------- + + files : list + List of file names + + Returns: + -------- + + parameter_groups : list + A list of unique parameter groups + + For each file in `files`, find critical parameters for metadata. Then find + unique sets of these critical parameters. + """ + + dfs = [] + for path in files: + metadata = layout.get_metadata(path) + wanted_keys = metadata.keys() & IMAGING_PARAMS + example_data = {key: metadata[key] for key in wanted_keys} + + # Expand slice timing to multiple columns + SliceTime = example_data.get('SliceTiming') + if SliceTime: + # round each slice time to one place after the decimal + for i in range(len(SliceTime)): + SliceTime[i] = round(SliceTime[i], 1) + example_data.update( + {"SliceTime%03d" % SliceNum: time for + SliceNum, time in enumerate(SliceTime)}) + del example_data['SliceTiming'] + + dfs.append(example_data) + + return pd.DataFrame(dfs).drop_duplicates() + + +def _get_file_params(files, layout): + """Finds a list of *parameter groups* from a list of files. + + Parameters: + ----------- + + files : list + List of file names + + Returns: + -------- + + parameter_groups : list + A list of unique parameter groups + + For each file in `files`, find critical parameters for metadata. Then find + unique sets of these critical parameters. + """ + dict_files_params = {} + + for path in files: + metadata = layout.get_metadata(path) + wanted_keys = metadata.keys() & IMAGING_PARAMS + example_data = {key: metadata[key] for key in wanted_keys} + + # Expand slice timing to multiple columns + SliceTime = example_data.get('SliceTiming') + if SliceTime: + # round each slice time to one place after the decimal + for i in range(len(SliceTime)): + SliceTime[i] = round(SliceTime[i], 1) + example_data.update( + {"SliceTime%03d" % SliceNum: time for + SliceNum, time in enumerate(SliceTime)}) + del example_data['SliceTiming'] + + dict_files_params[path] = example_data + + return dict_files_params From d4347aa5c4de3bbcab5df135c6f092bdc4f26b62 Mon Sep 17 00:00:00 2001 From: scovitz <70981267+scovitz@users.noreply.github.com> Date: Thu, 15 Oct 2020 10:24:49 -0400 Subject: [PATCH 39/41] Many additions to bond.py, pull requested! --- bond/bond.py | 58 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index 76a65d7fe..4e647d1e8 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -26,19 +26,27 @@ def __init__(self, data_root): self.path = data_root self.layout = bids.BIDSLayout(self.path, validate = False) - self.keys_files = {} + self.keys_files = {} # dictionary of KEYS: keys groups, VALUES: list of files def fieldmaps_ok(self): pass def rename_files(self, filters, pattern, replacement): """ - # @Params - # - filters: pybids entities dictionary to find files to rename - # - pattern: the substring of the file we would like to replace - # - replacement: the substring that will replace "pattern" - # @Returns - # - None + Parameters: + ----------- + - filters : dictionary + pybids entities dictionary to find files to rename + + - pattern : string + the substring of the file we would like to replace + + - replacement : string + the substring that will replace "pattern" + + Returns + ----------- + - None >>> my_bond.rename_files({"PhaseEncodingDirection": 'j-', ... "EchoTime": 0.005}, @@ -62,8 +70,6 @@ def get_param_groups(self, key_group): return _get_param_groups(matching_files, self.layout) def get_file_params(self, key_group): - # files = self.keys_files[key_group] - # return _get_file_params(files, self.layout) key_entities = _key_group_to_entities(key_group) key_entities["extension"] = ".nii[.gz]*" matching_files = self.layout.get(return_type="file", scope="self", @@ -72,15 +78,23 @@ def get_file_params(self, key_group): def get_key_groups(self): + key_groups = set() + for path in Path(self.path).rglob("*.*"): + if path.suffix == ".json" and path.stem != "dataset_description": key_groups.update((_file_to_key_group(path),)) - # FILL THE DICTIONARY OF KEY GROUP, LIST OF FILENAMES PAIRS + + # Fill the dictionary of key group, list of filenames pairrs ret = _file_to_key_group(path) + if ret not in self.keys_files.keys(): + self.keys_files[ret] = [] + self.keys_files[ret].append(path) + return sorted(key_groups) @@ -92,16 +106,20 @@ def get_filenames(self, key_group): def change_filenames(self, key_group, split_params, pattern, replacement): - # NEW - #files = self.keys_files[key_group] # for each filename in the key group, check if it's params match split_params # if they match, perform the replacement acc to pattern/replacement + + # list of file paths that incorporate the replacement new_paths = [] - changes = 0 + + # obtain the dictionary of files, param groups dict_files_params = self.get_file_params(key_group) + for filename in dict_files_params.keys(): - if dict_files_params[filename] == split_params: - # DO REPLACEMENT! + + if dict_files_params[filename] == split_params: + # Perform the replacement if the param dictionaries match + path = Path(filename) old_name = path.stem old_ext = path.suffix @@ -109,8 +127,8 @@ def change_filenames(self, key_group, split_params, pattern, replacement): new_name = old_name.replace(pattern, replacement) + old_ext path.rename(Path(directory, new_name)) new_paths.append(path) - changes += 1 - return (new_paths, changes) + + return new_paths def change_metadata(self, filters, pattern, metadata): @@ -240,8 +258,8 @@ def _get_file_params(files, layout): Returns: -------- - parameter_groups : list - A list of unique parameter groups + dict_files_params : dictionary + A dictionary of KEYS: filenames, VALUES: their param dictionaries For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. @@ -267,3 +285,5 @@ def _get_file_params(files, layout): dict_files_params[path] = example_data return dict_files_params + + From 044b3176fb505e4aae92e2fca9904ba37cf6f022 Mon Sep 17 00:00:00 2001 From: scovitz <70981267+scovitz@users.noreply.github.com> Date: Thu, 15 Oct 2020 10:30:58 -0400 Subject: [PATCH 40/41] Add files via upload --- notebooks/CCNP_KeyGroups.zip | Bin 0 -> 2480 bytes notebooks/Fieldmaps.ipynb | 255 ++ notebooks/FirstProofofConcept.ipynb | 132 + notebooks/HTML_param_groups.ipynb | 485 ++++ notebooks/JSON_PoC_read_write.ipynb | 427 +++ notebooks/Key_and_Param_Groups.ipynb | 251 ++ notebooks/PofC_Key_Values2.ipynb | 358 +++ ...anat_reconstruction-refaced_suffix-T1w.csv | 3 + ...atype-func_run-1_suffix-bold_task-rest.csv | 4 + ...atype-func_run-2_suffix-bold_task-rest.csv | 4 + notebooks/metadata_image_param.ipynb | 554 ++++ notebooks/rename_files_work.ipynb | 2365 +++++++++++++++++ 12 files changed, 4838 insertions(+) create mode 100644 notebooks/CCNP_KeyGroups.zip create mode 100644 notebooks/Fieldmaps.ipynb create mode 100644 notebooks/FirstProofofConcept.ipynb create mode 100644 notebooks/HTML_param_groups.ipynb create mode 100644 notebooks/JSON_PoC_read_write.ipynb create mode 100644 notebooks/Key_and_Param_Groups.ipynb create mode 100644 notebooks/PofC_Key_Values2.ipynb create mode 100644 notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv create mode 100644 notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv create mode 100644 notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv create mode 100644 notebooks/metadata_image_param.ipynb create mode 100644 notebooks/rename_files_work.ipynb diff --git a/notebooks/CCNP_KeyGroups.zip b/notebooks/CCNP_KeyGroups.zip new file mode 100644 index 0000000000000000000000000000000000000000..396da91ee2315d941e26eceb9f5ba7c26eaffc48 GIT binary patch literal 2480 zcmWIWW@Zs#00G+?-#{<}O7Jr%FgQE=1;l%&R=OAEmlhQ3hlcPnu&Xn+#k&Dkx)90}YhJG_1HZEiJP`*U8f*STDJ_3~aVDYg;@c z&|DCWW_EDUBPNCbZ+4DFPu@4P0*wS2i`_yoHUJ=-6P+}a_Vm;7OI}#ieZ`pHENn z{A?dqtQkJRySyVu>t%@R)R5u}TjujEKOkfhzBWWSlQ(LW*-BR3R}R^sRT-L%tTmc$pOCghG$Jp))#)*#XZrV#9ef^sv>~vxE zoU>Rvs%Tzp=0unBEv;X{{HRb?ACU@Yc9=q zy}8|3s<^9IoNt}=@!vI{=AYYhf0zDszFM2#4|jc@{5oBp{c@b%%eS|;{?(N`zV7;} zo9y=cc&|V3v8s)EzwBmtqWt^G<&$sz-61gT(81okZ!510^&kAMw>L7|P=M{2f%wCf92872VS))J6fi-C6S9(f&wiQU8UAaduj6(%v)mnZS9l~(p2#h&pCj64 zWEM7mk!#R1hcGd(y_2UNh>6s^{8lPLOFDJwT-^;}m%RSYt~>0Vzk15lmFjDs@cw;n zILrRng5`!kM2}b8YvVZcFutrO9+W_9Hw&%N1tw5X_xPTZY$ z*nr3Ndrfyz$C7wS?jtk1RqPckycRia<++|&zkkZ(hfJ|n+q(PLXIyMwV7dI}(Z%J{ zzsxxQ@b2vEyMKSUdtte^MBZ}I&fSUZjTag) z;l&0F=x_lA&gwPYcEMRK_T_Ce_PbIy_dNU-X`He|VgJ>?g@KYoY21g?E_mqxs@HJTZ^-t5%3$O&3seTfz>>xiCX4{1L5Ym+9^}jj zDk))LNn;$a+DD5(xO=EkZlb#cIhmolL=;$15OfIzML~c!E3mF)U|<8ntH4+|3g!U- D4n9n3 literal 0 HcmV?d00001 diff --git a/notebooks/Fieldmaps.ipynb b/notebooks/Fieldmaps.ipynb new file mode 100644 index 000000000..8f60d4609 --- /dev/null +++ b/notebooks/Fieldmaps.ipynb @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fieldmaps OK?\n", + "\n", + "This notebook shows how we check if fieldmaps are defined for the data set. There are two approaches:\n", + "\n", + "1. Look at the func/dwi/perf folders; do they have fieldmaps?\n", + "2. Look at the fmap folder; doe the files they point to exist?" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import re\n", + "import pathlib" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "# USE THIS BEFORE TESTING! \n", + "import sys \n", + "sys.path.append(\"..\")\n", + "from pathlib import Path \n", + "import shutil\n", + "import os\n", + "\n", + "from pkg_resources import resource_filename as pkgrf \n", + "\n", + "# returns stirng path to testdata\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "# should give you the full path \n", + "tmp_path = Path().resolve()\n", + "#print(tmp_path)\n", + "\n", + "# dest path\n", + "data_root = tmp_path / \"testdata\"\n", + "\n", + "# ensure path does not already exist in cwd\n", + "if data_root.exists():\n", + " shutil.rmtree(str(data_root))\n", + "\n", + "# equivalent of command line \"cp\"\n", + "cwd = shutil.copytree(TEST_DATA, str(data_root))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json'),\n", + " PosixPath('/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json')]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# get a list of fieldmaps:\n", + "\n", + "fmaps = pathlib.Path(data_root).rglob(\"*fmap/*.json\")\n", + "\n", + "fmaps = [x for x in fmaps]\n", + "\n", + "fmaps[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "def read_intendedfor(path):\n", + " \n", + " with open(str(path), 'r') as infile:\n", + " data = json.load(infile)\n", + " \n", + " return data.get('IntendedFor')" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz']" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "read_intendedfor(fmaps[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Map each fmap to its array of intendedfor's:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "mapping = {}\n", + "\n", + "for fm in fmaps:\n", + " \n", + " intfor = read_intendedfor(fm)\n", + " \n", + " mapping[str(fm)] = intfor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the first method, we just list whether or not the fieldmap has files that exist:" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json: This fieldmap has a file\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json: This fieldmap has a file\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json: This fieldmap has a file\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json: This fieldmap has a file\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json: This fieldmap has a file\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json: This fieldmap is not intended for any files!\n", + "/Users/ttapera/BBL/Projects/BOnD/notebooks/testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json: This fieldmap has a file\n" + ] + } + ], + "source": [ + "all_files = [str(x) for x in pathlib.Path(data_root).rglob(\"*.nii*\")]\n", + "\n", + "for k, v in mapping.items():\n", + " \n", + " if not v:\n", + " \n", + " print(\"{}: This fieldmap is not intended for any files!\".format(k))\n", + " \n", + " continue\n", + " \n", + " for fi in v:\n", + " \n", + " if any([fi in x for x in all_files]):\n", + " \n", + " print(\"{}: This fieldmap has a file\".format(k))\n", + " \n", + " else:\n", + " \n", + " print(\"{}: The file this fieldmap is intended for doesn't exist\".format(k))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the second check, we check that all files in `func`, `dwi` and `perf` have at least one fieldmap" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TODO: `assign_fieldmaps()` function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/FirstProofofConcept.ipynb b/notebooks/FirstProofofConcept.ipynb new file mode 100644 index 000000000..6b602aafd --- /dev/null +++ b/notebooks/FirstProofofConcept.ipynb @@ -0,0 +1,132 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proof of Concept\n", + "\n", + "In this notebook we will test out some proofs of concept for our package.\n", + "\n", + "First step: going through a directory to read the files in it" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "\n", + "root_dir = '/Users/ttapera/BBL/Projects/BOnD/'\n", + "\n", + "bids_dir = 'data/'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/ttapera/BBL/Projects/BOnD/data/'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "root_dir + bids_dir" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bval',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bvec',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.json',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bval',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bvec',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.nii.gz',\n", + " '/Users/ttapera/BBL/Projects/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# use glob to list all of the files recursively\n", + "\n", + "all_files = glob.glob(root_dir + bids_dir + '**/**/**/*')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is how we use glob to list all of the files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/HTML_param_groups.ipynb b/notebooks/HTML_param_groups.ipynb new file mode 100644 index 000000000..694273aa3 --- /dev/null +++ b/notebooks/HTML_param_groups.ipynb @@ -0,0 +1,485 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sys \n", + "sys.path.append(\"..\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/Covitz/BOnD/notebooks/testdata'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# USE THIS BEFORE TESTING! \n", + "\n", + "from pathlib import Path \n", + "import shutil\n", + "import os\n", + "#import bond\n", + "from bids.layout import parse_file_entities \n", + "from bond import BOnD\n", + "from pkg_resources import resource_filename as pkgrf \n", + "\n", + "# returns stirng path to testdata\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "# should give you the full path \n", + "tmp_path = Path().resolve()\n", + "#print(tmp_path)\n", + "\n", + "# dest path\n", + "data_root = tmp_path / \"testdata\"\n", + "\n", + "# ensure path does not already exist in cwd\n", + "if data_root.exists():\n", + " shutil.rmtree(str(data_root))\n", + "\n", + "# equivalent of command line \"cp\"\n", + "cwd = shutil.copytree(TEST_DATA, str(data_root))\n", + "\n", + "cwd\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testdata\r\n", + "testdata/complete\r\n", + "testdata/complete/sub-01\r\n", + "testdata/complete/sub-01/ses-phdiff\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/README\r\n", + "testdata/complete/dataset_description.json\r\n", + "testdata/complete/sub-02\r\n", + "testdata/complete/sub-02/ses-phdiff\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/anat\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-02/ses-phdiff/func\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03\r\n", + "testdata/complete/sub-03/ses-phdiff\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/anat\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/func\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent\r\n", + "testdata/inconsistent/sub-01\r\n", + "testdata/inconsistent/sub-01/ses-phdiff\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/README\r\n", + "testdata/inconsistent/dataset_description.json\r\n", + "testdata/inconsistent/sub-02\r\n", + "testdata/inconsistent/sub-02/ses-phdiff\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03\r\n", + "testdata/inconsistent/sub-03/ses-phdiff\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n" + ] + } + ], + "source": [ + "! find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'a': [0, 2], 'b': [1, 3], 'c': [4], 'd': [5]}\n", + "{'subject': '01', 'session': 'phdiff', 'acquisition': 'v4', 'suffix': 'magnitude1', 'datatype': 'fmap', 'extension': '.json'}\n", + "acquisition-v4_datatype-fmap_extension-.json_session-phdiff_subject-01_suffix-magnitude1\n", + "Entities: {'acquisition': 'v4', 'datatype': 'fmap', 'extension': '.json', 'session': 'phdiff', 'subject': '01', 'suffix': 'magnitude1'}\n", + "F_2_K: acquisition-v4_datatype-fmap_extension-.json_session-phdiff_subject-01_suffix-magnitude1\n" + ] + } + ], + "source": [ + "# TEST BED FOR HTML THING\n", + "\n", + "\n", + "\n", + "# ISSUE! Grouping by char! \n", + "\n", + "#param_group = bond_obj.get_param_groups(key_group)\n", + "# print(key_group)\n", + "# #print(param_group)\n", + "\n", + "NON_KEY_ENTITIES = set([\"subject\", \"session\", \"extension\"])\n", + "\n", + "def key_group_to_entities(key_group):\n", + " return dict([group.split(\"-\") for group in key_group.split(\"_\")])\n", + "\n", + "\n", + "def entities_to_key_group(entities):\n", + " group_keys = sorted(entities.keys())\n", + " return \"_\".join(\n", + " [\"{}-{}\".format(key, entities[key]) for key in group_keys])\n", + "\n", + "def file_to_entities(filename):\n", + " entities = parse_file_entities(str(filename))\n", + " return entities \n", + "\n", + "def file_to_key_group(filename): \n", + " entities = parse_file_entities(str(filename))\n", + " keys = entities_to_key_group(entities)\n", + " return keys\n", + "\n", + "def key_group_to_entities(key_group): \n", + " return dict([group.split(\"-\") for group in key_group.split(\"_\")])\n", + "\n", + "def get_file_params(files):\n", + " \"\"\"Finds a list of *parameter groups* from a list of files.\n", + "\n", + " Parameters:\n", + " -----------\n", + "\n", + " files : list\n", + " List of file names\n", + "\n", + " Returns:\n", + " --------\n", + "\n", + " files_params : dictionary \n", + " A dictionary of filename, param_dict pairs\n", + "\n", + " For each file in `files`, find critical parameters for metadata. Then find\n", + " unique sets of these critical parameters.\n", + " \"\"\"\n", + "\n", + " # # DICTIONARY OF FILENAME, DICT_PARAMS \n", + " files_params = {}\n", + " for path in files:\n", + " metadata = self.layout.get_metadata(path)\n", + " wanted_keys = metadata.keys() & IMAGING_PARAMS\n", + " example_data = {key: metadata[key] for key in wanted_keys}\n", + "\n", + " # Expand slice timing to multiple columns\n", + " SliceTime = example_data.get('SliceTiming')\n", + " if SliceTime:\n", + " # round each slice time to one place after the decimal\n", + " for i in range(len(SliceTime)):\n", + " SliceTime[i] = round(SliceTime[i], 1)\n", + " example_data.update(\n", + " {\"SliceTime%03d\" % SliceNum: time for\n", + " SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + "\n", + " # ADD TO THE DICTIONARY \n", + " files_params[path] = example_data \n", + "\n", + " return files_params\n", + " \n", + "\n", + "#def get_param_groups(key_group, path):\n", + "# key_entities = key_group_to_entities(key_group)\n", + "# path = Path(path)\n", + "# matching_files = path.layout.get(return_type=\"file\", scope=\"self\",\n", + "# **key_entities)\n", + "# return _get_param_groups(matching_files)\n", + "\n", + "\n", + "\n", + "filename = \"/Users/Covitz/BOnD/bond/testdata/complete/sub-01/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\"\n", + "path = \"/Users/Covitz/BOnD/bond/testdata/complete/\"\n", + "ret_entities = file_to_entities(filename)\n", + "print(ret_entities) \n", + "key_group = entities_to_key_group(ret_entities) \n", + "print(key_group)\n", + "\n", + "entities = key_group_to_entities(key_group)\n", + "print(\"Entities: \", entities)\n", + "\n", + "key_groups = file_to_key_group(filename)\n", + "print(\"F_2_K: \", key_groups)\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['acquisition-HASC55AP_datatype-dwi_suffix-dwi',\n", + " 'acquisition-v4_datatype-fmap_fmap-magnitude1_suffix-magnitude1',\n", + " 'acquisition-v4_datatype-fmap_fmap-magnitude2_suffix-magnitude2',\n", + " 'acquisition-v4_datatype-fmap_fmap-phasediff_suffix-phasediff',\n", + " 'datatype-anat_suffix-T1w',\n", + " 'datatype-fmap_direction-PA_fmap-epi_suffix-epi',\n", + " 'datatype-func_suffix-bold_task-rest']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "# IMPORT SET TRACE \n", + "# assert 0, debug \n", + "\n", + "\n", + "\n", + "\n", + "bond_obj = BOnD(\"/Users/Covitz/BOnD/bond/testdata/complete/\")\n", + "key_group = bond_obj.get_key_groups()\n", + "key_group" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pybids in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (0.12.1)\n", + "Requirement already satisfied: pandas>=0.23 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.1.3)\n", + "Requirement already satisfied: scipy in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (1.5.2)\n", + "Requirement already satisfied: sqlalchemy in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.3.19)\n", + "Requirement already satisfied: bids-validator in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (1.5.6)\n", + "Requirement already satisfied: patsy in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (0.5.1)\n", + "Requirement already satisfied: numpy in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (1.19.2)\n", + "Requirement already satisfied: num2words in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pybids) (0.5.10)\n", + "Requirement already satisfied: nibabel>=2.1 in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (3.1.1)\n", + "Requirement already satisfied: click in /Users/Covitz/.local/lib/python3.8/site-packages (from pybids) (7.1.2)\n", + "Requirement already satisfied: pytz>=2017.2 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from pandas>=0.23->pybids) (2020.1)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Users/Covitz/.local/lib/python3.8/site-packages (from pandas>=0.23->pybids) (2.8.1)\n", + "Requirement already satisfied: six in /Users/Covitz/.local/lib/python3.8/site-packages (from patsy->pybids) (1.15.0)\n", + "Requirement already satisfied: docopt>=0.6.2 in /Applications/miniconda3/envs/bond/lib/python3.8/site-packages (from num2words->pybids) (0.6.2)\n", + "Requirement already satisfied: packaging>=14.3 in /Users/Covitz/.local/lib/python3.8/site-packages (from nibabel>=2.1->pybids) (20.4)\n", + "Requirement already satisfied: pyparsing>=2.0.2 in /Users/Covitz/.local/lib/python3.8/site-packages (from packaging>=14.3->nibabel>=2.1->pybids) (2.4.7)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the bids directory inside which we want to change files \n", + "# @Returns\n", + "# - HTML report of acquisitions and their parameter groups \n", + "\n", + "\n", + "# WHERE DO WE FIND THE ACQUISITION TYPE? \n", + "\n", + "\n", + "\n", + "\n", + "def _entities_to_key_group(entities):\n", + " group_keys = sorted(entities.keys() - NON_KEY_ENTITIES)\n", + " return \"_\".join(\n", + " [\"{}-{}\".format(key, entities[key]) for key in group_keys])\n", + "\n", + "\n", + "def _file_to_key_group(filename):\n", + " entities = parse_file_entities(str(filename))\n", + " return _entities_to_key_group(entities)\n", + "\n", + "\n", + "def html_groups(bids_dir):\n", + " # get key groups using bond.get_key_groups\n", + " # use key_group_to_entities to get entities \n", + " # get param groups for each entity \n", + " \n", + " \n", + " # initialize dictionary of acquisition types \n", + " d_acts = {}\n", + " for path in pathlib.Path(path_to_dir).iterdir():\n", + " if path.is_file():\n", + " ext = path.suffix\n", + " # check if the file is a .json file \n", + " if ext == \".json\":\n", + " # parse keys\n", + " d_keys = parse_file_entities(path)\n", + " \n", + " \n", + " \n", + " # create html file \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/JSON_PoC_read_write.ipynb b/notebooks/JSON_PoC_read_write.ipynb new file mode 100644 index 000000000..b4e594eec --- /dev/null +++ b/notebooks/JSON_PoC_read_write.ipynb @@ -0,0 +1,427 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this proof of concept we will read & write JSON files in Jupyter notebook. \n", + "\n", + "1. display the data in the sidecar \n", + "2. edit this data \n", + "3. check that the sidecar will write valid JSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "#import json module to be able to read & write json files \n", + "import json\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from glob import glob \n", + "from pathlib import Path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. The first part will include displaying the data in the sidecar by reading the JSON files \n", + "2. We then use json.load to turn it into a python object \n", + "3. The data we have includes an array of information under SliceTiming so we will create a dataframe within our dataframe to include SliceTiming as SliceTime 00, 01 , etc. (individual values of SliceTiming). " + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": {}, + "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", + "
0
ProcedureStepDescriptionMR_HEAD_WO_IV_CONTRAST
DeviceSerialNumber167024
EffectiveEchoSpacing0.000689998
TotalReadoutTime0.0717598
ManufacturersModelNamePrisma_fit
......
SliceTime0313.61667
SliceTime0323.73333
SliceTime0333.85
SliceTime0343.96667
SliceTime0354.08333
\n", + "

64 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 0\n", + "ProcedureStepDescription MR_HEAD_WO_IV_CONTRAST\n", + "DeviceSerialNumber 167024\n", + "EffectiveEchoSpacing 0.000689998\n", + "TotalReadoutTime 0.0717598\n", + "ManufacturersModelName Prisma_fit\n", + "... ...\n", + "SliceTime031 3.61667\n", + "SliceTime032 3.73333\n", + "SliceTime033 3.85\n", + "SliceTime034 3.96667\n", + "SliceTime035 4.08333\n", + "\n", + "[64 rows x 1 columns]" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#testing the code with a single json file. \n", + "\n", + "file_test = open('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json')\n", + "sample_data = json.load(file_test)\n", + "sample_data.keys()\n", + "sample_data.get('SliceTiming')\n", + "SliceTime = sample_data.get('SliceTiming') #the way you can snatch things out of a dictionary \n", + "#if dict doens't have the key it will return none vs. error\n", + "\n", + "if SliceTime: \n", + " sample_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del sample_data['SliceTiming']\n", + " \n", + "array_data = pd.DataFrame.from_dict(sample_data, orient='index')\n", + "array_data" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [], + "source": [ + "#{\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the next one might not have slice timing but you concatonate the next row -- if the file doesn't have slice timing it fills with NaN and if it doesn't then google! \n", + "\n", + "rglob to get all the files in the bids tree then load it with json.load " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next steps \n", + "\n", + "1. Slice Timing turn it into a column where each column would have its own float \n", + "2. multiple columns with the umber of them filled out to the maximum number of slice times " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. The following part is used to edit JSON file data. \n", + "\n", + "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. \n", + "\n", + "Note that this code is commented out as it will be different when we are using this with Pandas DataFrame. This was code written when working with a single .json file. " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "#Here we change the value for AcquisionNumber from 1 to 2. \n", + "#json_data[\"AcquisitionNumber\"] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view edited data\n", + "#json_data" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Reverting back to original data\n", + "#json_data[\"AcquisitionNumber\"] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Checking that the sidecare will write valid JSON files \n", + "\n", + "In order to do this, we use the json.dumps function as it will turn the python object into a JSON string, and therefore, will wirte a valid JSON file always. \n", + "\n", + "Note: same as the previous chunk of code, this was written for a single .json file and therefore is commentend out " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#json_string = json.dumps(json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view the python object as a JSON string \n", + "#json_string" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "#notes from Matt \n", + "\n", + "# have a function that does the reading and creates 1 row then you have to loop and the dataframe grows through concatanation \n", + "# pandas.concat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next section is the for loop attempting to extract, open and turn into a dataframe each json file in the \"complete\" directory! " + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "0\n", + "\n", + "1\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "2\n", + "\n", + "3\n", + "\n", + "4\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "5\n", + "\n", + "6\n", + "\n", + "7\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n", + "\n", + "8\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "9\n", + "\n", + "10\n", + "\n", + "11\n", + "\n", + "12\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "13\n", + "\n", + "14\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n", + "\n", + "15\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "16\n", + "\n", + "17\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 4.2, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'SeriesDescription': 'ABCD_dMRI', 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j-', 'SoftwareVersions': 'syngo_MR_E11', 'IntendedFor': ['ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz'], 'SliceTime000': 0.0, 'SliceTime001': 0.11666666666666667, 'SliceTime002': 0.23333333333333334, 'SliceTime003': 0.35, 'SliceTime004': 0.4666666666666667, 'SliceTime005': 0.5833333333333334, 'SliceTime006': 0.7, 'SliceTime007': 0.8166666666666667, 'SliceTime008': 0.9333333333333333, 'SliceTime009': 1.05, 'SliceTime010': 1.1666666666666667, 'SliceTime011': 1.2833333333333334, 'SliceTime012': 1.4, 'SliceTime013': 1.5166666666666666, 'SliceTime014': 1.6333333333333333, 'SliceTime015': 1.75, 'SliceTime016': 1.8666666666666667, 'SliceTime017': 1.9833333333333334, 'SliceTime018': 2.1, 'SliceTime019': 2.216666666666667, 'SliceTime020': 2.3333333333333335, 'SliceTime021': 2.45, 'SliceTime022': 2.566666666666667, 'SliceTime023': 2.6833333333333336, 'SliceTime024': 2.8, 'SliceTime025': 2.9166666666666665, 'SliceTime026': 3.033333333333333, 'SliceTime027': 3.15, 'SliceTime028': 3.2666666666666666, 'SliceTime029': 3.3833333333333333, 'SliceTime030': 3.5, 'SliceTime031': 3.6166666666666667, 'SliceTime032': 3.7333333333333334, 'SliceTime033': 3.85, 'SliceTime034': 3.966666666666667, 'SliceTime035': 4.083333333333333}\n", + "\n", + "18\n", + "\n", + "19\n", + "\n", + "20\n", + "\n", + "21\n", + "{'ProcedureStepDescription': 'MR_HEAD_WO_IV_CONTRAST', 'DeviceSerialNumber': '167024', 'EffectiveEchoSpacing': 0.000689998, 'TotalReadoutTime': 0.0717598, 'ManufacturersModelName': 'Prisma_fit', 'ProtocolName': 'ABCD_dMRI', 'TaskName': 'rest', 'BandwidthPerPixelPhaseEncode': 10.352, 'PhaseEncodingLines': 140, 'RepetitionTime': 1.0, 'EchoTrainLength': 105, 'MagneticFieldStrength': 3, 'AcquisitionNumber': 1, 'InstitutionName': 'HUP', 'BodyPartExamined': 'BRAIN', 'ConversionSoftware': 'dcm2niix', 'ScanningSequence': 'EP', 'Manufacturer': 'Siemens', 'FlipAngle': 90, 'ConversionSoftwareVersion': 'v1.0.20170724 (OpenJPEG build) GCC6.1.0', 'SeriesDescription': 'ABCD_dMRI', 'InstitutionAddress': 'Spruce_Street_3400_Philadelphia_Pennsylvania_US_19104', 'AcquisitionTime': '16:31:6.145000', 'SequenceName': 'ep_b0', 'ImageType': ['ORIGINAL', 'PRIMARY', 'DIFFUSION', 'NONE', 'ND', 'MOSAIC'], 'EchoTime': 0.089, 'SequenceVariant': 'SK_SP', 'PhaseEncodingDirection': 'j', 'SoftwareVersions': 'syngo_MR_E11', 'SliceTime000': 0.0, 'SliceTime001': 0.027131782945736437, 'SliceTime002': 0.054263565891472874, 'SliceTime003': 0.0813953488372093, 'SliceTime004': 0.10852713178294575, 'SliceTime005': 0.1356589147286822, 'SliceTime006': 0.1627906976744186, 'SliceTime007': 0.18992248062015504, 'SliceTime008': 0.2170542635658915, 'SliceTime009': 0.24418604651162792, 'SliceTime010': 0.2713178294573644, 'SliceTime011': 0.2984496124031008, 'SliceTime012': 0.3255813953488372, 'SliceTime013': 0.35271317829457366, 'SliceTime014': 0.3798449612403101, 'SliceTime015': 0.4069767441860465, 'SliceTime016': 0.434108527131783, 'SliceTime017': 0.4612403100775194, 'SliceTime018': 0.48837209302325585, 'SliceTime019': 0.5155038759689923, 'SliceTime020': 0.5426356589147288, 'SliceTime021': 0.5697674418604651, 'SliceTime022': 0.5968992248062016, 'SliceTime023': 0.6240310077519381, 'SliceTime024': 0.6511627906976744, 'SliceTime025': 0.6782945736434108, 'SliceTime026': 0.7054263565891473, 'SliceTime027': 0.7325581395348837, 'SliceTime028': 0.7596899224806202, 'SliceTime029': 0.7868217054263567, 'SliceTime030': 0.813953488372093, 'SliceTime031': 0.8410852713178295, 'SliceTime032': 0.868217054263566, 'SliceTime033': 0.8953488372093024, 'SliceTime034': 0.9224806201550388, 'SliceTime035': 0.9496124031007752}\n" + ] + } + ], + "source": [ + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'): \n", + " #print(path)\n", + "\n", + " counter=0\n", + "\n", + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'):\n", + " print(type(path))\n", + " print(counter)\n", + " s_path = str(path)\n", + " #print(s_path)\n", + " file_tree = open(s_path)\n", + " example_data = json.load(file_tree)\n", + " SliceTime = example_data.get('SliceTiming') #the way you can snatch things out of a dictionary #if dict doens't have the key it will return none vs. error\n", + " if SliceTime: \n", + " example_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + " print(example_data)\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') \n", + " #data\n", + " counter += 1\n", + " \n", + "\n", + "#NOTE: error when trying to put the data into a pandas dataframe. \n", + "# print(example_data) was used to make sure that inputs that are an array such as in the field SliceTiming are being separated into indenpendent values of SliceTime00x that should feed into the dataframe. \n", + "# it is doing that across all json files that are being loaded from the directory " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are just documented attempts at the above for loop! \n", + "\n", + "attempt at directory stuff #1 \n", + "\n", + "import os, json\n", + "import pandas as pd\n", + "\n", + "path_to_json = '/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/anat'\n", + "json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]\n", + "print(json_files)\n", + "\n", + "attempt #2\n", + "\n", + "for filename in glob('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/*.json'):\n", + " print(filename)\n", + " \n", + " \n", + "attempt # 3 \n", + " \n", + " for name in files: \n", + " f = open(name, 'r')\n", + " print(f)\n", + " content=f.readlines()\n", + " print(f'Content of %s:\\n %s' %(name,content))\n", + " f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/Key_and_Param_Groups.ipynb b/notebooks/Key_and_Param_Groups.ipynb new file mode 100644 index 000000000..c1c2dc000 --- /dev/null +++ b/notebooks/Key_and_Param_Groups.ipynb @@ -0,0 +1,251 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#!/usr/bin/env python\n", + "\n", + "\"\"\"Tests for `bond` package.\"\"\"\n", + "import sys\n", + "import time\n", + "from pathlib import Path\n", + "import csv\n", + "import pandas as pd\n", + "#sys.path.append(\"..\")\n", + "import os\n", + "#import pytest\n", + "from pkg_resources import resource_filename as pkgrf\n", + "from bond import BOnD\n", + "#import shutil\n", + "#import bond\n", + "#import tempfile\n", + "#import os.path as op\n", + "#from copy import deepcopy\n", + "#import base64\n", + "#from glob import glob\n", + "\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "\n", + "#data_root = Path(\".\") / \"testdata\" / \"complete\"\n", + "\n", + "data_root2 = \"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\"\n", + "\n", + "#shutil.copytree(TEST_DATA, str(data_root))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#!find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['datatype-anat_reconstruction-refaced_suffix-T1w', 'datatype-func_run-1_suffix-bold_task-rest', 'datatype-func_run-2_suffix-bold_task-rest']\n" + ] + } + ], + "source": [ + "bod = BOnD(data_root2)\n", + "key_groups = bod.get_key_groups()\n", + "print(key_groups)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "190\n" + ] + } + ], + "source": [ + "files = bod.get_filenames('datatype-func_run-2_suffix-bold_task-rest')\n", + "files\n", + "#print(files)\n", + "print(len(files))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "datatype-anat_reconstruction-refaced_suffix-T1w\n", + "191\n", + "datatype-func_run-1_suffix-bold_task-rest\n", + "191\n", + "datatype-func_run-2_suffix-bold_task-rest\n", + "190\n" + ] + } + ], + "source": [ + "\n", + "for key_group in key_groups:\n", + " print(key_group)\n", + " output = bod.get_file_params(key_group)\n", + " print(len(output))\n", + " #print(output)\n", + " \n", + "\n", + " #print(output)\n", + " #output2 = bod.get_param_groups(key_group)\n", + " #print(output2[1])\n", + " #print(output[1])\n", + " #print(output[0])\n", + " #print(len(output[0]))\n", + " #output.to_csv('Tests/' + key_group + '.csv')\n", + " # export the line above to a csv\n", + " # data = data.append(pd.DataFrame(DwellTime: key_group.\n", + "#print(output['/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest195/ses-1/func/sub-colornest195_ses-1_task-rest_run-02_bold.nii.gz'])\n", + "#print(output)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "key_group = 'datatype-func_run-2_suffix-bold_task-rest'\n", + "file_params_dict = bod.get_file_params(key_group)\n", + "print(len(file_params_dict))\n", + "print(file_params_dict)\n", + "#print(output[1])\n", + "#print(output[0])\n", + "# filenames = list(output.keys())\n", + "# first_params = output[filenames[0]] \n", + "# #for path in filenames: \n", + "# #print(path + \"\\n\")\n", + "# #print(first_params)\n", + "\n", + "\n", + "\n", + "# GET ALL FILENAMES ASSOCIATED WITH A KEY GROUP\n", + "# USE GLOB TO FIND ALL INSTANCES \n", + "# IF THEY MATCH AND DICTS MATCH, DO THE REPLACEMENT \n", + "\n", + "\n", + "# for i in range(len(files)):\n", + "# files[i] = str(files[i])\n", + "# files_size = len(files)\n", + "# print(files_size)\n", + "# print(files[0])\n", + "\n", + "# filenames_size = len(filenames)\n", + "# print(filenames_size)\n", + "# print(filenames[0])\n", + "\n", + "# param_groups = bod.get_param_groups(key_group)\n", + "# print(len(param_groups))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest003/ses-1/func/sub-colornest003_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest004/ses-1/func/sub-colornest004_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest005/ses-1/func/sub-colornest005_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest007/ses-1/func/sub-colornest007_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest008/ses-1/func/sub-colornest008_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest013/ses-1/func/sub-colornest013_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest015/ses-1/func/sub-colornest015_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest016/ses-1/func/sub-colornest016_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest023/ses-1/func/sub-colornest023_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest026/ses-1/func/sub-colornest026_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest027/ses-1/func/sub-colornest027_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest029/ses-1/func/sub-colornest029_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest032/ses-1/func/sub-colornest032_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest033/ses-1/func/sub-colornest033_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest041/ses-1/func/sub-colornest041_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest045/ses-1/func/sub-colornest045_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest047/ses-1/func/sub-colornest047_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest049/ses-1/func/sub-colornest049_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest052/ses-1/func/sub-colornest052_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest053/ses-1/func/sub-colornest053_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest056/ses-1/func/sub-colornest056_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest059/ses-1/func/sub-colornest059_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest061/ses-1/func/sub-colornest061_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest063/ses-1/func/sub-colornest063_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest064/ses-1/func/sub-colornest064_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest066/ses-1/func/sub-colornest066_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest067/ses-1/func/sub-colornest067_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest070/ses-1/func/sub-colornest070_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest071/ses-1/func/sub-colornest071_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest073/ses-1/func/sub-colornest073_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest074/ses-1/func/sub-colornest074_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest077/ses-1/func/sub-colornest077_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest080/ses-1/func/sub-colornest080_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest085/ses-1/func/sub-colornest085_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest086/ses-1/func/sub-colornest086_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest087/ses-1/func/sub-colornest087_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest088/ses-1/func/sub-colornest088_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest090/ses-1/func/sub-colornest090_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest093/ses-1/func/sub-colornest093_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest095/ses-1/func/sub-colornest095_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest098/ses-1/func/sub-colornest098_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest106/ses-1/func/sub-colornest106_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest107/ses-1/func/sub-colornest107_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest110/ses-1/func/sub-colornest110_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest111/ses-1/func/sub-colornest111_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest113/ses-1/func/sub-colornest113_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest114/ses-1/func/sub-colornest114_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest115/ses-1/func/sub-colornest115_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest116/ses-1/func/sub-colornest116_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest117/ses-1/func/sub-colornest117_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest120/ses-1/func/sub-colornest120_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest125/ses-1/func/sub-colornest125_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest127/ses-1/func/sub-colornest127_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest130/ses-1/func/sub-colornest130_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest131/ses-1/func/sub-colornest131_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest133/ses-1/func/sub-colornest133_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest143/ses-1/func/sub-colornest143_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest144/ses-1/func/sub-colornest144_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest147/ses-1/func/sub-colornest147_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest148/ses-1/func/sub-colornest148_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest152/ses-1/func/sub-colornest152_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest154/ses-1/func/sub-colornest154_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest155/ses-1/func/sub-colornest155_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest159/ses-1/func/sub-colornest159_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest161/ses-1/func/sub-colornest161_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest169/ses-1/func/sub-colornest169_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest173/ses-1/func/sub-colornest173_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest175/ses-1/func/sub-colornest175_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest177/ses-1/func/sub-colornest177_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest182/ses-1/func/sub-colornest182_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest184/ses-1/func/sub-colornest184_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest194/ses-1/func/sub-colornest194_ses-1_task-rest_run-02_bold.nii.gz'), PosixPath('/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/sub-colornest195/ses-1/func/sub-colornest195_ses-1_task-rest_run-02_bold.nii.gz')]\n", + "73\n" + ] + } + ], + "source": [ + "# TESTING THE change_filename method!\n", + "key_group = 'datatype-func_run-2_suffix-bold_task-rest'\n", + "split_params = {'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PartialFourier': 1, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'EchoTime': 0.03, 'PhaseEncodingDirection': 'j-', 'DwellTime': 3.1e-06, 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2}\n", + "pattern = \"task\"\n", + "replacement = \"TASK\"\n", + "ret = bod.change_filenames(key_group, split_params, pattern, replacement)\n", + "\n", + "changed_paths = ret\n", + "\n", + "print(changed_paths)\n", + "print(len(changed_paths))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# TESTING SOMOE SHIT WOOOOOOOOOOOOO\n", + "\n", + "dict_0 = {'EchoTime': 0.03, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'DwellTime': 3.1e-06, 'PartialFourier': 1, 'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PhaseEncodingDirection': 'j-', 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2} \n", + "dict_1 = {'EchoTime': 0.03, 'TotalReadoutTime': 0.0362102, 'RepetitionTime': 2.5, 'DwellTime': 3.1e-06, 'PartialFourier': 1, 'FlipAngle': 80, 'EffectiveEchoSpacing': 0.000510002, 'PhaseEncodingDirection': 'j-', 'SliceTime000': 1.2, 'SliceTime001': 0, 'SliceTime002': 1.3, 'SliceTime003': 0.1, 'SliceTime004': 1.4, 'SliceTime005': 0.1, 'SliceTime006': 1.4, 'SliceTime007': 0.2, 'SliceTime008': 1.5, 'SliceTime009': 0.3, 'SliceTime010': 1.6, 'SliceTime011': 0.3, 'SliceTime012': 1.6, 'SliceTime013': 0.4, 'SliceTime014': 1.7, 'SliceTime015': 0.5, 'SliceTime016': 1.8, 'SliceTime017': 0.5, 'SliceTime018': 1.8, 'SliceTime019': 0.6, 'SliceTime020': 1.9, 'SliceTime021': 0.7, 'SliceTime022': 2.0, 'SliceTime023': 0.7, 'SliceTime024': 2.0, 'SliceTime025': 0.8, 'SliceTime026': 2.1, 'SliceTime027': 0.9, 'SliceTime028': 2.2, 'SliceTime029': 0.9, 'SliceTime030': 2.2, 'SliceTime031': 1.0, 'SliceTime032': 2.3, 'SliceTime033': 1.0, 'SliceTime034': 2.4, 'SliceTime035': 1.1, 'SliceTime036': 2.4, 'SliceTime037': 1.2}\n", + "\n", + "if dict_0 == split_params: \n", + " print(\"YAY\")\n", + "else:\n", + " print(\"STUPID\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/PofC_Key_Values2.ipynb b/notebooks/PofC_Key_Values2.ipynb new file mode 100644 index 000000000..af04870bf --- /dev/null +++ b/notebooks/PofC_Key_Values2.ipynb @@ -0,0 +1,358 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 2)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m pip install bids\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "# Install bids\n", + "pip install bids" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Import modules\n", + "from bids import BIDSLayout\n", + "from bids.tests import get_test_data_path\n", + "from bids.layout import parse_file_entities\n", + "import os\n", + "import glob\n", + "import json" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = '/Users/krmurtha/Desktop/informatics/BOnD/'\n", + "bids_dir = 'data/'" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-pepolar/anat', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-nofmap/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phdiff/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phdiff/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-buds/anat', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phases/dwi', '/Users/krmurtha/Desktop/informatics/BOnD/data/DSDTI_fmap/sub-PNC/ses-phases/fmap', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude2.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase2.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_magnitude1.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/fmap/sub-1832999514_ses-PNC2_phase1.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_rec-refaced_T1w.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/anat/sub-1832999514_ses-PNC2_T1w.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-idemo.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-frac2back.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC2/func/sub-1832999514_ses-PNC2_task-rest_acq-singleband_bold.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bval', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.bvec', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-02_dwi.json', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bval', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/dwi/sub-1832999514_ses-PNC1_run-01_dwi.bvec', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.nii.gz', '/Users/krmurtha/Desktop/informatics/BOnD/data/sub-1832999514/ses-PNC1/func/sub-1832999514_ses-PNC1_task-rest_acq-singleband_task-rest_bold.json']\n" + ] + } + ], + "source": [ + "# use glob to list all of the files recursively\n", + "\n", + "all_files=glob.glob(root_dir + bids_dir + '**/**/**/*')\n", + "print(all_files)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': 'PNC', 'session': 'pepolar'}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/krmurtha/anaconda3/envs/bond/lib/python3.8/site-packages/bids/layout/models.py:148: FutureWarning: The 'extension' entity currently excludes the leading dot ('.'). As of version 0.14.0, it will include the leading dot. To suppress this warning and include the leading dot, use `bids.config.set_option('extension_initial_dot', True)`.\n", + " warnings.warn(\"The 'extension' entity currently excludes the leading dot ('.'). \"\n" + ] + } + ], + "source": [ + "# use pybids to extract BIDS entities from single subject \n", + "\n", + "path = all_files[0]\n", + "dict1= parse_file_entities(path)\n", + "print(dict1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'fmap': 'phase2', 'datatype': 'fmap', 'extension': 'nii.gz'}\n" + ] + } + ], + "source": [ + "# test another example\n", + "\n", + "dict2= parse_file_entities(all_files[14])\n", + "print(dict2)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'pepolar'}, {'subject': 'PNC', 'session': 'nofmap'}, {'subject': 'PNC', 'session': 'phdiff'}, {'subject': 'PNC', 'session': 'phdiff'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'buds'}, {'subject': 'PNC', 'session': 'phases'}, {'subject': 'PNC', 'session': 'phases'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude2', 'fmap': 'magnitude2', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude2', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase2', 'fmap': 'phase2', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude1', 'fmap': 'magnitude1', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'magnitude1', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase1', 'datatype': 'fmap', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'phase1', 'fmap': 'phase1', 'datatype': 'fmap', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'reconstruction': 'refaced', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'reconstruction': 'refaced', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'suffix': 'T1w', 'datatype': 'anat', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'idemo', 'suffix': 'idemo', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'frac2back', 'suffix': 'frac2back', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'idemo', 'suffix': 'idemo', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'frac2back', 'suffix': 'frac2back', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC2', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bval'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bvec'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 2, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'json'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bval'}, {'subject': '1832999514', 'session': 'PNC1', 'run': 1, 'suffix': 'dwi', 'datatype': 'dwi', 'extension': 'bvec'}, {'subject': '1832999514', 'session': 'PNC1', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'nii.gz'}, {'subject': '1832999514', 'session': 'PNC1', 'task': 'rest', 'acquisition': 'singleband', 'suffix': 'bold', 'datatype': 'func', 'extension': 'json'}]\n" + ] + } + ], + "source": [ + "entities = []\n", + "#initialize list\n", + "\n", + "for file in all_files:\n", + "#for each file in the list, parse the information into a dictionary and add it to the list we just initalized\n", + " result = parse_file_entities(file) \n", + " \n", + " entities.append(result)\n", + " #entities.add(string_result)\n", + "print(entities)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': ['PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', 'PNC', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514', '1832999514'], 'session': ['pepolar', 'pepolar', 'pepolar', 'nofmap', 'phdiff', 'phdiff', 'buds', 'buds', 'buds', 'phases', 'phases', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC2', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1', 'PNC1'], 'suffix': ['magnitude2', 'phase2', 'magnitude2', 'phase2', 'magnitude1', 'magnitude1', 'phase1', 'phase1', 'T1w', 'T1w', 'T1w', 'T1w', 'idemo', 'frac2back', 'idemo', 'bold', 'frac2back', 'bold', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'bold', 'bold'], 'fmap': ['magnitude2', 'phase2', 'magnitude1', 'phase1'], 'datatype': ['fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'fmap', 'anat', 'anat', 'anat', 'anat', 'func', 'func', 'func', 'func', 'func', 'func', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'dwi', 'func', 'func'], 'extension': ['nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'nii.gz', 'nii.gz', 'json', 'nii.gz', 'json', 'json', 'bval', 'json', 'bvec', 'nii.gz', 'nii.gz', 'json', 'bval', 'bvec', 'nii.gz', 'json'], 'reconstruction': ['refaced', 'refaced'], 'task': ['idemo', 'frac2back', 'idemo', 'rest', 'frac2back', 'rest', 'rest', 'rest'], 'acquisition': ['singleband', 'singleband', 'singleband', 'singleband'], 'run': [2, 1, 2, 1, 2, 2, 1, 1]}\n" + ] + } + ], + "source": [ + "\n", + "# loop through files to create a bigger dictionary of discrete keys, adding each value to a list \n", + "dictionary = {}\n", + "# initalize a new dictionary\n", + "for e in entities:\n", + "# for each dictionary in the list we created above \n", + " for k,v in e.items():\n", + " #for each set of key-value pairs in each dictionary \n", + " #print(k,v)\n", + " if k not in dictionary.keys():\n", + " #if the key is not in the larger dictionary keys, set the value as value, but in a list\n", + " dictionary[k]=[v]\n", + " else: \n", + " #if the key is in the dictionary, add the new value to the existing value list \n", + " dictionary[k].append(v)\n", + " \n", + " \n", + "print(dictionary) " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'PNC': 11, '1832999514': 28}, {'pepolar': 3, 'nofmap': 1, 'phdiff': 2, 'buds': 3, 'phases': 2, 'PNC2': 18, 'PNC1': 10}, {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, {'refaced': 2}, {'idemo': 2, 'frac2back': 2, 'rest': 4}, {'singleband': 4}, {2: 4, 1: 4}]\n" + ] + } + ], + "source": [ + "#create one dictionary value per key in original dictionary \n", + "# loop through dictionary values and create dictionaries for instances of each list \n", + "l_dicts = [] \n", + "for key in dictionary.keys():\n", + "# for each list that is the value of the big dictionary:\n", + " #print (key)\n", + " counts = {} #initialize a new dictionary for # of instances \n", + " l_labels = dictionary[key]\n", + " #print(l_labels)\n", + " for item in l_labels:\n", + " #for each item in those lists \n", + " if item not in counts.keys():\n", + " #if the item is not in the new dictionary, set it to 1\n", + " counts[item]= 1 \n", + " else:\n", + " #if it already exists, add 1\n", + " counts[item]+= 1\n", + " l_dicts.append(counts)\n", + "#list of dictionaries where KEYS: BIDS entities values and VALUES: instances of that key \n", + "print(l_dicts)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'subject': {'PNC': 11, '1832999514': 28}, 'session': {'pepolar': 3, 'nofmap': 1, 'phdiff': 2, 'buds': 3, 'phases': 2, 'PNC2': 18, 'PNC1': 10}, 'suffix': {'magnitude2': 2, 'phase2': 2, 'magnitude1': 2, 'phase1': 2, 'T1w': 4, 'idemo': 2, 'frac2back': 2, 'bold': 4, 'dwi': 8}, 'fmap': {'magnitude2': 1, 'phase2': 1, 'magnitude1': 1, 'phase1': 1}, 'datatype': {'fmap': 8, 'anat': 4, 'func': 8, 'dwi': 8}, 'extension': {'nii.gz': 12, 'json': 12, 'bval': 2, 'bvec': 2}, 'reconstruction': {'refaced': 2}, 'task': {'idemo': 2, 'frac2back': 2, 'rest': 4}, 'acquisition': {'singleband': 4}, 'run': {2: 4, 1: 4}}\n" + ] + } + ], + "source": [ + "#make a new dictionary with KEYS: BIDS entities (ie: subject, session, etc) and VALUES: dicionaries of ID's and instances\n", + "\n", + "new_dictionary = {}\n", + "counter = 0 \n", + "for key in dictionary.keys():\n", + " #assign values from l_dicts to each key \n", + " new_dictionary[key] = l_dicts[counter]\n", + " counter += 1\n", + "\n", + "print(new_dictionary)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#initialize new list for tuples \n", + "l_tups= []\n", + "for key in new_dictionary:\n", + " #list out all keys\n", + " e1 = key\n", + " #print(e1)\n", + " for s_key in new_dictionary[key]:\n", + " #list out all\n", + " e2 = s_key\n", + " #print(e2)\n", + " e3 = new_dictionary[key][s_key]\n", + " #print(e3)\n", + " l_tups.append((e1,e2,e3))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " key val count\n", + "0 subject PNC 11\n", + "1 subject 1832999514 28\n", + "2 session pepolar 3\n", + "3 session nofmap 1\n", + "4 session phdiff 2\n", + "5 session buds 3\n", + "6 session phases 2\n", + "7 session PNC2 18\n", + "8 session PNC1 10\n", + "9 suffix magnitude2 2\n", + "10 suffix phase2 2\n", + "11 suffix magnitude1 2\n", + "12 suffix phase1 2\n", + "13 suffix T1w 4\n", + "14 suffix idemo 2\n", + "15 suffix frac2back 2\n", + "16 suffix bold 4\n", + "17 suffix dwi 8\n", + "18 fmap magnitude2 1\n", + "19 fmap phase2 1\n", + "20 fmap magnitude1 1\n", + "21 fmap phase1 1\n", + "22 datatype fmap 8\n", + "23 datatype anat 4\n", + "24 datatype func 8\n", + "25 datatype dwi 8\n", + "26 extension nii.gz 12\n", + "27 extension json 12\n", + "28 extension bval 2\n", + "29 extension bvec 2\n", + "30 reconstruction refaced 2\n", + "31 task idemo 2\n", + "32 task frac2back 2\n", + "33 task rest 4\n", + "34 acquisition singleband 4\n", + "35 run 2 4\n", + "36 run 1 4\n" + ] + } + ], + "source": [ + "df = pd.DataFrame(l_tups, columns = ['key', 'val', 'count'])\n", + "print(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv b/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv new file mode 100644 index 000000000..804f2e117 --- /dev/null +++ b/notebooks/Tests/datatype-anat_reconstruction-refaced_suffix-T1w.csv @@ -0,0 +1,3 @@ +,DwellTime,PartialFourier,FlipAngle,EchoTime,RepetitionTime +0,1.5e-05,0.75,8.0,0.00302,2.6 +111,,,,, diff --git a/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv b/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv new file mode 100644 index 000000000..ea7831e2f --- /dev/null +++ b/notebooks/Tests/datatype-func_run-1_suffix-bold_task-rest.csv @@ -0,0 +1,4 @@ +,DwellTime,PhaseEncodingDirection,EffectiveEchoSpacing,PartialFourier,TotalReadoutTime,FlipAngle,EchoTime,RepetitionTime,SliceTime000,SliceTime001,SliceTime002,SliceTime003,SliceTime004,SliceTime005,SliceTime006,SliceTime007,SliceTime008,SliceTime009,SliceTime010,SliceTime011,SliceTime012,SliceTime013,SliceTime014,SliceTime015,SliceTime016,SliceTime017,SliceTime018,SliceTime019,SliceTime020,SliceTime021,SliceTime022,SliceTime023,SliceTime024,SliceTime025,SliceTime026,SliceTime027,SliceTime028,SliceTime029,SliceTime030,SliceTime031,SliceTime032,SliceTime033,SliceTime034,SliceTime035,SliceTime036,SliceTime037 +0,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.8,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +1,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +2,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.1,2.4,1.1,2.4,1.2 diff --git a/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv b/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv new file mode 100644 index 000000000..17251d719 --- /dev/null +++ b/notebooks/Tests/datatype-func_run-2_suffix-bold_task-rest.csv @@ -0,0 +1,4 @@ +,DwellTime,PhaseEncodingDirection,EffectiveEchoSpacing,PartialFourier,TotalReadoutTime,FlipAngle,EchoTime,RepetitionTime,SliceTime000,SliceTime001,SliceTime002,SliceTime003,SliceTime004,SliceTime005,SliceTime006,SliceTime007,SliceTime008,SliceTime009,SliceTime010,SliceTime011,SliceTime012,SliceTime013,SliceTime014,SliceTime015,SliceTime016,SliceTime017,SliceTime018,SliceTime019,SliceTime020,SliceTime021,SliceTime022,SliceTime023,SliceTime024,SliceTime025,SliceTime026,SliceTime027,SliceTime028,SliceTime029,SliceTime030,SliceTime031,SliceTime032,SliceTime033,SliceTime034,SliceTime035,SliceTime036,SliceTime037 +0,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.1,2.4,1.1,2.4,1.2 +1,3.1e-06,j-,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 +22,3.1e-06,i,0.000510002,1,0.0362102,80,0.03,2.5,1.2,0,1.3,0.1,1.4,0.1,1.4,0.2,1.5,0.3,1.6,0.3,1.6,0.4,1.7,0.5,1.8,0.5,1.8,0.6,1.9,0.7,2.0,0.7,2.0,0.8,2.1,0.9,2.2,0.9,2.2,1.0,2.3,1.0,2.4,1.1,2.4,1.2 diff --git a/notebooks/metadata_image_param.ipynb b/notebooks/metadata_image_param.ipynb new file mode 100644 index 000000000..a7b9f567b --- /dev/null +++ b/notebooks/metadata_image_param.ipynb @@ -0,0 +1,554 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this proof of concept we will read & write JSON files in Jupyter notebook. \n", + "\n", + "1. display the data in the sidecar \n", + "2. edit this data \n", + "3. check that the sidecar will write valid JSON files. " + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "#import json module to be able to read & write json files \n", + "import json\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from glob import glob \n", + "from pathlib import Path" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. The first part will include displaying the data in the sidecar by reading the JSON files \n", + "2. We then use json.load to turn it into a python object \n", + "3. The data we have includes an array of information under SliceTiming so we will create a dataframe within our dataframe to include SliceTiming as SliceTime 00, 01 , etc. (individual values of SliceTiming). " + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "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", + "
1
ProcedureStepDescriptionMR_HEAD_WO_IV_CONTRAST
DeviceSerialNumber167024
EffectiveEchoSpacing0.000689998
TotalReadoutTime0.0717598
ManufacturersModelNamePrisma_fit
......
SliceTime0313.61667
SliceTime0323.73333
SliceTime0333.85
SliceTime0343.96667
SliceTime0354.08333
\n", + "

64 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " 1\n", + "ProcedureStepDescription MR_HEAD_WO_IV_CONTRAST\n", + "DeviceSerialNumber 167024\n", + "EffectiveEchoSpacing 0.000689998\n", + "TotalReadoutTime 0.0717598\n", + "ManufacturersModelName Prisma_fit\n", + "... ...\n", + "SliceTime031 3.61667\n", + "SliceTime032 3.73333\n", + "SliceTime033 3.85\n", + "SliceTime034 3.96667\n", + "SliceTime035 4.08333\n", + "\n", + "[64 rows x 1 columns]" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#testing the code with a single json file. \n", + "\n", + "file_test = open('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json')\n", + "sample_data = json.load(file_test)\n", + "sample_data.keys()\n", + "sample_data.get('SliceTiming')\n", + "SliceTime = sample_data.get('SliceTiming') #the way you can snatch things out of a dictionary \n", + "#if dict doens't have the key it will return none vs. error\n", + "\n", + "if SliceTime: \n", + " sample_data.update({\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)})\n", + " del sample_data['SliceTiming']\n", + " \n", + "array_data = pd.DataFrame.from_dict(sample_data, orient='index', columns = ['1'])\n", + "array_data" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": {}, + "outputs": [], + "source": [ + "#{\"SliceTime%03d\"%SliceNum : time for SliceNum, time in enumerate(SliceTime)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the next one might not have slice timing but you concatonate the next row -- if the file doesn't have slice timing it fills with NaN and if it doesn't then google! \n", + "\n", + "rglob to get all the files in the bids tree then load it with json.load " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next steps \n", + "\n", + "1. Slice Timing turn it into a column where each column would have its own float \n", + "2. multiple columns with the umber of them filled out to the maximum number of slice times " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "2. The following part is used to edit JSON file data. \n", + "\n", + "In order to do so, call to the JSON object that was created using the json.load commeand, in this case json_data, and refer to the value that you want to change and edit it. \n", + "\n", + "Note that this code is commented out as it will be different when we are using this with Pandas DataFrame. This was code written when working with a single .json file. " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "#Here we change the value for AcquisionNumber from 1 to 2. \n", + "#json_data[\"AcquisitionNumber\"] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view edited data\n", + "#json_data" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Reverting back to original data\n", + "#json_data[\"AcquisitionNumber\"] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3. Checking that the sidecare will write valid JSON files \n", + "\n", + "In order to do this, we use the json.dumps function as it will turn the python object into a JSON string, and therefore, will wirte a valid JSON file always. \n", + "\n", + "Note: same as the previous chunk of code, this was written for a single .json file and therefore is commentend out " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#json_string = json.dumps(json_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Uncomment below to view the python object as a JSON string \n", + "#json_string" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [], + "source": [ + "#notes from Matt \n", + "\n", + "# have a function that does the reading and creates 1 row then you have to loop and the dataframe grows through concatanation \n", + "# pandas.concat" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next section is the for loop attempting to extract, open and turn into a dataframe each json file in the \"complete\" directory! " + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n", + "\n", + "0\n" + ] + }, + { + "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", + "
EchoTimeEffectiveEchoSpacingTotalReadoutTimeFlipAngleRepetitionTimePhaseEncodingDirectionPartialFourier
0NaNNaNNaNNaNNaNNaNNaN
10.089000.000690.0717690.04.2jNaN
2NaNNaNNaN60.01.5j-0.75
30.00646NaNNaN60.01.5j-0.75
40.089000.000690.0717690.04.2j-NaN
\n", + "
" + ], + "text/plain": [ + " EchoTime EffectiveEchoSpacing TotalReadoutTime FlipAngle \\\n", + "0 NaN NaN NaN NaN \n", + "1 0.08900 0.00069 0.07176 90.0 \n", + "2 NaN NaN NaN 60.0 \n", + "3 0.00646 NaN NaN 60.0 \n", + "4 0.08900 0.00069 0.07176 90.0 \n", + "\n", + " RepetitionTime PhaseEncodingDirection PartialFourier \n", + "0 NaN NaN NaN \n", + "1 4.2 j NaN \n", + "2 1.5 j- 0.75 \n", + "3 1.5 j- 0.75 \n", + "4 4.2 j- NaN " + ] + }, + "execution_count": 205, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IMAGING_PARAMS = set([\"ParallelReductionFactorInPlane\", \"ParallelAcquisitionTechnique\",\n", + " \"ParallelAcquisitionTechnique\", \"PartialFourier\", \"PhaseEncodingDirection\",\n", + " \"EffectiveEchoSpacing\", \"TotalReadoutTime\", \"EchoTime\", \"SliceEncodingDirection\",\n", + " \"DwellTime\", \"FlipAngle\", \"MultibandAccelerationFactor\", \"RepetitionTime\",\n", + " \"VolumeTiming\", \"NumberOfVolumesDiscardedByScanner\", \"NumberOfVolumesDiscardedByUser\"])\n", + "\n", + "dfs = [] # an empty list to store the data frames\n", + "\n", + "counter=0\n", + "\n", + "for path in Path('/Users/bjaber/Projects/BOnD/bond/testdata/complete').rglob('*.json'):\n", + " print(type(path))\n", + " print(counter)\n", + " s_path = str(path)\n", + " #print(s_path)\n", + " file_tree = open(s_path)\n", + " example_data = json.load(file_tree)\n", + " wanted_keys = example_data.keys() & IMAGING_PARAMS\n", + " example_data = {key: example_data[key] for key in wanted_keys} \n", + " SliceTime = example_data.get('SliceTiming') #the way you can snatch things out of a dictionary #if dict doens't have the key it will return none vs. error\n", + " if SliceTime: \n", + " example_data.update({\"SliceTime%03d\"%SliceNum : [time] for SliceNum, time in enumerate(SliceTime)})\n", + " del example_data['SliceTiming']\n", + " #if ShimSetting:\n", + " \n", + " dfs.append(example_data)\n", + " \n", + "df = pd.DataFrame(dfs)\n", + "#df.drop_duplicates()\n", + "df.head()\n", + "\n", + "\n", + "\n", + "#create dataframe of unique rows \n", + "#bids entities filter in the bond class to fileter through the files \n", + "#loop over , get metadata, and put into the dataframe \n", + "\n", + "\n", + "\n", + " #print(example_data)\n", + "\n", + "\n", + " \n", + "#for file in example_data:\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') # read data frame from json file\n", + " #dfs.append(data) # append the data frame to the list\n", + " #temp = pd.concat(dfs, ignore_index=True) # concatenate all the data frames in the list.\n", + "\n", + " #data = pd.DataFrame.from_dict(example_data, orient='index') \n", + " #data\n", + " #counter += 1\n", + " \n", + "\n", + "#NOTE: error when trying to put the data into a pandas dataframe. This error happens regardless of the way SliceTiming is setup. \n", + "# print(example_data) was used to make sure that inputs that are an array such as in the field SliceTiming are being separated into indenpendent values of SliceTime00x that should feed into the dataframe. \n", + "# it is doing that across all json files that are being loaded from the directory " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are just documented attempts at the above for loop! \n", + "\n", + "attempt at directory stuff #1 \n", + "\n", + "import os, json\n", + "import pandas as pd\n", + "\n", + "path_to_json = '/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/sub-01/ses-phdiff/anat'\n", + "json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]\n", + "print(json_files)\n", + "\n", + "attempt #2\n", + "\n", + "for filename in glob('/Users/bjaber/Projects/BOnD-use_cases/bond/testdata/complete/*.json'):\n", + " print(filename)\n", + " \n", + " \n", + "attempt # 3 \n", + " \n", + " for name in files: \n", + " f = open(name, 'r')\n", + " print(f)\n", + " content=f.readlines()\n", + " print(f'Content of %s:\\n %s' %(name,content))\n", + " f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/rename_files_work.ipynb b/notebooks/rename_files_work.ipynb new file mode 100644 index 000000000..4412f97ef --- /dev/null +++ b/notebooks/rename_files_work.ipynb @@ -0,0 +1,2365 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "happy.json\n" + ] + } + ], + "source": [ + "# TEST BED \n", + "\n", + "test = \"happy.py\"\n", + "new = test.replace(\".py\", \".json\")\n", + "print(new)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import sys \n", + "sys.path.append(\"..\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/Covitz/BOnD/notebooks/testdata'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# USE THIS BEFORE TESTING! \n", + "\n", + "from pathlib import Path \n", + "import shutil\n", + "import os\n", + "\n", + "from pkg_resources import resource_filename as pkgrf \n", + "\n", + "# returns stirng path to testdata\n", + "TEST_DATA = pkgrf(\"bond\", \"testdata\")\n", + "\n", + "# should give you the full path \n", + "tmp_path = Path().resolve()\n", + "#print(tmp_path)\n", + "\n", + "# dest path\n", + "data_root = tmp_path / \"testdata\"\n", + "\n", + "# ensure path does not already exist in cwd\n", + "if data_root.exists():\n", + " shutil.rmtree(str(data_root))\n", + "\n", + "# equivalent of command line \"cp\"\n", + "cwd = shutil.copytree(TEST_DATA, str(data_root))\n", + "\n", + "cwd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "testdata\r\n", + "testdata/complete\r\n", + "testdata/complete/sub-01\r\n", + "testdata/complete/sub-01/ses-phdiff\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/README\r\n", + "testdata/complete/dataset_description.json\r\n", + "testdata/complete/sub-02\r\n", + "testdata/complete/sub-02/ses-phdiff\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-02/ses-phdiff/anat\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-02/ses-phdiff/func\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/complete/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03\r\n", + "testdata/complete/sub-03/ses-phdiff\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/complete/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/complete/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/anat\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/complete/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/complete/sub-03/ses-phdiff/func\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/complete/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent\r\n", + "testdata/inconsistent/sub-01\r\n", + "testdata/inconsistent/sub-01/ses-phdiff\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/dwi/sub-01_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/fmap/sub-01_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/anat/sub-01_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-01/ses-phdiff/func/sub-01_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/README\r\n", + "testdata/inconsistent/dataset_description.json\r\n", + "testdata/inconsistent/sub-02\r\n", + "testdata/inconsistent/sub-02/ses-phdiff\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/dwi/sub-02_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/fmap/sub-02_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/anat/sub-02_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.nii.gz\r\n", + "testdata/inconsistent/sub-02/ses-phdiff/func/sub-02_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03\r\n", + "testdata/inconsistent/sub-03/ses-phdiff\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bvec\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/dwi/sub-03_ses-phdiff_acq-HASC55AP_dwi.bval\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude2.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_dir-PA_epi.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_magnitude1.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/fmap/sub-03_ses-phdiff_acq-v4_phasediff.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/anat/sub-03_ses-phdiff_T1w.nii.gz\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.json\r\n", + "testdata/inconsistent/sub-03/ses-phdiff/func/sub-03_ses-phdiff_task-rest_bold.nii.gz\r\n" + ] + } + ], + "source": [ + "! find testdata" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import glob \n", + "import os\n", + "\n", + "\n", + "\n", + "\n", + "for path in Path(\"/Users/Covitz/BOnD/data/sub-1832999514/\").iterdir():\n", + " if path.is_file():\n", + " print(path.stem)\n", + " old_name = path.stem \n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " #print(type(directory))\n", + " new_name = \"A_\" + old_name + old_ext\n", + " path.rename(Path(directory, new_name))\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# @Params\n", + "# - path: a string contianing the path to the directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files_old(files, pattern, replacement):\n", + " # what are \"pattern\" and \"replacement\"\n", + " # if you want to do a string replace, \n", + " # you need the sub string that needs to be added to the file \n", + " # and the portion you want cut\n", + " # but before you do the replace, shouldn't you run isValid() on the new filename? \n", + " new_files = []\n", + " for file in files:\n", + " new_filename = file.replace(pattern, replacement)\n", + " os.rename(file, new_filename)\n", + " \n", + " #if isvalid(test_filename) == True:\n", + " # new_file = test_filename\n", + " #else: \n", + " # exception will be raised inside the function isValid \n", + " # print(\"Invalid Filename\")\n", + " return new_files \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files_1(path_to_dir, pattern, replacement):\n", + " for path in pathlib.Path(path_to_dir).iterdir():\n", + " if path.is_file():\n", + " old_name = path.stem \n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " new_name = old_name.replace(pattern, replacement) + old_ext\n", + " path.rename(pathlib.Path(directory, new_name))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib \n", + "\n", + "# @Params\n", + "# - path: a string contianing the path to the bids directory inside which we want to change files \n", + "# - pattern: the substring of the file we would like to replace\n", + "# - replacement: the substring that will replace \"pattern\"\n", + "# @Returns\n", + "# - None \n", + "def rename_files(bids_dir, pattern, replacement):\n", + " files_and_dirs = Path(bids_dir).rglob('*')\n", + " for path in files_and_dirs:\n", + " print(\"STEM\", path.stem)\n", + " old_name = path.stem\n", + " old_ext = path.suffix\n", + " directory = path.parent\n", + " new_name = old_name.replace(pattern, replacement) + old_ext\n", + " path.rename(pathlib.Path(directory, new_name))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM sub-colornest099\n", + "STEM sub-colornest052\n", + "STEM sub-colornest097\n", + "STEM sub-colornest063\n", + "STEM sub-colornest064\n", + "STEM sub-colornest090\n", + "STEM sub-colornest030\n", + "STEM sub-colornest037\n", + "STEM sub-colornest008\n", + "STEM sub-colornest001\n", + "STEM sub-colornest006\n", + "STEM sub-colornest039\n", + "STEM sub-colornest091\n", + "STEM sub-colornest065\n", + "STEM sub-colornest062\n", + "STEM sub-colornest096\n", + "STEM sub-colornest054\n", + "STEM sub-colornest098\n", + "STEM sub-colornest053\n", + "STEM sub-colornest007\n", + "STEM sub-colornest038\n", + "STEM sub-colornest036\n", + "STEM sub-colornest009\n", + "STEM sub-colornest031\n", + "STEM sub-colornest188\n", + "STEM sub-colornest143\n", + "STEM sub-colornest144\n", + "STEM sub-colornest186\n", + "STEM sub-colornest172\n", + "STEM .DS_Store\n", + "STEM sub-colornest175\n", + "STEM sub-colornest181\n", + "STEM sub-colornest121\n", + "STEM sub-colornest126\n", + "STEM sub-colornest119\n", + "STEM sub-colornest110\n", + "STEM sub-colornest117\n", + "STEM sub-colornest128\n", + "STEM sub-colornest180\n", + "STEM sub-colornest174\n", + "STEM sub-colornest173\n", + "STEM sub-colornest187\n", + "STEM sub-colornest145\n", + "STEM sub-colornest189\n", + "STEM sub-colornest142\n", + "STEM sub-colornest116\n", + "STEM sub-colornest129\n", + "STEM sub-colornest111\n", + "STEM sub-colornest127\n", + "STEM sub-colornest118\n", + "STEM sub-colornest120\n", + "STEM sub-colornest102\n", + "STEM sub-colornest105\n", + "STEM sub-colornest133\n", + "STEM sub-colornest134\n", + "STEM sub-colornest194\n", + "STEM sub-colornest160\n", + "STEM sub-colornest167\n", + "STEM sub-colornest193\n", + "STEM sub-colornest158\n", + "STEM sub-colornest151\n", + "STEM sub-colornest156\n", + "STEM sub-colornest169\n", + "STEM sub-colornest135\n", + "STEM sub-colornest132\n", + "STEM sub-colornest104\n", + "STEM sub-colornest103\n", + "STEM sub-colornest157\n", + "STEM sub-colornest168\n", + "STEM sub-colornest150\n", + "STEM sub-colornest192\n", + "STEM sub-colornest166\n", + "STEM sub-colornest159\n", + "STEM sub-colornest161\n", + "STEM sub-colornest195\n", + "STEM sub-colornest013\n", + "STEM sub-colornest014\n", + "STEM sub-colornest022\n", + "STEM sub-colornest025\n", + "STEM sub-colornest085\n", + "STEM sub-colornest071\n", + "STEM sub-colornest076\n", + "STEM sub-colornest082\n", + "STEM sub-colornest049\n", + "STEM sub-colornest040\n", + "STEM sub-colornest047\n", + "STEM sub-colornest078\n", + "STEM sub-colornest024\n", + "STEM sub-colornest023\n", + "STEM sub-colornest015\n", + "STEM sub-colornest012\n", + "STEM sub-colornest046\n", + "STEM sub-colornest079\n", + "STEM sub-colornest041\n", + "STEM sub-colornest077\n", + "STEM sub-colornest048\n", + "STEM sub-colornest070\n", + "STEM sub-colornest084\n", + "STEM sub-colornest034\n", + "STEM sub-colornest033\n", + "STEM sub-colornest005\n", + "STEM sub-colornest002\n", + "STEM sub-colornest069\n", + "STEM sub-colornest056\n", + "STEM sub-colornest051\n", + "STEM sub-colornest058\n", + "STEM sub-colornest067\n", + "STEM sub-colornest093\n", + "STEM sub-colornest094\n", + "STEM sub-colornest060\n", + "STEM sub-colornest003\n", + "STEM sub-colornest004\n", + "STEM sub-colornest032\n", + "STEM sub-colornest035\n", + "STEM sub-colornest061\n", + "STEM sub-colornest095\n", + "STEM sub-colornest059\n", + "STEM sub-colornest092\n", + "STEM sub-colornest066\n", + "STEM sub-colornest050\n", + "STEM sub-colornest068\n", + "STEM sub-colornest057\n", + "STEM dataset_description\n", + "STEM sub-colornest125\n", + "STEM sub-colornest122\n", + "STEM sub-colornest114\n", + "STEM sub-colornest113\n", + "STEM sub-colornest178\n", + "STEM sub-colornest147\n", + "STEM sub-colornest140\n", + "STEM sub-colornest149\n", + "STEM sub-colornest176\n", + "STEM sub-colornest182\n", + "STEM sub-colornest185\n", + "STEM sub-colornest171\n", + "STEM sub-colornest112\n", + "STEM sub-colornest115\n", + "STEM sub-colornest123\n", + "STEM sub-colornest124\n", + "STEM sub-colornest170\n", + "STEM sub-colornest184\n", + "STEM sub-colornest148\n", + "STEM sub-colornest183\n", + "STEM sub-colornest177\n", + "STEM sub-colornest141\n", + "STEM sub-colornest179\n", + "STEM sub-colornest146\n", + "STEM sub-colornest164\n", + "STEM sub-colornest190\n", + "STEM sub-colornest163\n", + "STEM sub-colornest155\n", + "STEM sub-colornest152\n", + "STEM sub-colornest139\n", + "STEM sub-colornest106\n", + "STEM sub-colornest101\n", + "STEM sub-colornest108\n", + "STEM sub-colornest137\n", + "STEM sub-colornest130\n", + "STEM sub-colornest153\n", + "STEM sub-colornest154\n", + "STEM sub-colornest162\n", + "STEM sub-colornest191\n", + "STEM sub-colornest165\n", + "STEM sub-colornest131\n", + "STEM sub-colornest109\n", + "STEM sub-colornest100\n", + "STEM sub-colornest138\n", + "STEM sub-colornest107\n", + "STEM sub-colornest075\n", + "STEM sub-colornest081\n", + "STEM sub-colornest086\n", + "STEM sub-colornest072\n", + "STEM sub-colornest044\n", + "STEM sub-colornest043\n", + "STEM sub-colornest088\n", + "STEM sub-colornest028\n", + "STEM sub-colornest017\n", + "STEM sub-colornest019\n", + "STEM sub-colornest026\n", + "STEM sub-colornest021\n", + "STEM sub-colornest042\n", + "STEM sub-colornest089\n", + "STEM sub-colornest045\n", + "STEM sub-colornest073\n", + "STEM sub-colornest087\n", + "STEM sub-colornest080\n", + "STEM sub-colornest074\n", + "STEM sub-colornest020\n", + "STEM sub-colornest018\n", + "STEM sub-colornest027\n", + "STEM sub-colornest011\n", + "STEM sub-colornest029\n", + "STEM sub-colornest016\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest099_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest099_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest099_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest099_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest099_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest099_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest052_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest052_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest052_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest052_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest052_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest052_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest097_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest097_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest097_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest097_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest097_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest097_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest063_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest063_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest063_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest063_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest063_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest063_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest064_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest064_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest064_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest064_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest064_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest064_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest090_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest090_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest090_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest090_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest090_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest090_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest030_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest030_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest030_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest030_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest030_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest030_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest037_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest037_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest037_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest037_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest037_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest037_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest008_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest008_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest008_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest008_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest008_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest008_ses-1_task-rest_run-01_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest001_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest001_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest001_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest001_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest001_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest001_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest006_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest006_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest006_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest006_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest006_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest006_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest039_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest039_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest039_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest039_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest039_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest039_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest091_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest091_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest091_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest091_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest091_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest091_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest065_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest065_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest065_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest065_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest065_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest065_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest062_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest062_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest062_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest062_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest096_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest096_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest096_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest096_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest054_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest054_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest054_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest054_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest098_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest098_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest098_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest098_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest098_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest098_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest053_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest053_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest053_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest053_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest007_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest007_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest007_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest007_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest007_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest007_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest038_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest038_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest038_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest038_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest036_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest036_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest036_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest036_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest036_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest036_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest009_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest009_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest009_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest009_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest031_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest031_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest031_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest031_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest188_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest188_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest188_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest188_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest188_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest188_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest143_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest143_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest143_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest143_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest143_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest143_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest144_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest144_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest144_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest144_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest144_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest144_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest186_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest186_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest186_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest186_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest186_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest186_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest172_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest172_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest172_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest172_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest175_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest175_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest175_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest175_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest175_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest175_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest181_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest181_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest181_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest121_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest121_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest121_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest121_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest121_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest121_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest126_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest126_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest126_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest126_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest119_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest119_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest119_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest119_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest119_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest119_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest110_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest110_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest110_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest110_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest117_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest117_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest117_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest117_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest117_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest117_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest128_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest128_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest128_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest128_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest128_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest128_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest180_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest180_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest180_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest180_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest180_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest180_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest174_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest174_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest174_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest174_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest174_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest174_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest173_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest173_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest173_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest173_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest173_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest173_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest187_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest187_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest187_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest187_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest187_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest187_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest145_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest145_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest145_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest145_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest145_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest145_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest189_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest189_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest189_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest189_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest189_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest189_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest142_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest142_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest142_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest142_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest142_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest142_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest116_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest116_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest116_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest116_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest116_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest116_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest129_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest129_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest129_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest129_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest129_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest129_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM func\n", + "STEM sub-colornest111_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest111_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest111_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest111_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest111_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest111_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest127_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest127_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest127_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest127_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest127_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest127_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest118_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest118_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest118_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest118_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest118_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest118_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest120_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest120_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest120_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest120_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest120_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest120_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest102_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest102_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest102_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest102_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest105_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest105_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest105_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest105_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest105_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest105_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest133_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest133_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest133_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest133_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest133_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest133_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest134_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest134_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest134_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest134_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest194_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest194_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest194_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest194_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest194_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest194_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest160_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest160_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest160_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest160_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest160_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest160_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest167_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest167_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest167_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest167_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest193_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest193_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest193_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest193_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest158_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest158_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest158_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest158_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest158_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest158_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest151_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest151_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest151_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest151_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest151_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest151_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest156_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest156_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest156_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest156_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest156_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest156_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest169_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest169_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest169_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest169_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest169_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest169_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest135_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest135_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest135_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest135_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest132_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest132_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest132_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest132_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest132_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest132_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest104_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest104_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest104_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest104_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest104_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest104_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest103_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest103_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest103_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest103_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest103_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest103_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest157_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest157_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest157_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest157_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest157_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest157_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest168_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest168_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest168_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest168_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest150_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest150_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest150_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest150_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest150_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest150_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest192_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest192_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest192_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest192_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest166_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest166_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest166_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest166_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest166_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest166_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest159_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest159_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest159_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest159_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest159_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest159_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest161_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest161_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest161_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest161_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest161_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest161_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest195_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest195_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest195_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest195_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest195_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest195_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest013_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest013_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest013_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest013_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest013_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest013_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest014_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest014_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest014_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest014_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest014_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest014_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest022_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest022_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest022_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest022_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest022_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest022_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest025_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest025_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest025_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest025_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest025_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest025_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest085_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest085_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest085_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest085_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest085_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest085_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest071_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest071_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest071_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest071_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest071_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest071_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest076_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest076_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest076_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest076_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest076_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest076_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest082_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest082_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest082_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest082_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest082_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest082_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest049_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest049_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest049_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest049_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest049_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest049_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest040_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest040_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest040_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest040_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest040_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest040_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest047_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest047_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest047_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest047_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest047_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest047_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest078_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest078_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest078_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest078_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest078_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest078_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest024_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest024_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest024_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest024_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest024_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest024_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest023_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest023_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest023_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest023_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest023_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest023_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest015_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest015_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest015_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest015_ses-1_TASK-rest_run-02_bold.nii\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM sub-colornest015_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest015_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest012_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest012_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest012_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest012_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest012_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest012_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest046_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest046_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest046_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest046_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest079_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest079_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest079_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest079_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest041_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest041_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest041_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest041_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest041_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest041_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest077_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest077_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest077_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest077_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest077_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest077_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest048_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest048_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest048_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest048_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest070_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest070_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest070_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest070_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest070_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest070_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest084_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest084_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest084_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest084_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest084_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest084_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest034_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest034_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest034_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest034_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest034_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest034_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest033_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest033_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest033_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest033_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest033_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest033_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest005_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest005_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest005_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest005_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest005_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest005_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest002_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest002_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest002_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest002_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest069_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest069_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest069_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest069_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest069_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest069_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest056_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest056_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest056_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest056_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest056_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest056_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest051_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest051_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest051_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest051_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest051_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest051_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest058_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest058_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest058_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest058_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest067_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest067_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest067_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest067_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest067_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest067_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest093_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest093_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest093_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest093_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest093_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest093_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest094_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest094_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest094_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest094_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest094_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest094_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest060_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest060_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest060_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest060_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest060_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest060_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest003_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest003_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest003_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest003_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest003_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest003_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest004_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest004_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest004_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest004_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest032_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest032_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest032_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest032_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest032_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest032_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest035_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest035_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest035_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest035_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest061_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest061_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest061_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest061_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest061_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest061_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest095_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest095_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest095_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest095_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest095_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest095_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest059_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest059_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest059_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest059_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest059_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest059_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest092_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest092_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest092_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest092_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest066_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest066_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest066_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest066_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest050_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest050_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest050_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest050_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest050_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest050_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest068_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest068_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest068_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest068_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest068_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest068_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest057_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest057_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest057_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest057_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest057_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest057_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest125_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest125_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest125_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest125_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest125_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest125_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest122_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest122_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest122_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest122_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest122_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest122_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest114_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest114_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest114_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest114_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest114_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest114_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest113_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest113_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest113_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest113_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest113_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest113_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest178_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest178_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest178_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest178_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest178_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest178_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest147_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest147_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest147_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest147_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest140_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest140_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest140_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest140_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest149_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest149_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest149_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest149_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest149_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest149_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest176_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest176_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest176_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest176_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest176_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest176_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest182_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest182_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest182_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest182_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest182_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest182_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest185_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest185_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest185_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest185_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest185_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest185_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest171_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest171_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest171_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest171_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest112_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest112_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest112_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest112_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest112_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest112_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest115_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest115_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest115_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest115_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest115_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest123_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest123_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest123_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest123_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest123_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest123_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest124_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest124_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest124_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest124_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest124_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest124_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest170_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest170_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest170_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest170_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest170_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest170_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest184_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest184_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest184_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest184_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest184_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest184_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest148_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest148_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest148_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest148_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest148_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest148_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest183_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest183_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest183_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest183_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest183_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest183_ses-1_task-rest_run-02_bold.nii\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest177_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest177_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest177_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest177_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest177_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest177_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest141_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest141_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest141_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest141_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest141_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest141_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest179_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest179_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest179_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest179_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest179_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest179_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest146_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest146_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest146_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest146_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest164_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest164_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest164_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest164_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest190_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest190_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest190_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest190_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest190_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest190_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest163_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest163_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest163_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest163_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest155_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest155_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest155_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest155_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest152_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest152_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest152_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest152_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest152_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest152_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest139_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest139_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest139_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest139_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest139_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest139_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest106_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest106_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest106_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest106_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest106_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest106_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest101_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest101_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest101_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest101_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest108_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest108_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest108_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest108_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest108_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest108_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest137_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest137_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest137_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest137_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest137_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest137_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest130_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest130_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest130_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest130_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest130_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest130_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest153_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest153_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest153_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest153_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest153_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest153_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest154_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest154_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest154_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest154_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest154_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest154_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest162_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest162_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest162_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest162_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest191_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest191_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest191_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest191_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest191_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest191_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest165_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest165_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest165_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest165_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest165_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest165_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest131_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest131_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest131_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest131_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest131_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest131_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest109_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest109_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest109_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest109_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest100_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest100_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest100_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest100_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest100_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest100_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest138_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest138_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest138_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest138_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest107_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest107_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest107_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest107_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest075_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest075_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest075_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest075_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest075_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest075_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest081_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest081_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest081_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest081_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest086_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest086_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest086_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest086_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest086_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest086_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest072_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest072_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest072_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest072_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest072_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest072_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest044_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest044_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest044_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest044_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest044_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest044_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest043_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest043_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest043_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest043_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest043_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest043_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest088_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest088_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest088_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest088_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest088_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest088_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest028_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest028_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest028_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest028_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest028_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest028_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest017_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest017_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest017_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest017_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest017_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest017_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest019_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest019_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest019_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest019_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest019_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest019_ses-1_task-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest026_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest026_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest026_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest026_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest021_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest021_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest021_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest021_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest021_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest021_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest042_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest042_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest042_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest042_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest089_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest089_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest089_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest089_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest089_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest089_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest045_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest045_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest045_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest045_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest045_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest045_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest073_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest073_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest073_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest073_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest073_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest073_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest087_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest087_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest087_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest087_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest080_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest080_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest080_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest080_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest080_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest080_ses-1_task-rest_run-02_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest074_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest074_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest074_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest074_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest074_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest074_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest020_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest020_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest020_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest020_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest018_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest018_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest018_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest018_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest018_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest018_ses-1_task-rest_run-01_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest027_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest027_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest027_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest027_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest027_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest027_ses-1_task-rest_run-01_bold\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest011_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest011_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-02_bold.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest011_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest011_ses-1_task-rest_run-02_bold\n", + "STEM .DS_Store\n", + "STEM ses-1\n", + "STEM .DS_Store\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest029_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest029_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest029_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest029_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest029_ses-1_task-rest_run-02_bold\n", + "STEM sub-colornest029_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM ses-1\n", + "STEM anat\n", + "STEM func\n", + "STEM sub-colornest016_ses-1_rec-refaced_T1w.nii\n", + "STEM sub-colornest016_ses-1_rec-refaced_T1w\n", + "STEM sub-colornest016_ses-1_task-rest_run-01_bold.nii\n", + "STEM sub-colornest016_ses-1_task-rest_run-01_bold\n", + "STEM sub-colornest016_ses-1_TASK-rest_run-02_bold.nii\n", + "STEM sub-colornest016_ses-1_task-rest_run-02_bold\n" + ] + } + ], + "source": [ + "import glob \n", + "import pathlib \n", + "\n", + "# testing out our function rename_files \n", + "# changes all filenames in all_files containing substrings \"PNC2\" to \"PNC20\" \n", + "\n", + "#root_dir = \"/Users/Covitz/BOnD/data/sub-1832999514/ses-PNC2/func/\"\n", + "\n", + "#rename_files(root_dir, \"PNC2\", \"PNC02\")\n", + "\n", + "# path to complete BIDS data\n", + "bids_dir = \"/Users/Covitz/Downloads/RBC_growupCCNP_BIDS/\"\n", + "#print(type(bids_dir))\n", + "p = Path(bids_dir)\n", + "\n", + "\n", + "rename_files(bids_dir, \"TASK\", \"task\")\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# PROCESS NOTES \n", + "\n", + "# in BIDS, want to replace everything up to the BIDS root \n", + "# don't want to replace all filenames up to the BIDS root \n", + "\n", + "# could have a rename subject funciton and a rename session function\n", + "# also have a rename files funciton \n", + "\n", + "# wants a single function that lets you replace any part of the string \n", + "\n", + "# pathlib.rglob - like \"find\" in the command line\n", + "# bids_dir.rglob\n", + "# pybids.parsentities - if not valid BIDS, will get error from parse entities \n", + "\n", + "# replace directory names and filenames " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From ff9e5b06f845bc388654ce51aa43a6d4f51a2211 Mon Sep 17 00:00:00 2001 From: Matt Cieslak Date: Fri, 16 Oct 2020 15:55:05 -0400 Subject: [PATCH 41/41] Added fieldmaps to param groups --- bond/bond.py | 86 ++++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/bond/bond.py b/bond/bond.py index cb5cf4779..3f3065fe0 100644 --- a/bond/bond.py +++ b/bond/bond.py @@ -22,30 +22,30 @@ class BOnD(object): - def __init__(self, data_root): + def __init__(self, data_root): self.path = data_root self.layout = bids.BIDSLayout(self.path, validate = False) - self.keys_files = {} # dictionary of KEYS: keys groups, VALUES: list of files + self.keys_files = {} # dictionary of KEYS: keys groups, VALUES: list of files + - def fieldmaps_ok(self): pass - + def rename_files(self, filters, pattern, replacement): """ Parameters: ----------- - - filters : dictionary + - filters : dictionary pybids entities dictionary to find files to rename - - pattern : string + - pattern : string the substring of the file we would like to replace - - replacement : string + - replacement : string the substring that will replace "pattern" - + Returns ----------- - None @@ -70,68 +70,68 @@ def get_param_groups(self, key_group): matching_files = self.layout.get(return_type="file", scope="self", regex_search=True, **key_entities) return _get_param_groups(matching_files, self.layout) - - + + def get_file_params(self, key_group): key_entities = _key_group_to_entities(key_group) key_entities["extension"] = ".nii[.gz]*" matching_files = self.layout.get(return_type="file", scope="self", regex_search=True, **key_entities) return _get_file_params(matching_files, self.layout) - + def get_key_groups(self): - + key_groups = set() - + for path in Path(self.path).rglob("*.*"): - + if path.suffix == ".json" and path.stem != "dataset_description": key_groups.update((_file_to_key_group(path),)) - - # Fill the dictionary of key group, list of filenames pairrs + + # Fill the dictionary of key group, list of filenames pairrs ret = _file_to_key_group(path) - + if ret not in self.keys_files.keys(): - - self.keys_files[ret] = [] - + + self.keys_files[ret] = [] + self.keys_files[ret].append(path) - + return sorted(key_groups) - - - def get_filenames(self, key_group): + + + def get_filenames(self, key_group): # NEW - WORKS return self.keys_files[key_group] - + def change_filenames(self, key_group, split_params, pattern, replacement): # for each filename in the key group, check if it's params match split_params # if they match, perform the replacement acc to pattern/replacement - - # list of file paths that incorporate the replacement + + # list of file paths that incorporate the replacement new_paths = [] - # obtain the dictionary of files, param groups + # obtain the dictionary of files, param groups dict_files_params = self.get_file_params(key_group) - for filename in dict_files_params.keys(): - - if dict_files_params[filename] == split_params: + for filename in dict_files_params.keys(): + + if dict_files_params[filename] == split_params: # Perform the replacement if the param dictionaries match - + path = Path(filename) old_name = path.stem old_ext = path.suffix directory = path.parent new_name = old_name.replace(pattern, replacement) + old_ext - path.rename(Path(directory, new_name)) + path.rename(Path(directory, new_name)) new_paths.append(path) - - return new_paths - + return new_paths + + def change_metadata(self, filters, pattern, metadata): # TODO: clean prints and add warnings @@ -228,9 +228,11 @@ def _get_param_groups(files, layout): dfs = [] for path in files: metadata = layout.get_metadata(path) + fmap = layout.get_fieldmap(path, return_list=True) wanted_keys = metadata.keys() & IMAGING_PARAMS example_data = {key: metadata[key] for key in wanted_keys} - + for fmap_num, fmap_info in enumerate(fmap): + example_data['fieldmap_type%02d' % fmap_num] = fmap_info.get('suffix', '') # Expand slice timing to multiple columns SliceTime = example_data.get('SliceTiming') if SliceTime: @@ -241,7 +243,7 @@ def _get_param_groups(files, layout): {"SliceTime%03d" % SliceNum: time for SliceNum, time in enumerate(SliceTime)}) del example_data['SliceTiming'] - + dfs.append(example_data) return pd.DataFrame(dfs).drop_duplicates() @@ -259,19 +261,18 @@ def _get_file_params(files, layout): Returns: -------- - dict_files_params : dictionary + dict_files_params : dictionary A dictionary of KEYS: filenames, VALUES: their param dictionaries For each file in `files`, find critical parameters for metadata. Then find unique sets of these critical parameters. """ dict_files_params = {} - + for path in files: metadata = layout.get_metadata(path) wanted_keys = metadata.keys() & IMAGING_PARAMS example_data = {key: metadata[key] for key in wanted_keys} - # Expand slice timing to multiple columns SliceTime = example_data.get('SliceTiming') if SliceTime: @@ -282,8 +283,7 @@ def _get_file_params(files, layout): {"SliceTime%03d" % SliceNum: time for SliceNum, time in enumerate(SliceTime)}) del example_data['SliceTiming'] - + dict_files_params[path] = example_data return dict_files_params -