junifer 0.0.6.dev380__tar.gz → 0.0.6.dev389__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.6.dev380 → junifer-0.0.6.dev389}/PKG-INFO +1 -1
- junifer-0.0.6.dev389/docs/changes/newsfragments/319.enh +1 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/_version.py +2 -2
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/functions.py +31 -11
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/gnu_parallel_local_adapter.py +3 -2
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/htcondor_adapter.py +3 -2
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/tests/test_functions.py +115 -28
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/parser.py +9 -5
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/base.py +9 -11
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/datalad_base.py +4 -3
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/pattern.py +3 -3
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/typing/__init__.pyi +4 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/typing/_typing.py +4 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/PKG-INFO +1 -1
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/SOURCES.txt +1 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.dockerignore +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/dependabot.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/pull_request_template.md +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/docker-ci-publish.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/docker-docs-publish.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/workflows/pypi.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.gitignore +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.gitmodules +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/AUTHORS.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/Dockerfile-ci +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/Dockerfile-docs +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/LICENSE.md +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/README.md +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/codecov.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/conda-env.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/Makefile +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/_templates/versions.html +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/api.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/cli.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/configs.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/data.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/index.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/markers.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/stats.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/storage.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/testing.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/api/utils.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/builtin.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/335.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/354.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/355.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/356.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/357.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/358.doc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/359.doc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/360.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/361.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/362.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/367.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/368.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/369.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/370.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/372.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/373.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/374.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/380.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/382.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/383.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/384.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/385.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/386.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/387.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/387.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/388.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/389.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/390.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/390.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/391.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/392.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/393.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/395.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/398.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/401.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/402.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/402.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/403.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/404.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/404.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/405.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/405.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/407.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/408.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/408.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/409.bugfix +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/409.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/411.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/411.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/412.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/412.feature +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/413.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/414.misc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/415.change +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/changes/newsfragments/416.enh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/conf.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/contribution.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/extension.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/index.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/marker.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/masks.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/faq.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/help.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/index.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/installation.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/links.inc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/maintaining.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/redirect.html +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/starting.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/data.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/index.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/using/codeless.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/using/index.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/using/masks.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/using/queueing.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/using/running.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/docs/whats_new.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/README.rst +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/ignore_words.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/decorators.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/cli.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/tests/test_parser.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/cli/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/conftest.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/CogAR_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Empathy_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Motor_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/MultiTask_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/PhysioStress_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Rew_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/Somatosensory_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/ToM_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/VigAtt_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/WM_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/eMDN_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/eSAD_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/VOIs/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/data/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datareader/default.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/markers/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/stats.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/storage/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/registry.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/testing/utils.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/_config.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/fs.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/logging.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/py.typed +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/pyproject.toml +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/setup.cfg +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/setup.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.6.
|
3
|
+
Version: 0.0.6.dev389
|
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
|
+
Raise error when partial or complete element selectors are invalid when running the pipeline by `Synchon Mandal`_
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.0.6.
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 6, '
|
15
|
+
__version__ = version = '0.0.6.dev389'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 6, 'dev389')
|
@@ -20,7 +20,13 @@ from ..pipeline import (
|
|
20
20
|
)
|
21
21
|
from ..preprocess import BasePreprocessor
|
22
22
|
from ..storage import BaseFeatureStorage
|
23
|
-
from ..typing import
|
23
|
+
from ..typing import (
|
24
|
+
DataGrabberLike,
|
25
|
+
Elements,
|
26
|
+
MarkerLike,
|
27
|
+
PreprocessorLike,
|
28
|
+
StorageLike,
|
29
|
+
)
|
24
30
|
from ..utils import logger, raise_error, warn_with_log, yaml
|
25
31
|
|
26
32
|
|
@@ -121,7 +127,7 @@ def run(
|
|
121
127
|
markers: list[dict],
|
122
128
|
storage: dict,
|
123
129
|
preprocessors: Optional[list[dict]] = None,
|
124
|
-
elements: Optional[
|
130
|
+
elements: Optional[Elements] = None,
|
125
131
|
) -> None:
|
126
132
|
"""Run the pipeline on the selected element.
|
127
133
|
|
@@ -147,7 +153,7 @@ def run(
|
|
147
153
|
List of preprocessors to use. Each preprocessor is a dict with at
|
148
154
|
least a key ``kind`` specifying the preprocessor to use. All other keys
|
149
155
|
are passed to the preprocessor constructor (default None).
|
150
|
-
elements : list
|
156
|
+
elements : list or None, optional
|
151
157
|
Element(s) to process. Will be used to index the DataGrabber
|
152
158
|
(default None).
|
153
159
|
|
@@ -155,6 +161,8 @@ def run(
|
|
155
161
|
------
|
156
162
|
ValueError
|
157
163
|
If ``workdir.cleanup=False`` when ``len(elements) > 1``.
|
164
|
+
RuntimeError
|
165
|
+
If invalid element selectors are found.
|
158
166
|
|
159
167
|
"""
|
160
168
|
# Conditional to handle workdir config
|
@@ -208,10 +216,22 @@ def run(
|
|
208
216
|
# Fit elements
|
209
217
|
with datagrabber_object:
|
210
218
|
if elements is not None:
|
211
|
-
|
212
|
-
|
213
|
-
):
|
219
|
+
# Keep track of valid selectors
|
220
|
+
valid_elements = []
|
221
|
+
for t_element in datagrabber_object.filter(elements):
|
222
|
+
valid_elements.append(t_element)
|
214
223
|
mc.fit(datagrabber_object[t_element])
|
224
|
+
# Compute invalid selectors
|
225
|
+
invalid_elements = set(elements) - set(valid_elements)
|
226
|
+
# Report if invalid selectors are found
|
227
|
+
if invalid_elements:
|
228
|
+
raise_error(
|
229
|
+
msg=(
|
230
|
+
"The following element selectors are invalid:\n"
|
231
|
+
f"{invalid_elements}"
|
232
|
+
),
|
233
|
+
klass=RuntimeError,
|
234
|
+
)
|
215
235
|
else:
|
216
236
|
for t_element in datagrabber_object:
|
217
237
|
mc.fit(datagrabber_object[t_element])
|
@@ -243,7 +263,7 @@ def queue(
|
|
243
263
|
kind: str,
|
244
264
|
jobname: str = "junifer_job",
|
245
265
|
overwrite: bool = False,
|
246
|
-
elements: Optional[
|
266
|
+
elements: Optional[Elements] = None,
|
247
267
|
**kwargs: Union[str, int, bool, dict, tuple, list],
|
248
268
|
) -> None:
|
249
269
|
"""Queue a job to be executed later.
|
@@ -258,7 +278,7 @@ def queue(
|
|
258
278
|
The name of the job (default "junifer_job").
|
259
279
|
overwrite : bool, optional
|
260
280
|
Whether to overwrite if job directory already exists (default False).
|
261
|
-
elements : list
|
281
|
+
elements : list or None, optional
|
262
282
|
Element(s) to process. Will be used to index the DataGrabber
|
263
283
|
(default None).
|
264
284
|
**kwargs : dict
|
@@ -341,7 +361,7 @@ def queue(
|
|
341
361
|
elements = dg.get_elements()
|
342
362
|
# Listify elements
|
343
363
|
if not isinstance(elements, list):
|
344
|
-
elements:
|
364
|
+
elements: Elements = [elements]
|
345
365
|
|
346
366
|
# Check job queueing system
|
347
367
|
adapter = None
|
@@ -406,7 +426,7 @@ def reset(config: dict) -> None:
|
|
406
426
|
|
407
427
|
def list_elements(
|
408
428
|
datagrabber: dict,
|
409
|
-
elements: Optional[
|
429
|
+
elements: Optional[Elements] = None,
|
410
430
|
) -> str:
|
411
431
|
"""List elements of the datagrabber filtered using `elements`.
|
412
432
|
|
@@ -416,7 +436,7 @@ def list_elements(
|
|
416
436
|
DataGrabber to index. Must have a key ``kind`` with the kind of
|
417
437
|
DataGrabber to use. All other keys are passed to the DataGrabber
|
418
438
|
constructor.
|
419
|
-
elements : list
|
439
|
+
elements : list or None, optional
|
420
440
|
Element(s) to filter using. Will be used to index the DataGrabber
|
421
441
|
(default None).
|
422
442
|
|
@@ -6,8 +6,9 @@
|
|
6
6
|
import shutil
|
7
7
|
import textwrap
|
8
8
|
from pathlib import Path
|
9
|
-
from typing import Optional
|
9
|
+
from typing import Optional
|
10
10
|
|
11
|
+
from ...typing import Elements
|
11
12
|
from ...utils import logger, make_executable, raise_error, run_ext_cmd
|
12
13
|
from .queue_context_adapter import QueueContextAdapter
|
13
14
|
|
@@ -63,7 +64,7 @@ class GnuParallelLocalAdapter(QueueContextAdapter):
|
|
63
64
|
job_name: str,
|
64
65
|
job_dir: Path,
|
65
66
|
yaml_config_path: Path,
|
66
|
-
elements:
|
67
|
+
elements: Elements,
|
67
68
|
pre_run: Optional[str] = None,
|
68
69
|
pre_collect: Optional[str] = None,
|
69
70
|
env: Optional[dict[str, str]] = None,
|
@@ -6,8 +6,9 @@
|
|
6
6
|
import shutil
|
7
7
|
import textwrap
|
8
8
|
from pathlib import Path
|
9
|
-
from typing import Optional
|
9
|
+
from typing import Optional
|
10
10
|
|
11
|
+
from ...typing import Elements
|
11
12
|
from ...utils import logger, make_executable, raise_error, run_ext_cmd
|
12
13
|
from .queue_context_adapter import QueueContextAdapter
|
13
14
|
|
@@ -81,7 +82,7 @@ class HTCondorAdapter(QueueContextAdapter):
|
|
81
82
|
job_name: str,
|
82
83
|
job_dir: Path,
|
83
84
|
yaml_config_path: Path,
|
84
|
-
elements:
|
85
|
+
elements: Elements,
|
85
86
|
pre_run: Optional[str] = None,
|
86
87
|
pre_collect: Optional[str] = None,
|
87
88
|
env: Optional[dict[str, str]] = None,
|
@@ -6,16 +6,19 @@
|
|
6
6
|
# License: AGPL
|
7
7
|
|
8
8
|
import logging
|
9
|
+
from contextlib import AbstractContextManager, nullcontext
|
9
10
|
from pathlib import Path
|
10
|
-
from typing import Optional, Union
|
11
|
+
from typing import Any, Optional, Union
|
11
12
|
|
12
13
|
import pytest
|
14
|
+
from nibabel.filebasedimages import ImageFileError
|
13
15
|
from ruamel.yaml import YAML
|
14
16
|
|
15
17
|
import junifer.testing.registry # noqa: F401
|
16
18
|
from junifer.api import collect, list_elements, queue, reset, run
|
17
19
|
from junifer.datagrabber.base import BaseDataGrabber
|
18
20
|
from junifer.pipeline import PipelineComponentRegistry
|
21
|
+
from junifer.typing import Elements
|
19
22
|
|
20
23
|
|
21
24
|
# Configure YAML class
|
@@ -25,12 +28,37 @@ yaml.allow_unicode = True
|
|
25
28
|
yaml.indent(mapping=2, sequence=4, offset=2)
|
26
29
|
|
27
30
|
|
31
|
+
# Kept for parametrizing
|
32
|
+
_datagrabber = {
|
33
|
+
"kind": "PartlyCloudyTestingDataGrabber",
|
34
|
+
}
|
35
|
+
_bids_ses_datagrabber = {
|
36
|
+
"kind": "PatternDataladDataGrabber",
|
37
|
+
"uri": "https://gin.g-node.org/juaml/datalad-example-bids-ses",
|
38
|
+
"types": ["T1w", "BOLD"],
|
39
|
+
"patterns": {
|
40
|
+
"T1w": {
|
41
|
+
"pattern": (
|
42
|
+
"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
|
43
|
+
),
|
44
|
+
"space": "MNI152NLin6Asym",
|
45
|
+
},
|
46
|
+
"BOLD": {
|
47
|
+
"pattern": (
|
48
|
+
"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
|
49
|
+
),
|
50
|
+
"space": "MNI152NLin6Asym",
|
51
|
+
},
|
52
|
+
},
|
53
|
+
"replacements": ["subject", "session"],
|
54
|
+
"rootdir": "example_bids_ses",
|
55
|
+
}
|
56
|
+
|
57
|
+
|
28
58
|
@pytest.fixture
|
29
59
|
def datagrabber() -> dict[str, str]:
|
30
60
|
"""Return a datagrabber as a dictionary."""
|
31
|
-
return
|
32
|
-
"kind": "PartlyCloudyTestingDataGrabber",
|
33
|
-
}
|
61
|
+
return _datagrabber.copy()
|
34
62
|
|
35
63
|
|
36
64
|
@pytest.fixture
|
@@ -60,11 +88,48 @@ def storage() -> dict[str, str]:
|
|
60
88
|
}
|
61
89
|
|
62
90
|
|
91
|
+
@pytest.mark.parametrize(
|
92
|
+
"datagrabber, element, expect",
|
93
|
+
[
|
94
|
+
(
|
95
|
+
_datagrabber,
|
96
|
+
[("sub-01",)],
|
97
|
+
pytest.raises(RuntimeError, match="element selectors are invalid"),
|
98
|
+
),
|
99
|
+
(
|
100
|
+
_datagrabber,
|
101
|
+
["sub-01"],
|
102
|
+
nullcontext(),
|
103
|
+
),
|
104
|
+
(
|
105
|
+
_bids_ses_datagrabber,
|
106
|
+
["sub-01"],
|
107
|
+
pytest.raises(ImageFileError, match="is not a gzip file"),
|
108
|
+
),
|
109
|
+
(
|
110
|
+
_bids_ses_datagrabber,
|
111
|
+
[("sub-01", "ses-01")],
|
112
|
+
pytest.raises(ImageFileError, match="is not a gzip file"),
|
113
|
+
),
|
114
|
+
(
|
115
|
+
_bids_ses_datagrabber,
|
116
|
+
[("sub-01", "ses-100")],
|
117
|
+
pytest.raises(RuntimeError, match="element selectors are invalid"),
|
118
|
+
),
|
119
|
+
(
|
120
|
+
_bids_ses_datagrabber,
|
121
|
+
[("sub-100", "ses-01")],
|
122
|
+
pytest.raises(RuntimeError, match="element selectors are invalid"),
|
123
|
+
),
|
124
|
+
],
|
125
|
+
)
|
63
126
|
def test_run_single_element(
|
64
127
|
tmp_path: Path,
|
65
|
-
datagrabber: dict[str,
|
128
|
+
datagrabber: dict[str, Any],
|
66
129
|
markers: list[dict[str, str]],
|
67
130
|
storage: dict[str, str],
|
131
|
+
element: Elements,
|
132
|
+
expect: AbstractContextManager,
|
68
133
|
) -> None:
|
69
134
|
"""Test run function with single element.
|
70
135
|
|
@@ -78,21 +143,26 @@ def test_run_single_element(
|
|
78
143
|
Testing markers as list of dictionary.
|
79
144
|
storage : dict
|
80
145
|
Testing storage as dictionary.
|
146
|
+
element : list of str or tuple
|
147
|
+
The parametrized element.
|
148
|
+
expect : typing.ContextManager
|
149
|
+
The parametrized ContextManager object.
|
81
150
|
|
82
151
|
"""
|
83
152
|
# Set storage
|
84
153
|
storage["uri"] = str((tmp_path / "out.sqlite").resolve())
|
85
154
|
# Run operations
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
155
|
+
with expect:
|
156
|
+
run(
|
157
|
+
workdir=tmp_path,
|
158
|
+
datagrabber=datagrabber,
|
159
|
+
markers=markers,
|
160
|
+
storage=storage,
|
161
|
+
elements=element,
|
162
|
+
)
|
163
|
+
# Check files
|
164
|
+
files = list(tmp_path.glob("*.sqlite"))
|
165
|
+
assert len(files) == 1
|
96
166
|
|
97
167
|
|
98
168
|
def test_run_single_element_with_preprocessing(
|
@@ -128,18 +198,30 @@ def test_run_single_element_with_preprocessing(
|
|
128
198
|
"kind": "fMRIPrepConfoundRemover",
|
129
199
|
}
|
130
200
|
],
|
131
|
-
elements=[
|
201
|
+
elements=["sub-01"],
|
132
202
|
)
|
133
203
|
# Check files
|
134
204
|
files = list(tmp_path.glob("*.sqlite"))
|
135
205
|
assert len(files) == 1
|
136
206
|
|
137
207
|
|
208
|
+
@pytest.mark.parametrize(
|
209
|
+
"element, expect",
|
210
|
+
[
|
211
|
+
(
|
212
|
+
[("sub-01",), ("sub-03",)],
|
213
|
+
pytest.raises(RuntimeError, match="element selectors are invalid"),
|
214
|
+
),
|
215
|
+
(["sub-01", "sub-03"], nullcontext()),
|
216
|
+
],
|
217
|
+
)
|
138
218
|
def test_run_multi_element_multi_output(
|
139
219
|
tmp_path: Path,
|
140
220
|
datagrabber: dict[str, str],
|
141
221
|
markers: list[dict[str, str]],
|
142
222
|
storage: dict[str, str],
|
223
|
+
element: Elements,
|
224
|
+
expect: AbstractContextManager,
|
143
225
|
) -> None:
|
144
226
|
"""Test run function with multi element and multi output.
|
145
227
|
|
@@ -153,22 +235,27 @@ def test_run_multi_element_multi_output(
|
|
153
235
|
Testing markers as list of dictionary.
|
154
236
|
storage : dict
|
155
237
|
Testing storage as dictionary.
|
238
|
+
element : list of str or tuple
|
239
|
+
The parametrized element.
|
240
|
+
expect : typing.ContextManager
|
241
|
+
The parametrized ContextManager object.
|
156
242
|
|
157
243
|
"""
|
158
244
|
# Set storage
|
159
245
|
storage["uri"] = str((tmp_path / "out.sqlite").resolve())
|
160
246
|
storage["single_output"] = False # type: ignore
|
161
247
|
# Run operations
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
248
|
+
with expect:
|
249
|
+
run(
|
250
|
+
workdir=tmp_path,
|
251
|
+
datagrabber=datagrabber,
|
252
|
+
markers=markers,
|
253
|
+
storage=storage,
|
254
|
+
elements=element,
|
255
|
+
)
|
256
|
+
# Check files
|
257
|
+
files = list(tmp_path.glob("*.sqlite"))
|
258
|
+
assert len(files) == 2
|
172
259
|
|
173
260
|
|
174
261
|
def test_run_multi_element_single_output(
|
@@ -200,7 +287,7 @@ def test_run_multi_element_single_output(
|
|
200
287
|
datagrabber=datagrabber,
|
201
288
|
markers=markers,
|
202
289
|
storage=storage,
|
203
|
-
elements=[
|
290
|
+
elements=["sub-01", "sub-03"],
|
204
291
|
)
|
205
292
|
# Check files
|
206
293
|
files = list(tmp_path.glob("*.sqlite"))
|
@@ -569,7 +656,7 @@ def test_reset_run(
|
|
569
656
|
datagrabber=datagrabber,
|
570
657
|
markers=markers,
|
571
658
|
storage=storage,
|
572
|
-
elements=[
|
659
|
+
elements=["sub-01"],
|
573
660
|
)
|
574
661
|
# Reset operation
|
575
662
|
reset(config={"storage": storage})
|
@@ -12,6 +12,7 @@ from typing import Union
|
|
12
12
|
|
13
13
|
import pandas as pd
|
14
14
|
|
15
|
+
from ..typing import Elements
|
15
16
|
from ..utils import logger, raise_error, warn_with_log, yaml
|
16
17
|
|
17
18
|
|
@@ -142,7 +143,7 @@ def parse_yaml(filepath: Union[str, Path]) -> dict: # noqa: C901
|
|
142
143
|
|
143
144
|
def parse_elements(
|
144
145
|
element: tuple[str, ...], config: dict
|
145
|
-
) -> Union[
|
146
|
+
) -> Union[Elements, None]:
|
146
147
|
"""Parse elements from cli.
|
147
148
|
|
148
149
|
Parameters
|
@@ -203,7 +204,7 @@ def parse_elements(
|
|
203
204
|
return elements
|
204
205
|
|
205
206
|
|
206
|
-
def _parse_elements_file(filepath: Path) ->
|
207
|
+
def _parse_elements_file(filepath: Path) -> Elements:
|
207
208
|
"""Parse elements from file.
|
208
209
|
|
209
210
|
Parameters
|
@@ -213,7 +214,7 @@ def _parse_elements_file(filepath: Path) -> list[tuple[str, ...]]:
|
|
213
214
|
|
214
215
|
Returns
|
215
216
|
-------
|
216
|
-
list
|
217
|
+
list
|
217
218
|
The element(s) as list.
|
218
219
|
|
219
220
|
"""
|
@@ -227,5 +228,8 @@ def _parse_elements_file(filepath: Path) -> list[tuple[str, ...]]:
|
|
227
228
|
)
|
228
229
|
# Remove trailing whitespace in cell entries
|
229
230
|
csv_df_trimmed = csv_df.apply(lambda x: x.str.strip())
|
230
|
-
# Convert to list of tuple of str
|
231
|
-
|
231
|
+
# Convert to list of tuple of str if more than one column else flatten
|
232
|
+
if len(csv_df_trimmed.columns) == 1:
|
233
|
+
return csv_df_trimmed.to_numpy().flatten().tolist()
|
234
|
+
else:
|
235
|
+
return list(map(tuple, csv_df_trimmed.to_numpy()))
|
@@ -11,6 +11,7 @@ from pathlib import Path
|
|
11
11
|
from typing import Union
|
12
12
|
|
13
13
|
from ..pipeline import UpdateMetaMixin
|
14
|
+
from ..typing import Element, Elements
|
14
15
|
from ..utils import logger, raise_error
|
15
16
|
|
16
17
|
|
@@ -67,9 +68,7 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
67
68
|
"""
|
68
69
|
yield from self.get_elements()
|
69
70
|
|
70
|
-
def __getitem__(
|
71
|
-
self, element: Union[str, tuple[str, ...]]
|
72
|
-
) -> dict[str, dict]:
|
71
|
+
def __getitem__(self, element: Element) -> dict[str, dict]:
|
73
72
|
"""Enable indexing support.
|
74
73
|
|
75
74
|
Parameters
|
@@ -137,13 +136,13 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
137
136
|
"""
|
138
137
|
return self._datadir
|
139
138
|
|
140
|
-
def filter(self, selection:
|
139
|
+
def filter(self, selection: Elements) -> Iterator:
|
141
140
|
"""Filter elements to be grabbed.
|
142
141
|
|
143
142
|
Parameters
|
144
143
|
----------
|
145
|
-
selection : list
|
146
|
-
The list of partial element
|
144
|
+
selection : list
|
145
|
+
The list of partial or complete element selectors to filter using.
|
147
146
|
|
148
147
|
Yields
|
149
148
|
------
|
@@ -152,7 +151,7 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
152
151
|
|
153
152
|
"""
|
154
153
|
|
155
|
-
def filter_func(element:
|
154
|
+
def filter_func(element: Element) -> bool:
|
156
155
|
"""Filter element based on selection.
|
157
156
|
|
158
157
|
Parameters
|
@@ -201,15 +200,14 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
201
200
|
) # pragma: no cover
|
202
201
|
|
203
202
|
@abstractmethod
|
204
|
-
def get_elements(self) ->
|
203
|
+
def get_elements(self) -> Elements:
|
205
204
|
"""Get elements.
|
206
205
|
|
207
206
|
Returns
|
208
207
|
-------
|
209
208
|
list
|
210
|
-
List of elements that can be grabbed. The elements can be strings
|
211
|
-
|
212
|
-
DataGrabber.
|
209
|
+
List of elements that can be grabbed. The elements can be strings
|
210
|
+
or tuples of strings to index the DataGrabber.
|
213
211
|
|
214
212
|
"""
|
215
213
|
raise_error(
|
@@ -17,6 +17,7 @@ from datalad.support.exceptions import IncompleteResultsError
|
|
17
17
|
from datalad.support.gitrepo import GitRepo
|
18
18
|
|
19
19
|
from ..pipeline import WorkDirManager
|
20
|
+
from ..typing import Element
|
20
21
|
from ..utils import config, logger, raise_error, warn_with_log
|
21
22
|
from .base import BaseDataGrabber
|
22
23
|
|
@@ -312,7 +313,7 @@ class DataladDataGrabber(BaseDataGrabber):
|
|
312
313
|
logger.debug(f"Dropping {f}")
|
313
314
|
self._dataset.drop(f, result_renderer="disabled")
|
314
315
|
|
315
|
-
def __getitem__(self, element:
|
316
|
+
def __getitem__(self, element: Element) -> dict:
|
316
317
|
"""Implement single element indexing in the Datalad database.
|
317
318
|
|
318
319
|
It will first obtain the paths from the parent class and then
|
@@ -320,11 +321,11 @@ class DataladDataGrabber(BaseDataGrabber):
|
|
320
321
|
|
321
322
|
Parameters
|
322
323
|
----------
|
323
|
-
element : str or tuple
|
324
|
+
element : str or tuple of str
|
324
325
|
The element to be indexed. If one string is provided, it is
|
325
326
|
assumed to be a tuple with only one item. If a tuple is provided,
|
326
327
|
each item in the tuple is the value for the replacement string
|
327
|
-
specified in "replacements"
|
328
|
+
specified in ``"replacements"``.
|
328
329
|
|
329
330
|
Returns
|
330
331
|
-------
|
@@ -13,7 +13,7 @@ from typing import Optional, Union
|
|
13
13
|
import numpy as np
|
14
14
|
|
15
15
|
from ..api.decorators import register_datagrabber
|
16
|
-
from ..typing import DataGrabberPatterns
|
16
|
+
from ..typing import DataGrabberPatterns, Elements
|
17
17
|
from ..utils import logger, raise_error
|
18
18
|
from .base import BaseDataGrabber
|
19
19
|
from .pattern_validation_mixin import PatternValidationMixin
|
@@ -367,7 +367,7 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin):
|
|
367
367
|
"""
|
368
368
|
return self.replacements
|
369
369
|
|
370
|
-
def get_item(self, **element:
|
370
|
+
def get_item(self, **element: dict) -> dict[str, dict]:
|
371
371
|
"""Implement single element indexing for the datagrabber.
|
372
372
|
|
373
373
|
This method constructs a real path to the requested item's data, by
|
@@ -450,7 +450,7 @@ class PatternDataGrabber(BaseDataGrabber, PatternValidationMixin):
|
|
450
450
|
|
451
451
|
return out
|
452
452
|
|
453
|
-
def get_elements(self) ->
|
453
|
+
def get_elements(self) -> Elements:
|
454
454
|
"""Implement fetching list of elements in the dataset.
|
455
455
|
|
456
456
|
It will use regex to search for "replacements" in the "patterns" and
|
@@ -10,6 +10,8 @@ __all__ = [
|
|
10
10
|
"MarkerInOutMappings",
|
11
11
|
"DataGrabberPatterns",
|
12
12
|
"ConfigVal",
|
13
|
+
"Element",
|
14
|
+
"Elements",
|
13
15
|
]
|
14
16
|
|
15
17
|
from ._typing import (
|
@@ -24,4 +26,6 @@ from ._typing import (
|
|
24
26
|
MarkerInOutMappings,
|
25
27
|
DataGrabberPatterns,
|
26
28
|
ConfigVal,
|
29
|
+
Element,
|
30
|
+
Elements,
|
27
31
|
)
|
@@ -24,6 +24,8 @@ __all__ = [
|
|
24
24
|
"DataGrabberLike",
|
25
25
|
"DataGrabberPatterns",
|
26
26
|
"Dependencies",
|
27
|
+
"Element",
|
28
|
+
"Elements",
|
27
29
|
"ExternalDependencies",
|
28
30
|
"MarkerInOutMappings",
|
29
31
|
"MarkerLike",
|
@@ -62,3 +64,5 @@ DataGrabberPatterns = dict[
|
|
62
64
|
str, Union[dict[str, str], Sequence[dict[str, str]]]
|
63
65
|
]
|
64
66
|
ConfigVal = Union[bool, int, float]
|
67
|
+
Element = Union[str, tuple[str, ...]]
|
68
|
+
Elements = Sequence[Element]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.6.
|
3
|
+
Version: 0.0.6.dev389
|
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>
|
@@ -63,6 +63,7 @@ docs/api/testing.rst
|
|
63
63
|
docs/api/utils.rst
|
64
64
|
docs/changes/contributors.inc
|
65
65
|
docs/changes/newsfragments/.gitignore
|
66
|
+
docs/changes/newsfragments/319.enh
|
66
67
|
docs/changes/newsfragments/335.enh
|
67
68
|
docs/changes/newsfragments/354.feature
|
68
69
|
docs/changes/newsfragments/355.misc
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{junifer-0.0.6.dev380 → junifer-0.0.6.dev389}/.github/ISSUE_TEMPLATE/documention-request.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|