junifer 0.0.8.dev303__tar.gz → 0.0.8.dev311__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.8.dev303 → junifer-0.0.8.dev311}/.gitmodules +0 -3
- {junifer-0.0.8.dev303/junifer.egg-info → junifer-0.0.8.dev311}/PKG-INFO +2 -1
- junifer-0.0.8.dev311/docs/changes/newsfragments/504.bugfix +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/504.misc +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.bugfix +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.bugfix.1 +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.change +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.change.1 +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.change.2 +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.doc +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.enh +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.feature +1 -0
- junifer-0.0.8.dev311/docs/changes/newsfragments/524.feature.1 +1 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/datagrabber.rst +125 -4
- junifer-0.0.8.dev311/docs/understanding/datagrabber.rst +302 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/codeless.rst +14 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/queueing.rst +4 -2
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/running.rst +36 -1
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/_version.py +3 -3
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/functions.py +22 -18
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/tests/test_functions.py +265 -12
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/tests/test_cli_utils.py +2 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/conftest.py +0 -1
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/piop1.py +7 -54
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/piop2.py +7 -41
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_piop1.py +5 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_piop2.py +5 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/base.py +148 -30
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/dmcc13_benchmark.py +8 -105
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/hcp1200.py +8 -56
- junifer-0.0.8.dev311/junifer/datagrabber/multiple.py +299 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern.py +297 -101
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_base.py +13 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +8 -2
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_multiple.py +251 -4
- junifer-0.0.8.dev311/junifer/datagrabber/tests/test_pattern.py +849 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_pattern_datalad.py +6 -3
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/hdf5.py +150 -97
- junifer-0.0.8.dev311/junifer/storage/tests/data/collected_h5io_fork.hdf5 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/tests/test_hdf5.py +147 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311/junifer.egg-info}/PKG-INFO +2 -1
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/SOURCES.txt +12 -23
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/requires.txt +1 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/scm_file_list.json +12 -23
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/scm_version.json +2 -2
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/pyproject.toml +2 -4
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/uv.lock +15 -0
- junifer-0.0.8.dev303/docs/understanding/datagrabber.rst +0 -65
- junifer-0.0.8.dev303/junifer/datagrabber/multiple.py +0 -217
- junifer-0.0.8.dev303/junifer/datagrabber/tests/test_pattern.py +0 -378
- junifer-0.0.8.dev303/junifer/external/h5io/.coveragerc +0 -7
- junifer-0.0.8.dev303/junifer/external/h5io/.gitattributes +0 -1
- junifer-0.0.8.dev303/junifer/external/h5io/.gitignore +0 -16
- junifer-0.0.8.dev303/junifer/external/h5io/.travis.yml +0 -58
- junifer-0.0.8.dev303/junifer/external/h5io/.vscode/launch.json +0 -17
- junifer-0.0.8.dev303/junifer/external/h5io/.vscode/settings.json +0 -8
- junifer-0.0.8.dev303/junifer/external/h5io/LICENSE.txt +0 -24
- junifer-0.0.8.dev303/junifer/external/h5io/MANIFEST.in +0 -2
- junifer-0.0.8.dev303/junifer/external/h5io/Makefile +0 -45
- junifer-0.0.8.dev303/junifer/external/h5io/README.rst +0 -94
- junifer-0.0.8.dev303/junifer/external/h5io/azure-pipelines.yml +0 -39
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/__init__.py +0 -15
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/_h5io.py +0 -767
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/_version.py +0 -1
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/chunked_array.py +0 -94
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/chunked_list.py +0 -65
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/tests/__init__.py +0 -0
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/tests/test_chunked_array.py +0 -82
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/tests/test_chunked_list.py +0 -46
- junifer-0.0.8.dev303/junifer/external/h5io/h5io/tests/test_io.py +0 -312
- junifer-0.0.8.dev303/junifer/external/h5io/setup.cfg +0 -14
- junifer-0.0.8.dev303/junifer/external/h5io/setup.py +0 -63
- junifer-0.0.8.dev303/junifer/external/h5io/versioneer.py +0 -1822
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.dockerignore +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/pull_request_template.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/check-stale.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/docker-publish.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.gitignore +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/.python-version +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/AUTHORS.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/Dockerfile +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/Dockerfile-ci +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/LICENSE.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/README.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/codecov.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/conda-env.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/Makefile +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/_static/css/version_selector.css +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/_templates/versions.html +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/api.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/cli.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/configs.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/data.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/markers.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/stats.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/storage.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/testing.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/api/utils.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/builtin.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/239.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.doc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/364.feature +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/474.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/482.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/492.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/499.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/502.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/503.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/509.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/510.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.bugfix.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.change +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.enh.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.feature +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/511.misc.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/513.doc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/513.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.bugfix.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/514.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.doc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.enh.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/515.misc.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.bugfix.2 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.change +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.change.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/516.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.2 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.3 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.4 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.5 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.bugfix.6 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.change +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.doc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.1 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.2 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.misc.3 +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/520.removal +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/521.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/522.bugfix +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/522.enh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/changes/newsfragments/523.misc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/conf.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/contribution.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/confounds_format.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/data_dump_asset.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/data_registries.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/data_types.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/extension.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/logging.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/maps.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/marker.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/masks.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/faq.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/help.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/installation.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/links.inc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/maintaining.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/poly.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/poly_files/patches/version_banner.html +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/poly_files/patches/versions.html +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/poly_files/templates/index.html +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/starting.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/data.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/configuring.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/dumping.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/using/masks.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/docs/whats_new.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/README.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/ignore_words.txt +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/decorators.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/api/tests/test_decorators.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/cli.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/parser.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/cli/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/configs/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/_ants_maps_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/_fsl_maps_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/maps/tests/test_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/tests/test_dispatch.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/data/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/_types.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datareader/default.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.codecov.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.codespellignore +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/.gitignore +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/LICENSE +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/README.md +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/Makefile +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/conf.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/index.rst +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/links.inc +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/make.bat +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/doc/references.bib +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/pyproject.toml +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/BrainPrint/setup.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/external/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/maps_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_lost_regions.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_maps_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/markers/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/_temporal_filter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/stats.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/storage/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/registry.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_testing_utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/testing/utils.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/typing/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/typing/_typing.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/typing/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/_config.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/fs.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/logging.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/py.typed +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/justfile +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/scripts/start.sh +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/setup.cfg +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/setup.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.8.dev303 → junifer-0.0.8.dev311}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: junifer
|
|
3
|
-
Version: 0.0.8.
|
|
3
|
+
Version: 0.0.8.dev311
|
|
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>
|
|
@@ -37,6 +37,7 @@ Requires-Dist: nilearn<0.15,>=0.14.0
|
|
|
37
37
|
Requires-Dist: sqlalchemy<2.2.0,>=2.0.25
|
|
38
38
|
Requires-Dist: ruamel.yaml<0.20,>=0.17
|
|
39
39
|
Requires-Dist: h5py>=3.10
|
|
40
|
+
Requires-Dist: h5io<0.3,>=0.2.5
|
|
40
41
|
Requires-Dist: tqdm<4.71.0,>=4.66.1
|
|
41
42
|
Requires-Dist: templateflow<26.0.0,>=23.0.0
|
|
42
43
|
Requires-Dist: lapy<2.0.0,>=1.0.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix the data collected by :class:`.HDF5FeatureStorage` being stored as ``float32`` when ``force_float32=False`` and the ``h5py`` deprecation warning when collecting by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Use original ``h5io`` instead of junifer's fork, keeping support for reading the features collected with the fork by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix partial element selectors (e.g., only the subject) always being reported as invalid by :func:`.run`, after computing their elements by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix a relative ``datadir`` of the DataGrabber in the YAML being relative to the current directory (e.g., the job directory when queueing) instead of the YAML file by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Use only the replacements of the data types to grab as element keys in :class:`.PatternDataGrabber` (e.g., only ``subject`` with VBM data), so the data that does not depend on, e.g., the task is not processed once for each task by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Find the elements of :class:`.DataladAOMICPIOP1`, :class:`.DataladAOMICPIOP2`, :class:`.HCP1200` and :class:`.DMCC13Benchmark` in the dataset, so only the elements with data are listed, and return absolute paths in :class:`.PatternDataGrabber` by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Require the element selectors to have the same number of values, and each data type to be grabbed by only one of the DataGrabbers of :class:`.MultipleDataGrabber` by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Document the elements of the DataGrabbers, combining datasets with :class:`.MultipleDataGrabber`, complete and partial elements, and restricting the values of the replacements by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Run complete elements (with a value for each element key, e.g., in each queued job) without searching the dataset for its elements by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Allow restricting the values of the replacements to grab in :class:`.PatternDataGrabber`, with ``replacements`` as a dictionary or with fields linked with ``_REPLACEMENT_FIELDS`` (e.g., ``tasks`` in the built-in DataGrabbers), and using the ``*`` and ``?`` wildcards in the patterns to find the elements by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Allow :class:`.MultipleDataGrabber` to combine DataGrabbers with different element keys, joining their elements on the common keys, and to replace nested data types (e.g., the confounds of ``BOLD``) with a DataGrabber that only grabs them by `Fede Raimondo`_
|
|
@@ -48,6 +48,13 @@ acquired for each task, but once in the entire session. So in this case, the
|
|
|
48
48
|
``T1w`` image for the element (``sub001``, ``ses1``, ``rest``) will be the same
|
|
49
49
|
as the ``T1w`` image for the element (``sub001``, ``ses1``, ``stroop``).
|
|
50
50
|
|
|
51
|
+
When the DataGrabber only grabs some of the data types, the elements only have
|
|
52
|
+
the items that these data types need. For example, if only the ``T1w`` image is
|
|
53
|
+
grabbed, the elements are (``subject``, ``session``), e.g., (``sub001``,
|
|
54
|
+
``ses1``), so that the same ``T1w`` image is not processed once for each task.
|
|
55
|
+
For the :class:`.PatternDataGrabber` (see below), the items that the data types
|
|
56
|
+
need are the replacements in their patterns.
|
|
57
|
+
|
|
51
58
|
We will now continue this section using as an example, a dataset in BIDS format
|
|
52
59
|
in which 9 subjects (``sub-01`` to ``sub-09``) were scanned each during 3
|
|
53
60
|
sessions (``ses-01``, ``ses-02``, ``ses-03``) and each session included a
|
|
@@ -200,6 +207,102 @@ to set the ``datadir``.
|
|
|
200
207
|
kind: ExampleBIDSDataGrabber
|
|
201
208
|
datadir: /data/project/test/data
|
|
202
209
|
|
|
210
|
+
The DataGrabber finds the elements by searching the dataset for the files that
|
|
211
|
+
match the pattern of each data type. An element is only available if it has the
|
|
212
|
+
files of all the data types to grab. In our BIDS example, ``ses-03`` only has
|
|
213
|
+
anatomical data, so the elements with ``ses-03`` are only available when only
|
|
214
|
+
the ``T1w`` data type is grabbed.
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
.. _extending_datagrabbers_replacement_values:
|
|
218
|
+
|
|
219
|
+
Restricting the values of the replacements
|
|
220
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
221
|
+
|
|
222
|
+
By default, the DataGrabber grabs all the values of the replacements found in
|
|
223
|
+
the dataset. To only grab some of them, ``replacements`` can be a dictionary
|
|
224
|
+
with the values to grab for each replacement (or ``None`` to grab all of them).
|
|
225
|
+
For example, to only grab the first two sessions of our BIDS example with the
|
|
226
|
+
:class:`.PatternDataGrabber` in the YAML file:
|
|
227
|
+
|
|
228
|
+
.. code-block:: yaml
|
|
229
|
+
|
|
230
|
+
datagrabber:
|
|
231
|
+
kind: PatternDataGrabber
|
|
232
|
+
datadir: /data/project/test/data
|
|
233
|
+
types:
|
|
234
|
+
- T1w
|
|
235
|
+
- BOLD
|
|
236
|
+
patterns:
|
|
237
|
+
T1w:
|
|
238
|
+
pattern: "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
|
|
239
|
+
space: native
|
|
240
|
+
BOLD:
|
|
241
|
+
pattern: "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
|
|
242
|
+
space: MNI152NLin6Asym
|
|
243
|
+
replacements:
|
|
244
|
+
subject: null
|
|
245
|
+
session:
|
|
246
|
+
- ses-01
|
|
247
|
+
- ses-02
|
|
248
|
+
|
|
249
|
+
The elements with other values are not listed, and grabbing them raises an
|
|
250
|
+
error. The values are ignored if the data types to grab do not use the
|
|
251
|
+
replacement, e.g., the ``session`` values with a data type that is the same for
|
|
252
|
+
all the sessions.
|
|
253
|
+
|
|
254
|
+
A DataGrabber can also take the values to grab from one of its fields, e.g.,
|
|
255
|
+
``sessions``, by linking the field to the replacement with
|
|
256
|
+
``_REPLACEMENT_FIELDS``. The values of the field can be strings or enumerations
|
|
257
|
+
(a :class:`enum.StrEnum` is recommended, so its members are also the strings),
|
|
258
|
+
and the replacement cannot have values in ``replacements`` too:
|
|
259
|
+
|
|
260
|
+
.. code-block:: python
|
|
261
|
+
|
|
262
|
+
from enum import StrEnum
|
|
263
|
+
from typing import ClassVar
|
|
264
|
+
|
|
265
|
+
from junifer.api.decorators import register_datagrabber
|
|
266
|
+
from junifer.datagrabber import DataType, PatternDataGrabber
|
|
267
|
+
from junifer.typing import DataGrabberPatterns
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class Sessions(StrEnum):
|
|
271
|
+
ses_01 = "ses-01"
|
|
272
|
+
ses_02 = "ses-02"
|
|
273
|
+
ses_03 = "ses-03"
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
@register_datagrabber
|
|
277
|
+
class ExampleBIDSDataGrabber(PatternDataGrabber):
|
|
278
|
+
|
|
279
|
+
types: list[DataType] = [DataType.T1w, DataType.BOLD]
|
|
280
|
+
patterns: DataGrabberPatterns = {
|
|
281
|
+
"T1w": {
|
|
282
|
+
"pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
|
283
|
+
"space": "native",
|
|
284
|
+
},
|
|
285
|
+
"BOLD": {
|
|
286
|
+
"pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
|
287
|
+
"space": "MNI152NLin6Asym",
|
|
288
|
+
},
|
|
289
|
+
}
|
|
290
|
+
replacements: list[str] = ["subject", "session"]
|
|
291
|
+
sessions: list[Sessions] = list(Sessions)
|
|
292
|
+
# Only grab the sessions in the `sessions` field
|
|
293
|
+
_REPLACEMENT_FIELDS: ClassVar[dict[str, str]] = {"session": "sessions"}
|
|
294
|
+
|
|
295
|
+
Then, the sessions to grab can be set in the YAML file:
|
|
296
|
+
|
|
297
|
+
.. code-block:: yaml
|
|
298
|
+
|
|
299
|
+
datagrabber:
|
|
300
|
+
kind: ExampleBIDSDataGrabber
|
|
301
|
+
datadir: /data/project/test/data
|
|
302
|
+
sessions:
|
|
303
|
+
- ses-01
|
|
304
|
+
- ses-02
|
|
305
|
+
|
|
203
306
|
|
|
204
307
|
Optional: Using datalad
|
|
205
308
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
@@ -296,20 +399,38 @@ This approach can be used directly from the YAML, like so:
|
|
|
296
399
|
uri: "https://cerebra.fz-juelich.de/junifer/datalad-example-bids-ses.git"
|
|
297
400
|
rootdir: example_bids_ses
|
|
298
401
|
|
|
402
|
+
.. _extending_datagrabbers_path_expansion:
|
|
403
|
+
|
|
299
404
|
Advanced: Using Unix-like path expansion directives
|
|
300
405
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
301
406
|
|
|
302
407
|
It is also possible to use some advanced Unix-like path expansion tricks to
|
|
303
408
|
define our patterns.
|
|
304
409
|
|
|
305
|
-
A very common thing would be to use ``*`` to match any number of
|
|
306
|
-
|
|
410
|
+
A very common thing would be to use ``*`` to match any number of characters
|
|
411
|
+
or ``?`` to match a single character, both to find the elements and to grab
|
|
412
|
+
their data. For example, if the acquisition of the BOLD images depends on the
|
|
413
|
+
task (e.g., ``sub-01_task-rest_acq-mb3_bold.nii.gz`` and
|
|
414
|
+
``sub-01_task-stroop_acq-seq_bold.nii.gz``), the pattern can match any
|
|
415
|
+
acquisition, so the task values are ``rest`` and ``stroop``:
|
|
307
416
|
|
|
308
417
|
.. code-block:: python
|
|
309
418
|
|
|
310
|
-
"
|
|
419
|
+
"{subject}/func/{subject}_task-{task}_acq-*_bold.nii.gz"
|
|
420
|
+
|
|
421
|
+
Similarly, ``?`` can match the first character of ``rfMRI`` (resting-state)
|
|
422
|
+
and ``tfMRI`` (task) in the HCP dataset:
|
|
311
423
|
|
|
312
|
-
|
|
424
|
+
.. code-block:: python
|
|
425
|
+
|
|
426
|
+
"{subject}/MNINonLinear/Results/?fMRI_{task}_{phase_encoding}/?fMRI_{task}_{phase_encoding}.nii.gz"
|
|
427
|
+
|
|
428
|
+
The pattern must match exactly one file for each element, and we cannot use
|
|
429
|
+
``*`` right after a replacement like:
|
|
430
|
+
|
|
431
|
+
.. code-block:: python
|
|
432
|
+
|
|
433
|
+
"derivatives/freesurfer/{subject}*"
|
|
313
434
|
|
|
314
435
|
We can also use ``[]`` and ``[!]`` to glob certain tricky files like with the
|
|
315
436
|
case of FreeSurfer derivatives. The file structure seen in a typical
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
.. include:: ../links.inc
|
|
2
|
+
|
|
3
|
+
.. _datagrabber:
|
|
4
|
+
|
|
5
|
+
Data Grabber
|
|
6
|
+
============
|
|
7
|
+
|
|
8
|
+
Description
|
|
9
|
+
-----------
|
|
10
|
+
|
|
11
|
+
The ``DataGrabber`` is an object that can provide an interface to datasets you
|
|
12
|
+
want to work with in ``junifer``. Every concrete implementation of a DataGrabber
|
|
13
|
+
is aware of a particular dataset's structure and thus allows you to fetch
|
|
14
|
+
specific elements of interest from the dataset. It adds the ``path`` key to each
|
|
15
|
+
:ref:`data type <data_types>` in the :ref:`Data object <data_object>`.
|
|
16
|
+
|
|
17
|
+
DataGrabbers are intended to be used as context managers. When used within a
|
|
18
|
+
context, a DataGrabber takes care of any pre and post steps for interacting with
|
|
19
|
+
the dataset, for example, downloading and cleaning up. As the interface
|
|
20
|
+
is consistent, you always use the same procedure to interact with the DataGrabber.
|
|
21
|
+
|
|
22
|
+
For example, a concrete implementation of :class:`.DataladDataGrabber` can
|
|
23
|
+
provide ``junifer`` with data from a Datalad dataset. Of course, DataGrabbers are
|
|
24
|
+
not only meant to work with Datalad datasets but any dataset.
|
|
25
|
+
|
|
26
|
+
If you are interested in using already provided DataGrabbers, please go to
|
|
27
|
+
:doc:`../builtin`. And, if you want to implement your own DataGrabber, you need
|
|
28
|
+
to provide concrete implementations of abstract base classes already provided.
|
|
29
|
+
|
|
30
|
+
.. _datagrabber_elements:
|
|
31
|
+
|
|
32
|
+
Elements
|
|
33
|
+
--------
|
|
34
|
+
|
|
35
|
+
A DataGrabber gives the data of a dataset in small units called *elements*. An
|
|
36
|
+
element is the smallest unit of data that can be processed: it has one file
|
|
37
|
+
for each :ref:`data type <data_types>` (e.g., one ``T1w`` image and one
|
|
38
|
+
``BOLD`` image). Each element is identified by the values of its *keys*, e.g.,
|
|
39
|
+
the element ``("sub-01", "rest")`` has the value ``sub-01`` for the key
|
|
40
|
+
``subject`` and ``rest`` for the key ``task``.
|
|
41
|
+
|
|
42
|
+
To see how this works, we will use this small dataset with two subjects, a
|
|
43
|
+
``T1w`` image for each subject and a ``BOLD`` image for each subject and task
|
|
44
|
+
(``sub-02`` has no ``movie`` task):
|
|
45
|
+
|
|
46
|
+
.. code-block:: text
|
|
47
|
+
|
|
48
|
+
sub-01/anat/sub-01_T1w.nii.gz
|
|
49
|
+
sub-01/func/sub-01_task-rest_bold.nii.gz
|
|
50
|
+
sub-01/func/sub-01_task-movie_bold.nii.gz
|
|
51
|
+
sub-02/anat/sub-02_T1w.nii.gz
|
|
52
|
+
sub-02/func/sub-02_task-rest_bold.nii.gz
|
|
53
|
+
|
|
54
|
+
A :class:`.PatternDataGrabber` describes the files of each data type with a
|
|
55
|
+
*pattern*, where the parts that change between the files (the *replacements*)
|
|
56
|
+
are written between braces:
|
|
57
|
+
|
|
58
|
+
.. code-block:: yaml
|
|
59
|
+
|
|
60
|
+
datagrabber:
|
|
61
|
+
kind: PatternDataGrabber
|
|
62
|
+
datadir: /data/example
|
|
63
|
+
types:
|
|
64
|
+
- T1w
|
|
65
|
+
- BOLD
|
|
66
|
+
patterns:
|
|
67
|
+
T1w:
|
|
68
|
+
pattern: "{subject}/anat/{subject}_T1w.nii.gz"
|
|
69
|
+
space: native
|
|
70
|
+
BOLD:
|
|
71
|
+
pattern: "{subject}/func/{subject}_task-{task}_bold.nii.gz"
|
|
72
|
+
space: native
|
|
73
|
+
replacements:
|
|
74
|
+
- subject
|
|
75
|
+
- task
|
|
76
|
+
|
|
77
|
+
Which data types are grabbed
|
|
78
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
79
|
+
|
|
80
|
+
The DataGrabber finds the elements by searching the dataset for the files that
|
|
81
|
+
match the patterns. The keys of the elements are the replacements in the
|
|
82
|
+
patterns of the data types to grab (``types``), and an element is only
|
|
83
|
+
available if it has a file for each of these data types:
|
|
84
|
+
|
|
85
|
+
.. list-table::
|
|
86
|
+
:widths: auto
|
|
87
|
+
:header-rows: 1
|
|
88
|
+
|
|
89
|
+
* - ``types``
|
|
90
|
+
- Keys
|
|
91
|
+
- Elements
|
|
92
|
+
* - ``T1w``
|
|
93
|
+
- ``subject``
|
|
94
|
+
- ``sub-01``, ``sub-02``
|
|
95
|
+
* - ``BOLD``
|
|
96
|
+
- ``subject``, ``task``
|
|
97
|
+
- ``(sub-01, movie)``, ``(sub-01, rest)``, ``(sub-02, rest)``
|
|
98
|
+
* - ``T1w``, ``BOLD``
|
|
99
|
+
- ``subject``, ``task``
|
|
100
|
+
- ``(sub-01, movie)``, ``(sub-01, rest)``, ``(sub-02, rest)``
|
|
101
|
+
|
|
102
|
+
With only ``T1w``, the elements do not have the ``task`` key, as the ``T1w``
|
|
103
|
+
image does not depend on the task: each ``T1w`` image is processed once. With
|
|
104
|
+
``BOLD``, the elements need the task, so the ``T1w`` image of ``sub-01`` is part
|
|
105
|
+
of two elements, ``(sub-01, movie)`` and ``(sub-01, rest)``.
|
|
106
|
+
|
|
107
|
+
Which values are grabbed
|
|
108
|
+
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
109
|
+
|
|
110
|
+
By default, all the values found in the dataset are grabbed. They can be
|
|
111
|
+
restricted with ``replacements``, giving the values to grab for each
|
|
112
|
+
replacement (or ``null`` to grab all of them). For example, to only grab the
|
|
113
|
+
``rest`` task:
|
|
114
|
+
|
|
115
|
+
.. code-block:: yaml
|
|
116
|
+
|
|
117
|
+
replacements:
|
|
118
|
+
subject: null
|
|
119
|
+
task:
|
|
120
|
+
- rest
|
|
121
|
+
|
|
122
|
+
The :doc:`built-in DataGrabbers <../builtin>` have parameters for this instead,
|
|
123
|
+
e.g., ``tasks`` in :class:`.DataladAOMICPIOP1`. The values only restrict the
|
|
124
|
+
elements of the data types that use the replacement:
|
|
125
|
+
|
|
126
|
+
.. list-table::
|
|
127
|
+
:widths: auto
|
|
128
|
+
:header-rows: 1
|
|
129
|
+
|
|
130
|
+
* - ``types``
|
|
131
|
+
- Values to grab
|
|
132
|
+
- Elements
|
|
133
|
+
* - ``BOLD``
|
|
134
|
+
- ``task``: ``rest``
|
|
135
|
+
- ``(sub-01, rest)``, ``(sub-02, rest)``
|
|
136
|
+
* - ``BOLD``
|
|
137
|
+
- ``subject``: ``sub-02``
|
|
138
|
+
- ``(sub-02, rest)``
|
|
139
|
+
* - ``T1w``
|
|
140
|
+
- ``task``: ``rest``
|
|
141
|
+
- ``sub-01``, ``sub-02`` (the ``T1w`` image does not depend on the task)
|
|
142
|
+
|
|
143
|
+
The elements with other values are not listed, and asking for them (e.g.,
|
|
144
|
+
``(sub-01, movie)`` when only ``rest`` is grabbed) raises an error. See
|
|
145
|
+
:ref:`extending_datagrabbers_replacement_values` for more details, and
|
|
146
|
+
:ref:`extending_datagrabbers_path_expansion` for patterns with ``*``, e.g., to
|
|
147
|
+
match files whose names change with the task.
|
|
148
|
+
|
|
149
|
+
Which elements are processed
|
|
150
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
151
|
+
|
|
152
|
+
The ``list-elements`` command lists the elements of the dataset. By default,
|
|
153
|
+
the ``run`` and ``queue`` commands process all of them, but the ``--element``
|
|
154
|
+
option can select some of them, with the values of the keys separated by
|
|
155
|
+
``,``. With ``BOLD``:
|
|
156
|
+
|
|
157
|
+
.. list-table::
|
|
158
|
+
:widths: auto
|
|
159
|
+
:header-rows: 1
|
|
160
|
+
|
|
161
|
+
* - ``--element``
|
|
162
|
+
- Elements processed
|
|
163
|
+
* - ``sub-01,rest``
|
|
164
|
+
- ``(sub-01, rest)``: a *complete* element (a value for each key, in
|
|
165
|
+
order), the dataset is not searched
|
|
166
|
+
* - ``sub-01``
|
|
167
|
+
- ``(sub-01, movie)``, ``(sub-01, rest)``: a *partial* element selects all
|
|
168
|
+
the elements with its values
|
|
169
|
+
* - ``rest``
|
|
170
|
+
- ``(sub-01, rest)``, ``(sub-02, rest)``
|
|
171
|
+
* - ``sub-03``
|
|
172
|
+
- None: an error is raised, as no element matches it
|
|
173
|
+
|
|
174
|
+
See :ref:`running_elements` for more details.
|
|
175
|
+
|
|
176
|
+
.. _datagrabber_multiple:
|
|
177
|
+
|
|
178
|
+
Combining datasets
|
|
179
|
+
------------------
|
|
180
|
+
|
|
181
|
+
The :class:`.MultipleDataGrabber` combines several DataGrabbers, e.g., to use
|
|
182
|
+
data from different datasets. For example, we can take the ``BOLD`` and
|
|
183
|
+
``T1w`` images from a dataset with the fMRIPrep derivatives, the ``VBM_GM``
|
|
184
|
+
images from a dataset with the CAT12 derivatives, and the confounds of the
|
|
185
|
+
``BOLD`` images from a third dataset:
|
|
186
|
+
|
|
187
|
+
.. code-block:: yaml
|
|
188
|
+
|
|
189
|
+
datagrabber:
|
|
190
|
+
kind: MultipleDataGrabber
|
|
191
|
+
datagrabbers:
|
|
192
|
+
# BOLD and T1w from the fMRIPrep derivatives
|
|
193
|
+
- kind: DataladAOMICPIOP1
|
|
194
|
+
types:
|
|
195
|
+
- BOLD
|
|
196
|
+
- T1w
|
|
197
|
+
tasks:
|
|
198
|
+
- restingstate
|
|
199
|
+
# VBM from the CAT12 derivatives
|
|
200
|
+
- kind: PatternDataladDataGrabber
|
|
201
|
+
uri: https://example.org/aomic-piop1-cat12
|
|
202
|
+
types:
|
|
203
|
+
- VBM_GM
|
|
204
|
+
patterns:
|
|
205
|
+
VBM_GM:
|
|
206
|
+
pattern: "{subject}/mri/mwp1{subject}_T1w.nii"
|
|
207
|
+
space: MNI152NLin2009cAsym
|
|
208
|
+
replacements:
|
|
209
|
+
- subject
|
|
210
|
+
# Only the confounds of the BOLD images
|
|
211
|
+
- kind: PatternDataladDataGrabber
|
|
212
|
+
uri: https://example.org/aomic-piop1-confounds
|
|
213
|
+
types:
|
|
214
|
+
- BOLD
|
|
215
|
+
patterns:
|
|
216
|
+
BOLD:
|
|
217
|
+
confounds:
|
|
218
|
+
pattern: "{subject}/func/{subject}_task-{task}_acq-*_desc-confounds.tsv"
|
|
219
|
+
format: fmriprep
|
|
220
|
+
replacements:
|
|
221
|
+
- subject
|
|
222
|
+
- task
|
|
223
|
+
partial_pattern_ok: true
|
|
224
|
+
|
|
225
|
+
The DataGrabbers are combined with these rules:
|
|
226
|
+
|
|
227
|
+
* **Each data type is grabbed by one DataGrabber**, which is chosen with the
|
|
228
|
+
``types`` of each DataGrabber. Here, the first one grabs ``BOLD`` and
|
|
229
|
+
``T1w``, and the second one ``VBM_GM``. If the first one also grabbed
|
|
230
|
+
``VBM_GM`` (e.g., without setting its ``types``), an error would be raised,
|
|
231
|
+
asking to remove it from the ``types`` of one of them.
|
|
232
|
+
* **A DataGrabber that only grabs the nested data types of a data type**
|
|
233
|
+
(without the main file of the data type) replaces these nested data types
|
|
234
|
+
of the other DataGrabber. Here, the third one only grabs the ``confounds``
|
|
235
|
+
of ``BOLD``, so they replace the ones of the first DataGrabber, regardless
|
|
236
|
+
of the order of the DataGrabbers.
|
|
237
|
+
* **The elements are the ones available in all the DataGrabbers.** The
|
|
238
|
+
DataGrabbers can have different keys: the element keys are the ones of the
|
|
239
|
+
first DataGrabber, followed by the other keys of the other DataGrabbers, and
|
|
240
|
+
each DataGrabber grabs an element with its own keys. The keys with the same
|
|
241
|
+
name must have the same values in all the datasets (e.g., the same subject
|
|
242
|
+
names).
|
|
243
|
+
|
|
244
|
+
For the element ``(sub-0001, restingstate)``:
|
|
245
|
+
|
|
246
|
+
.. list-table::
|
|
247
|
+
:widths: auto
|
|
248
|
+
:header-rows: 1
|
|
249
|
+
|
|
250
|
+
* - DataGrabber
|
|
251
|
+
- Keys
|
|
252
|
+
- Grabs
|
|
253
|
+
* - First (fMRIPrep)
|
|
254
|
+
- ``subject``, ``task``
|
|
255
|
+
- ``(sub-0001, restingstate)``: the ``BOLD`` image (with its mask) and
|
|
256
|
+
the ``T1w`` image
|
|
257
|
+
* - Second (CAT12)
|
|
258
|
+
- ``subject``
|
|
259
|
+
- ``sub-0001``: the ``VBM_GM`` image
|
|
260
|
+
* - Third (confounds)
|
|
261
|
+
- ``subject``, ``task``
|
|
262
|
+
- ``(sub-0001, restingstate)``: the confounds of the ``BOLD`` image
|
|
263
|
+
|
|
264
|
+
Base Classes
|
|
265
|
+
------------
|
|
266
|
+
|
|
267
|
+
In this section, we showcase different abstract and concrete base classes you
|
|
268
|
+
might want to use to implement your own DataGrabber.
|
|
269
|
+
|
|
270
|
+
.. list-table::
|
|
271
|
+
:widths: auto
|
|
272
|
+
:header-rows: 1
|
|
273
|
+
|
|
274
|
+
* - Name
|
|
275
|
+
- Description
|
|
276
|
+
* - :class:`.BaseDataGrabber`
|
|
277
|
+
- | The abstract base class providing you an interface to implement your
|
|
278
|
+
| own DataGrabber. You should try to avoid using this directly and
|
|
279
|
+
| instead use :class:`.PatternDataGrabber` or
|
|
280
|
+
| :class:`.DataladDataGrabber`. To build your own custom *low-level*
|
|
281
|
+
| DataGrabber, you need to override the ``get_element_keys``,
|
|
282
|
+
| ``get_elements`` and ``get_item`` methods, and most of the time you
|
|
283
|
+
| should also override other existing methods like ``__enter__`` and
|
|
284
|
+
| ``__exit__``.
|
|
285
|
+
* - :class:`.PatternDataGrabber`
|
|
286
|
+
- | It implements functionality to help you define the pattern of the
|
|
287
|
+
| dataset you want to get. For example, you know that T1w images are
|
|
288
|
+
| found in a directory following the pattern:
|
|
289
|
+
| ``{subject}/anat/{subject}_T1w.nii.gz`` inside of the dataset. Now you
|
|
290
|
+
| can provide this to the :class:`.PatternDataGrabber` and it will be
|
|
291
|
+
| able to get the file.
|
|
292
|
+
* - :class:`.DataladDataGrabber`
|
|
293
|
+
- | It implements functionality to deal with Datalad datasets. Specifically,
|
|
294
|
+
| the ``__enter__`` and ``__exit__`` methods take care of cloning and
|
|
295
|
+
| removing the Datalad dataset.
|
|
296
|
+
* - :class:`.PatternDataladDataGrabber`
|
|
297
|
+
- | It is a combination of :class:`.PatternDataGrabber` and
|
|
298
|
+
| :class:`.DataladDataGrabber`. This is probably the class you are looking
|
|
299
|
+
| for when using Datalad datasets.
|
|
300
|
+
* - :class:`.MultipleDataGrabber`
|
|
301
|
+
- | It combines several DataGrabbers, e.g., to use data from different
|
|
302
|
+
| datasets (see :ref:`datagrabber_multiple`).
|
|
@@ -96,6 +96,20 @@ task.
|
|
|
96
96
|
kind: DataladAOMICPIOP1
|
|
97
97
|
tasks: restingstate
|
|
98
98
|
|
|
99
|
+
The ``types`` parameter restricts the :ref:`data types <data_types>` to grab,
|
|
100
|
+
which also determines the elements to process. For example, with only the VBM
|
|
101
|
+
data, which does not depend on the task, the elements only have the subject, so
|
|
102
|
+
the VBM data of each subject is processed once (and ``tasks`` is not needed):
|
|
103
|
+
|
|
104
|
+
.. code-block:: yaml
|
|
105
|
+
|
|
106
|
+
datagrabber:
|
|
107
|
+
kind: DataladAOMICPIOP1
|
|
108
|
+
types:
|
|
109
|
+
- VBM_GM
|
|
110
|
+
|
|
111
|
+
See :ref:`datagrabber_elements` for more details on the elements.
|
|
112
|
+
|
|
99
113
|
In the ``UCLA CNP VBM Testing dataset`` example, the section will look like this:
|
|
100
114
|
|
|
101
115
|
.. code-block:: yaml
|
|
@@ -185,5 +185,7 @@ The ``queue`` command accepts the following arguments:
|
|
|
185
185
|
job submit files will be created but not submitted.
|
|
186
186
|
* ``--overwrite``: Overwrite the job folder if it already exists. If not
|
|
187
187
|
specified, the command will fail if the job folder already exists.
|
|
188
|
-
* ``--element``: Queue only the specified element(s)
|
|
189
|
-
elements will be queued.
|
|
188
|
+
* ``--element``: Queue only the specified element(s), complete or partial (see
|
|
189
|
+
:ref:`running_elements`). If not specified, all elements will be queued.
|
|
190
|
+
Each job runs one complete element, so it does not search the dataset for
|
|
191
|
+
its elements.
|
|
@@ -30,7 +30,8 @@ The ``run`` command accepts the following additional arguments:
|
|
|
30
30
|
run. This parameter can be specified multiple times to run multiple elements.
|
|
31
31
|
If the *element* requires several parameters, they can be specified by
|
|
32
32
|
separating them with ``,``. It also accepts a file (e.g., ``elements.txt``)
|
|
33
|
-
containing complete or partial element(s)
|
|
33
|
+
containing complete or partial element(s) (see
|
|
34
|
+
:ref:`running_elements`).
|
|
34
35
|
|
|
35
36
|
Example of running two elements:
|
|
36
37
|
--------------------------------
|
|
@@ -90,6 +91,40 @@ and then the ``elements.txt`` would be like so:
|
|
|
90
91
|
|
|
91
92
|
sub-01
|
|
92
93
|
|
|
94
|
+
.. _running_elements:
|
|
95
|
+
|
|
96
|
+
Complete and partial elements
|
|
97
|
+
-----------------------------
|
|
98
|
+
|
|
99
|
+
An *element* has a value for each of its *keys*, e.g., ``subject`` and
|
|
100
|
+
``session``. The keys depend on the :ref:`data types <data_types>` that the
|
|
101
|
+
DataGrabber grabs: an element only has the keys that the data types need. For
|
|
102
|
+
example, a DataGrabber with resting-state BOLD (one per subject and session) and
|
|
103
|
+
VBM data (one per subject) has the keys ``subject`` and ``session`` when
|
|
104
|
+
grabbing the BOLD data, but only ``subject`` when grabbing only the VBM data, so
|
|
105
|
+
that the VBM data of a subject is not processed once for each session. The
|
|
106
|
+
``list-elements`` command lists the elements with their values, in the order of
|
|
107
|
+
the keys:
|
|
108
|
+
|
|
109
|
+
.. code-block:: bash
|
|
110
|
+
|
|
111
|
+
junifer list-elements config.yaml
|
|
112
|
+
|
|
113
|
+
The elements given with ``--element`` can be:
|
|
114
|
+
|
|
115
|
+
* *Complete*, with a value for each key, in the order of the keys, e.g.,
|
|
116
|
+
``sub-01,ses-01``. Only these elements are run, without searching the
|
|
117
|
+
dataset for its elements. This is the case for the jobs created by
|
|
118
|
+
:ref:`queue <queueing>`, which run one element each.
|
|
119
|
+
* *Partial*, with fewer values, e.g., ``sub-01``. They run all the elements of
|
|
120
|
+
the dataset that have these values for any key, e.g., all the sessions of
|
|
121
|
+
``sub-01``. This requires searching the dataset for its elements.
|
|
122
|
+
|
|
123
|
+
All the elements given in a command must have the same number of values, so
|
|
124
|
+
they are either all complete or all partial. A partial element that does not
|
|
125
|
+
match any element of the dataset is reported before running any element, while
|
|
126
|
+
a complete element without data fails when its data is grabbed.
|
|
127
|
+
|
|
93
128
|
|
|
94
129
|
.. _collect:
|
|
95
130
|
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.0.8.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 0, 8, '
|
|
21
|
+
__version__ = version = '0.0.8.dev311'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 8, 'dev311')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gf37e90687'
|
|
@@ -261,25 +261,12 @@ def run(
|
|
|
261
261
|
# Fit elements
|
|
262
262
|
with datagrabber_object:
|
|
263
263
|
if elements is not None:
|
|
264
|
-
#
|
|
265
|
-
|
|
266
|
-
for t_element in datagrabber_object.filter(elements):
|
|
267
|
-
valid_elements.append(t_element)
|
|
268
|
-
mc.fit(datagrabber_object[t_element])
|
|
269
|
-
# Compute invalid selectors
|
|
270
|
-
invalid_elements = set(elements) - set(valid_elements)
|
|
271
|
-
# Report if invalid selectors are found
|
|
272
|
-
if invalid_elements:
|
|
273
|
-
raise_error(
|
|
274
|
-
msg=(
|
|
275
|
-
"The following element selectors are invalid:\n"
|
|
276
|
-
f"{invalid_elements}"
|
|
277
|
-
),
|
|
278
|
-
klass=RuntimeError,
|
|
279
|
-
)
|
|
264
|
+
# Only get the elements of the dataset for partial selectors
|
|
265
|
+
to_fit = datagrabber_object.select_elements(elements)
|
|
280
266
|
else:
|
|
281
|
-
|
|
282
|
-
|
|
267
|
+
to_fit = datagrabber_object.get_elements()
|
|
268
|
+
for t_element in to_fit:
|
|
269
|
+
mc.fit(datagrabber_object[t_element])
|
|
283
270
|
|
|
284
271
|
|
|
285
272
|
def collect(storage: dict, workdir: str | Path | dict | None = None) -> None:
|
|
@@ -628,6 +615,23 @@ def parse_yaml(filepath: str | Path) -> dict: # noqa: C901
|
|
|
628
615
|
(filepath.parent / uri_path).resolve()
|
|
629
616
|
)
|
|
630
617
|
|
|
618
|
+
# Compute the absolute path of the data directory of the datagrabber (and
|
|
619
|
+
# of the datagrabbers of a MultipleDataGrabber) if it is relative; same
|
|
620
|
+
# motivation as above. Otherwise, it would be relative to the current
|
|
621
|
+
# working directory, which is the job directory when queueing.
|
|
622
|
+
if "datagrabber" in contents:
|
|
623
|
+
datagrabbers = [
|
|
624
|
+
contents["datagrabber"],
|
|
625
|
+
*contents["datagrabber"].get("datagrabbers", []),
|
|
626
|
+
]
|
|
627
|
+
for datagrabber in datagrabbers:
|
|
628
|
+
if "datadir" in datagrabber:
|
|
629
|
+
datadir = Path(datagrabber["datadir"])
|
|
630
|
+
if not datadir.is_absolute():
|
|
631
|
+
datagrabber["datadir"] = str(
|
|
632
|
+
(filepath.parent / datadir).resolve()
|
|
633
|
+
)
|
|
634
|
+
|
|
631
635
|
# Allow relative path if queue env kind is venv; same motivation as above
|
|
632
636
|
if "queue" in contents:
|
|
633
637
|
if "env" in contents["queue"]:
|