junifer 0.0.7.dev72__tar.gz → 0.0.7.dev93__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.7.dev72 → junifer-0.0.7.dev93}/PKG-INFO +1 -1
- junifer-0.0.7.dev93/docs/changes/newsfragments/450.doc +1 -0
- junifer-0.0.7.dev93/docs/changes/newsfragments/450.feature +1 -0
- junifer-0.0.7.dev93/docs/changes/newsfragments/451.doc +1 -0
- junifer-0.0.7.dev93/docs/changes/newsfragments/451.feature +1 -0
- junifer-0.0.7.dev93/docs/extending/data_registries.rst +70 -0
- junifer-0.0.7.dev93/docs/extending/data_types.rst +57 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/extension.rst +2 -2
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/index.rst +2 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/_version.py +2 -2
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/decorators.py +56 -11
- junifer-0.0.7.dev93/junifer/api/tests/test_decorators.py +32 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/__init__.pyi +4 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/_dispatch.py +102 -53
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/_coordinates.py +1 -2
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/_masks.py +1 -2
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/_parcellations.py +1 -2
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/tests/test_parcellations.py +7 -0
- junifer-0.0.7.dev93/junifer/data/tests/test_dispatch.py +87 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/__init__.pyi +11 -1
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/pattern_validation_mixin.py +212 -85
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +104 -1
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/typing/__init__.pyi +2 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/typing/_typing.py +4 -1
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/PKG-INFO +1 -1
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/SOURCES.txt +8 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.dockerignore +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/dependabot.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/pull_request_template.md +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/docker-ci-publish.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/docker-docs-publish.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.gitignore +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.gitmodules +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/AUTHORS.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/Dockerfile-ci +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/Dockerfile-docs +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/LICENSE.md +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/README.md +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/codecov.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/conda-env.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/Makefile +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/_templates/versions.html +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/api.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/cli.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/configs.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/data.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/index.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/markers.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/stats.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/storage.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/testing.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/api/utils.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/builtin.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/newsfragments/333.enh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/newsfragments/441.misc +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/newsfragments/443.feature +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/changes/newsfragments/444.bugfix +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/conf.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/contribution.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/marker.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/masks.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/faq.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/help.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/index.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/installation.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/links.inc +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/maintaining.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/redirect.html +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/starting.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/data.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/index.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/using/codeless.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/using/index.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/using/masks.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/using/queueing.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/using/running.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/docs/whats_new.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/README.rst +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/ignore_words.txt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/functions.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/cli.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/parser.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/tests/test_parser.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/cli/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/conftest.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datareader/default.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/markers/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/_temporal_slicer.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/stats.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/storage/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/registry.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/testing/utils.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/_config.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/fs.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/logging.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/py.typed +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/pyproject.toml +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/setup.cfg +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/setup.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.7.
|
3
|
+
Version: 0.0.7.dev93
|
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
|
+
Add documentation on extending data registries by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Enable data registries to be extended by exposing :class:`.BasePipelineDataRegistry` and introducing :func:`.register_data_registry` decorator by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Add documentation on adding data types by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Enable data types to be added by introducing :func:`.register_data_type` by `Synchon Mandal`_
|
@@ -0,0 +1,70 @@
|
|
1
|
+
.. include:: ../links.inc
|
2
|
+
|
3
|
+
.. _data_registries:
|
4
|
+
|
5
|
+
Creating a Data Registry
|
6
|
+
========================
|
7
|
+
|
8
|
+
What is a data registry
|
9
|
+
-----------------------
|
10
|
+
|
11
|
+
Data Registry is an object which manages pipeline data (like parcellations,
|
12
|
+
coordinates and masks) based on the scope. ``junifer`` comes with the
|
13
|
+
following in-built data registries:
|
14
|
+
|
15
|
+
* :class:`.ParcellationRegistry` for parcellations
|
16
|
+
* :class:`.CoordinatesRegistry` for coordinates
|
17
|
+
* :class:`.MaskRegistry` for masks
|
18
|
+
|
19
|
+
You interact with them indirectly via :func:`.get_data`, :func:`.load_data`,
|
20
|
+
:func:`.list_data`, :func:`.register_data` and :func:`.deregister_data`. The
|
21
|
+
``kind`` parameter in them directs which data registry to interact with. These
|
22
|
+
in turn supply preprocessors and markers with their necessary data for computation.
|
23
|
+
|
24
|
+
How to make a data registry
|
25
|
+
---------------------------
|
26
|
+
|
27
|
+
Ideally you would not need to create a custom data registry if you work with fMRI data.
|
28
|
+
In case you work with other modalities like EEG, you might want to create a
|
29
|
+
data registry for montages. Here is how you would go about it:
|
30
|
+
|
31
|
+
#. Check :ref:`extending junifer <extending_extension>` on how to create a
|
32
|
+
*junifer extension* if you have not done so.
|
33
|
+
#. Create the data registry in the *extension script* like so:
|
34
|
+
|
35
|
+
.. code-block:: python
|
36
|
+
|
37
|
+
from junifer.api.decorators import register_data_registry
|
38
|
+
from junifer.data import BasePipelineDataRegistry
|
39
|
+
|
40
|
+
|
41
|
+
@register_data_registry("montage")
|
42
|
+
class MontageDataRegistry(BasePipelineDataRegistry):
|
43
|
+
def __init__(self):
|
44
|
+
super().__init__()
|
45
|
+
|
46
|
+
def register(self):
|
47
|
+
pass
|
48
|
+
|
49
|
+
def deregister(self):
|
50
|
+
pass
|
51
|
+
|
52
|
+
def load(self):
|
53
|
+
pass
|
54
|
+
|
55
|
+
def get(self):
|
56
|
+
pass
|
57
|
+
|
58
|
+
|
59
|
+
* :func:`.register_data_registry` registers a class with the name passed in
|
60
|
+
the argument, ``"montage"`` in this case.
|
61
|
+
* Inheriting from :class:`.BasePipelineDataRegistry` takes care of the class
|
62
|
+
acting as a data registry.
|
63
|
+
* :meth:`.BasePipelineDataRegistry.register`,
|
64
|
+
:meth:`.BasePipelineDataRegistry.deregister`,
|
65
|
+
:meth:`.BasePipelineDataRegistry.load` and
|
66
|
+
:meth:`.BasePipelineDataRegistry.get` need to be implemented
|
67
|
+
(check other registries for reference implementations).
|
68
|
+
|
69
|
+
#. Pass ``kind="montage"`` in ``*_data`` functions to
|
70
|
+
verify if your data registry is set up properly.
|
@@ -0,0 +1,57 @@
|
|
1
|
+
.. include:: ../links.inc
|
2
|
+
|
3
|
+
.. _adding_data_types:
|
4
|
+
|
5
|
+
Adding Data Types
|
6
|
+
=================
|
7
|
+
|
8
|
+
``junifer`` supports most of the :ref:`data types <data_types>` required for fMRI
|
9
|
+
but also provides a way to add custom data types in case you work with other
|
10
|
+
modalities like EEG.
|
11
|
+
|
12
|
+
How to add a data type
|
13
|
+
----------------------
|
14
|
+
|
15
|
+
#. Check :ref:`extending junifer <extending_extension>` on how to create a
|
16
|
+
*junifer extension* if you have not done so.
|
17
|
+
#. Define the data type schema in the *extension script* like so:
|
18
|
+
|
19
|
+
.. code-block:: python
|
20
|
+
|
21
|
+
from junifer.datagrabber import DataTypeSchema
|
22
|
+
|
23
|
+
|
24
|
+
dtype_schema: DataTypeSchema = {
|
25
|
+
"mandatory": ["pattern"],
|
26
|
+
"optional": {
|
27
|
+
"mask": {
|
28
|
+
"mandatory": ["pattern"],
|
29
|
+
"optional": [],
|
30
|
+
},
|
31
|
+
},
|
32
|
+
}
|
33
|
+
|
34
|
+
* The :obj:`.DataTypeSchema` has two mandatory keys:
|
35
|
+
|
36
|
+
* ``mandatory`` : list of str
|
37
|
+
* ``optional`` : dict of str and :obj:`.OptionalTypeSchema`
|
38
|
+
|
39
|
+
* ``mandatory`` defines the keys that must be present when defining a *pattern*
|
40
|
+
in a DataGrabber.
|
41
|
+
* ``optional`` defines the mapping from *sub-types* that are optional, to their patterns.
|
42
|
+
The patterns in turn require a ``mandatory`` key and an ``optional`` key both
|
43
|
+
just being the keys that must be there if the optional key is found. It's
|
44
|
+
possible that the *sub-type* (``mask`` in the example) can be absent from the dataset.
|
45
|
+
|
46
|
+
#. Register the data type before defining / using a DataGrabber like so:
|
47
|
+
|
48
|
+
.. code-block:: python
|
49
|
+
|
50
|
+
from junifer.datagrabber import register_data_type
|
51
|
+
...
|
52
|
+
|
53
|
+
|
54
|
+
# registers the data type as "dtype"
|
55
|
+
register_data_type(name="dtype", schema=dtype_schema)
|
56
|
+
|
57
|
+
...
|
@@ -5,8 +5,8 @@
|
|
5
5
|
Creating a ``junifer`` extension
|
6
6
|
================================
|
7
7
|
|
8
|
-
``junifer`` is designed to be easily extensible. Through the use of
|
9
|
-
and decorators, you can easily add new functionality to ``junifer`` during
|
8
|
+
``junifer`` is designed to be easily extensible. Through the use of data registries,
|
9
|
+
a component registry and decorators, you can easily add new functionality to ``junifer`` during
|
10
10
|
runtime. This is done by creating a new Python module and importing it before
|
11
11
|
running ``junifer``.
|
12
12
|
|
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '0.0.7.
|
21
|
-
__version_tuple__ = version_tuple = (0, 0, 7, '
|
20
|
+
__version__ = version = '0.0.7.dev93'
|
21
|
+
__version_tuple__ = version_tuple = (0, 0, 7, 'dev93')
|
@@ -5,11 +5,19 @@
|
|
5
5
|
# Synchon Mandal <s.mandal@fz-juelich.de>
|
6
6
|
# License: AGPL
|
7
7
|
|
8
|
+
from ..data import DataDispatcher
|
8
9
|
from ..pipeline import PipelineComponentRegistry
|
9
|
-
from ..typing import
|
10
|
+
from ..typing import (
|
11
|
+
DataGrabberLike,
|
12
|
+
DataRegistryLike,
|
13
|
+
MarkerLike,
|
14
|
+
PreprocessorLike,
|
15
|
+
StorageLike,
|
16
|
+
)
|
10
17
|
|
11
18
|
|
12
19
|
__all__ = [
|
20
|
+
"register_data_registry",
|
13
21
|
"register_datagrabber",
|
14
22
|
"register_datareader",
|
15
23
|
"register_marker",
|
@@ -25,12 +33,12 @@ def register_datagrabber(klass: DataGrabberLike) -> DataGrabberLike:
|
|
25
33
|
|
26
34
|
Parameters
|
27
35
|
----------
|
28
|
-
klass: class
|
36
|
+
klass : class
|
29
37
|
The class of the DataGrabber to register.
|
30
38
|
|
31
39
|
Returns
|
32
40
|
-------
|
33
|
-
|
41
|
+
class
|
34
42
|
The unmodified input class.
|
35
43
|
|
36
44
|
Notes
|
@@ -52,12 +60,12 @@ def register_datareader(klass: type) -> type:
|
|
52
60
|
|
53
61
|
Parameters
|
54
62
|
----------
|
55
|
-
klass: class
|
63
|
+
klass : class
|
56
64
|
The class of the DataReader to register.
|
57
65
|
|
58
66
|
Returns
|
59
67
|
-------
|
60
|
-
|
68
|
+
class
|
61
69
|
The unmodified input class.
|
62
70
|
|
63
71
|
Notes
|
@@ -79,12 +87,12 @@ def register_preprocessor(klass: PreprocessorLike) -> PreprocessorLike:
|
|
79
87
|
|
80
88
|
Parameters
|
81
89
|
----------
|
82
|
-
klass: class
|
90
|
+
klass : class
|
83
91
|
The class of the preprocessor to register.
|
84
92
|
|
85
93
|
Returns
|
86
94
|
-------
|
87
|
-
|
95
|
+
class
|
88
96
|
The unmodified input class.
|
89
97
|
|
90
98
|
"""
|
@@ -102,12 +110,12 @@ def register_marker(klass: MarkerLike) -> MarkerLike:
|
|
102
110
|
|
103
111
|
Parameters
|
104
112
|
----------
|
105
|
-
klass: class
|
113
|
+
klass : class
|
106
114
|
The class of the marker to register.
|
107
115
|
|
108
116
|
Returns
|
109
117
|
-------
|
110
|
-
|
118
|
+
class
|
111
119
|
The unmodified input class.
|
112
120
|
|
113
121
|
"""
|
@@ -125,12 +133,12 @@ def register_storage(klass: StorageLike) -> StorageLike:
|
|
125
133
|
|
126
134
|
Parameters
|
127
135
|
----------
|
128
|
-
klass: class
|
136
|
+
klass : class
|
129
137
|
The class of the storage to register.
|
130
138
|
|
131
139
|
Returns
|
132
140
|
-------
|
133
|
-
|
141
|
+
class
|
134
142
|
The unmodified input class.
|
135
143
|
|
136
144
|
"""
|
@@ -139,3 +147,40 @@ def register_storage(klass: StorageLike) -> StorageLike:
|
|
139
147
|
klass=klass,
|
140
148
|
)
|
141
149
|
return klass
|
150
|
+
|
151
|
+
|
152
|
+
def register_data_registry(name: str) -> DataRegistryLike:
|
153
|
+
"""Registry registration decorator.
|
154
|
+
|
155
|
+
Registers the data registry as ``name``.
|
156
|
+
|
157
|
+
Parameters
|
158
|
+
----------
|
159
|
+
name : str
|
160
|
+
The name of the data registry.
|
161
|
+
|
162
|
+
Returns
|
163
|
+
-------
|
164
|
+
class
|
165
|
+
The unmodified input class.
|
166
|
+
|
167
|
+
"""
|
168
|
+
|
169
|
+
def decorator(klass: DataRegistryLike) -> DataRegistryLike:
|
170
|
+
"""Actual decorator.
|
171
|
+
|
172
|
+
Parameters
|
173
|
+
----------
|
174
|
+
klass : class
|
175
|
+
The class of the data registry to register.
|
176
|
+
|
177
|
+
Returns
|
178
|
+
-------
|
179
|
+
class
|
180
|
+
The unmodified input class.
|
181
|
+
|
182
|
+
"""
|
183
|
+
DataDispatcher()[name] = klass
|
184
|
+
return klass
|
185
|
+
|
186
|
+
return decorator
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"""Provide tests for public decorators."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from junifer.api.decorators import register_data_registry
|
7
|
+
from junifer.data import BasePipelineDataRegistry, DataDispatcher
|
8
|
+
|
9
|
+
|
10
|
+
def test_register_data_registry() -> None:
|
11
|
+
"""Test data registry registration."""
|
12
|
+
|
13
|
+
@register_data_registry("dumb")
|
14
|
+
class DumDum(BasePipelineDataRegistry):
|
15
|
+
def __init__(self):
|
16
|
+
super().__init__()
|
17
|
+
|
18
|
+
def register(self):
|
19
|
+
pass
|
20
|
+
|
21
|
+
def deregister(self):
|
22
|
+
pass
|
23
|
+
|
24
|
+
def load(self):
|
25
|
+
pass
|
26
|
+
|
27
|
+
def get(self):
|
28
|
+
pass
|
29
|
+
|
30
|
+
assert "dumb" in DataDispatcher()
|
31
|
+
_ = DataDispatcher().pop("dumb")
|
32
|
+
assert "dumb" not in DataDispatcher()
|
@@ -1,5 +1,7 @@
|
|
1
1
|
__all__ = [
|
2
|
+
"BasePipelineDataRegistry",
|
2
3
|
"CoordinatesRegistry",
|
4
|
+
"DataDispatcher",
|
3
5
|
"ParcellationRegistry",
|
4
6
|
"MaskRegistry",
|
5
7
|
"get_data",
|
@@ -12,11 +14,13 @@ __all__ = [
|
|
12
14
|
"utils",
|
13
15
|
]
|
14
16
|
|
17
|
+
from .pipeline_data_registry_base import BasePipelineDataRegistry
|
15
18
|
from .coordinates import CoordinatesRegistry
|
16
19
|
from .parcellations import ParcellationRegistry
|
17
20
|
from .masks import MaskRegistry
|
18
21
|
|
19
22
|
from ._dispatch import (
|
23
|
+
DataDispatcher,
|
20
24
|
get_data,
|
21
25
|
list_data,
|
22
26
|
load_data,
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
4
|
# License: AGPL
|
5
5
|
|
6
|
+
from collections.abc import Iterator, MutableMapping
|
6
7
|
from pathlib import Path
|
7
8
|
from typing import (
|
8
9
|
TYPE_CHECKING,
|
@@ -18,13 +19,14 @@ from ..utils import raise_error
|
|
18
19
|
from .coordinates import CoordinatesRegistry
|
19
20
|
from .masks import MaskRegistry
|
20
21
|
from .parcellations import ParcellationRegistry
|
22
|
+
from .pipeline_data_registry_base import BasePipelineDataRegistry
|
21
23
|
|
22
24
|
|
23
25
|
if TYPE_CHECKING:
|
24
26
|
from nibabel.nifti1 import Nifti1Image
|
25
27
|
|
26
|
-
|
27
28
|
__all__ = [
|
29
|
+
"DataDispatcher",
|
28
30
|
"deregister_data",
|
29
31
|
"get_data",
|
30
32
|
"list_data",
|
@@ -33,6 +35,77 @@ __all__ = [
|
|
33
35
|
]
|
34
36
|
|
35
37
|
|
38
|
+
class DataDispatcher(MutableMapping):
|
39
|
+
"""Class for helping dynamic data dispatch."""
|
40
|
+
|
41
|
+
_instance = None
|
42
|
+
|
43
|
+
def __new__(cls):
|
44
|
+
# Make class singleton
|
45
|
+
if cls._instance is None:
|
46
|
+
cls._instance = super().__new__(cls)
|
47
|
+
# Set registries
|
48
|
+
cls._registries: dict[str, type[BasePipelineDataRegistry]] = {}
|
49
|
+
cls._builtin: dict[str, type[BasePipelineDataRegistry]] = {}
|
50
|
+
cls._external: dict[str, type[BasePipelineDataRegistry]] = {}
|
51
|
+
cls._builtin.update(
|
52
|
+
{
|
53
|
+
"coordinates": CoordinatesRegistry,
|
54
|
+
"parcellation": ParcellationRegistry,
|
55
|
+
"mask": MaskRegistry,
|
56
|
+
}
|
57
|
+
)
|
58
|
+
cls._registries.update(cls._builtin)
|
59
|
+
return cls._instance
|
60
|
+
|
61
|
+
def __getitem__(self, key: str) -> type[BasePipelineDataRegistry]:
|
62
|
+
return self._registries[key]
|
63
|
+
|
64
|
+
def __iter__(self) -> Iterator[str]:
|
65
|
+
return iter(self._registries)
|
66
|
+
|
67
|
+
def __len__(self) -> int:
|
68
|
+
return len(self._registries)
|
69
|
+
|
70
|
+
def __delitem__(self, key: str) -> None:
|
71
|
+
# Internal check
|
72
|
+
if key in self._builtin:
|
73
|
+
raise_error(f"Cannot delete in-built key: {key}")
|
74
|
+
# Non-existing key
|
75
|
+
if key not in self._external:
|
76
|
+
raise_error(klass=KeyError, msg=key)
|
77
|
+
# Update external
|
78
|
+
_ = self._external.pop(key)
|
79
|
+
# Update global
|
80
|
+
_ = self._registries.pop(key)
|
81
|
+
|
82
|
+
def __setitem__(
|
83
|
+
self, key: str, value: type[BasePipelineDataRegistry]
|
84
|
+
) -> None:
|
85
|
+
# Internal check
|
86
|
+
if key in self._builtin:
|
87
|
+
raise_error(f"Cannot set value for in-built key: {key}")
|
88
|
+
# Value type check
|
89
|
+
if not issubclass(value, BasePipelineDataRegistry):
|
90
|
+
raise_error(f"Invalid value type: {type(value)}")
|
91
|
+
# Update external
|
92
|
+
self._external[key] = value
|
93
|
+
# Update global
|
94
|
+
self._registries[key] = value
|
95
|
+
|
96
|
+
def popitem():
|
97
|
+
"""Not implemented."""
|
98
|
+
pass
|
99
|
+
|
100
|
+
def clear(self):
|
101
|
+
"""Not implemented."""
|
102
|
+
pass
|
103
|
+
|
104
|
+
def setdefault(self, key: str, value=None):
|
105
|
+
"""Not implemented."""
|
106
|
+
pass
|
107
|
+
|
108
|
+
|
36
109
|
def get_data(
|
37
110
|
kind: str,
|
38
111
|
names: Union[
|
@@ -76,27 +149,16 @@ def get_data(
|
|
76
149
|
If ``kind`` is invalid value.
|
77
150
|
|
78
151
|
"""
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
elif kind == "parcellation":
|
87
|
-
return ParcellationRegistry().get(
|
88
|
-
parcellations=names,
|
89
|
-
target_data=target_data,
|
90
|
-
extra_input=extra_input,
|
91
|
-
)
|
92
|
-
elif kind == "mask":
|
93
|
-
return MaskRegistry().get(
|
94
|
-
masks=names,
|
152
|
+
try:
|
153
|
+
registry = DataDispatcher()[kind]
|
154
|
+
except KeyError:
|
155
|
+
raise_error(f"Unknown data kind: {kind}")
|
156
|
+
else:
|
157
|
+
return registry().get(
|
158
|
+
names,
|
95
159
|
target_data=target_data,
|
96
160
|
extra_input=extra_input,
|
97
161
|
)
|
98
|
-
else: # pragma: no cover
|
99
|
-
raise_error(f"Unknown data kind: {kind}")
|
100
162
|
|
101
163
|
|
102
164
|
def list_data(kind: str) -> list[str]:
|
@@ -119,14 +181,12 @@ def list_data(kind: str) -> list[str]:
|
|
119
181
|
|
120
182
|
"""
|
121
183
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
return ParcellationRegistry().list
|
126
|
-
elif kind == "mask":
|
127
|
-
return MaskRegistry().list
|
128
|
-
else: # pragma: no cover
|
184
|
+
try:
|
185
|
+
registry = DataDispatcher()[kind]
|
186
|
+
except KeyError:
|
129
187
|
raise_error(f"Unknown data kind: {kind}")
|
188
|
+
else:
|
189
|
+
return registry().list
|
130
190
|
|
131
191
|
|
132
192
|
def load_data(
|
@@ -165,15 +225,12 @@ def load_data(
|
|
165
225
|
If ``kind`` is invalid value.
|
166
226
|
|
167
227
|
"""
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
elif kind == "parcellation":
|
172
|
-
return ParcellationRegistry().load(name=name, **kwargs)
|
173
|
-
elif kind == "mask":
|
174
|
-
return MaskRegistry().load(name=name, **kwargs)
|
175
|
-
else: # pragma: no cover
|
228
|
+
try:
|
229
|
+
registry = DataDispatcher()[kind]
|
230
|
+
except KeyError:
|
176
231
|
raise_error(f"Unknown data kind: {kind}")
|
232
|
+
else:
|
233
|
+
return registry().load(name, **kwargs)
|
177
234
|
|
178
235
|
|
179
236
|
def register_data(
|
@@ -205,20 +262,14 @@ def register_data(
|
|
205
262
|
|
206
263
|
"""
|
207
264
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
)
|
212
|
-
|
213
|
-
return
|
214
|
-
name=name, space=space, overwrite=overwrite, **kwargs
|
215
|
-
)
|
216
|
-
elif kind == "mask":
|
217
|
-
return MaskRegistry().register(
|
265
|
+
try:
|
266
|
+
registry = DataDispatcher()[kind]
|
267
|
+
except KeyError:
|
268
|
+
raise_error(f"Unknown data kind: {kind}")
|
269
|
+
else:
|
270
|
+
return registry().register(
|
218
271
|
name=name, space=space, overwrite=overwrite, **kwargs
|
219
272
|
)
|
220
|
-
else: # pragma: no cover
|
221
|
-
raise_error(f"Unknown data kind: {kind}")
|
222
273
|
|
223
274
|
|
224
275
|
def deregister_data(kind: str, name: str) -> None:
|
@@ -238,11 +289,9 @@ def deregister_data(kind: str, name: str) -> None:
|
|
238
289
|
|
239
290
|
"""
|
240
291
|
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
return ParcellationRegistry().deregister(name=name)
|
245
|
-
elif kind == "mask":
|
246
|
-
return MaskRegistry().deregister(name=name)
|
247
|
-
else: # pragma: no cover
|
292
|
+
try:
|
293
|
+
registry = DataDispatcher()[kind]
|
294
|
+
except KeyError:
|
248
295
|
raise_error(f"Unknown data kind: {kind}")
|
296
|
+
else:
|
297
|
+
return registry().deregister(name=name)
|
@@ -13,7 +13,6 @@ from junifer_data import get
|
|
13
13
|
from numpy.typing import ArrayLike
|
14
14
|
|
15
15
|
from ...utils import logger, raise_error
|
16
|
-
from ...utils.singleton import Singleton
|
17
16
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
18
17
|
from ..utils import JUNIFER_DATA_PARAMS, get_dataset_path, get_native_warper
|
19
18
|
from ._ants_coordinates_warper import ANTsCoordinatesWarper
|
@@ -23,7 +22,7 @@ from ._fsl_coordinates_warper import FSLCoordinatesWarper
|
|
23
22
|
__all__ = ["CoordinatesRegistry"]
|
24
23
|
|
25
24
|
|
26
|
-
class CoordinatesRegistry(BasePipelineDataRegistry
|
25
|
+
class CoordinatesRegistry(BasePipelineDataRegistry):
|
27
26
|
"""Class for coordinates data registry.
|
28
27
|
|
29
28
|
This class is a singleton and is used for managing available coordinates
|
@@ -24,7 +24,6 @@ from nilearn.masking import (
|
|
24
24
|
)
|
25
25
|
|
26
26
|
from ...utils import logger, raise_error
|
27
|
-
from ...utils.singleton import Singleton
|
28
27
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
29
28
|
from ..template_spaces import get_template
|
30
29
|
from ..utils import (
|
@@ -216,7 +215,7 @@ def compute_brain_mask(
|
|
216
215
|
return nimg.new_img_like(target_data["data"], mask) # type: ignore
|
217
216
|
|
218
217
|
|
219
|
-
class MaskRegistry(BasePipelineDataRegistry
|
218
|
+
class MaskRegistry(BasePipelineDataRegistry):
|
220
219
|
"""Class for mask data registry.
|
221
220
|
|
222
221
|
This class is a singleton and is used for managing available mask
|
@@ -16,7 +16,6 @@ import pandas as pd
|
|
16
16
|
from junifer_data import get
|
17
17
|
|
18
18
|
from ...utils import logger, raise_error, warn_with_log
|
19
|
-
from ...utils.singleton import Singleton
|
20
19
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
21
20
|
from ..utils import (
|
22
21
|
JUNIFER_DATA_PARAMS,
|
@@ -38,7 +37,7 @@ __all__ = [
|
|
38
37
|
]
|
39
38
|
|
40
39
|
|
41
|
-
class ParcellationRegistry(BasePipelineDataRegistry
|
40
|
+
class ParcellationRegistry(BasePipelineDataRegistry):
|
42
41
|
"""Class for parcellation data registry.
|
43
42
|
|
44
43
|
This class is a singleton and is used for managing available parcellation
|
{junifer-0.0.7.dev72 → junifer-0.0.7.dev93}/junifer/data/parcellations/tests/test_parcellations.py
RENAMED
@@ -14,6 +14,7 @@ from nilearn.image import new_img_like, resample_to_img
|
|
14
14
|
from numpy.testing import assert_array_almost_equal, assert_array_equal
|
15
15
|
|
16
16
|
from junifer.data import (
|
17
|
+
deregister_data,
|
17
18
|
get_data,
|
18
19
|
list_data,
|
19
20
|
load_data,
|
@@ -1245,3 +1246,9 @@ def test_get_multi_different_space() -> None:
|
|
1245
1246
|
],
|
1246
1247
|
target_data=element_data["VBM_GM"],
|
1247
1248
|
)
|
1249
|
+
|
1250
|
+
|
1251
|
+
def test_deregister() -> None:
|
1252
|
+
"""Test parcellation deregistration."""
|
1253
|
+
deregister_data(kind="parcellation", name="testparc_3")
|
1254
|
+
assert "testparc_3" not in list_data(kind="parcellation")
|