junifer 0.0.8.dev284__tar.gz → 0.0.8.dev295__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {junifer-0.0.8.dev284/junifer.egg-info → junifer-0.0.8.dev295}/PKG-INFO +1 -1
- junifer-0.0.8.dev295/docs/changes/newsfragments/521.bugfix +1 -0
- junifer-0.0.8.dev295/docs/changes/newsfragments/522.bugfix +1 -0
- junifer-0.0.8.dev295/docs/changes/newsfragments/522.enh +1 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/_version.py +3 -3
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/base.py +12 -1
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/complexity_base.py +9 -9
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/ets_rss.py +8 -3
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_base.py +12 -3
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_base.py +6 -4
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +3 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +3 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +3 -0
- junifer-0.0.8.dev295/junifer/markers/tests/test_lost_regions.py +279 -0
- junifer-0.0.8.dev295/junifer/markers/tests/test_markers_base.py +349 -0
- junifer-0.0.8.dev295/junifer/markers/utils.py +304 -0
- junifer-0.0.8.dev295/junifer/pipeline/tests/test_marker_collection.py +195 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/fmriprep_confound_remover.py +2 -2
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295/junifer.egg-info}/PKG-INFO +1 -1
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/SOURCES.txt +4 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/scm_file_list.json +4 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/scm_version.json +2 -2
- junifer-0.0.8.dev284/junifer/markers/tests/test_markers_base.py +0 -107
- junifer-0.0.8.dev284/junifer/markers/utils.py +0 -121
- junifer-0.0.8.dev284/junifer/pipeline/tests/test_marker_collection.py +0 -224
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.dockerignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/pull_request_template.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/check-stale.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docker-publish.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.gitignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.gitmodules +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/.python-version +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/AUTHORS.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/Dockerfile +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/Dockerfile-ci +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/LICENSE.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/README.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/codecov.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/conda-env.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/Makefile +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/css/version_selector.css +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/_templates/versions.html +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/api.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/cli.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/configs.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/data.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/markers.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/stats.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/storage.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/testing.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/api/utils.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/builtin.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/239.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.doc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/364.feature +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/474.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/482.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/492.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/499.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/502.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/503.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/510.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.bugfix.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.change +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.enh.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.feature +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/511.misc.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/513.doc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/513.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.bugfix.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/514.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.doc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.enh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.enh.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/515.misc.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.bugfix.2 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.change +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.change.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/516.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.2 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.3 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.4 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.5 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.bugfix.6 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.change +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.doc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.1 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.2 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.misc.3 +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/changes/newsfragments/520.removal +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/conf.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/contribution.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/confounds_format.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_dump_asset.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_registries.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/data_types.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/extension.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/logging.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/maps.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/marker.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/masks.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/faq.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/help.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/installation.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/links.inc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/maintaining.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/patches/version_banner.html +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/patches/versions.html +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/poly_files/templates/index.html +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/starting.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/data.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/codeless.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/configuring.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/dumping.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/masks.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/queueing.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/using/running.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/docs/whats_new.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/README.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/ignore_words.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/decorators.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/functions.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/tests/test_decorators.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/cli.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/parser.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/cli/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/configs/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/conftest.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_ants_maps_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_fsl_maps_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/maps/tests/test_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_dispatch.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/data/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/_types.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/default.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.codecov.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.codespellignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/.gitignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/LICENSE +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/README.md +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/Makefile +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/conf.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/index.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/links.inc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/make.bat +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/doc/references.bib +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/pyproject.toml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/BrainPrint/setup.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.coveragerc +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.gitattributes +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.gitignore +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.travis.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.vscode/launch.json +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/.vscode/settings.json +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/LICENSE.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/MANIFEST.in +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/Makefile +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/README.rst +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/azure-pipelines.yml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_chunked_array.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_chunked_list.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/h5io/tests/test_io.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/setup.cfg +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/setup.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/h5io/versioneer.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/external/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/maps_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_maps_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/_temporal_filter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/stats.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/storage/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/registry.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_testing_utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/testing/utils.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/_typing.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/typing/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/_config.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/fs.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/logging.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/py.typed +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/justfile +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/pyproject.toml +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/scripts/start.sh +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/setup.cfg +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/setup.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/tox.ini +0 -0
- {junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: junifer
|
|
3
|
-
Version: 0.0.8.
|
|
3
|
+
Version: 0.0.8.dev295
|
|
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
|
+
Handle regions without voxels (e.g. lost when resampling or warping the parcellation) in parcel markers: functional connectivity and complexity markers are computed on the regions with data and give ``NaN`` for the others, instead of failing or returning values for the lost regions, and :class:`.RSSETSMarker` only uses the edges with data by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix :class:`.TemporalSNRParcels`, :class:`.TemporalSNRSpheres` and :class:`.TemporalSNRMaps` replacing the BOLD data with the tSNR map, so the markers computed after them in a pipeline used the tSNR map instead of the BOLD data by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Raise an error if a marker changes its input data (which is shared with the other markers of a pipeline), checking the values and their contents (arrays, data frames and images) by `Fede Raimondo`_
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.0.8.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 0, 8, '
|
|
21
|
+
__version__ = version = '0.0.8.dev295'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 8, 'dev295')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g4eb842a09'
|
|
@@ -16,10 +16,12 @@ from ..pipeline import PipelineStepMixin, UpdateMetaMixin
|
|
|
16
16
|
from ..storage import StorageType
|
|
17
17
|
from ..typing import MarkerInOutMappings, StorageLike
|
|
18
18
|
from ..utils import ensure_list_or_none, raise_error
|
|
19
|
+
from .utils import _changed_paths, _fingerprint
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
__all__ = ["BaseMarker"]
|
|
22
23
|
|
|
24
|
+
|
|
23
25
|
_log = structlog.get_logger("junifer")
|
|
24
26
|
logger = _log.bind(pkg="markers", step="marker")
|
|
25
27
|
|
|
@@ -257,8 +259,17 @@ class BaseMarker(BaseModel, ABC, PipelineStepMixin, UpdateMetaMixin):
|
|
|
257
259
|
# Copy metadata
|
|
258
260
|
t_meta = t_input["meta"].copy()
|
|
259
261
|
t_meta["type"] = t.value
|
|
260
|
-
# Compute marker
|
|
262
|
+
# Compute marker, checking it does not change the data, as
|
|
263
|
+
# it is shared with the markers computed afterwards
|
|
264
|
+
fingerprint = _fingerprint(input)
|
|
261
265
|
t_out = self.compute(input=t_input, extra_input=extra_input)
|
|
266
|
+
changed = _changed_paths(fingerprint, _fingerprint(input))
|
|
267
|
+
if changed:
|
|
268
|
+
raise_error(
|
|
269
|
+
f"Marker {self.name} changed its input data, which is "
|
|
270
|
+
f"shared with the other markers: {', '.join(changed)}",
|
|
271
|
+
klass=RuntimeError,
|
|
272
|
+
)
|
|
262
273
|
# Initialize empty dictionary if no storage object is provided
|
|
263
274
|
if storage is None:
|
|
264
275
|
out[t] = {}
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
from abc import abstractmethod
|
|
8
8
|
from typing import (
|
|
9
|
-
TYPE_CHECKING,
|
|
10
9
|
Annotated,
|
|
11
10
|
Any,
|
|
12
11
|
ClassVar,
|
|
13
12
|
)
|
|
14
13
|
|
|
14
|
+
import numpy as np
|
|
15
15
|
from pydantic import BeforeValidator
|
|
16
16
|
|
|
17
17
|
from ...datagrabber import DataType
|
|
@@ -20,10 +20,7 @@ from ...typing import Dependencies, MarkerInOutMappings
|
|
|
20
20
|
from ...utils import ensure_list, ensure_list_or_none, raise_error
|
|
21
21
|
from ..base import BaseMarker
|
|
22
22
|
from ..parcel_aggregation import ParcelAggregation
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if TYPE_CHECKING:
|
|
26
|
-
import numpy as np
|
|
23
|
+
from ..utils import _has_data
|
|
27
24
|
|
|
28
25
|
|
|
29
26
|
__all__ = ["ComplexityBase"]
|
|
@@ -118,12 +115,15 @@ class ComplexityBase(BaseMarker):
|
|
|
118
115
|
masks=self.masks,
|
|
119
116
|
on=DataType.BOLD,
|
|
120
117
|
).compute(input=input, extra_input=extra_input)
|
|
121
|
-
# Compute complexity measure
|
|
118
|
+
# Compute complexity measure on the regions with data (e.g. regions
|
|
119
|
+
# lost in resampling have none) and set the others to NaN
|
|
120
|
+
data = parcel_aggregation["aggregation"]["data"]
|
|
121
|
+
has_data = _has_data(data)
|
|
122
|
+
complexity = np.full((1, data.shape[1]), np.nan)
|
|
123
|
+
complexity[:, has_data] = self.compute_complexity(data[:, has_data])
|
|
122
124
|
return {
|
|
123
125
|
"complexity": {
|
|
124
|
-
"data":
|
|
125
|
-
parcel_aggregation["aggregation"]["data"]
|
|
126
|
-
),
|
|
126
|
+
"data": complexity,
|
|
127
127
|
"col_names": parcel_aggregation["aggregation"]["col_names"],
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -18,7 +18,7 @@ from ..typing import Dependencies, MarkerInOutMappings
|
|
|
18
18
|
from ..utils import ensure_list, ensure_list_or_none
|
|
19
19
|
from .base import BaseMarker, logger
|
|
20
20
|
from .parcel_aggregation import ParcelAggregation
|
|
21
|
-
from .utils import _ets
|
|
21
|
+
from .utils import _ets, _has_data
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
__all__ = ["RSSETSMarker"]
|
|
@@ -113,8 +113,13 @@ class RSSETSMarker(BaseMarker):
|
|
|
113
113
|
).compute(input=input, extra_input=extra_input)
|
|
114
114
|
# Compute edgewise timeseries
|
|
115
115
|
edge_ts, _ = _ets(aggregation["aggregation"]["data"])
|
|
116
|
-
# Compute the RSS of edgewise timeseries
|
|
117
|
-
|
|
116
|
+
# Compute the RSS of edgewise timeseries, only using the edges with
|
|
117
|
+
# data (e.g. regions lost in resampling have none)
|
|
118
|
+
edge_ts = edge_ts[:, _has_data(edge_ts)]
|
|
119
|
+
if edge_ts.shape[1] > 0:
|
|
120
|
+
rss = np.sum(edge_ts**2, 1) ** 0.5
|
|
121
|
+
else:
|
|
122
|
+
rss = np.full(edge_ts.shape[0], np.nan)
|
|
118
123
|
|
|
119
124
|
return {
|
|
120
125
|
"rss_ets": {
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
from abc import abstractmethod
|
|
7
7
|
from typing import Annotated, Any, ClassVar
|
|
8
8
|
|
|
9
|
+
import numpy as np
|
|
9
10
|
from pydantic import BeforeValidator
|
|
10
11
|
from sklearn.covariance import EmpiricalCovariance, LedoitWolf
|
|
11
12
|
|
|
@@ -15,6 +16,7 @@ from ...storage import MatrixKind, StorageType
|
|
|
15
16
|
from ...typing import Dependencies, MarkerInOutMappings
|
|
16
17
|
from ...utils import ensure_list_or_none, raise_error
|
|
17
18
|
from ..base import BaseMarker
|
|
19
|
+
from ..utils import _has_data
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
__all__ = ["FunctionalConnectivityBase"]
|
|
@@ -140,13 +142,20 @@ class FunctionalConnectivityBase(BaseMarker):
|
|
|
140
142
|
if k != "empirical"
|
|
141
143
|
},
|
|
142
144
|
)
|
|
145
|
+
# Compute on the columns with data (e.g. regions lost in
|
|
146
|
+
# resampling have none) and set the others to NaN
|
|
147
|
+
data = aggregation["aggregation"]["data"]
|
|
148
|
+
has_data = _has_data(data)
|
|
149
|
+
conn = np.full((data.shape[1], data.shape[1]), np.nan)
|
|
150
|
+
if has_data.any():
|
|
151
|
+
conn[np.ix_(has_data, has_data)] = connectivity.fit_transform(
|
|
152
|
+
[data[:, has_data]]
|
|
153
|
+
)[0]
|
|
143
154
|
# Create dictionary for output
|
|
144
155
|
labels = aggregation["aggregation"]["col_names"]
|
|
145
156
|
return {
|
|
146
157
|
"functional_connectivity": {
|
|
147
|
-
"data":
|
|
148
|
-
[aggregation["aggregation"]["data"]]
|
|
149
|
-
)[0],
|
|
158
|
+
"data": conn,
|
|
150
159
|
"row_names": labels,
|
|
151
160
|
"col_names": labels,
|
|
152
161
|
# xi correlation coefficient is not symmetric
|
{junifer-0.0.8.dev284 → junifer-0.0.8.dev295}/junifer/markers/temporal_snr/temporal_snr_base.py
RENAMED
|
@@ -104,7 +104,9 @@ class TemporalSNRBase(BaseMarker):
|
|
|
104
104
|
"img.std(axis=-1).squeeze()", img=input["data"]
|
|
105
105
|
)
|
|
106
106
|
mask_img = nimg.math_img("(stdv_img != 0)", stdv_img=stdv_img)
|
|
107
|
-
|
|
107
|
+
# Aggregate the tSNR image, without changing the input
|
|
108
|
+
aggregation_input = dict(input.items())
|
|
109
|
+
aggregation_input["data"] = nimg.math_img(
|
|
108
110
|
"np.divide(mean_img, stdv_img, where=mask_img.astype(bool))",
|
|
109
111
|
mean_img=mean_img,
|
|
110
112
|
stdv_img=stdv_img,
|
|
@@ -113,8 +115,8 @@ class TemporalSNRBase(BaseMarker):
|
|
|
113
115
|
# Perform necessary aggregation and return
|
|
114
116
|
return {
|
|
115
117
|
"tsnr": {
|
|
116
|
-
**self.aggregate(
|
|
117
|
-
|
|
118
|
-
]
|
|
118
|
+
**self.aggregate(
|
|
119
|
+
input=aggregation_input, extra_input=extra_input
|
|
120
|
+
)["aggregation"]
|
|
119
121
|
}
|
|
120
122
|
}
|
|
@@ -28,7 +28,10 @@ def test_TemporalSNRMaps_computation() -> None:
|
|
|
28
28
|
input_type=DataType.BOLD, output_feature="tsnr"
|
|
29
29
|
)
|
|
30
30
|
# Fit-transform the data
|
|
31
|
+
bold_img = element_data["BOLD"]["data"]
|
|
31
32
|
tsnr_parcels = marker.fit_transform(element_data)
|
|
33
|
+
# The input is not changed
|
|
34
|
+
assert element_data["BOLD"]["data"] is bold_img
|
|
32
35
|
tsnr_parcels_bold = tsnr_parcels["BOLD"]["tsnr"]
|
|
33
36
|
|
|
34
37
|
assert "data" in tsnr_parcels_bold
|
|
@@ -30,7 +30,10 @@ def test_TemporalSNRParcels_computation() -> None:
|
|
|
30
30
|
input_type=DataType.BOLD, output_feature="tsnr"
|
|
31
31
|
)
|
|
32
32
|
# Fit-transform the data
|
|
33
|
+
bold_img = element_data["BOLD"]["data"]
|
|
33
34
|
tsnr_parcels = marker.fit_transform(element_data)
|
|
35
|
+
# The input is not changed
|
|
36
|
+
assert element_data["BOLD"]["data"] is bold_img
|
|
34
37
|
tsnr_parcels_bold = tsnr_parcels["BOLD"]["tsnr"]
|
|
35
38
|
|
|
36
39
|
assert "data" in tsnr_parcels_bold
|
|
@@ -28,7 +28,10 @@ def test_TemporalSNRSpheres_computation() -> None:
|
|
|
28
28
|
input_type=DataType.BOLD, output_feature="tsnr"
|
|
29
29
|
)
|
|
30
30
|
# Fit-transform the data
|
|
31
|
+
bold_img = element_data["BOLD"]["data"]
|
|
31
32
|
tsnr_spheres = marker.fit_transform(element_data)
|
|
33
|
+
# The input is not changed
|
|
34
|
+
assert element_data["BOLD"]["data"] is bold_img
|
|
32
35
|
tsnr_spheres_bold = tsnr_spheres["BOLD"]["tsnr"]
|
|
33
36
|
|
|
34
37
|
assert "data" in tsnr_spheres_bold
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"""Provide tests for markers on regions lost in resampling."""
|
|
2
|
+
|
|
3
|
+
# Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
|
|
4
|
+
# License: AGPL
|
|
5
|
+
|
|
6
|
+
from collections.abc import Iterator
|
|
7
|
+
from importlib.util import find_spec
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
import nibabel as nib
|
|
11
|
+
import numpy as np
|
|
12
|
+
import pytest
|
|
13
|
+
|
|
14
|
+
from junifer import markers
|
|
15
|
+
from junifer.data import deregister_data, register_data
|
|
16
|
+
from junifer.datareader import DefaultDataReader
|
|
17
|
+
from junifer.pipeline import WorkDirManager
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
COMPLEXITY_MARKERS = (
|
|
21
|
+
"HurstExponent",
|
|
22
|
+
"RangeEntropy",
|
|
23
|
+
"RangeEntropyAUC",
|
|
24
|
+
"MultiscaleEntropyAUC",
|
|
25
|
+
"PermEntropy",
|
|
26
|
+
"WeightedPermEntropy",
|
|
27
|
+
"SampleEntropy",
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
skip_no_neurokit2 = pytest.mark.skipif(
|
|
31
|
+
find_spec("neurokit2") is None, reason="requires neurokit2"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.fixture(scope="module")
|
|
36
|
+
def element(tmp_path_factory: pytest.TempPathFactory) -> Iterator[dict]:
|
|
37
|
+
"""Provide BOLD data where regions of the parcellations are lost.
|
|
38
|
+
|
|
39
|
+
The parcellations are on a 1mm grid and the BOLD data on a 3mm grid,
|
|
40
|
+
which does not sample their single-voxel regions:
|
|
41
|
+
|
|
42
|
+
* ``LostRegion`` (and ``LostRegion2``, the same): regions ``a``, ``b``,
|
|
43
|
+
``lost``, ``c`` and ``d``.
|
|
44
|
+
* ``OneRegionLeft``: regions ``kept``, ``lost`` and ``lost_too``.
|
|
45
|
+
|
|
46
|
+
Parameters
|
|
47
|
+
----------
|
|
48
|
+
tmp_path_factory : pytest.TempPathFactory
|
|
49
|
+
The pytest factory for temporary directories.
|
|
50
|
+
|
|
51
|
+
Yields
|
|
52
|
+
------
|
|
53
|
+
dict
|
|
54
|
+
The element data.
|
|
55
|
+
|
|
56
|
+
"""
|
|
57
|
+
tmp_path = tmp_path_factory.mktemp("lost_regions")
|
|
58
|
+
# Voxels 0, 3, 6, ... are sampled by the 3mm grid, 7 and 13 are not
|
|
59
|
+
lost_region = np.zeros((24, 24, 24), dtype=np.int16)
|
|
60
|
+
lost_region[0:12, 0:12] = 1
|
|
61
|
+
lost_region[12:24, 0:12] = 2
|
|
62
|
+
lost_region[7, 13, 7] = 3
|
|
63
|
+
lost_region[0:12, 15:24] = 4
|
|
64
|
+
lost_region[12:24, 15:24] = 5
|
|
65
|
+
one_region_left = np.zeros((24, 24, 24), dtype=np.int16)
|
|
66
|
+
one_region_left[0:12, 0:12] = 1
|
|
67
|
+
one_region_left[7, 13, 7] = 2
|
|
68
|
+
one_region_left[13, 7, 7] = 3
|
|
69
|
+
for name, data, labels in (
|
|
70
|
+
("LostRegion", lost_region, ["a", "b", "lost", "c", "d"]),
|
|
71
|
+
("LostRegion2", lost_region, ["a", "b", "lost", "c", "d"]),
|
|
72
|
+
("OneRegionLeft", one_region_left, ["kept", "lost", "lost_too"]),
|
|
73
|
+
):
|
|
74
|
+
path = tmp_path / f"{name}.nii.gz"
|
|
75
|
+
nib.save(nib.Nifti1Image(data, np.eye(4)), path)
|
|
76
|
+
register_data(
|
|
77
|
+
kind="parcellation",
|
|
78
|
+
name=name,
|
|
79
|
+
parcellation_path=path,
|
|
80
|
+
parcels_labels=labels,
|
|
81
|
+
space="MNI152NLin6Asym",
|
|
82
|
+
)
|
|
83
|
+
# Random walks, so all the measures are defined
|
|
84
|
+
rng = np.random.default_rng(0)
|
|
85
|
+
bold = rng.normal(size=(8, 8, 8, 120)).cumsum(axis=-1) + 1000
|
|
86
|
+
bold_img = nib.Nifti1Image(
|
|
87
|
+
bold.astype(np.float32), np.diag([3.0, 3.0, 3.0, 1.0])
|
|
88
|
+
)
|
|
89
|
+
bold_img.header.set_xyzt_units("mm", "sec")
|
|
90
|
+
bold_path = tmp_path / "bold.nii.gz"
|
|
91
|
+
nib.save(bold_img, bold_path)
|
|
92
|
+
yield DefaultDataReader().fit_transform(
|
|
93
|
+
{"BOLD": {"path": bold_path, "space": "MNI152NLin6Asym"}}
|
|
94
|
+
)
|
|
95
|
+
for name in ("LostRegion", "LostRegion2", "OneRegionLeft"):
|
|
96
|
+
deregister_data(kind="parcellation", name=name)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _case(name: str, params: dict, feature: str, nan: list) -> object:
|
|
100
|
+
"""Get a test case.
|
|
101
|
+
|
|
102
|
+
Parameters
|
|
103
|
+
----------
|
|
104
|
+
name : str
|
|
105
|
+
The name of the marker class.
|
|
106
|
+
params : dict
|
|
107
|
+
The parameters of the marker.
|
|
108
|
+
feature : str
|
|
109
|
+
The name of the feature to check.
|
|
110
|
+
nan : list
|
|
111
|
+
The values that are NaN.
|
|
112
|
+
|
|
113
|
+
Returns
|
|
114
|
+
-------
|
|
115
|
+
object
|
|
116
|
+
The test case, named after the parcellation, marker and feature.
|
|
117
|
+
Complexity markers are skipped if neurokit2 is not installed.
|
|
118
|
+
|
|
119
|
+
"""
|
|
120
|
+
parcellation = params.get("parcellation", params.get("parcellation_one"))
|
|
121
|
+
return pytest.param(
|
|
122
|
+
name,
|
|
123
|
+
params,
|
|
124
|
+
feature,
|
|
125
|
+
nan,
|
|
126
|
+
marks=skip_no_neurokit2 if name in COMPLEXITY_MARKERS else (),
|
|
127
|
+
id=f"{parcellation}-{name}-{feature}",
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# Whether the values are NaN for LostRegion, whose 3rd region is lost
|
|
132
|
+
REGIONS = [False, False, True, False, False]
|
|
133
|
+
# For connectivity, a region pair is NaN if one of the regions is lost
|
|
134
|
+
PAIRS = [[r or c for c in REGIONS] for r in REGIONS]
|
|
135
|
+
# For edge-centric FC, the edges are the region pairs (lower triangle)
|
|
136
|
+
EDGES = [r or c for i, r in enumerate(REGIONS) for c in REGIONS[:i]]
|
|
137
|
+
EDGE_PAIRS = [[r or c for c in EDGES] for r in EDGES]
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
@pytest.mark.parametrize(
|
|
141
|
+
"name, params, feature, nan",
|
|
142
|
+
[
|
|
143
|
+
_case(
|
|
144
|
+
"ParcelAggregation",
|
|
145
|
+
{"parcellation": "LostRegion", "method": "mean", "on": "BOLD"},
|
|
146
|
+
"aggregation",
|
|
147
|
+
[REGIONS] * 120,
|
|
148
|
+
),
|
|
149
|
+
_case(
|
|
150
|
+
"FunctionalConnectivityParcels",
|
|
151
|
+
{"parcellation": "LostRegion"},
|
|
152
|
+
"functional_connectivity",
|
|
153
|
+
PAIRS,
|
|
154
|
+
),
|
|
155
|
+
_case(
|
|
156
|
+
"EdgeCentricFCParcels",
|
|
157
|
+
{"parcellation": "LostRegion"},
|
|
158
|
+
"functional_connectivity",
|
|
159
|
+
EDGE_PAIRS,
|
|
160
|
+
),
|
|
161
|
+
_case(
|
|
162
|
+
"CrossParcellationFC",
|
|
163
|
+
{
|
|
164
|
+
"parcellation_one": "LostRegion",
|
|
165
|
+
"parcellation_two": "LostRegion2",
|
|
166
|
+
},
|
|
167
|
+
"functional_connectivity",
|
|
168
|
+
PAIRS,
|
|
169
|
+
),
|
|
170
|
+
_case(
|
|
171
|
+
"ReHoParcels",
|
|
172
|
+
{"parcellation": "LostRegion", "using": "junifer"},
|
|
173
|
+
"reho",
|
|
174
|
+
[REGIONS],
|
|
175
|
+
),
|
|
176
|
+
_case(
|
|
177
|
+
"ALFFParcels",
|
|
178
|
+
{"parcellation": "LostRegion", "using": "junifer"},
|
|
179
|
+
"alff",
|
|
180
|
+
[REGIONS],
|
|
181
|
+
),
|
|
182
|
+
_case(
|
|
183
|
+
"ALFFParcels",
|
|
184
|
+
{"parcellation": "LostRegion", "using": "junifer"},
|
|
185
|
+
"falff",
|
|
186
|
+
[REGIONS],
|
|
187
|
+
),
|
|
188
|
+
_case(
|
|
189
|
+
"TemporalSNRParcels",
|
|
190
|
+
{"parcellation": "LostRegion"},
|
|
191
|
+
"tsnr",
|
|
192
|
+
[REGIONS],
|
|
193
|
+
),
|
|
194
|
+
# Computed with the edges with data
|
|
195
|
+
_case(
|
|
196
|
+
"RSSETSMarker",
|
|
197
|
+
{"parcellation": "LostRegion"},
|
|
198
|
+
"rss_ets",
|
|
199
|
+
[[False]] * 120,
|
|
200
|
+
),
|
|
201
|
+
*[
|
|
202
|
+
_case(
|
|
203
|
+
name, {"parcellation": "LostRegion"}, "complexity", [REGIONS]
|
|
204
|
+
)
|
|
205
|
+
for name in COMPLEXITY_MARKERS
|
|
206
|
+
],
|
|
207
|
+
# Only the kept region with itself
|
|
208
|
+
_case(
|
|
209
|
+
"FunctionalConnectivityParcels",
|
|
210
|
+
{"parcellation": "OneRegionLeft"},
|
|
211
|
+
"functional_connectivity",
|
|
212
|
+
[[False, True, True], [True, True, True], [True, True, True]],
|
|
213
|
+
),
|
|
214
|
+
# All the edges have a lost region
|
|
215
|
+
_case(
|
|
216
|
+
"EdgeCentricFCParcels",
|
|
217
|
+
{"parcellation": "OneRegionLeft"},
|
|
218
|
+
"functional_connectivity",
|
|
219
|
+
[[True] * 3] * 3,
|
|
220
|
+
),
|
|
221
|
+
# No edges with data
|
|
222
|
+
_case(
|
|
223
|
+
"RSSETSMarker",
|
|
224
|
+
{"parcellation": "OneRegionLeft"},
|
|
225
|
+
"rss_ets",
|
|
226
|
+
[[True]] * 120,
|
|
227
|
+
),
|
|
228
|
+
*[
|
|
229
|
+
_case(
|
|
230
|
+
name,
|
|
231
|
+
{"parcellation": "OneRegionLeft"},
|
|
232
|
+
"complexity",
|
|
233
|
+
[[False, True, True]],
|
|
234
|
+
)
|
|
235
|
+
for name in COMPLEXITY_MARKERS
|
|
236
|
+
],
|
|
237
|
+
],
|
|
238
|
+
)
|
|
239
|
+
def test_lost_regions(
|
|
240
|
+
tmp_path: Path,
|
|
241
|
+
element: dict,
|
|
242
|
+
name: str,
|
|
243
|
+
params: dict,
|
|
244
|
+
feature: str,
|
|
245
|
+
nan: list,
|
|
246
|
+
) -> None:
|
|
247
|
+
"""Test markers on regions lost in resampling.
|
|
248
|
+
|
|
249
|
+
The lost regions have no data (NaN), and the other regions are not
|
|
250
|
+
affected.
|
|
251
|
+
|
|
252
|
+
Parameters
|
|
253
|
+
----------
|
|
254
|
+
tmp_path : pathlib.Path
|
|
255
|
+
The path to the test directory.
|
|
256
|
+
element : dict
|
|
257
|
+
The element data.
|
|
258
|
+
name : str
|
|
259
|
+
The parametrized name of the marker class.
|
|
260
|
+
params : dict
|
|
261
|
+
The parametrized parameters of the marker.
|
|
262
|
+
feature : str
|
|
263
|
+
The parametrized name of the feature to check.
|
|
264
|
+
nan : list
|
|
265
|
+
The parametrized values that are NaN.
|
|
266
|
+
|
|
267
|
+
"""
|
|
268
|
+
if name in COMPLEXITY_MARKERS:
|
|
269
|
+
from junifer.markers import complexity
|
|
270
|
+
|
|
271
|
+
marker = getattr(complexity, name)(**params)
|
|
272
|
+
else:
|
|
273
|
+
marker = getattr(markers, name)(**params)
|
|
274
|
+
WorkDirManager().workdir = tmp_path
|
|
275
|
+
with pytest.warns(RuntimeWarning, match=r"region\(s\) .* have no voxels"):
|
|
276
|
+
# Copy the data, as some markers change their input
|
|
277
|
+
out = marker.fit_transform({"BOLD": dict(element["BOLD"])})
|
|
278
|
+
data = np.asarray(out["BOLD"][feature]["data"], dtype=float)
|
|
279
|
+
assert np.array_equal(np.isnan(data), nan)
|