junifer 0.0.7.dev47__tar.gz → 0.0.7.dev67__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/docker-ci-publish.yml +3 -3
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/docker-docs-publish.yml +3 -3
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/PKG-INFO +1 -1
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/builtin.rst +4 -0
- junifer-0.0.7.dev67/docs/changes/newsfragments/443.feature +1 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/_version.py +2 -2
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/pipeline_component_registry.py +1 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/__init__.pyi +2 -0
- junifer-0.0.7.dev67/junifer/preprocess/_temporal_slicer.py +236 -0
- junifer-0.0.7.dev67/junifer/preprocess/tests/test_temporal_slicer.py +138 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/PKG-INFO +1 -1
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/SOURCES.txt +3 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.dockerignore +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/dependabot.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/pull_request_template.md +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.gitignore +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.gitmodules +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/AUTHORS.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/Dockerfile-ci +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/Dockerfile-docs +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/LICENSE.md +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/README.md +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/codecov.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/conda-env.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/Makefile +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/_templates/versions.html +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/api.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/cli.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/configs.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/data.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/index.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/markers.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/stats.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/storage.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/testing.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/api/utils.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/changes/newsfragments/333.enh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/changes/newsfragments/441.misc +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/changes/newsfragments/444.bugfix +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/conf.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/contribution.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/extension.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/index.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/marker.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/masks.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/faq.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/help.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/index.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/installation.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/links.inc +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/maintaining.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/redirect.html +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/starting.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/data.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/index.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/using/codeless.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/using/index.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/using/masks.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/using/queueing.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/using/running.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/docs/whats_new.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/README.rst +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/ignore_words.txt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/decorators.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/functions.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/cli.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/parser.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/tests/test_parser.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/cli/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/conftest.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/data/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datareader/default.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/markers/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/_ants_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/_fsl_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/stats.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/storage/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/registry.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/testing/utils.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/typing/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/typing/_typing.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/_config.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/fs.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/logging.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/py.typed +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/pyproject.toml +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/setup.cfg +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/setup.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.7.dev47 → junifer-0.0.7.dev67}/tox.ini +0 -0
@@ -45,7 +45,7 @@ jobs:
|
|
45
45
|
# https://github.com/sigstore/cosign-installer
|
46
46
|
- name: Install cosign
|
47
47
|
if: github.event_name != 'pull_request'
|
48
|
-
uses: sigstore/cosign-installer@
|
48
|
+
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb #v3.8.2
|
49
49
|
with:
|
50
50
|
cosign-release: 'v2.2.4'
|
51
51
|
|
@@ -59,7 +59,7 @@ jobs:
|
|
59
59
|
# https://github.com/docker/login-action
|
60
60
|
- name: Log into registry ${{ env.REGISTRY }}
|
61
61
|
if: github.event_name != 'pull_request'
|
62
|
-
uses: docker/login-action@
|
62
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
63
63
|
with:
|
64
64
|
registry: ${{ env.REGISTRY }}
|
65
65
|
username: ${{ github.actor }}
|
@@ -77,7 +77,7 @@ jobs:
|
|
77
77
|
# https://github.com/docker/build-push-action
|
78
78
|
- name: Build and push Docker image
|
79
79
|
id: build-and-push
|
80
|
-
uses: docker/build-push-action@
|
80
|
+
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
|
81
81
|
with:
|
82
82
|
context: .
|
83
83
|
file: Dockerfile-ci
|
@@ -42,7 +42,7 @@ jobs:
|
|
42
42
|
# https://github.com/sigstore/cosign-installer
|
43
43
|
- name: Install cosign
|
44
44
|
if: github.event_name != 'pull_request'
|
45
|
-
uses: sigstore/cosign-installer@
|
45
|
+
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb #v3.8.2
|
46
46
|
with:
|
47
47
|
cosign-release: 'v2.2.4'
|
48
48
|
|
@@ -56,7 +56,7 @@ jobs:
|
|
56
56
|
# https://github.com/docker/login-action
|
57
57
|
- name: Log into registry ${{ env.REGISTRY }}
|
58
58
|
if: github.event_name != 'pull_request'
|
59
|
-
uses: docker/login-action@
|
59
|
+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
|
60
60
|
with:
|
61
61
|
registry: ${{ env.REGISTRY }}
|
62
62
|
username: ${{ github.actor }}
|
@@ -74,7 +74,7 @@ jobs:
|
|
74
74
|
# https://github.com/docker/build-push-action
|
75
75
|
- name: Build and push Docker image
|
76
76
|
id: build-and-push
|
77
|
-
uses: docker/build-push-action@
|
77
|
+
uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0
|
78
78
|
with:
|
79
79
|
context: .
|
80
80
|
file: Dockerfile-docs
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.7.
|
3
|
+
Version: 0.0.7.dev67
|
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
|
+
Introduce :class:`.TemporalSlicer` preprocessor for temporally slicing BOLD data by `Synchon Mandal`_
|
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '0.0.7.
|
21
|
-
__version_tuple__ = version_tuple = (0, 0, 7, '
|
20
|
+
__version__ = version = '0.0.7.dev67'
|
21
|
+
__version_tuple__ = version_tuple = (0, 0, 7, 'dev67')
|
@@ -75,6 +75,7 @@ class PipelineComponentRegistry(metaclass=Singleton):
|
|
75
75
|
"Smoothing": "Smoothing",
|
76
76
|
"SpaceWarper": "SpaceWarper",
|
77
77
|
"fMRIPrepConfoundRemover": "fMRIPrepConfoundRemover",
|
78
|
+
"TemporalSlicer": "TemporalSlicer",
|
78
79
|
},
|
79
80
|
"marker": {
|
80
81
|
"ALFFParcels": "ALFFParcels",
|
@@ -3,9 +3,11 @@ __all__ = [
|
|
3
3
|
"fMRIPrepConfoundRemover",
|
4
4
|
"SpaceWarper",
|
5
5
|
"Smoothing",
|
6
|
+
"TemporalSlicer",
|
6
7
|
]
|
7
8
|
|
8
9
|
from .base import BasePreprocessor
|
9
10
|
from .confounds import fMRIPrepConfoundRemover
|
10
11
|
from .warping import SpaceWarper
|
11
12
|
from .smoothing import Smoothing
|
13
|
+
from ._temporal_slicer import TemporalSlicer
|
@@ -0,0 +1,236 @@
|
|
1
|
+
"""Provide class for temporal slicing."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from typing import Any, ClassVar, Optional
|
7
|
+
|
8
|
+
import nibabel as nib
|
9
|
+
import nilearn.image as nimg
|
10
|
+
|
11
|
+
from ..api.decorators import register_preprocessor
|
12
|
+
from ..pipeline import WorkDirManager
|
13
|
+
from ..typing import Dependencies
|
14
|
+
from ..utils import logger, raise_error
|
15
|
+
from .base import BasePreprocessor
|
16
|
+
|
17
|
+
|
18
|
+
__all__ = ["TemporalSlicer"]
|
19
|
+
|
20
|
+
|
21
|
+
@register_preprocessor
|
22
|
+
class TemporalSlicer(BasePreprocessor):
|
23
|
+
"""Class for temporal slicing.
|
24
|
+
|
25
|
+
Parameters
|
26
|
+
----------
|
27
|
+
start : float
|
28
|
+
Starting time point, in second.
|
29
|
+
stop : float or None
|
30
|
+
Ending time point, in second. If None, stops at the last time point.
|
31
|
+
Can also do negative indexing and has the same meaning as standard
|
32
|
+
Python slicing except it represents time points.
|
33
|
+
duration : float or None, optional
|
34
|
+
Time duration to add to ``start``, in second. If None, ``stop`` is
|
35
|
+
respected, else error is raised (default None).
|
36
|
+
t_r : float or None, optional
|
37
|
+
Repetition time, in second (sampling period).
|
38
|
+
If None, it will use t_r from nifti header (default None).
|
39
|
+
|
40
|
+
Raises
|
41
|
+
------
|
42
|
+
ValueError
|
43
|
+
If ``start`` is negative.
|
44
|
+
|
45
|
+
"""
|
46
|
+
|
47
|
+
_DEPENDENCIES: ClassVar[Dependencies] = {"nilearn"}
|
48
|
+
|
49
|
+
def __init__(
|
50
|
+
self,
|
51
|
+
start: float,
|
52
|
+
stop: Optional[float],
|
53
|
+
duration: Optional[float] = None,
|
54
|
+
t_r: Optional[float] = None,
|
55
|
+
) -> None:
|
56
|
+
"""Initialize the class."""
|
57
|
+
if start < 0:
|
58
|
+
raise_error("`start` cannot be negative")
|
59
|
+
else:
|
60
|
+
self.start = start
|
61
|
+
self.stop = stop
|
62
|
+
self.duration = duration
|
63
|
+
self.t_r = t_r
|
64
|
+
super().__init__(on="BOLD", required_data_types=["BOLD"])
|
65
|
+
|
66
|
+
def get_valid_inputs(self) -> list[str]:
|
67
|
+
"""Get valid data types for input.
|
68
|
+
|
69
|
+
Returns
|
70
|
+
-------
|
71
|
+
list of str
|
72
|
+
The list of data types that can be used as input for this
|
73
|
+
preprocessor.
|
74
|
+
|
75
|
+
"""
|
76
|
+
return ["BOLD"]
|
77
|
+
|
78
|
+
def get_output_type(self, input_type: str) -> str:
|
79
|
+
"""Get output type.
|
80
|
+
|
81
|
+
Parameters
|
82
|
+
----------
|
83
|
+
input_type : str
|
84
|
+
The data type input to the preprocessor.
|
85
|
+
|
86
|
+
Returns
|
87
|
+
-------
|
88
|
+
str
|
89
|
+
The data type output by the preprocessor.
|
90
|
+
|
91
|
+
"""
|
92
|
+
# Does not add any new keys
|
93
|
+
return input_type
|
94
|
+
|
95
|
+
def preprocess(
|
96
|
+
self,
|
97
|
+
input: dict[str, Any],
|
98
|
+
extra_input: Optional[dict[str, Any]] = None,
|
99
|
+
) -> tuple[dict[str, Any], Optional[dict[str, dict[str, Any]]]]:
|
100
|
+
"""Preprocess.
|
101
|
+
|
102
|
+
Parameters
|
103
|
+
----------
|
104
|
+
input : dict
|
105
|
+
The input from the Junifer Data object.
|
106
|
+
extra_input : dict, optional
|
107
|
+
The other fields in the Junifer Data object.
|
108
|
+
|
109
|
+
Returns
|
110
|
+
-------
|
111
|
+
dict
|
112
|
+
The computed result as dictionary.
|
113
|
+
None
|
114
|
+
Extra "helper" data types as dictionary to add to the Junifer Data
|
115
|
+
object.
|
116
|
+
|
117
|
+
Raises
|
118
|
+
------
|
119
|
+
RuntimeError
|
120
|
+
If no time slicing will be performed or
|
121
|
+
if ``stop`` is not None when ``duration`` is provided or
|
122
|
+
if calculated stop index is greater than allowed value.
|
123
|
+
|
124
|
+
"""
|
125
|
+
logger.debug("Temporal slicing")
|
126
|
+
|
127
|
+
# Get BOLD data
|
128
|
+
bold_img = input["data"]
|
129
|
+
time_dim = bold_img.shape[3]
|
130
|
+
|
131
|
+
# Check if slicing is not required
|
132
|
+
if self.start == 0:
|
133
|
+
if self.stop is None or self.stop == -1 or self.stop == time_dim:
|
134
|
+
raise_error(
|
135
|
+
"No temporal slicing will be performed as "
|
136
|
+
f"`start` = {self.start} and "
|
137
|
+
f"`stop` = {self.stop}, hence you "
|
138
|
+
"should remove the TemporalSlicer from the preprocess "
|
139
|
+
"step.",
|
140
|
+
klass=RuntimeError,
|
141
|
+
)
|
142
|
+
|
143
|
+
# Sanity check for stop and duration combination
|
144
|
+
if self.duration is not None and self.stop is not None:
|
145
|
+
raise_error(
|
146
|
+
"`stop` should be None if `duration` is not None. "
|
147
|
+
"Set `stop` = None for TemporalSlicer to continue.",
|
148
|
+
klass=RuntimeError,
|
149
|
+
)
|
150
|
+
|
151
|
+
# Set t_r
|
152
|
+
t_r = self.t_r
|
153
|
+
if t_r is None:
|
154
|
+
logger.info("No `t_r` specified, using t_r from NIfTI header")
|
155
|
+
t_r = bold_img.header.get_zooms()[3] # type: ignore
|
156
|
+
logger.info(
|
157
|
+
f"Read t_r from NIfTI header: {t_r}",
|
158
|
+
)
|
159
|
+
|
160
|
+
# Create element-specific tempdir for storing generated data
|
161
|
+
element_tempdir = WorkDirManager().get_element_tempdir(
|
162
|
+
prefix="temporal_slicer"
|
163
|
+
)
|
164
|
+
|
165
|
+
# Check stop; duration is None
|
166
|
+
if self.stop is None:
|
167
|
+
if self.duration is not None:
|
168
|
+
stop = self.start + self.duration
|
169
|
+
else:
|
170
|
+
stop = time_dim
|
171
|
+
else:
|
172
|
+
# Calculate stop index if going from end
|
173
|
+
if self.stop < 0:
|
174
|
+
stop = time_dim + 1 + self.stop
|
175
|
+
else:
|
176
|
+
stop = self.stop
|
177
|
+
|
178
|
+
# Convert slice range from seconds to indices
|
179
|
+
index = slice(int(self.start // t_r), int(stop // t_r))
|
180
|
+
|
181
|
+
# Check if stop index is out of bounds
|
182
|
+
if index.stop > time_dim:
|
183
|
+
raise_error(
|
184
|
+
f"Calculated stop index: {index.stop} is greater than "
|
185
|
+
f"allowed value: {time_dim}",
|
186
|
+
klass=IndexError,
|
187
|
+
)
|
188
|
+
|
189
|
+
logger.info(
|
190
|
+
"Computed slice range for TemporalSlicer: "
|
191
|
+
f"[{index.start},{index.stop}]"
|
192
|
+
)
|
193
|
+
|
194
|
+
# Slice image
|
195
|
+
sliced_img = nimg.index_img(bold_img, index)
|
196
|
+
# Fix t_r as nilearn messes it up
|
197
|
+
sliced_img.header["pixdim"][4] = t_r
|
198
|
+
# Save sliced data
|
199
|
+
sliced_img_path = element_tempdir / "sliced_data.nii.gz"
|
200
|
+
nib.save(sliced_img, sliced_img_path)
|
201
|
+
|
202
|
+
logger.debug("Updating `BOLD`")
|
203
|
+
input.update(
|
204
|
+
{
|
205
|
+
# Update path to sync with "data"
|
206
|
+
"path": sliced_img_path,
|
207
|
+
# Update data
|
208
|
+
"data": sliced_img,
|
209
|
+
}
|
210
|
+
)
|
211
|
+
|
212
|
+
# Check for BOLD.confounds and update if found
|
213
|
+
if input.get("confounds") is not None:
|
214
|
+
# Slice confounds
|
215
|
+
sliced_confounds_df = input["confounds"]["data"].iloc[index, :]
|
216
|
+
# Save sliced confounds
|
217
|
+
sliced_confounds_path = (
|
218
|
+
element_tempdir / "sliced_confounds_regressors.tsv"
|
219
|
+
)
|
220
|
+
sliced_confounds_df.to_csv(
|
221
|
+
sliced_confounds_path,
|
222
|
+
sep="\t",
|
223
|
+
index=False,
|
224
|
+
)
|
225
|
+
|
226
|
+
logger.debug("Updating `BOLD.confounds`")
|
227
|
+
input["confounds"].update(
|
228
|
+
{
|
229
|
+
# Update path to sync with "data"
|
230
|
+
"path": sliced_confounds_path,
|
231
|
+
# Update data
|
232
|
+
"data": sliced_confounds_df,
|
233
|
+
}
|
234
|
+
)
|
235
|
+
|
236
|
+
return input, None
|
@@ -0,0 +1,138 @@
|
|
1
|
+
"""Provide tests for TemporalSlicer."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from contextlib import AbstractContextManager, nullcontext
|
7
|
+
from typing import Optional
|
8
|
+
|
9
|
+
import pytest
|
10
|
+
|
11
|
+
from junifer.datareader import DefaultDataReader
|
12
|
+
from junifer.preprocess import TemporalSlicer
|
13
|
+
from junifer.testing.datagrabbers import PartlyCloudyTestingDataGrabber
|
14
|
+
|
15
|
+
|
16
|
+
@pytest.mark.parametrize(
|
17
|
+
"start, stop, duration, t_r, expected_dim, expect",
|
18
|
+
(
|
19
|
+
[
|
20
|
+
0.0,
|
21
|
+
168.0,
|
22
|
+
None,
|
23
|
+
2.0,
|
24
|
+
84,
|
25
|
+
pytest.raises(RuntimeError, match="No temporal slicing"),
|
26
|
+
], # t_r from doc is 2.0
|
27
|
+
[0.0, 167.0, None, 2.0, 83, nullcontext()], # t_r from doc is 2.0
|
28
|
+
[
|
29
|
+
0.0,
|
30
|
+
None,
|
31
|
+
None,
|
32
|
+
2.0,
|
33
|
+
84,
|
34
|
+
pytest.raises(RuntimeError, match="No temporal slicing"),
|
35
|
+
], # total with no end
|
36
|
+
[2.0, None, None, 2.0, 83, nullcontext()], # total with no end
|
37
|
+
[0.0, 84.0, None, 2.0, 42, nullcontext()], # first half
|
38
|
+
[0.0, -85.0, None, 2.0, 42, nullcontext()], # first half from end
|
39
|
+
[84.0, -1.0, None, 2.0, 42, nullcontext()], # second half
|
40
|
+
[
|
41
|
+
33.0,
|
42
|
+
-33.0,
|
43
|
+
33.0,
|
44
|
+
2.0,
|
45
|
+
42,
|
46
|
+
pytest.raises(RuntimeError, match="`stop` should be None"),
|
47
|
+
],
|
48
|
+
[10.0, None, 30.0, 2.0, 15, nullcontext()],
|
49
|
+
[
|
50
|
+
0.0,
|
51
|
+
168.0,
|
52
|
+
None,
|
53
|
+
None,
|
54
|
+
168,
|
55
|
+
pytest.raises(RuntimeError, match="No temporal slicing"),
|
56
|
+
], # t_r from image is 1.0
|
57
|
+
[0.0, 167.0, None, None, 167, nullcontext()], # t_r from image is 1.0
|
58
|
+
[
|
59
|
+
0.0,
|
60
|
+
None,
|
61
|
+
None,
|
62
|
+
None,
|
63
|
+
168,
|
64
|
+
pytest.raises(RuntimeError, match="No temporal slicing"),
|
65
|
+
], # total with no end
|
66
|
+
[0.0, 84.0, None, None, 84, nullcontext()], # first half
|
67
|
+
[0.0, -85.0, None, None, 84, nullcontext()], # first half from end
|
68
|
+
[84.0, -1.0, None, None, 84, nullcontext()], # second half
|
69
|
+
[
|
70
|
+
33.0,
|
71
|
+
-33.0,
|
72
|
+
33.0,
|
73
|
+
None,
|
74
|
+
84,
|
75
|
+
pytest.raises(RuntimeError, match="`stop` should be None"),
|
76
|
+
],
|
77
|
+
[10.0, None, 30.0, None, 30, nullcontext()],
|
78
|
+
[
|
79
|
+
-1.0,
|
80
|
+
None,
|
81
|
+
None,
|
82
|
+
None,
|
83
|
+
84,
|
84
|
+
pytest.raises(ValueError, match="`start` cannot be negative"),
|
85
|
+
],
|
86
|
+
[
|
87
|
+
0.0,
|
88
|
+
500.0,
|
89
|
+
None,
|
90
|
+
2.0,
|
91
|
+
42,
|
92
|
+
pytest.raises(IndexError, match="Calculated stop index:"),
|
93
|
+
],
|
94
|
+
),
|
95
|
+
)
|
96
|
+
def test_TemporalSlicer(
|
97
|
+
start: float,
|
98
|
+
stop: Optional[float],
|
99
|
+
duration: Optional[float],
|
100
|
+
t_r: Optional[float],
|
101
|
+
expected_dim: int,
|
102
|
+
expect: AbstractContextManager,
|
103
|
+
) -> None:
|
104
|
+
"""Test TemporalSlicer.
|
105
|
+
|
106
|
+
Parameters
|
107
|
+
----------
|
108
|
+
start : float
|
109
|
+
The parametrized start.
|
110
|
+
stop : float or None
|
111
|
+
The parametrized stop.
|
112
|
+
duration : float or None
|
113
|
+
The parametrized duration.
|
114
|
+
t_r : float or None
|
115
|
+
The parametrized TR.
|
116
|
+
expected_dim : int
|
117
|
+
The parametrized expected time dimension size.
|
118
|
+
expect : typing.ContextManager
|
119
|
+
The parametrized ContextManager object.
|
120
|
+
|
121
|
+
"""
|
122
|
+
|
123
|
+
with PartlyCloudyTestingDataGrabber() as dg:
|
124
|
+
# Read data
|
125
|
+
element_data = DefaultDataReader().fit_transform(dg["sub-01"])
|
126
|
+
# Preprocess data
|
127
|
+
with expect:
|
128
|
+
output = TemporalSlicer(
|
129
|
+
start=start, # in seconds
|
130
|
+
stop=stop, # in seconds
|
131
|
+
duration=duration, # in seconds
|
132
|
+
t_r=t_r, # in seconds
|
133
|
+
).fit_transform(element_data)
|
134
|
+
|
135
|
+
# Check image data dim
|
136
|
+
assert output["BOLD"]["data"].shape[3] == expected_dim
|
137
|
+
# Check confounds dim
|
138
|
+
assert output["BOLD"]["confounds"]["data"].shape[0] == expected_dim
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.7.
|
3
|
+
Version: 0.0.7.dev67
|
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>
|
@@ -65,6 +65,7 @@ docs/changes/contributors.inc
|
|
65
65
|
docs/changes/newsfragments/.gitignore
|
66
66
|
docs/changes/newsfragments/333.enh
|
67
67
|
docs/changes/newsfragments/441.misc
|
68
|
+
docs/changes/newsfragments/443.feature
|
68
69
|
docs/changes/newsfragments/444.bugfix
|
69
70
|
docs/extending/coordinates.rst
|
70
71
|
docs/extending/datagrabber.rst
|
@@ -363,6 +364,7 @@ junifer/pipeline/tests/test_update_meta_mixin.py
|
|
363
364
|
junifer/pipeline/tests/test_workdir_manager.py
|
364
365
|
junifer/preprocess/__init__.py
|
365
366
|
junifer/preprocess/__init__.pyi
|
367
|
+
junifer/preprocess/_temporal_slicer.py
|
366
368
|
junifer/preprocess/base.py
|
367
369
|
junifer/preprocess/py.typed
|
368
370
|
junifer/preprocess/confounds/__init__.py
|
@@ -379,6 +381,7 @@ junifer/preprocess/smoothing/py.typed
|
|
379
381
|
junifer/preprocess/smoothing/smoothing.py
|
380
382
|
junifer/preprocess/smoothing/tests/test_smoothing.py
|
381
383
|
junifer/preprocess/tests/test_preprocess_base.py
|
384
|
+
junifer/preprocess/tests/test_temporal_slicer.py
|
382
385
|
junifer/preprocess/warping/__init__.py
|
383
386
|
junifer/preprocess/warping/__init__.pyi
|
384
387
|
junifer/preprocess/warping/_ants_warper.py
|
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
|
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
|
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
|
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
|