junifer 0.0.7.dev206__tar.gz → 0.0.7.dev217__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.dev206 → junifer-0.0.7.dev217}/PKG-INFO +1 -1
- junifer-0.0.7.dev217/docs/changes/newsfragments/462.feature +1 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/_version.py +3 -3
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/_ants_warper.py +71 -22
- junifer-0.0.7.dev217/junifer/preprocess/warping/_fsl_warper.py +289 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/space_warper.py +68 -20
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/PKG-INFO +1 -1
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/SOURCES.txt +1 -0
- junifer-0.0.7.dev206/junifer/preprocess/warping/_fsl_warper.py +0 -163
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.dockerignore +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/dependabot.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/pull_request_template.md +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/check-stale.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docker-ci-publish.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docker-docs-publish.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.github/workflows/publish.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.gitignore +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.gitmodules +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/AUTHORS.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/Dockerfile-ci +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/Dockerfile-docs +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/LICENSE.md +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/README.md +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/codecov.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/conda-env.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/Makefile +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/_templates/versions.html +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/api.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/cli.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/configs.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/data.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/index.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/markers.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/stats.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/storage.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/testing.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/api/utils.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/builtin.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/333.enh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/429.change +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/429.enh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/432.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/441.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/443.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/444.bugfix +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/450.doc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/450.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/451.doc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/451.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/452.doc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/452.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/454.bugfix +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/456.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/457.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.change +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/458.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/460.feature +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/464.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/465.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/466.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/467.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/changes/newsfragments/468.misc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/conf.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/contribution.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_dump_asset.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_registries.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/data_types.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/dependencies.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/extension.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/index.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/maps.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/marker.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/masks.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/plugins.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/extending/preprocessor.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/faq.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/help.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/index.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/installation.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/links.inc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/maintaining.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/redirect.html +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/starting.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/data.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/index.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/codeless.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/configuring.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/dumping.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/index.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/masks.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/queueing.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/using/running.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/docs/whats_new.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/README.rst +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/ignore_words.txt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/decorators.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/functions.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_binarize +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_mc +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mri_pretess +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/mris_convert +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_conda.bash +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_conda.zsh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_venv.bash +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/res/run_venv.zsh +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/tests/test_decorators.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/cli.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/parser.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_cli.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_cli_utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/tests/test_parser.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/cli/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/configs/juseless/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/conftest.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/_dispatch.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_coordinates.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_ants_maps_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_fsl_maps_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/maps/tests/test_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_ants_mask_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_fsl_mask_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/_masks.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/masks/tests/test_masks.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/_parcellations.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/pipeline_data_registry_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_dispatch.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/data/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/default.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/brainprint.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/maps_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_brainprint.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_maps_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/markers/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/_brainprint.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/_data_object_dumper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/marker_collection.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/pipeline_component_registry.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_marker_collection.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/_temporal_filter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/_temporal_slicer.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/smoothing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/stats.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/storage/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/registry.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/testing/utils.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/typing/_typing.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/__init__.pyi +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/_config.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/_yaml.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/fs.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/logging.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/py.typed +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/singleton.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_config.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/pyproject.toml +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/setup.cfg +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/setup.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.7.dev206 → junifer-0.0.7.dev217}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: junifer
|
|
3
|
-
Version: 0.0.7.
|
|
3
|
+
Version: 0.0.7.dev217
|
|
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
|
+
Enable :class:`.SpaceWarper` to warp data from native space to template spaces via both FSL and ANTs by `Synchon Mandal`_
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.0.7.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 0, 7, '
|
|
31
|
+
__version__ = version = '0.0.7.dev217'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 0, 7, 'dev217')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g0925af82f'
|
|
@@ -180,27 +180,74 @@ class ANTsWarper:
|
|
|
180
180
|
|
|
181
181
|
# Template space warping
|
|
182
182
|
else:
|
|
183
|
+
input_space = input["space"]
|
|
183
184
|
logger.debug(
|
|
184
|
-
f"Using ANTs to warp data from {
|
|
185
|
+
f"Using ANTs to warp data from {input_space} space "
|
|
186
|
+
f"to {reference} space"
|
|
185
187
|
)
|
|
186
188
|
|
|
187
|
-
#
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
189
|
+
# Native to MNI
|
|
190
|
+
if input_space == "native":
|
|
191
|
+
# Get warp file path
|
|
192
|
+
xfm_file_path = None
|
|
193
|
+
for entry in extra_input["Warp"]:
|
|
194
|
+
if entry["src"] == "native" and entry["dst"] == reference:
|
|
195
|
+
xfm_file_path = entry["path"]
|
|
196
|
+
if xfm_file_path is None:
|
|
197
|
+
raise_error(
|
|
198
|
+
klass=RuntimeError,
|
|
199
|
+
msg="Could not find correct warp file path",
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
# Use ResampleImage if input data resolution and reference
|
|
203
|
+
# resolution don't match
|
|
204
|
+
input_res = np.min(input["data"].header.get_zooms()[:3])
|
|
205
|
+
ref_res = np.min(
|
|
206
|
+
input["reference"]["data"].header.get_zooms()[:3]
|
|
207
|
+
)
|
|
208
|
+
logger.debug(f"Input resolution: {input_res}")
|
|
209
|
+
logger.debug(f"Reference resolution: {ref_res}")
|
|
210
|
+
if input_res != ref_res:
|
|
211
|
+
# Create a tempfile for resampled reference output
|
|
212
|
+
ref_path = (
|
|
213
|
+
element_tempdir
|
|
214
|
+
/ f"resampled_reference-{reference}.nii.gz"
|
|
215
|
+
)
|
|
216
|
+
# Set ResampleImage command
|
|
217
|
+
resample_image_cmd = [
|
|
218
|
+
"ResampleImage",
|
|
219
|
+
"3", # image dimension
|
|
220
|
+
f"{input['reference']['path'].resolve()}",
|
|
221
|
+
f"{ref_path.resolve()}",
|
|
222
|
+
f"{input_res}x{input_res}x{input_res}",
|
|
223
|
+
"0", # option for spacing and not size
|
|
224
|
+
"3 3", # Lanczos windowed sinc
|
|
225
|
+
]
|
|
226
|
+
# Call ResampleImage
|
|
227
|
+
run_ext_cmd(name="ResampleImage", cmd=resample_image_cmd)
|
|
228
|
+
else:
|
|
229
|
+
logger.debug(
|
|
230
|
+
"Reference resolution matches input resolution"
|
|
231
|
+
)
|
|
232
|
+
ref_path = input["reference"]["path"]
|
|
233
|
+
|
|
234
|
+
# MNI to MNI
|
|
235
|
+
else:
|
|
236
|
+
# Get xfm file
|
|
237
|
+
xfm_file_path = get_xfm(src=input_space, dst=reference)
|
|
238
|
+
# Get template space image in correct resolution
|
|
239
|
+
template_space_img = get_template(
|
|
240
|
+
space=reference,
|
|
241
|
+
target_img=input["data"],
|
|
242
|
+
extra_input=None,
|
|
243
|
+
)
|
|
244
|
+
# Save template
|
|
245
|
+
ref_path = element_tempdir / f"{reference}_T1w.nii.gz"
|
|
246
|
+
nib.save(template_space_img, ref_path)
|
|
200
247
|
|
|
201
248
|
# Create a tempfile for warped output
|
|
202
249
|
warped_output_path = element_tempdir / (
|
|
203
|
-
f"warped_data_from_{
|
|
250
|
+
f"warped_data_from_{input_space}_to_{reference}.nii.gz"
|
|
204
251
|
)
|
|
205
252
|
|
|
206
253
|
# Set antsApplyTransforms command
|
|
@@ -210,7 +257,7 @@ class ANTsWarper:
|
|
|
210
257
|
"-e 3",
|
|
211
258
|
"-n LanczosWindowedSinc",
|
|
212
259
|
f"-i {input['path'].resolve()}",
|
|
213
|
-
f"-r {
|
|
260
|
+
f"-r {ref_path.resolve()}",
|
|
214
261
|
f"-t {xfm_file_path.resolve()}",
|
|
215
262
|
f"-o {warped_output_path.resolve()}",
|
|
216
263
|
]
|
|
@@ -226,18 +273,20 @@ class ANTsWarper:
|
|
|
226
273
|
"data": nib.load(warped_output_path),
|
|
227
274
|
# Update warped input's space
|
|
228
275
|
"space": reference,
|
|
229
|
-
# Save reference path
|
|
230
|
-
|
|
276
|
+
# Save resampled reference path or overwrite original
|
|
277
|
+
# keeping it same
|
|
278
|
+
"reference": {"path": ref_path},
|
|
231
279
|
# Keep pre-warp space for further operations
|
|
232
|
-
"prewarp_space":
|
|
280
|
+
"prewarp_space": input_space,
|
|
233
281
|
}
|
|
234
282
|
)
|
|
235
283
|
|
|
236
284
|
# Check for data type's mask and warp if found
|
|
237
285
|
if input.get("mask") is not None:
|
|
286
|
+
logger.debug("Warping associated mask")
|
|
238
287
|
# Create a tempfile for warped mask output
|
|
239
288
|
apply_transforms_mask_out_path = element_tempdir / (
|
|
240
|
-
f"warped_mask_from_{
|
|
289
|
+
f"warped_mask_from_{input_space}_to_{reference}.nii.gz"
|
|
241
290
|
)
|
|
242
291
|
# Set antsApplyTransforms command
|
|
243
292
|
apply_transforms_mask_cmd = [
|
|
@@ -246,8 +295,8 @@ class ANTsWarper:
|
|
|
246
295
|
"-e 3",
|
|
247
296
|
"-n 'GenericLabel[NearestNeighbor]'",
|
|
248
297
|
f"-i {input['mask']['path'].resolve()}",
|
|
249
|
-
# use resampled reference
|
|
250
|
-
f"-r {
|
|
298
|
+
# use resampled reference or original
|
|
299
|
+
f"-r {ref_path.resolve()}",
|
|
251
300
|
f"-t {xfm_file_path.resolve()}",
|
|
252
301
|
f"-o {apply_transforms_mask_out_path.resolve()}",
|
|
253
302
|
]
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"""Provide class for space warping via FSL FLIRT."""
|
|
2
|
+
|
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
|
4
|
+
# License: AGPL
|
|
5
|
+
|
|
6
|
+
from typing import (
|
|
7
|
+
Any,
|
|
8
|
+
ClassVar,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
import nibabel as nib
|
|
12
|
+
import numpy as np
|
|
13
|
+
|
|
14
|
+
from ...pipeline import WorkDirManager
|
|
15
|
+
from ...typing import Dependencies, ExternalDependencies
|
|
16
|
+
from ...utils import logger, raise_error, run_ext_cmd
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
__all__ = ["FSLWarper"]
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class FSLWarper:
|
|
23
|
+
"""Class for space warping via FSL FLIRT.
|
|
24
|
+
|
|
25
|
+
This class uses FSL FLIRT's ``flirt`` for resampling and ``applywarp`` for
|
|
26
|
+
transformation.
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
_EXT_DEPENDENCIES: ClassVar[ExternalDependencies] = [
|
|
31
|
+
{
|
|
32
|
+
"name": "fsl",
|
|
33
|
+
"commands": ["flirt", "applywarp"],
|
|
34
|
+
},
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
_DEPENDENCIES: ClassVar[Dependencies] = {"numpy", "nibabel"}
|
|
38
|
+
|
|
39
|
+
def preprocess(
|
|
40
|
+
self,
|
|
41
|
+
input: dict[str, Any],
|
|
42
|
+
extra_input: dict[str, Any],
|
|
43
|
+
reference: str,
|
|
44
|
+
) -> dict[str, Any]: # pragma: no cover
|
|
45
|
+
"""Preprocess using FSL.
|
|
46
|
+
|
|
47
|
+
Parameters
|
|
48
|
+
----------
|
|
49
|
+
input : dict
|
|
50
|
+
A single input from the Junifer Data object in which to preprocess.
|
|
51
|
+
extra_input : dict
|
|
52
|
+
The other fields in the Junifer Data object. Should have ``T1w``
|
|
53
|
+
and ``Warp`` data types.
|
|
54
|
+
reference : str
|
|
55
|
+
The data type or template space to use as reference for warping.
|
|
56
|
+
Template space conversion is only possible from native space,
|
|
57
|
+
not from another template space.
|
|
58
|
+
|
|
59
|
+
Returns
|
|
60
|
+
-------
|
|
61
|
+
dict
|
|
62
|
+
The ``input`` dictionary with updated values.
|
|
63
|
+
|
|
64
|
+
Raises
|
|
65
|
+
------
|
|
66
|
+
RuntimeError
|
|
67
|
+
If warp file path could not be found in ``extra_input``.
|
|
68
|
+
|
|
69
|
+
"""
|
|
70
|
+
# Create element-specific tempdir for storing post-warping assets
|
|
71
|
+
element_tempdir = WorkDirManager().get_element_tempdir(
|
|
72
|
+
prefix="fsl_warper"
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# Warping to native space
|
|
76
|
+
if reference == "T1w":
|
|
77
|
+
logger.debug("Using FSL for space warping")
|
|
78
|
+
|
|
79
|
+
# Get the min of the voxel sizes from input and use it as the
|
|
80
|
+
# resolution
|
|
81
|
+
resolution = np.min(input["data"].header.get_zooms()[:3])
|
|
82
|
+
|
|
83
|
+
# Get warp file path
|
|
84
|
+
warp_file_path = None
|
|
85
|
+
for entry in extra_input["Warp"]:
|
|
86
|
+
if entry["dst"] == "native":
|
|
87
|
+
warp_file_path = entry["path"]
|
|
88
|
+
if warp_file_path is None:
|
|
89
|
+
raise_error(
|
|
90
|
+
klass=RuntimeError,
|
|
91
|
+
msg="Could not find correct warp file path",
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Create a tempfile for resampled reference output
|
|
95
|
+
flirt_out_path = element_tempdir / "resampled_reference.nii.gz"
|
|
96
|
+
# Set flirt command
|
|
97
|
+
flirt_cmd = [
|
|
98
|
+
"flirt",
|
|
99
|
+
"-interp spline",
|
|
100
|
+
f"-in {extra_input['T1w']['path'].resolve()}",
|
|
101
|
+
f"-ref {extra_input['T1w']['path'].resolve()}",
|
|
102
|
+
f"-applyisoxfm {resolution}",
|
|
103
|
+
f"-out {flirt_out_path.resolve()}",
|
|
104
|
+
]
|
|
105
|
+
# Call flirt
|
|
106
|
+
run_ext_cmd(name="flirt", cmd=flirt_cmd)
|
|
107
|
+
|
|
108
|
+
# Create a tempfile for warped output
|
|
109
|
+
applywarp_out_path = element_tempdir / "warped_data.nii.gz"
|
|
110
|
+
# Set applywarp command
|
|
111
|
+
applywarp_cmd = [
|
|
112
|
+
"applywarp",
|
|
113
|
+
"--interp=spline",
|
|
114
|
+
f"-i {input['path'].resolve()}",
|
|
115
|
+
# use resampled reference
|
|
116
|
+
f"-r {flirt_out_path.resolve()}",
|
|
117
|
+
f"-w {warp_file_path.resolve()}",
|
|
118
|
+
f"-o {applywarp_out_path.resolve()}",
|
|
119
|
+
]
|
|
120
|
+
# Call applywarp
|
|
121
|
+
run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
|
|
122
|
+
|
|
123
|
+
logger.debug("Updating warped data")
|
|
124
|
+
input.update(
|
|
125
|
+
{
|
|
126
|
+
# Update path to sync with "data"
|
|
127
|
+
"path": applywarp_out_path,
|
|
128
|
+
# Load nifti
|
|
129
|
+
"data": nib.load(applywarp_out_path),
|
|
130
|
+
# Use reference input's space as warped input's space
|
|
131
|
+
"space": extra_input["T1w"]["space"],
|
|
132
|
+
# Save resampled reference path
|
|
133
|
+
"reference": {"path": flirt_out_path},
|
|
134
|
+
# Keep pre-warp space for further operations
|
|
135
|
+
"prewarp_space": input["space"],
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# Check for data type's mask and warp if found
|
|
140
|
+
if input.get("mask") is not None:
|
|
141
|
+
# Create a tempfile for warped mask output
|
|
142
|
+
applywarp_mask_out_path = (
|
|
143
|
+
element_tempdir / "warped_mask.nii.gz"
|
|
144
|
+
)
|
|
145
|
+
# Set applywarp command
|
|
146
|
+
applywarp_mask_cmd = [
|
|
147
|
+
"applywarp",
|
|
148
|
+
"--interp=nn",
|
|
149
|
+
f"-i {input['mask']['path'].resolve()}",
|
|
150
|
+
# use resampled reference
|
|
151
|
+
f"-r {input['reference']['path'].resolve()}",
|
|
152
|
+
f"-w {warp_file_path.resolve()}",
|
|
153
|
+
f"-o {applywarp_mask_out_path.resolve()}",
|
|
154
|
+
]
|
|
155
|
+
# Call applywarp
|
|
156
|
+
run_ext_cmd(name="applywarp", cmd=applywarp_mask_cmd)
|
|
157
|
+
|
|
158
|
+
logger.debug("Updating warped mask data")
|
|
159
|
+
input.update(
|
|
160
|
+
{
|
|
161
|
+
"mask": {
|
|
162
|
+
# Update path to sync with "data"
|
|
163
|
+
"path": applywarp_mask_out_path,
|
|
164
|
+
# Load nifti
|
|
165
|
+
"data": nib.load(applywarp_mask_out_path),
|
|
166
|
+
# Use reference input's space as warped input
|
|
167
|
+
# mask's space
|
|
168
|
+
"space": extra_input["T1w"]["space"],
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
# Warping from native to template space
|
|
174
|
+
else:
|
|
175
|
+
logger.debug(
|
|
176
|
+
f"Using FSL to warp data from native space to {reference} "
|
|
177
|
+
"space"
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
# Get warp file path
|
|
181
|
+
warp_file_path = None
|
|
182
|
+
for entry in extra_input["Warp"]:
|
|
183
|
+
if entry["src"] == "native" and entry["dst"] == reference:
|
|
184
|
+
warp_file_path = entry["path"]
|
|
185
|
+
if warp_file_path is None:
|
|
186
|
+
raise_error(
|
|
187
|
+
klass=RuntimeError,
|
|
188
|
+
msg="Could not find correct warp file path",
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
# Use flirt if input data resolution and reference resolution don't
|
|
192
|
+
# match
|
|
193
|
+
input_resolution = np.min(input["data"].header.get_zooms()[:3])
|
|
194
|
+
ref_resolution = np.min(
|
|
195
|
+
input["reference"]["data"].header.get_zooms()[:3]
|
|
196
|
+
)
|
|
197
|
+
logger.debug(f"Input resolution: {input_resolution}")
|
|
198
|
+
logger.debug(f"Reference resolution: {ref_resolution}")
|
|
199
|
+
if input_resolution != ref_resolution:
|
|
200
|
+
logger.debug("Resampling reference to match input resolution")
|
|
201
|
+
# Create a tempfile for resampled reference output
|
|
202
|
+
ref_path = (
|
|
203
|
+
element_tempdir / f"resampled_reference-{reference}.nii.gz"
|
|
204
|
+
)
|
|
205
|
+
# Set flirt command
|
|
206
|
+
flirt_cmd = [
|
|
207
|
+
"flirt",
|
|
208
|
+
"-interp spline",
|
|
209
|
+
f"-in {input['reference']['path'].resolve()}",
|
|
210
|
+
f"-ref {input['reference']['path'].resolve()}",
|
|
211
|
+
f"-applyisoxfm {input_resolution}",
|
|
212
|
+
f"-out {ref_path.resolve()}",
|
|
213
|
+
]
|
|
214
|
+
# Call flirt
|
|
215
|
+
run_ext_cmd(name="flirt", cmd=flirt_cmd)
|
|
216
|
+
else:
|
|
217
|
+
logger.debug("Reference resolution matches input resolution")
|
|
218
|
+
ref_path = input["reference"]["path"]
|
|
219
|
+
|
|
220
|
+
# Create a tempfile for warped output
|
|
221
|
+
applywarp_out_path = (
|
|
222
|
+
element_tempdir
|
|
223
|
+
/ f"warped_data_from_native_to_{reference}.nii.gz"
|
|
224
|
+
)
|
|
225
|
+
# Set applywarp command
|
|
226
|
+
applywarp_cmd = [
|
|
227
|
+
"applywarp",
|
|
228
|
+
"--interp=spline",
|
|
229
|
+
f"-i {input['path'].resolve()}",
|
|
230
|
+
# use resampled reference or original
|
|
231
|
+
f"-r {ref_path.resolve()}",
|
|
232
|
+
f"-w {warp_file_path.resolve()}",
|
|
233
|
+
f"-o {applywarp_out_path.resolve()}",
|
|
234
|
+
]
|
|
235
|
+
# Call applywarp
|
|
236
|
+
run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
|
|
237
|
+
|
|
238
|
+
logger.debug("Updating warped data")
|
|
239
|
+
input.update(
|
|
240
|
+
{
|
|
241
|
+
# Update path to sync with "data"
|
|
242
|
+
"path": applywarp_out_path,
|
|
243
|
+
# Load nifti
|
|
244
|
+
"data": nib.load(applywarp_out_path),
|
|
245
|
+
# Switch space and prewarp_space
|
|
246
|
+
"space": reference,
|
|
247
|
+
"prewarp_space": input["space"],
|
|
248
|
+
# Save resampled reference path or overwrite original
|
|
249
|
+
# keeping it same
|
|
250
|
+
"reference": {"path": ref_path},
|
|
251
|
+
}
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
# Check for data type's mask and warp if found
|
|
255
|
+
if input.get("mask") is not None:
|
|
256
|
+
logger.debug("Warping associated mask")
|
|
257
|
+
# Create a tempfile for warped mask output
|
|
258
|
+
applywarp_mask_out_path = (
|
|
259
|
+
element_tempdir
|
|
260
|
+
/ f"warped_mask_from_native_to_{reference}.nii.gz"
|
|
261
|
+
)
|
|
262
|
+
# Set applywarp command
|
|
263
|
+
applywarp_mask_cmd = [
|
|
264
|
+
"applywarp",
|
|
265
|
+
"--interp=nn",
|
|
266
|
+
f"-i {input['mask']['path'].resolve()}",
|
|
267
|
+
# use resampled reference or original
|
|
268
|
+
f"-r {ref_path.resolve()}",
|
|
269
|
+
f"-w {warp_file_path.resolve()}",
|
|
270
|
+
f"-o {applywarp_mask_out_path.resolve()}",
|
|
271
|
+
]
|
|
272
|
+
# Call applywarp
|
|
273
|
+
run_ext_cmd(name="applywarp", cmd=applywarp_mask_cmd)
|
|
274
|
+
|
|
275
|
+
logger.debug("Updating warped mask data")
|
|
276
|
+
input.update(
|
|
277
|
+
{
|
|
278
|
+
"mask": {
|
|
279
|
+
# Update path to sync with "data"
|
|
280
|
+
"path": applywarp_mask_out_path,
|
|
281
|
+
# Load nifti
|
|
282
|
+
"data": nib.load(applywarp_mask_out_path),
|
|
283
|
+
# Update mask's space
|
|
284
|
+
"space": reference,
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
return input
|
|
@@ -133,7 +133,7 @@ class SpaceWarper(BasePreprocessor):
|
|
|
133
133
|
# Does not add any new keys
|
|
134
134
|
return input_type
|
|
135
135
|
|
|
136
|
-
def preprocess(
|
|
136
|
+
def preprocess( # noqa: C901
|
|
137
137
|
self,
|
|
138
138
|
input: dict[str, Any],
|
|
139
139
|
extra_input: Optional[dict[str, Any]] = None,
|
|
@@ -162,7 +162,7 @@ class SpaceWarper(BasePreprocessor):
|
|
|
162
162
|
i.e., using ``"T1w"`` as reference.
|
|
163
163
|
RuntimeError
|
|
164
164
|
If warper could not be found in ``extra_input`` when
|
|
165
|
-
``using="auto"`` or
|
|
165
|
+
``using="auto"`` or converting from native space or
|
|
166
166
|
if the data is in the correct space and does not require
|
|
167
167
|
warping or
|
|
168
168
|
if FSL is used when ``reference="T1w"``.
|
|
@@ -184,6 +184,7 @@ class SpaceWarper(BasePreprocessor):
|
|
|
184
184
|
input = FSLWarper().preprocess(
|
|
185
185
|
input=input,
|
|
186
186
|
extra_input=extra_input,
|
|
187
|
+
reference=self.reference,
|
|
187
188
|
)
|
|
188
189
|
elif self.using == "ants":
|
|
189
190
|
input = ANTsWarper().preprocess(
|
|
@@ -204,6 +205,7 @@ class SpaceWarper(BasePreprocessor):
|
|
|
204
205
|
input = FSLWarper().preprocess(
|
|
205
206
|
input=input,
|
|
206
207
|
extra_input=extra_input,
|
|
208
|
+
reference=self.reference,
|
|
207
209
|
)
|
|
208
210
|
elif warper == "ants":
|
|
209
211
|
input = ANTsWarper().preprocess(
|
|
@@ -211,10 +213,11 @@ class SpaceWarper(BasePreprocessor):
|
|
|
211
213
|
extra_input=extra_input,
|
|
212
214
|
reference=self.reference,
|
|
213
215
|
)
|
|
214
|
-
# Transform to template space
|
|
215
|
-
|
|
216
|
+
# Transform to template space
|
|
217
|
+
if self.using in ["fsl", "ants"] and self.reference != "T1w":
|
|
218
|
+
input_space = input["space"]
|
|
216
219
|
# Check pre-requirements for space manipulation
|
|
217
|
-
if self.
|
|
220
|
+
if self.using == "ants" and self.reference == input_space:
|
|
218
221
|
raise_error(
|
|
219
222
|
(
|
|
220
223
|
f"The target data is in {self.reference} space "
|
|
@@ -224,20 +227,65 @@ class SpaceWarper(BasePreprocessor):
|
|
|
224
227
|
),
|
|
225
228
|
klass=RuntimeError,
|
|
226
229
|
)
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
230
|
+
# Transform from native to MNI possible conditionally
|
|
231
|
+
if input_space == "native": # pragma: no cover
|
|
232
|
+
# Check for reference as no T1w available
|
|
233
|
+
if input.get("reference") is None:
|
|
234
|
+
raise_error(
|
|
235
|
+
"`reference` key missing from input data type."
|
|
236
|
+
)
|
|
237
|
+
# Check for extra inputs
|
|
238
|
+
if extra_input is None:
|
|
239
|
+
raise_error(
|
|
240
|
+
"No extra input provided, requires `Warp` "
|
|
241
|
+
"data type in particular."
|
|
242
|
+
)
|
|
243
|
+
# Warp
|
|
244
|
+
input_prewarp_space = input["prewarp_space"]
|
|
245
|
+
warper = None
|
|
246
|
+
for entry in extra_input["Warp"]:
|
|
247
|
+
if (
|
|
248
|
+
entry["src"] == input_space
|
|
249
|
+
and entry["dst"] == input_prewarp_space
|
|
250
|
+
):
|
|
251
|
+
warper = entry["warper"]
|
|
252
|
+
if warper is None:
|
|
253
|
+
raise_error(
|
|
254
|
+
klass=RuntimeError, msg="Could not find correct warper"
|
|
255
|
+
)
|
|
256
|
+
if warper == "fsl":
|
|
257
|
+
input = FSLWarper().preprocess(
|
|
258
|
+
input=input,
|
|
259
|
+
extra_input=extra_input,
|
|
260
|
+
reference=input_prewarp_space,
|
|
261
|
+
)
|
|
262
|
+
elif warper == "ants":
|
|
263
|
+
input = ANTsWarper().preprocess(
|
|
264
|
+
input=input,
|
|
265
|
+
extra_input=extra_input,
|
|
266
|
+
reference=input_prewarp_space,
|
|
267
|
+
)
|
|
268
|
+
else:
|
|
269
|
+
raise_error(
|
|
270
|
+
klass=RuntimeError, msg="Could not find correct warper"
|
|
271
|
+
)
|
|
272
|
+
else:
|
|
273
|
+
# Transform from MNI to MNI template space not possible
|
|
274
|
+
if self.using == "fsl":
|
|
275
|
+
raise_error(
|
|
276
|
+
(
|
|
277
|
+
f"Warping from {input_space} space to "
|
|
278
|
+
f"{self.reference} space not possible with "
|
|
279
|
+
"FSL, use ANTs instead."
|
|
280
|
+
),
|
|
281
|
+
klass=RuntimeError,
|
|
282
|
+
)
|
|
283
|
+
# Transform from MNI to MNI template space possible
|
|
284
|
+
else:
|
|
285
|
+
input = ANTsWarper().preprocess(
|
|
286
|
+
input=input,
|
|
287
|
+
extra_input={},
|
|
288
|
+
reference=self.reference,
|
|
289
|
+
)
|
|
242
290
|
|
|
243
291
|
return input, None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: junifer
|
|
3
|
-
Version: 0.0.7.
|
|
3
|
+
Version: 0.0.7.dev217
|
|
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>
|
|
@@ -84,6 +84,7 @@ docs/changes/newsfragments/458.change
|
|
|
84
84
|
docs/changes/newsfragments/458.feature
|
|
85
85
|
docs/changes/newsfragments/458.misc
|
|
86
86
|
docs/changes/newsfragments/460.feature
|
|
87
|
+
docs/changes/newsfragments/462.feature
|
|
87
88
|
docs/changes/newsfragments/464.misc
|
|
88
89
|
docs/changes/newsfragments/465.misc
|
|
89
90
|
docs/changes/newsfragments/466.misc
|