junifer 0.0.8.dev306__tar.gz → 0.0.8.dev314__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.dev306/junifer.egg-info → junifer-0.0.8.dev314}/PKG-INFO +1 -1
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.bugfix +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.bugfix.1 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.change +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.change.1 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.change.2 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.doc +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.enh +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.feature +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/524.feature.1 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.bugfix +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.bugfix.1 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.change +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.change.1 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.change.2 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.change.3 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.change.4 +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.doc +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.enh +1 -0
- junifer-0.0.8.dev314/docs/changes/newsfragments/525.feature +1 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/datagrabber.rst +166 -16
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/index.rst +1 -0
- junifer-0.0.8.dev314/docs/internals.rst +169 -0
- junifer-0.0.8.dev314/docs/understanding/datagrabber.rst +302 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/storage.rst +8 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/codeless.rst +14 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/queueing.rst +4 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/running.rst +36 -1
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/_version.py +3 -3
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/functions.py +22 -18
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/tests/test_functions.py +390 -14
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/piop1.py +7 -54
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/piop2.py +7 -41
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/tests/test_piop1.py +5 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/tests/test_piop2.py +5 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/base.py +176 -37
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/dmcc13_benchmark.py +8 -105
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/hcp1200.py +8 -56
- junifer-0.0.8.dev314/junifer/datagrabber/multiple.py +323 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/pattern.py +314 -102
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_base.py +13 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +8 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_multiple.py +259 -4
- junifer-0.0.8.dev314/junifer/datagrabber/tests/test_pattern.py +859 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_pattern_datalad.py +6 -3
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/update_meta_mixin.py +9 -1
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/base.py +3 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +2 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/tests/test_preprocess_base.py +14 -4
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/base.py +62 -6
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/hdf5.py +104 -8
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/pandas_base.py +32 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/sqlite.py +62 -10
- junifer-0.0.8.dev314/junifer/storage/tests/test_repeated_storage.py +293 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/test_sqlite.py +2 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/test_storage_base.py +4 -2
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/test_utils.py +67 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/utils.py +27 -7
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314/junifer.egg-info}/PKG-INFO +1 -1
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/SOURCES.txt +21 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/scm_file_list.json +21 -0
- junifer-0.0.8.dev314/junifer.egg-info/scm_version.json +8 -0
- junifer-0.0.8.dev306/docs/understanding/datagrabber.rst +0 -65
- junifer-0.0.8.dev306/junifer/datagrabber/multiple.py +0 -217
- junifer-0.0.8.dev306/junifer/datagrabber/tests/test_pattern.py +0 -378
- junifer-0.0.8.dev306/junifer.egg-info/scm_version.json +0 -8
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.dockerignore +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/pull_request_template.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/check-stale.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/docker-publish.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.gitignore +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.gitmodules +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/.python-version +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/AUTHORS.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/Dockerfile +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/Dockerfile-ci +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/LICENSE.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/README.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/codecov.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/conda-env.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/Makefile +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/_static/css/version_selector.css +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/_templates/versions.html +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/api.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/cli.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/configs.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/data.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/markers.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/stats.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/storage.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/testing.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/api/utils.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/builtin.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/239.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/364.doc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/364.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/364.feature +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/474.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/482.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/492.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/499.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/502.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/503.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/504.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/504.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/509.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/510.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.bugfix.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.change +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.enh.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.feature +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/511.misc.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/513.doc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/513.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/514.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/514.bugfix.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/514.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/515.doc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/515.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/515.enh.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/515.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/515.misc.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.bugfix.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.bugfix.2 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.change +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.change.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/516.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.2 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.3 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.4 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.5 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.bugfix.6 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.change +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.doc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.misc.1 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.misc.2 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.misc.3 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/520.removal +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/521.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/522.bugfix +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/522.enh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/changes/newsfragments/523.misc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/conf.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/contribution.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/confounds_format.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/data_dump_asset.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/data_registries.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/data_types.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/extension.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/logging.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/maps.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/marker.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/masks.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/faq.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/help.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/installation.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/links.inc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/maintaining.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/poly.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/poly_files/patches/version_banner.html +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/poly_files/patches/versions.html +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/poly_files/templates/index.html +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/starting.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/data.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/configuring.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/dumping.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/using/masks.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/docs/whats_new.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/README.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/ignore_words.txt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/decorators.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/api/tests/test_decorators.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/cli.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/parser.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/cli/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/configs/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/conftest.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/_ants_maps_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/_fsl_maps_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/maps/tests/test_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/tests/test_dispatch.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/data/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/_types.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datareader/default.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.codecov.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.codespellignore +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/.gitignore +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/LICENSE +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/README.md +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/Makefile +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/conf.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/index.rst +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/links.inc +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/make.bat +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/doc/references.bib +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/pyproject.toml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/BrainPrint/setup.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/external/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/falff_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/maps_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/reho_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_lost_regions.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_maps_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/markers/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/_temporal_filter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/stats.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/data/collected_h5io_fork.hdf5 +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/registry.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_testing_utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/testing/utils.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/typing/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/typing/_typing.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/typing/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/_config.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/fs.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/logging.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/py.typed +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/justfile +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/pyproject.toml +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/scripts/start.sh +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/setup.cfg +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/setup.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/tox.ini +0 -0
- {junifer-0.0.8.dev306 → junifer-0.0.8.dev314}/uv.lock +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.dev314
|
|
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>
|
|
@@ -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`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix the same features being stored more than once: for each value of the element keys that the data does not depend on (e.g., the VBM features of a subject once per task), when running an element again, and when collecting again (:class:`.SQLiteFeatureStorage` also collected its own output file) by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix the metadata of the preprocessors being replaced by the one of the last preprocessor by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Add the ``processed_element`` argument to the ``store_*`` methods of :class:`.BaseFeatureStorage`, the element being processed, so the concrete storages can name the file of each element; custom storages must accept it by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Store the metadata of the preprocessors as a list, in order, in ``meta["preprocess"]`` by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Use ``upsert="ignore"`` by default in :class:`.SQLiteFeatureStorage`, so the elements already stored are not stored again by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Add the version of ``junifer`` to the MD5 of the features, as for the dependencies of the markers and steps, for reproducibility: features computed with different versions of ``junifer`` are different features, so the differences between features (e.g., between datasets) can only come from the data. Running again with a new version stores the features again, with the same name, next to the ones computed with the previous version by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Raise an error in the ``collect`` method of :class:`.HDF5FeatureStorage` and :class:`.SQLiteFeatureStorage` if a file to collect has more than one element, as ``collect`` only compacts the files of single elements by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Add the "Implementation details" page with the elements, the fields of the metadata and the storage, and document the data types with different element keys when extending DataGrabbers by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Store the features for the element with only the keys that the data type depends on (e.g., only ``subject`` for VBM data, when the elements also have ``task``), and skip the elements already stored by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Add :meth:`.BaseDataGrabber.get_type_element_keys` to get the element keys that the data of a data type depends on 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:
|
|
423
|
+
|
|
424
|
+
.. code-block:: python
|
|
311
425
|
|
|
312
|
-
|
|
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
|
|
@@ -357,7 +478,13 @@ need to implement the following methods:
|
|
|
357
478
|
|
|
358
479
|
- ``get_item``: to get a single item from the dataset.
|
|
359
480
|
- ``get_elements``: to get the list of all elements present in the dataset
|
|
360
|
-
- ``get_element_keys``: to get the keys of the elements in the dataset.
|
|
481
|
+
- ``get_element_keys``: to get the keys of the elements in the dataset. They
|
|
482
|
+
also give the order of the values in each element, which must match the
|
|
483
|
+
parameters of ``get_item``.
|
|
484
|
+
|
|
485
|
+
Optionally, if the data of some data types does not depend on all the keys of
|
|
486
|
+
the element, we can also implement ``get_type_element_keys`` (see
|
|
487
|
+
:ref:`extending_datagrabbers_type_keys`).
|
|
361
488
|
|
|
362
489
|
.. note::
|
|
363
490
|
|
|
@@ -396,17 +523,15 @@ need to remember that for session *ses-03* there is no BOLD data.
|
|
|
396
523
|
from itertools import product
|
|
397
524
|
|
|
398
525
|
|
|
399
|
-
def get_elements(self) -> list[str]:
|
|
526
|
+
def get_elements(self) -> list[tuple[str, str]]:
|
|
400
527
|
subjects = ["sub-01", "sub-02", "sub-03"]
|
|
401
528
|
sessions = ["ses-01", "ses-02"]
|
|
402
529
|
|
|
403
530
|
# If we are not working on BOLD data, we can add "ses-03"
|
|
404
531
|
if "BOLD" not in self.types:
|
|
405
532
|
sessions.append("ses-03")
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
elements.append({"subject": subject, "session": session})
|
|
409
|
-
return elements
|
|
533
|
+
# The values of each element, in the order of the element keys
|
|
534
|
+
return list(product(subjects, sessions))
|
|
410
535
|
|
|
411
536
|
|
|
412
537
|
And finally, we can implement the ``get_element_keys`` method. This method needs
|
|
@@ -419,11 +544,39 @@ method, in the same order.
|
|
|
419
544
|
def get_element_keys(self) -> list[str]:
|
|
420
545
|
return ["subject", "session"]
|
|
421
546
|
|
|
547
|
+
.. _extending_datagrabbers_type_keys:
|
|
548
|
+
|
|
549
|
+
Data types with different keys
|
|
550
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
551
|
+
|
|
552
|
+
By default, the data of every data type depends on all the element keys. If
|
|
553
|
+
the data of a data type only depends on some of them, the DataGrabber can say
|
|
554
|
+
so by implementing ``get_type_element_keys``, which returns the element keys
|
|
555
|
+
that the data of a data type depends on. For example, if the ``T1w`` image of
|
|
556
|
+
our dataset was acquired once for each subject, instead of once for each
|
|
557
|
+
session:
|
|
558
|
+
|
|
559
|
+
.. code-block:: python
|
|
560
|
+
|
|
561
|
+
def get_type_element_keys(self, data_type: str) -> list[str]:
|
|
562
|
+
if data_type == "T1w":
|
|
563
|
+
return ["subject"]
|
|
564
|
+
return ["subject", "session"]
|
|
565
|
+
|
|
566
|
+
Then, the ``T1w`` data (and the features computed from it) is stored once for
|
|
567
|
+
each subject, instead of once for each session (see :ref:`internals`). The
|
|
568
|
+
element keys must still be all the keys that the data types to grab depend on:
|
|
569
|
+
if only ``T1w`` was grabbed, ``get_element_keys`` should return
|
|
570
|
+
``["subject"]`` (and ``get_elements`` and ``get_item`` should only use the
|
|
571
|
+
subject).
|
|
572
|
+
|
|
422
573
|
|
|
423
574
|
So, to summarise, our DataGrabber will look like this:
|
|
424
575
|
|
|
425
576
|
.. code-block:: python
|
|
426
577
|
|
|
578
|
+
from itertools import product
|
|
579
|
+
|
|
427
580
|
from junifer.api.decorators import register_datagrabber
|
|
428
581
|
from junifer.datagrabber import BaseDataGrabber
|
|
429
582
|
|
|
@@ -445,18 +598,15 @@ So, to summarise, our DataGrabber will look like this:
|
|
|
445
598
|
}
|
|
446
599
|
return out
|
|
447
600
|
|
|
448
|
-
def get_elements(self) -> list[str]:
|
|
601
|
+
def get_elements(self) -> list[tuple[str, str]]:
|
|
449
602
|
subjects = ["sub-01", "sub-02", "sub-03"]
|
|
450
603
|
sessions = ["ses-01", "ses-02"]
|
|
451
604
|
|
|
452
605
|
# If we are not working on BOLD data, we can add "ses-03"
|
|
453
606
|
if "BOLD" not in self.types:
|
|
454
607
|
sessions.append("ses-03")
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
for session in sessions:
|
|
458
|
-
elements.append({"subject": subject, "session": session})
|
|
459
|
-
return elements
|
|
608
|
+
# The values of each element, in the order of the element keys
|
|
609
|
+
return list(product(subjects, sessions))
|
|
460
610
|
|
|
461
611
|
def get_element_keys(self) -> list[str]:
|
|
462
612
|
return ["subject", "session"]
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
.. include:: links.inc
|
|
2
|
+
|
|
3
|
+
.. _internals:
|
|
4
|
+
|
|
5
|
+
Implementation details
|
|
6
|
+
======================
|
|
7
|
+
|
|
8
|
+
This section describes some of the assumptions and technical details of
|
|
9
|
+
``junifer``, for developers. See the docstrings of the mentioned functions and
|
|
10
|
+
classes for more details.
|
|
11
|
+
|
|
12
|
+
Elements
|
|
13
|
+
--------
|
|
14
|
+
|
|
15
|
+
* The keys of the elements of a :class:`.PatternDataGrabber`
|
|
16
|
+
(:meth:`.PatternDataGrabber.get_element_keys`) are the replacements used by
|
|
17
|
+
the patterns (including the nested ones) of the data types to grab, in the
|
|
18
|
+
order of ``replacements``.
|
|
19
|
+
* :meth:`.PatternDataGrabber.get_elements` finds the elements of each pattern
|
|
20
|
+
in the files (translating the Unix-like path expansion directives of the
|
|
21
|
+
patterns to a regular expression) and joins the elements of the patterns on
|
|
22
|
+
their common keys (``_join_elements``), so an element is available if it has
|
|
23
|
+
the files of all the data types, regardless of their order.
|
|
24
|
+
* The values of the replacements to grab (:meth:`.PatternDataGrabber.get_replacement_values`)
|
|
25
|
+
are given by ``replacements`` (as a dictionary) or by the fields linked to
|
|
26
|
+
the replacements in ``_REPLACEMENT_FIELDS``, but not both. They filter the
|
|
27
|
+
elements found in the files, and grabbing an element with other values
|
|
28
|
+
raises an error (``_check_element``, called by
|
|
29
|
+
``BaseDataGrabber.__getitem__``).
|
|
30
|
+
* :meth:`.BaseDataGrabber.select_elements` selects the elements to run: the
|
|
31
|
+
selectors must have the same number of values. If they have a value for
|
|
32
|
+
each element key, they are the elements (the dataset is not searched),
|
|
33
|
+
otherwise they select the elements of the dataset that have their values.
|
|
34
|
+
* :class:`.MultipleDataGrabber` joins the elements of its DataGrabbers on
|
|
35
|
+
their common keys, and grabs an element with each DataGrabber using its
|
|
36
|
+
keys. Each data type is grabbed by one DataGrabber, except for the nested
|
|
37
|
+
data types grabbed by a DataGrabber without the main file of the data type,
|
|
38
|
+
which replace the ones of the other DataGrabber.
|
|
39
|
+
|
|
40
|
+
Metadata
|
|
41
|
+
--------
|
|
42
|
+
|
|
43
|
+
The ``meta`` of each data type in the :ref:`data object <data_object>` is
|
|
44
|
+
built by the steps of the pipeline. Each step adds an entry with its class and
|
|
45
|
+
parameters (``UpdateMetaMixin.update_meta``) and its dependencies:
|
|
46
|
+
|
|
47
|
+
.. list-table::
|
|
48
|
+
:widths: auto
|
|
49
|
+
:header-rows: 1
|
|
50
|
+
|
|
51
|
+
* - Key
|
|
52
|
+
- Added by
|
|
53
|
+
- Content
|
|
54
|
+
- In the MD5
|
|
55
|
+
* - ``datagrabber``
|
|
56
|
+
- DataGrabber
|
|
57
|
+
- The class and parameters of the DataGrabber, e.g., ``types``,
|
|
58
|
+
``patterns`` and ``replacements``. For the DataLad-based ones, also the
|
|
59
|
+
dataset ID and commit, and whether the dataset has local changes
|
|
60
|
+
(``datalad_id``, ``datalad_commit_id`` and ``datalad_dirty``), so
|
|
61
|
+
different versions of the dataset give different hashes. For :class:`.MultipleDataGrabber`, also
|
|
62
|
+
``datagrabbers`` with the entries of its DataGrabbers.
|
|
63
|
+
- Yes, except ``datadir`` for the DataLad-based DataGrabbers (which is
|
|
64
|
+
removed from the stored metadata too)
|
|
65
|
+
* - ``element``
|
|
66
|
+
- DataGrabber
|
|
67
|
+
- The element being processed (see below).
|
|
68
|
+
- No
|
|
69
|
+
* - ``_element_keys``
|
|
70
|
+
- DataGrabber
|
|
71
|
+
- The keys of the element that the data depends on (see below).
|
|
72
|
+
- Yes
|
|
73
|
+
* - ``datareader``
|
|
74
|
+
- DataReader
|
|
75
|
+
- The class and parameters of the DataReader.
|
|
76
|
+
- Yes
|
|
77
|
+
* - ``preprocess``
|
|
78
|
+
- Preprocessors
|
|
79
|
+
- The list of the classes and parameters of the preprocessors that
|
|
80
|
+
processed the data, in order.
|
|
81
|
+
- Yes
|
|
82
|
+
* - ``type``
|
|
83
|
+
- Marker
|
|
84
|
+
- The data type, e.g., ``BOLD``.
|
|
85
|
+
- Yes
|
|
86
|
+
* - ``marker``
|
|
87
|
+
- Marker
|
|
88
|
+
- The class and parameters of the marker, with ``name`` as the name of
|
|
89
|
+
the marker followed by the name of the feature, e.g., ``mean_mean``.
|
|
90
|
+
- Yes
|
|
91
|
+
* - ``dependencies``
|
|
92
|
+
- All the steps
|
|
93
|
+
- The names of the dependencies of the steps (their ``_DEPENDENCIES``).
|
|
94
|
+
When storing, they are replaced by their versions, with the version of
|
|
95
|
+
``junifer``, e.g., ``{'junifer': '0.0.8', 'nilearn': '0.14.1'}``.
|
|
96
|
+
- Yes (the versions)
|
|
97
|
+
* - ``name``
|
|
98
|
+
- Storage (``process_meta``)
|
|
99
|
+
- The name of the feature: the data type and the marker name, e.g.,
|
|
100
|
+
``BOLD_mean_mean``.
|
|
101
|
+
- Yes
|
|
102
|
+
|
|
103
|
+
The DataGrabber adds two keys about the element to the ``meta`` of each data
|
|
104
|
+
type (``BaseDataGrabber.__getitem__``):
|
|
105
|
+
|
|
106
|
+
* ``element``: the element being processed, with all its keys. It is the same
|
|
107
|
+
for all the data types of the element.
|
|
108
|
+
* ``_element_keys``: the keys of the element that the data of the data type
|
|
109
|
+
depends on (:meth:`.BaseDataGrabber.get_type_element_keys`).
|
|
110
|
+
For a :class:`.PatternDataGrabber`, the replacements in the patterns of the
|
|
111
|
+
data type.
|
|
112
|
+
|
|
113
|
+
For example, with ``BOLD`` data for each subject and task, and ``VBM_GM`` data
|
|
114
|
+
for each subject, the element ``(sub-01, rest)`` gives:
|
|
115
|
+
|
|
116
|
+
.. code-block::
|
|
117
|
+
|
|
118
|
+
{'BOLD': {'meta': {'_element_keys': ['subject', 'task'],
|
|
119
|
+
'element': {'subject': 'sub-01', 'task': 'rest'},
|
|
120
|
+
...},
|
|
121
|
+
...},
|
|
122
|
+
'VBM_GM': {'meta': {'_element_keys': ['subject'],
|
|
123
|
+
'element': {'subject': 'sub-01', 'task': 'rest'},
|
|
124
|
+
...},
|
|
125
|
+
...}}
|
|
126
|
+
|
|
127
|
+
When storing the output of a marker, ``process_meta`` (in ``junifer.storage.utils``):
|
|
128
|
+
|
|
129
|
+
* Removes ``element`` from the metadata and returns the element of the data,
|
|
130
|
+
with only the keys in ``_element_keys`` (all the keys of ``element`` if it
|
|
131
|
+
is not set).
|
|
132
|
+
* Computes the MD5 hash of the metadata, which identifies the feature. It
|
|
133
|
+
includes ``_element_keys`` and the versions of the dependencies of the
|
|
134
|
+
steps and of ``junifer``, but not ``element``: the data of all the elements
|
|
135
|
+
of a feature have the same hash, and the features computed with different
|
|
136
|
+
versions of ``junifer`` (or of the dependencies) have different hashes.
|
|
137
|
+
This is by design, for reproducibility: the differences between features
|
|
138
|
+
with the same hash can only come from the data, not from different
|
|
139
|
+
versions of the algorithms. A feature computed again with another version
|
|
140
|
+
is a new feature, with the same name, so it must be read by its MD5.
|
|
141
|
+
|
|
142
|
+
Storage
|
|
143
|
+
-------
|
|
144
|
+
|
|
145
|
+
* The data is stored for the element of the data (the element with only the
|
|
146
|
+
keys in ``_element_keys``), so the data that does not depend on a key (e.g.,
|
|
147
|
+
the ``VBM_GM`` data for the tasks of a subject) is stored once.
|
|
148
|
+
* :meth:`.BaseFeatureStorage.store` passes the element being processed to
|
|
149
|
+
the methods storing the metadata and the data (``store_metadata``,
|
|
150
|
+
``store_vector``, etc.) as ``processed_element``, besides the element of the
|
|
151
|
+
data (``element``). The storages that write a file for each element (with
|
|
152
|
+
``single_output=False``) name it after the element being processed, e.g.,
|
|
153
|
+
``element_sub-01_rest_out.hdf5``, so that the processes running different
|
|
154
|
+
elements in parallel never write to the same file. The storages without
|
|
155
|
+
files (e.g., databases) can ignore it, but their methods must accept it.
|
|
156
|
+
* The data already stored for an element is not stored again (the storages
|
|
157
|
+
skip the existing elements, :class:`.SQLiteFeatureStorage` with
|
|
158
|
+
``upsert="ignore"`` by default).
|
|
159
|
+
* ``collect`` only collects the files of single elements (one element for
|
|
160
|
+
each feature, as written for each element with ``single_output=False``),
|
|
161
|
+
and raises an error otherwise. The data of an element can be in the files
|
|
162
|
+
of several elements being processed (e.g., the ``VBM_GM`` data of
|
|
163
|
+
``sub-01`` in the files of each of its tasks), and it is only collected
|
|
164
|
+
once.
|
|
165
|
+
* :meth:`.HDF5FeatureStorage.collect` works in two passes: the first one reads
|
|
166
|
+
the metadata and the elements of each file, to know which files to collect
|
|
167
|
+
for each feature (one for each element), and the second one collects the
|
|
168
|
+
data of each feature from these files, in chunks. Each file is read once in
|
|
169
|
+
the first pass, and once for each of its features in the second one.
|