junifer 0.0.4.dev565__tar.gz → 0.0.4.dev587__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/PKG-INFO +2 -1
- junifer-0.0.4.dev587/docs/changes/newsfragments/298.feature +1 -0
- junifer-0.0.4.dev587/docs/changes/newsfragments/302.enh +1 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/_version.py +2 -2
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/test_api_utils.py +2 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/__init__.py +1 -1
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/template_spaces.py +73 -1
- junifer-0.0.4.dev587/junifer/data/tests/test_template_spaces.py +69 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/utils.py +2 -2
- junifer-0.0.4.dev587/junifer/preprocess/bold_warper.py +244 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/tests/test_bold_warper.py +69 -1
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/PKG-INFO +2 -1
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/SOURCES.txt +2 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/requires.txt +1 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/pyproject.toml +3 -0
- junifer-0.0.4.dev565/junifer/data/tests/test_template_spaces.py +0 -30
- junifer-0.0.4.dev565/junifer/preprocess/bold_warper.py +0 -155
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/dependabot.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/pull_request_template.md +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.github/workflows/pypi.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.gitignore +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.gitmodules +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/AUTHORS.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/LICENSE.md +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/README.md +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/codecov.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/conda-env.yml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/Makefile +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/_templates/versions.html +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/api.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/configs.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/data.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/index.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/markers.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/stats.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/storage.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/testing.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/api/utils.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/builtin.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/145.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/182.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/224.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/233.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/245.change +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/245.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/247.doc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/248.change +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/251.doc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/252.change +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/252.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/253.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/254.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/258.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/259.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/260.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/261.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/262.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/263.change +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/264.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/265.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/266.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/267.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/268.change +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/268.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/269.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/271.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/272.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/274.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/276.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/277.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/278.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/279.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/280.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/281.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/281.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/282.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/283.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/284.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/286.bugfix +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/287.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/288.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/291.doc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/293.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/293.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/293.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/294.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/295.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/297.feature +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/300.doc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/300.enh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/changes/newsfragments/300.misc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/conf.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/contribution.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/extension.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/index.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/marker.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/masks.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/faq.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/help.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/index.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/installation.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/links.inc +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/maintaining.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/redirect.html +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/sphinxext/gh_substitutions.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/starting.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/data.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/index.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/using/codeless.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/using/index.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/using/masks.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/using/queueing.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/using/running.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/docs/whats_new.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/README.rst +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/ignore_words.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/cli.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/decorators.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/functions.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/parser.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/res/run_conda.sh +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/test_cli.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/tests/test_parser.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/api/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/coordinates.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/masks.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/parcellations.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/tests/test_coordinates.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/tests/test_masks.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/data/tests/test_parcellations.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datagrabber/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datareader/default.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/collection.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/falff_estimator.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/tests/test_falff_estimator.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/reho_estimator.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/tests/test_reho_estimator.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_collection.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/markers/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/registry.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/singleton.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/tests/test_registry.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/ants/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/ants/ants_apply_transforms_warper.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/fsl/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/fsl/apply_warper.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/stats.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/storage/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/registry.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/testing/utils.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/fs.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/logging.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/setup.cfg +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/setup.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.4.dev565 → junifer-0.0.4.dev587}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.4.
|
3
|
+
Version: 0.0.4.dev587
|
4
4
|
Summary: JUelich NeuroImaging FEature extractoR
|
5
5
|
Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
6
6
|
Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
@@ -40,6 +40,7 @@ Requires-Dist: importlib_metadata; python_version < "3.10"
|
|
40
40
|
Requires-Dist: h5py<3.10,>=3.8.0
|
41
41
|
Requires-Dist: httpx[http2]==0.26.0
|
42
42
|
Requires-Dist: tqdm==4.66.1
|
43
|
+
Requires-Dist: templateflow>=23.0.0
|
43
44
|
Provides-Extra: all
|
44
45
|
Requires-Dist: bctpy==0.6.0; extra == "all"
|
45
46
|
Requires-Dist: neurokit2>=0.1.7; extra == "all"
|
@@ -0,0 +1 @@
|
|
1
|
+
Introduce :func:`.get_template` to fetch template space image tailored to a target data by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Allow :class:`.BOLDWarper` to warp BOLD data to other MNI spaces by `Synchon Mandal`_
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.0.4.
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 4, '
|
15
|
+
__version__ = version = '0.0.4.dev587'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 4, 'dev587')
|
@@ -44,6 +44,7 @@ def test_get_dependency_information_short() -> None:
|
|
44
44
|
"ruamel.yaml",
|
45
45
|
"httpx",
|
46
46
|
"tqdm",
|
47
|
+
"templateflow",
|
47
48
|
]
|
48
49
|
if int(pl.python_version_tuple()[1]) < 10:
|
49
50
|
dependency_list.append("importlib_metadata")
|
@@ -68,6 +69,7 @@ def test_get_dependency_information_long() -> None:
|
|
68
69
|
"ruamel.yaml",
|
69
70
|
"httpx",
|
70
71
|
"tqdm",
|
72
|
+
"templateflow",
|
71
73
|
]
|
72
74
|
for key in dependency_list:
|
73
75
|
assert key in dependency_information_keys
|
@@ -4,11 +4,15 @@
|
|
4
4
|
# License: AGPL
|
5
5
|
|
6
6
|
from pathlib import Path
|
7
|
-
from typing import Union
|
7
|
+
from typing import Any, Dict, Optional, Union
|
8
8
|
|
9
9
|
import httpx
|
10
|
+
import nibabel as nib
|
11
|
+
import numpy as np
|
12
|
+
from templateflow import api as tflow
|
10
13
|
|
11
14
|
from ..utils import logger, raise_error
|
15
|
+
from .utils import closest_resolution
|
12
16
|
|
13
17
|
|
14
18
|
def get_xfm(
|
@@ -89,3 +93,71 @@ def get_xfm(
|
|
89
93
|
f.write(chunk)
|
90
94
|
|
91
95
|
return xfm_file_path
|
96
|
+
|
97
|
+
|
98
|
+
def get_template(
|
99
|
+
space: str,
|
100
|
+
target_data: Dict[str, Any],
|
101
|
+
extra_input: Optional[Dict[str, Any]] = None,
|
102
|
+
) -> nib.Nifti1Image:
|
103
|
+
"""Get template for the space, tailored for the target image.
|
104
|
+
|
105
|
+
Parameters
|
106
|
+
----------
|
107
|
+
space : str
|
108
|
+
The name of the template space.
|
109
|
+
target_data : dict
|
110
|
+
The corresponding item of the data object for which the template space
|
111
|
+
will be loaded.
|
112
|
+
extra_input : dict, optional
|
113
|
+
The other fields in the data object. Useful for accessing other data
|
114
|
+
types (default None).
|
115
|
+
|
116
|
+
Returns
|
117
|
+
-------
|
118
|
+
Nifti1Image
|
119
|
+
The template image.
|
120
|
+
|
121
|
+
Raises
|
122
|
+
------
|
123
|
+
ValueError
|
124
|
+
If ``space`` is invalid.
|
125
|
+
RuntimeError
|
126
|
+
If template in the required resolution is not found.
|
127
|
+
|
128
|
+
"""
|
129
|
+
# Check for invalid space; early check to raise proper error
|
130
|
+
if space not in tflow.templates():
|
131
|
+
raise_error(f"Unknown template space: {space}")
|
132
|
+
|
133
|
+
# Get the min of the voxels sizes and use it as the resolution
|
134
|
+
target_img = target_data["data"]
|
135
|
+
resolution = np.min(target_img.header.get_zooms()[:3]).astype(int)
|
136
|
+
|
137
|
+
# Fetch available resolutions for the template
|
138
|
+
available_resolutions = [
|
139
|
+
int(min(val["zooms"]))
|
140
|
+
for val in tflow.get_metadata(space)["res"].values()
|
141
|
+
]
|
142
|
+
# Use the closest resolution if desired resolution is not found
|
143
|
+
resolution = closest_resolution(resolution, available_resolutions)
|
144
|
+
|
145
|
+
logger.info(f"Downloading template {space} in resolution {resolution}")
|
146
|
+
# Retrieve template
|
147
|
+
try:
|
148
|
+
template_path = tflow.get(
|
149
|
+
space,
|
150
|
+
raise_empty=True,
|
151
|
+
resolution=resolution,
|
152
|
+
suffix="T1w",
|
153
|
+
desc=None,
|
154
|
+
extension="nii.gz",
|
155
|
+
)
|
156
|
+
except Exception: # noqa: BLE001
|
157
|
+
raise_error(
|
158
|
+
f"Template {space} not found in the required resolution "
|
159
|
+
f"{resolution}",
|
160
|
+
klass=RuntimeError,
|
161
|
+
)
|
162
|
+
else:
|
163
|
+
return nib.load(template_path) # type: ignore
|
@@ -0,0 +1,69 @@
|
|
1
|
+
"""Provide tests for template spaces."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
import socket
|
7
|
+
from pathlib import Path
|
8
|
+
|
9
|
+
import nibabel as nib
|
10
|
+
import pytest
|
11
|
+
|
12
|
+
from junifer.data import get_template, get_xfm
|
13
|
+
from junifer.datareader import DefaultDataReader
|
14
|
+
from junifer.testing.datagrabbers import OasisVBMTestingDataGrabber
|
15
|
+
|
16
|
+
|
17
|
+
@pytest.mark.skipif(
|
18
|
+
socket.gethostname() != "juseless",
|
19
|
+
reason="only for juseless",
|
20
|
+
)
|
21
|
+
def test_get_xfm(tmp_path: Path) -> None:
|
22
|
+
"""Test warp file fetching.
|
23
|
+
|
24
|
+
Parameters
|
25
|
+
----------
|
26
|
+
tmp_path : pathlib.Path
|
27
|
+
The path to the test directory.
|
28
|
+
|
29
|
+
"""
|
30
|
+
xfm_path = get_xfm(
|
31
|
+
src="MNI152NLin6Asym", dst="MNI152NLin2009cAsym", xfms_dir=tmp_path
|
32
|
+
)
|
33
|
+
assert isinstance(xfm_path, Path)
|
34
|
+
|
35
|
+
|
36
|
+
def test_get_template() -> None:
|
37
|
+
"""Test tailored template image fetch."""
|
38
|
+
with OasisVBMTestingDataGrabber() as dg:
|
39
|
+
element = dg["sub-01"]
|
40
|
+
element_data = DefaultDataReader().fit_transform(element)
|
41
|
+
vbm_gm = element_data["VBM_GM"]
|
42
|
+
# Get tailored parcellation
|
43
|
+
tailored_template = get_template(
|
44
|
+
space=vbm_gm["space"], target_data=vbm_gm
|
45
|
+
)
|
46
|
+
assert isinstance(tailored_template, nib.Nifti1Image)
|
47
|
+
|
48
|
+
|
49
|
+
def test_get_template_invalid_space() -> None:
|
50
|
+
"""Test invalid space check for template fetch."""
|
51
|
+
with OasisVBMTestingDataGrabber() as dg:
|
52
|
+
element = dg["sub-01"]
|
53
|
+
element_data = DefaultDataReader().fit_transform(element)
|
54
|
+
vbm_gm = element_data["VBM_GM"]
|
55
|
+
# Get tailored parcellation
|
56
|
+
with pytest.raises(ValueError, match="Unknown template space:"):
|
57
|
+
_ = get_template(space="andromeda", target_data=vbm_gm)
|
58
|
+
|
59
|
+
|
60
|
+
def test_get_template_closest_resolution() -> None:
|
61
|
+
"""Test closest resolution check for template fetch."""
|
62
|
+
with OasisVBMTestingDataGrabber() as dg:
|
63
|
+
element = dg["sub-01"]
|
64
|
+
element_data = DefaultDataReader().fit_transform(element)
|
65
|
+
vbm_gm = element_data["VBM_GM"]
|
66
|
+
# Change header resolution to fetch closest resolution
|
67
|
+
element_data["VBM_GM"]["data"].header.set_zooms((3, 3, 3))
|
68
|
+
template = get_template(space=vbm_gm["space"], target_data=vbm_gm)
|
69
|
+
assert isinstance(template, nib.Nifti1Image)
|
@@ -8,14 +8,14 @@ from ..utils.logging import logger
|
|
8
8
|
|
9
9
|
|
10
10
|
def closest_resolution(
|
11
|
-
resolution: Optional[float],
|
11
|
+
resolution: Optional[Union[float, int]],
|
12
12
|
valid_resolution: Union[List[float], List[int], np.ndarray],
|
13
13
|
) -> Union[float, int]:
|
14
14
|
"""Find the closest resolution.
|
15
15
|
|
16
16
|
Parameters
|
17
17
|
----------
|
18
|
-
resolution : float, optional
|
18
|
+
resolution : float or int, optional
|
19
19
|
The given resolution. If None, will return the highest resolution
|
20
20
|
(default None).
|
21
21
|
valid_resolution : list of float or int, or np.ndarray
|
@@ -0,0 +1,244 @@
|
|
1
|
+
"""Provide class for warping BOLD to other template spaces."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from typing import (
|
7
|
+
Any,
|
8
|
+
ClassVar,
|
9
|
+
Dict,
|
10
|
+
List,
|
11
|
+
Optional,
|
12
|
+
Tuple,
|
13
|
+
Union,
|
14
|
+
)
|
15
|
+
|
16
|
+
import nibabel as nib
|
17
|
+
from templateflow import api as tflow
|
18
|
+
|
19
|
+
from ..api.decorators import register_preprocessor
|
20
|
+
from ..data import get_template, get_xfm
|
21
|
+
from ..pipeline import WorkDirManager
|
22
|
+
from ..utils import logger, raise_error, run_ext_cmd
|
23
|
+
from .ants.ants_apply_transforms_warper import _AntsApplyTransformsWarper
|
24
|
+
from .base import BasePreprocessor
|
25
|
+
from .fsl.apply_warper import _ApplyWarper
|
26
|
+
|
27
|
+
|
28
|
+
@register_preprocessor
|
29
|
+
class BOLDWarper(BasePreprocessor):
|
30
|
+
"""Class for warping BOLD NIfTI images.
|
31
|
+
|
32
|
+
Parameters
|
33
|
+
----------
|
34
|
+
reference : str
|
35
|
+
The data type to use as reference for warping, can be either a data
|
36
|
+
type like "T1w" or a template space like "MNI152NLin2009cAsym".
|
37
|
+
|
38
|
+
Raises
|
39
|
+
------
|
40
|
+
ValueError
|
41
|
+
If ``reference`` is invalid.
|
42
|
+
|
43
|
+
"""
|
44
|
+
|
45
|
+
_EXT_DEPENDENCIES: ClassVar[
|
46
|
+
List[Dict[str, Union[str, bool, List[str]]]]
|
47
|
+
] = [
|
48
|
+
{
|
49
|
+
"name": "fsl",
|
50
|
+
"optional": True,
|
51
|
+
"commands": ["flirt", "applywarp"],
|
52
|
+
},
|
53
|
+
{
|
54
|
+
"name": "ants",
|
55
|
+
"optional": True,
|
56
|
+
"commands": ["ResampleImage", "antsApplyTransforms"],
|
57
|
+
},
|
58
|
+
]
|
59
|
+
|
60
|
+
def __init__(self, reference: str) -> None:
|
61
|
+
"""Initialize the class."""
|
62
|
+
self.ref = reference
|
63
|
+
# Initialize superclass based on reference
|
64
|
+
if self.ref == "T1w":
|
65
|
+
super().__init__(
|
66
|
+
on="BOLD", required_data_types=["BOLD", self.ref, "Warp"]
|
67
|
+
)
|
68
|
+
elif self.ref in tflow.templates():
|
69
|
+
super().__init__(on="BOLD", required_data_types=["BOLD"])
|
70
|
+
else:
|
71
|
+
raise_error(f"Unknown reference: {self.ref}")
|
72
|
+
|
73
|
+
def get_valid_inputs(self) -> List[str]:
|
74
|
+
"""Get valid data types for input.
|
75
|
+
|
76
|
+
Returns
|
77
|
+
-------
|
78
|
+
list of str
|
79
|
+
The list of data types that can be used as input for this
|
80
|
+
preprocessor.
|
81
|
+
|
82
|
+
"""
|
83
|
+
return ["BOLD"]
|
84
|
+
|
85
|
+
def get_output_type(self, input: List[str]) -> List[str]:
|
86
|
+
"""Get output type.
|
87
|
+
|
88
|
+
Parameters
|
89
|
+
----------
|
90
|
+
input : list of str
|
91
|
+
The input to the preprocessor. The list must contain the
|
92
|
+
available Junifer Data dictionary keys.
|
93
|
+
|
94
|
+
Returns
|
95
|
+
-------
|
96
|
+
list of str
|
97
|
+
The updated list of available Junifer Data object keys after
|
98
|
+
the pipeline step.
|
99
|
+
|
100
|
+
"""
|
101
|
+
# Does not add any new keys
|
102
|
+
return input
|
103
|
+
|
104
|
+
def preprocess(
|
105
|
+
self,
|
106
|
+
input: Dict[str, Any],
|
107
|
+
extra_input: Optional[Dict[str, Any]] = None,
|
108
|
+
) -> Tuple[str, Dict[str, Any]]:
|
109
|
+
"""Preprocess.
|
110
|
+
|
111
|
+
Parameters
|
112
|
+
----------
|
113
|
+
input : dict
|
114
|
+
The BOLD input from the Junifer Data object.
|
115
|
+
extra_input : dict, optional
|
116
|
+
The other fields in the Junifer Data object. Must include the
|
117
|
+
``Warp`` and ``ref`` value's keys if native space transformation is
|
118
|
+
needed.
|
119
|
+
|
120
|
+
Returns
|
121
|
+
-------
|
122
|
+
str
|
123
|
+
The key to store the output in the Junifer Data object.
|
124
|
+
dict
|
125
|
+
The computed result as dictionary. This will be stored in the
|
126
|
+
Junifer Data object under the key ``data`` of the data type.
|
127
|
+
|
128
|
+
Raises
|
129
|
+
------
|
130
|
+
ValueError
|
131
|
+
If ``extra_input`` is None when transforming to native space
|
132
|
+
i.e., using "T1w" as reference.
|
133
|
+
RuntimeError
|
134
|
+
If warp / transformation file extension is not ".mat" or ".h5"
|
135
|
+
when transforming to native space or
|
136
|
+
if the BOLD data is in the correct space and does not require
|
137
|
+
warping.
|
138
|
+
|
139
|
+
"""
|
140
|
+
logger.info(f"Warping BOLD to {self.ref} space using BOLDWarper")
|
141
|
+
# Transform to native space
|
142
|
+
if self.ref == "T1w":
|
143
|
+
# Check for extra inputs
|
144
|
+
if extra_input is None:
|
145
|
+
raise_error(
|
146
|
+
"No extra input provided, requires `Warp` and "
|
147
|
+
f"`{self.ref}` data types in particular."
|
148
|
+
)
|
149
|
+
# Check for warp file type to use correct tool
|
150
|
+
warp_file_ext = extra_input["Warp"]["path"].suffix
|
151
|
+
if warp_file_ext == ".mat":
|
152
|
+
logger.debug("Using FSL with BOLDWarper")
|
153
|
+
# Initialize ApplyWarper for computation
|
154
|
+
apply_warper = _ApplyWarper(reference=self.ref, on="BOLD")
|
155
|
+
# Replace original BOLD data with warped BOLD data
|
156
|
+
_, input = apply_warper.preprocess(
|
157
|
+
input=input,
|
158
|
+
extra_input=extra_input,
|
159
|
+
)
|
160
|
+
elif warp_file_ext == ".h5":
|
161
|
+
logger.debug("Using ANTs with BOLDWarper")
|
162
|
+
# Initialize AntsApplyTransformsWarper for computation
|
163
|
+
ants_apply_transforms_warper = _AntsApplyTransformsWarper(
|
164
|
+
reference=self.ref, on="BOLD"
|
165
|
+
)
|
166
|
+
# Replace original BOLD data with warped BOLD data
|
167
|
+
_, input = ants_apply_transforms_warper.preprocess(
|
168
|
+
input=input,
|
169
|
+
extra_input=extra_input,
|
170
|
+
)
|
171
|
+
else:
|
172
|
+
raise_error(
|
173
|
+
msg=(
|
174
|
+
"Unknown warp / transformation file extension: "
|
175
|
+
f"{warp_file_ext}"
|
176
|
+
),
|
177
|
+
klass=RuntimeError,
|
178
|
+
)
|
179
|
+
# Transform to template space
|
180
|
+
else:
|
181
|
+
# Check pre-requirements for space manipulation
|
182
|
+
if self.ref == input["space"]:
|
183
|
+
raise_error(
|
184
|
+
(
|
185
|
+
f"Skipped warping as the BOLD data is in {self.ref} "
|
186
|
+
"space which would mean that you can remove the "
|
187
|
+
"BOLDWarper from the preprocess step."
|
188
|
+
),
|
189
|
+
klass=RuntimeError,
|
190
|
+
)
|
191
|
+
else:
|
192
|
+
# Get xfm file
|
193
|
+
xfm_file_path = get_xfm(src=input["space"], dst=self.ref)
|
194
|
+
# Get template space image
|
195
|
+
template_space_img = get_template(
|
196
|
+
space=self.ref,
|
197
|
+
target_data=input,
|
198
|
+
extra_input=None,
|
199
|
+
)
|
200
|
+
|
201
|
+
# Create component-scoped tempdir
|
202
|
+
tempdir = WorkDirManager().get_tempdir(prefix="boldwarper")
|
203
|
+
# Create element-scoped tempdir so that warped BOLD is
|
204
|
+
# available later as nibabel stores file path reference for
|
205
|
+
# loading on computation
|
206
|
+
element_tempdir = WorkDirManager().get_element_tempdir(
|
207
|
+
prefix="boldwarper"
|
208
|
+
)
|
209
|
+
|
210
|
+
# Save template
|
211
|
+
template_space_img_path = tempdir / f"{self.ref}_T1w.nii.gz"
|
212
|
+
nib.save(template_space_img, template_space_img_path)
|
213
|
+
|
214
|
+
# Create a tempfile for warped output
|
215
|
+
warped_bold_path = (
|
216
|
+
element_tempdir
|
217
|
+
/ f"bold_warped_from_{input['space']}_to_{self.ref}.nii.gz"
|
218
|
+
)
|
219
|
+
|
220
|
+
logger.debug(
|
221
|
+
f"Using ANTs to warp BOLD "
|
222
|
+
f"from {input['space']} to {self.ref}"
|
223
|
+
)
|
224
|
+
# Set antsApplyTransforms command
|
225
|
+
apply_transforms_cmd = [
|
226
|
+
"antsApplyTransforms",
|
227
|
+
"-d 3",
|
228
|
+
"-e 3",
|
229
|
+
"-n LanczosWindowedSinc",
|
230
|
+
f"-i {input['path'].resolve()}",
|
231
|
+
f"-r {template_space_img_path.resolve()}",
|
232
|
+
f"-t {xfm_file_path.resolve()}",
|
233
|
+
f"-o {warped_bold_path.resolve()}",
|
234
|
+
]
|
235
|
+
# Call antsApplyTransforms
|
236
|
+
run_ext_cmd(
|
237
|
+
name="antsApplyTransforms", cmd=apply_transforms_cmd
|
238
|
+
)
|
239
|
+
|
240
|
+
# Modify target data
|
241
|
+
input["data"] = nib.load(warped_bold_path)
|
242
|
+
input["space"] = self.ref
|
243
|
+
|
244
|
+
return "BOLD", input
|
@@ -7,6 +7,7 @@ import socket
|
|
7
7
|
from typing import TYPE_CHECKING, List, Tuple
|
8
8
|
|
9
9
|
import pytest
|
10
|
+
from numpy.testing import assert_array_equal, assert_raises
|
10
11
|
|
11
12
|
from junifer.datagrabber import DataladHCP1200, DMCC13Benchmark
|
12
13
|
from junifer.datareader import DefaultDataReader
|
@@ -83,7 +84,7 @@ def test_BOLDWarper_get_output_type(input_: List[str]) -> None:
|
|
83
84
|
socket.gethostname() != "juseless",
|
84
85
|
reason="only for juseless",
|
85
86
|
)
|
86
|
-
def
|
87
|
+
def test_BOLDWarper_preprocess_to_native(
|
87
88
|
datagrabber: "BaseDataGrabber", element: Tuple[str, ...]
|
88
89
|
) -> None:
|
89
90
|
"""Test BOLDWarper preprocess.
|
@@ -106,3 +107,70 @@ def test_BOLDWarper_preprocess(
|
|
106
107
|
)
|
107
108
|
assert data_type == "BOLD"
|
108
109
|
assert isinstance(data, dict)
|
110
|
+
|
111
|
+
|
112
|
+
@pytest.mark.parametrize(
|
113
|
+
"datagrabber, element, space",
|
114
|
+
[
|
115
|
+
[
|
116
|
+
DMCC13Benchmark(
|
117
|
+
types=["BOLD"],
|
118
|
+
sessions=["wave1bas"],
|
119
|
+
tasks=["Rest"],
|
120
|
+
phase_encodings=["AP"],
|
121
|
+
runs=["1"],
|
122
|
+
native_t1w=False,
|
123
|
+
),
|
124
|
+
("f9057kp", "wave1bas", "Rest", "AP", "1"),
|
125
|
+
"MNI152NLin2009aAsym",
|
126
|
+
],
|
127
|
+
[
|
128
|
+
DMCC13Benchmark(
|
129
|
+
types=["BOLD"],
|
130
|
+
sessions=["wave1bas"],
|
131
|
+
tasks=["Rest"],
|
132
|
+
phase_encodings=["AP"],
|
133
|
+
runs=["1"],
|
134
|
+
native_t1w=False,
|
135
|
+
),
|
136
|
+
("f9057kp", "wave1bas", "Rest", "AP", "1"),
|
137
|
+
"MNI152NLin6Asym",
|
138
|
+
],
|
139
|
+
],
|
140
|
+
)
|
141
|
+
@pytest.mark.skipif(
|
142
|
+
_check_ants() is False, reason="requires ANTs to be in PATH"
|
143
|
+
)
|
144
|
+
@pytest.mark.skipif(
|
145
|
+
socket.gethostname() != "juseless",
|
146
|
+
reason="only for juseless",
|
147
|
+
)
|
148
|
+
def test_BOLDWarper_preprocess_to_multi_mni(
|
149
|
+
datagrabber: "BaseDataGrabber", element: Tuple[str, ...], space: str
|
150
|
+
) -> None:
|
151
|
+
"""Test BOLDWarper preprocess.
|
152
|
+
|
153
|
+
Parameters
|
154
|
+
----------
|
155
|
+
datagrabber : DataGrabber-like object
|
156
|
+
The parametrized DataGrabber objects.
|
157
|
+
element : tuple of str
|
158
|
+
The parametrized elements.
|
159
|
+
space : str
|
160
|
+
The parametrized template space to transform to.
|
161
|
+
|
162
|
+
"""
|
163
|
+
with datagrabber as dg:
|
164
|
+
# Read data
|
165
|
+
element_data = DefaultDataReader().fit_transform(dg[element])
|
166
|
+
pre_xfm_data = element_data["BOLD"]["data"].get_fdata().copy()
|
167
|
+
# Preprocess data
|
168
|
+
data_type, data = BOLDWarper(reference=space).preprocess(
|
169
|
+
input=element_data["BOLD"],
|
170
|
+
extra_input=element_data,
|
171
|
+
)
|
172
|
+
assert data_type == "BOLD"
|
173
|
+
assert isinstance(data, dict)
|
174
|
+
assert data["space"] == space
|
175
|
+
with assert_raises(AssertionError):
|
176
|
+
assert_array_equal(pre_xfm_data, data["data"])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.4.
|
3
|
+
Version: 0.0.4.dev587
|
4
4
|
Summary: JUelich NeuroImaging FEature extractoR
|
5
5
|
Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
6
6
|
Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
|
@@ -40,6 +40,7 @@ Requires-Dist: importlib_metadata; python_version < "3.10"
|
|
40
40
|
Requires-Dist: h5py<3.10,>=3.8.0
|
41
41
|
Requires-Dist: httpx[http2]==0.26.0
|
42
42
|
Requires-Dist: tqdm==4.66.1
|
43
|
+
Requires-Dist: templateflow>=23.0.0
|
43
44
|
Provides-Extra: all
|
44
45
|
Requires-Dist: bctpy==0.6.0; extra == "all"
|
45
46
|
Requires-Dist: neurokit2>=0.1.7; extra == "all"
|
@@ -106,9 +106,11 @@ docs/changes/newsfragments/293.misc
|
|
106
106
|
docs/changes/newsfragments/294.misc
|
107
107
|
docs/changes/newsfragments/295.feature
|
108
108
|
docs/changes/newsfragments/297.feature
|
109
|
+
docs/changes/newsfragments/298.feature
|
109
110
|
docs/changes/newsfragments/300.doc
|
110
111
|
docs/changes/newsfragments/300.enh
|
111
112
|
docs/changes/newsfragments/300.misc
|
113
|
+
docs/changes/newsfragments/302.enh
|
112
114
|
docs/extending/coordinates.rst
|
113
115
|
docs/extending/datagrabber.rst
|
114
116
|
docs/extending/extension.rst
|
@@ -48,6 +48,7 @@ dependencies = [
|
|
48
48
|
"h5py>=3.8.0,<3.10",
|
49
49
|
"httpx[http2]==0.26.0",
|
50
50
|
"tqdm==4.66.1",
|
51
|
+
"templateflow>=23.0.0",
|
51
52
|
]
|
52
53
|
dynamic = ["version"]
|
53
54
|
|
@@ -188,8 +189,10 @@ known-third-party =[
|
|
188
189
|
"nilearn",
|
189
190
|
"sqlalchemy",
|
190
191
|
"yaml",
|
192
|
+
"importlib_metadata",
|
191
193
|
"httpx",
|
192
194
|
"tqdm",
|
195
|
+
"templateflow",
|
193
196
|
"bct",
|
194
197
|
"neurokit2",
|
195
198
|
"pytest",
|
@@ -1,30 +0,0 @@
|
|
1
|
-
"""Provide tests for template spaces."""
|
2
|
-
|
3
|
-
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
-
# License: AGPL
|
5
|
-
|
6
|
-
import socket
|
7
|
-
from pathlib import Path
|
8
|
-
|
9
|
-
import pytest
|
10
|
-
|
11
|
-
from junifer.data import get_xfm
|
12
|
-
|
13
|
-
|
14
|
-
@pytest.mark.skipif(
|
15
|
-
socket.gethostname() != "juseless",
|
16
|
-
reason="only for juseless",
|
17
|
-
)
|
18
|
-
def test_get_xfm(tmp_path: Path) -> None:
|
19
|
-
"""Test warp file fetching.
|
20
|
-
|
21
|
-
Parameters
|
22
|
-
----------
|
23
|
-
tmp_path : pathlib.Path
|
24
|
-
The path to the test directory.
|
25
|
-
|
26
|
-
"""
|
27
|
-
xfm_path = get_xfm(
|
28
|
-
src="MNI152NLin6Asym", dst="MNI152NLin2009cAsym", xfms_dir=tmp_path
|
29
|
-
)
|
30
|
-
assert isinstance(xfm_path, Path)
|