junifer 0.0.4.dev663__tar.gz → 0.0.4.dev691__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.4.dev663 → junifer-0.0.4.dev691}/PKG-INFO +1 -1
- junifer-0.0.4.dev691/docs/changes/newsfragments/301.feature +1 -0
- junifer-0.0.4.dev691/docs/changes/newsfragments/301.removal +1 -0
- junifer-0.0.4.dev691/docs/changes/newsfragments/312.bugfix +1 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/_version.py +2 -2
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/queue_context/htcondor_adapter.py +2 -2
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/queue_context/tests/test_htcondor_adapter.py +2 -2
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/__init__.py +1 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/bold_warper.py +4 -0
- junifer-0.0.4.dev691/junifer/preprocess/warping/__init__.py +6 -0
- junifer-0.0.4.dev691/junifer/preprocess/warping/_ants_warper.py +167 -0
- junifer-0.0.4.dev691/junifer/preprocess/warping/_fsl_warper.py +109 -0
- junifer-0.0.4.dev691/junifer/preprocess/warping/space_warper.py +203 -0
- junifer-0.0.4.dev691/junifer/preprocess/warping/tests/test_space_warper.py +198 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/PKG-INFO +1 -1
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/SOURCES.txt +8 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/dependabot.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/pull_request_template.md +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.github/workflows/pypi.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.gitignore +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.gitmodules +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/AUTHORS.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/LICENSE.md +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/README.md +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/codecov.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/conda-env.yml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/Makefile +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/_templates/versions.html +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/api.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/configs.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/data.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/index.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/markers.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/stats.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/storage.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/testing.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/api/utils.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/builtin.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/145.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/182.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/224.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/233.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/240.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/245.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/245.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/247.doc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/248.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/249.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/250.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/251.doc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/252.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/252.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/253.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/254.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/258.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/259.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/260.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/261.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/262.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/263.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/264.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/265.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/266.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/267.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/268.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/268.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/269.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/270.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/271.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/272.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/274.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/275.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/276.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/277.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/278.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/279.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/280.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/281.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/281.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/282.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/283.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/284.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/286.bugfix +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/287.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/288.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/291.doc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/293.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/294.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/295.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/297.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/298.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.doc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/300.misc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/302.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/309.feature +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/310.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/310.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/311.change +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/changes/newsfragments/311.enh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/conf.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/contribution.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/extension.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/index.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/marker.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/masks.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/faq.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/help.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/index.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/installation.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/links.inc +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/maintaining.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/redirect.html +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/sphinxext/gh_substitutions.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/starting.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/data.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/index.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/using/codeless.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/using/index.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/using/masks.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/using/queueing.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/using/running.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/docs/whats_new.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/README.rst +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/ignore_words.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/cli.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/decorators.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/functions.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/parser.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/queue_context/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/ants/run_ants_docker.sh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/run_conda.sh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/res/run_venv.sh +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/test_api_utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/test_cli.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/tests/test_parser.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/api/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/coordinates.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/masks.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/parcellations.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/template_spaces.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/tests/test_coordinates.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/tests/test_masks.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/tests/test_parcellations.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/data/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datagrabber/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datareader/default.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/collection.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/complexity_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/hurst_exponent.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/perm_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/range_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/range_entropy_auc.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/sample_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/_afni_falff.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/_junifer_falff.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/_afni_reho.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/_junifer_reho.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_collection.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/markers/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/registry.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/singleton.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_registry.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/pipeline/workdir_manager.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/ants/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/ants/ants_apply_transforms_warper.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/apply_warper.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/tests/test_bold_warper.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/stats.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/storage/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/registry.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/testing/utils.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/fs.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/helpers.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/logging.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/pyproject.toml +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/setup.cfg +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/setup.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.4.dev663 → junifer-0.0.4.dev691}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.4.
|
3
|
+
Version: 0.0.4.dev691
|
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:`.SpaceWarper` for warping ``T1w``, ``BOLD``, ``VBM_GM``, ``VBM_WM``, ``fALFF``, ``GCOR`` and ``LCOR`` data to other spaces by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Deprecate :class:`.BOLDWarper` and mark for removal in v0.0.4 by `Synchon Mandal`_
|
@@ -0,0 +1 @@
|
|
1
|
+
Fix :class:`.HTCondorAdapter`'s script generation to use double quotes instead of single quotes for HTCondor's ``VARS`` by `Synchon Mandal`_
|
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.0.4.
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 4, '
|
15
|
+
__version__ = version = '0.0.4.dev691'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 4, 'dev691')
|
@@ -274,8 +274,8 @@ class HTCondorAdapter(QueueContextAdapter):
|
|
274
274
|
)
|
275
275
|
fixed += (
|
276
276
|
f"JOB run{idx} {self._submit_run_path}\n"
|
277
|
-
f
|
278
|
-
f
|
277
|
+
f'VARS run{idx} element="{str_element}" ' # needs to be
|
278
|
+
f'log_element="{log_element}"\n\n' # double quoted
|
279
279
|
)
|
280
280
|
var = ""
|
281
281
|
if self._collect == "yes":
|
@@ -139,13 +139,13 @@ def test_HTCondorAdapter_run_collect(
|
|
139
139
|
(
|
140
140
|
[("sub01", "ses01")],
|
141
141
|
"yes",
|
142
|
-
|
142
|
+
'element="sub01,ses01" log_element="sub01-ses01"',
|
143
143
|
),
|
144
144
|
(["sub01"], "on_success_only", "JOB collect"),
|
145
145
|
(
|
146
146
|
[("sub01", "ses01")],
|
147
147
|
"on_success_only",
|
148
|
-
|
148
|
+
'element="sub01,ses01" log_element="sub01-ses01"',
|
149
149
|
),
|
150
150
|
],
|
151
151
|
)
|
@@ -30,6 +30,10 @@ from .fsl.apply_warper import _ApplyWarper
|
|
30
30
|
class BOLDWarper(BasePreprocessor):
|
31
31
|
"""Class for warping BOLD NIfTI images.
|
32
32
|
|
33
|
+
.. deprecated:: 0.0.3
|
34
|
+
`BOLDWarper` will be removed in v0.0.4, it is replaced by
|
35
|
+
`SpaceWarper` because the latter works also with T1w data.
|
36
|
+
|
33
37
|
Parameters
|
34
38
|
----------
|
35
39
|
using : {"fsl", "ants"}
|
@@ -0,0 +1,167 @@
|
|
1
|
+
"""Provide class for space warping via ANTs antsApplyTransforms."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from typing import (
|
7
|
+
Any,
|
8
|
+
ClassVar,
|
9
|
+
Dict,
|
10
|
+
List,
|
11
|
+
Set,
|
12
|
+
Union,
|
13
|
+
)
|
14
|
+
|
15
|
+
import nibabel as nib
|
16
|
+
import numpy as np
|
17
|
+
|
18
|
+
from ...data import get_template, get_xfm
|
19
|
+
from ...pipeline import WorkDirManager
|
20
|
+
from ...utils import logger, run_ext_cmd
|
21
|
+
|
22
|
+
|
23
|
+
class ANTsWarper:
|
24
|
+
"""Class for space warping via ANTs antsApplyTransforms.
|
25
|
+
|
26
|
+
This class uses ANTs' ``ResampleImage`` for resampling (if required) and
|
27
|
+
``antsApplyTransforms`` for transformation.
|
28
|
+
|
29
|
+
"""
|
30
|
+
|
31
|
+
_EXT_DEPENDENCIES: ClassVar[List[Dict[str, Union[str, List[str]]]]] = [
|
32
|
+
{
|
33
|
+
"name": "ants",
|
34
|
+
"commands": ["ResampleImage", "antsApplyTransforms"],
|
35
|
+
},
|
36
|
+
]
|
37
|
+
|
38
|
+
_DEPENDENCIES: ClassVar[Set[str]] = {"numpy", "nibabel"}
|
39
|
+
|
40
|
+
def preprocess(
|
41
|
+
self,
|
42
|
+
input: Dict[str, Any],
|
43
|
+
extra_input: Dict[str, Any],
|
44
|
+
reference: str,
|
45
|
+
) -> Dict[str, Any]:
|
46
|
+
"""Preprocess using ANTs.
|
47
|
+
|
48
|
+
Parameters
|
49
|
+
----------
|
50
|
+
input : dict
|
51
|
+
A single input from the Junifer Data object in which to preprocess.
|
52
|
+
extra_input : dict
|
53
|
+
The other fields in the Junifer Data object. Should have ``T1w``
|
54
|
+
and ``Warp`` data types.
|
55
|
+
reference : str
|
56
|
+
The data type or template space to use as reference for warping.
|
57
|
+
|
58
|
+
Returns
|
59
|
+
-------
|
60
|
+
dict
|
61
|
+
The ``input`` dictionary with modified ``data`` and ``space`` key
|
62
|
+
values and new ``reference_path`` key whose value points to the
|
63
|
+
reference file used for warping.
|
64
|
+
|
65
|
+
"""
|
66
|
+
# Create element-specific tempdir for storing post-warping assets
|
67
|
+
element_tempdir = WorkDirManager().get_element_tempdir(
|
68
|
+
prefix="ants_warper"
|
69
|
+
)
|
70
|
+
|
71
|
+
# Native space warping
|
72
|
+
if reference == "T1w":
|
73
|
+
logger.debug("Using ANTs for space warping")
|
74
|
+
|
75
|
+
# Get the min of the voxel sizes from input and use it as the
|
76
|
+
# resolution
|
77
|
+
resolution = np.min(input["data"].header.get_zooms()[:3])
|
78
|
+
|
79
|
+
# Create a tempfile for resampled reference output
|
80
|
+
resample_image_out_path = (
|
81
|
+
element_tempdir / "resampled_reference.nii.gz"
|
82
|
+
)
|
83
|
+
# Set ResampleImage command
|
84
|
+
resample_image_cmd = [
|
85
|
+
"ResampleImage",
|
86
|
+
"3", # image dimension
|
87
|
+
f"{extra_input['T1w']['path'].resolve()}",
|
88
|
+
f"{resample_image_out_path.resolve()}",
|
89
|
+
f"{resolution}x{resolution}x{resolution}",
|
90
|
+
"0", # option for spacing and not size
|
91
|
+
"3 3", # Lanczos windowed sinc
|
92
|
+
]
|
93
|
+
# Call ResampleImage
|
94
|
+
run_ext_cmd(name="ResampleImage", cmd=resample_image_cmd)
|
95
|
+
|
96
|
+
# Create a tempfile for warped output
|
97
|
+
apply_transforms_out_path = element_tempdir / "output.nii.gz"
|
98
|
+
# Set antsApplyTransforms command
|
99
|
+
apply_transforms_cmd = [
|
100
|
+
"antsApplyTransforms",
|
101
|
+
"-d 3",
|
102
|
+
"-e 3",
|
103
|
+
"-n LanczosWindowedSinc",
|
104
|
+
f"-i {input['path'].resolve()}",
|
105
|
+
# use resampled reference
|
106
|
+
f"-r {resample_image_out_path.resolve()}",
|
107
|
+
f"-t {extra_input['Warp']['path'].resolve()}",
|
108
|
+
f"-o {apply_transforms_out_path.resolve()}",
|
109
|
+
]
|
110
|
+
# Call antsApplyTransforms
|
111
|
+
run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
|
112
|
+
|
113
|
+
# Load nifti
|
114
|
+
input["data"] = nib.load(apply_transforms_out_path)
|
115
|
+
# Save resampled reference path
|
116
|
+
input["reference_path"] = resample_image_out_path
|
117
|
+
# Use reference input's space as warped input's space
|
118
|
+
input["space"] = extra_input["T1w"]["space"]
|
119
|
+
|
120
|
+
# Template space warping
|
121
|
+
else:
|
122
|
+
logger.debug(
|
123
|
+
f"Using ANTs to warp data from {input['space']} to {reference}"
|
124
|
+
)
|
125
|
+
|
126
|
+
# Get xfm file
|
127
|
+
xfm_file_path = get_xfm(src=input["space"], dst=reference)
|
128
|
+
# Get template space image
|
129
|
+
template_space_img = get_template(
|
130
|
+
space=reference,
|
131
|
+
target_data=input,
|
132
|
+
extra_input=None,
|
133
|
+
)
|
134
|
+
|
135
|
+
# Create component-scoped tempdir
|
136
|
+
tempdir = WorkDirManager().get_tempdir(prefix="ants_warper")
|
137
|
+
# Save template
|
138
|
+
template_space_img_path = tempdir / f"{reference}_T1w.nii.gz"
|
139
|
+
nib.save(template_space_img, template_space_img_path)
|
140
|
+
|
141
|
+
# Create a tempfile for warped output
|
142
|
+
warped_output_path = element_tempdir / (
|
143
|
+
f"data_warped_from_{input['space']}_to_" f"{reference}.nii.gz"
|
144
|
+
)
|
145
|
+
|
146
|
+
# Set antsApplyTransforms command
|
147
|
+
apply_transforms_cmd = [
|
148
|
+
"antsApplyTransforms",
|
149
|
+
"-d 3",
|
150
|
+
"-e 3",
|
151
|
+
"-n LanczosWindowedSinc",
|
152
|
+
f"-i {input['path'].resolve()}",
|
153
|
+
f"-r {template_space_img_path.resolve()}",
|
154
|
+
f"-t {xfm_file_path.resolve()}",
|
155
|
+
f"-o {warped_output_path.resolve()}",
|
156
|
+
]
|
157
|
+
# Call antsApplyTransforms
|
158
|
+
run_ext_cmd(name="antsApplyTransforms", cmd=apply_transforms_cmd)
|
159
|
+
|
160
|
+
# Delete tempdir
|
161
|
+
WorkDirManager().delete_tempdir(tempdir)
|
162
|
+
|
163
|
+
# Modify target data
|
164
|
+
input["data"] = nib.load(warped_output_path)
|
165
|
+
input["space"] = reference
|
166
|
+
|
167
|
+
return input
|
@@ -0,0 +1,109 @@
|
|
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
|
+
Dict,
|
10
|
+
List,
|
11
|
+
Set,
|
12
|
+
Union,
|
13
|
+
)
|
14
|
+
|
15
|
+
import nibabel as nib
|
16
|
+
import numpy as np
|
17
|
+
|
18
|
+
from ...pipeline import WorkDirManager
|
19
|
+
from ...utils import logger, run_ext_cmd
|
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[List[Dict[str, Union[str, List[str]]]]] = [
|
31
|
+
{
|
32
|
+
"name": "fsl",
|
33
|
+
"commands": ["flirt", "applywarp"],
|
34
|
+
},
|
35
|
+
]
|
36
|
+
|
37
|
+
_DEPENDENCIES: ClassVar[Set[str]] = {"numpy", "nibabel"}
|
38
|
+
|
39
|
+
def preprocess(
|
40
|
+
self,
|
41
|
+
input: Dict[str, Any],
|
42
|
+
extra_input: Dict[str, Any],
|
43
|
+
) -> Dict[str, Any]:
|
44
|
+
"""Preprocess using FSL.
|
45
|
+
|
46
|
+
Parameters
|
47
|
+
----------
|
48
|
+
input : dict
|
49
|
+
A single input from the Junifer Data object in which to preprocess.
|
50
|
+
extra_input : dict
|
51
|
+
The other fields in the Junifer Data object. Should have ``T1w``
|
52
|
+
and ``Warp`` data types.
|
53
|
+
|
54
|
+
Returns
|
55
|
+
-------
|
56
|
+
dict
|
57
|
+
The ``input`` dictionary with modified ``data`` and ``space`` key
|
58
|
+
values and new ``reference_path`` key whose value points to the
|
59
|
+
reference file used for warping.
|
60
|
+
|
61
|
+
"""
|
62
|
+
logger.debug("Using FSL for space warping")
|
63
|
+
|
64
|
+
# Get the min of the voxel sizes from input and use it as the
|
65
|
+
# resolution
|
66
|
+
resolution = np.min(input["data"].header.get_zooms()[:3])
|
67
|
+
|
68
|
+
# Create element-specific tempdir for storing post-warping assets
|
69
|
+
element_tempdir = WorkDirManager().get_element_tempdir(
|
70
|
+
prefix="fsl_warper"
|
71
|
+
)
|
72
|
+
|
73
|
+
# Create a tempfile for resampled reference output
|
74
|
+
flirt_out_path = element_tempdir / "resampled_reference.nii.gz"
|
75
|
+
# Set flirt command
|
76
|
+
flirt_cmd = [
|
77
|
+
"flirt",
|
78
|
+
"-interp spline",
|
79
|
+
f"-in {extra_input['T1w']['path'].resolve()}",
|
80
|
+
f"-ref {extra_input['T1w']['path'].resolve()}",
|
81
|
+
f"-applyisoxfm {resolution}",
|
82
|
+
f"-out {flirt_out_path.resolve()}",
|
83
|
+
]
|
84
|
+
# Call flirt
|
85
|
+
run_ext_cmd(name="flirt", cmd=flirt_cmd)
|
86
|
+
|
87
|
+
# Create a tempfile for warped output
|
88
|
+
applywarp_out_path = element_tempdir / "output.nii.gz"
|
89
|
+
# Set applywarp command
|
90
|
+
applywarp_cmd = [
|
91
|
+
"applywarp",
|
92
|
+
"--interp=spline",
|
93
|
+
f"-i {input['path'].resolve()}",
|
94
|
+
f"-r {flirt_out_path.resolve()}", # use resampled reference
|
95
|
+
f"-w {extra_input['Warp']['path'].resolve()}",
|
96
|
+
f"-o {applywarp_out_path.resolve()}",
|
97
|
+
]
|
98
|
+
# Call applywarp
|
99
|
+
run_ext_cmd(name="applywarp", cmd=applywarp_cmd)
|
100
|
+
|
101
|
+
# Load nifti
|
102
|
+
input["data"] = nib.load(applywarp_out_path)
|
103
|
+
# Save resampled reference path
|
104
|
+
input["reference_path"] = flirt_out_path
|
105
|
+
|
106
|
+
# Use reference input's space as warped input's space
|
107
|
+
input["space"] = extra_input["T1w"]["space"]
|
108
|
+
|
109
|
+
return input
|
@@ -0,0 +1,203 @@
|
|
1
|
+
"""Provide class for warping data to other template spaces."""
|
2
|
+
|
3
|
+
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
from typing import Any, ClassVar, Dict, List, Optional, Tuple, Type, Union
|
7
|
+
|
8
|
+
from templateflow import api as tflow
|
9
|
+
|
10
|
+
from ...api.decorators import register_preprocessor
|
11
|
+
from ...utils import logger, raise_error
|
12
|
+
from ..base import BasePreprocessor
|
13
|
+
from ._ants_warper import ANTsWarper
|
14
|
+
from ._fsl_warper import FSLWarper
|
15
|
+
|
16
|
+
|
17
|
+
__all__ = ["SpaceWarper"]
|
18
|
+
|
19
|
+
|
20
|
+
@register_preprocessor
|
21
|
+
class SpaceWarper(BasePreprocessor):
|
22
|
+
"""Class for warping data to other template spaces.
|
23
|
+
|
24
|
+
Parameters
|
25
|
+
----------
|
26
|
+
using : {"fsl", "ants"}
|
27
|
+
Implementation to use for warping:
|
28
|
+
|
29
|
+
* "fsl" : Use FSL's ``applywarp``
|
30
|
+
* "ants" : Use ANTs' ``antsApplyTransforms``
|
31
|
+
|
32
|
+
reference : str
|
33
|
+
The data type to use as reference for warping, can be either a data
|
34
|
+
type like ``"T1w"`` or a template space like ``"MNI152NLin2009cAsym"``.
|
35
|
+
Use ``"T1w"`` for native space warping and named templates for
|
36
|
+
template space warping.
|
37
|
+
on : {"T1w", "BOLD", "VBM_GM", "VBM_WM", "fALFF", "GCOR", "LCOR"} or list \
|
38
|
+
of the options
|
39
|
+
The data type to warp.
|
40
|
+
|
41
|
+
Raises
|
42
|
+
------
|
43
|
+
ValueError
|
44
|
+
If ``using`` is invalid or
|
45
|
+
if ``reference`` is invalid.
|
46
|
+
|
47
|
+
"""
|
48
|
+
|
49
|
+
_CONDITIONAL_DEPENDENCIES: ClassVar[List[Dict[str, Union[str, Type]]]] = [
|
50
|
+
{
|
51
|
+
"using": "fsl",
|
52
|
+
"depends_on": FSLWarper,
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"using": "ants",
|
56
|
+
"depends_on": ANTsWarper,
|
57
|
+
},
|
58
|
+
]
|
59
|
+
|
60
|
+
def __init__(
|
61
|
+
self, using: str, reference: str, on: Union[List[str], str]
|
62
|
+
) -> None:
|
63
|
+
"""Initialize the class."""
|
64
|
+
# Validate `using` parameter
|
65
|
+
valid_using = [dep["using"] for dep in self._CONDITIONAL_DEPENDENCIES]
|
66
|
+
if using not in valid_using:
|
67
|
+
raise_error(
|
68
|
+
f"Invalid value for `using`, should be one of: {valid_using}"
|
69
|
+
)
|
70
|
+
self.using = using
|
71
|
+
self.reference = reference
|
72
|
+
# Set required data types based on reference and
|
73
|
+
# initialize superclass
|
74
|
+
if self.reference == "T1w":
|
75
|
+
required_data_types = [self.reference, "Warp"]
|
76
|
+
# Listify on
|
77
|
+
if not isinstance(on, list):
|
78
|
+
on = [on]
|
79
|
+
# Extend required data types
|
80
|
+
required_data_types.extend(on)
|
81
|
+
|
82
|
+
super().__init__(
|
83
|
+
on=on,
|
84
|
+
required_data_types=required_data_types,
|
85
|
+
)
|
86
|
+
elif self.reference in tflow.templates():
|
87
|
+
super().__init__(on=on)
|
88
|
+
else:
|
89
|
+
raise_error(f"Unknown reference: {self.reference}")
|
90
|
+
|
91
|
+
def get_valid_inputs(self) -> List[str]:
|
92
|
+
"""Get valid data types for input.
|
93
|
+
|
94
|
+
Returns
|
95
|
+
-------
|
96
|
+
list of str
|
97
|
+
The list of data types that can be used as input for this
|
98
|
+
preprocessor.
|
99
|
+
|
100
|
+
"""
|
101
|
+
return ["T1w", "BOLD", "VBM_GM", "VBM_WM", "fALFF", "GCOR", "LCOR"]
|
102
|
+
|
103
|
+
def get_output_type(self, input_type: str) -> str:
|
104
|
+
"""Get output type.
|
105
|
+
|
106
|
+
Parameters
|
107
|
+
----------
|
108
|
+
input_type : str
|
109
|
+
The data type input to the preprocessor.
|
110
|
+
|
111
|
+
Returns
|
112
|
+
-------
|
113
|
+
str
|
114
|
+
The data type output by the preprocessor.
|
115
|
+
|
116
|
+
"""
|
117
|
+
# Does not add any new keys
|
118
|
+
return input_type
|
119
|
+
|
120
|
+
def preprocess(
|
121
|
+
self,
|
122
|
+
input: Dict[str, Any],
|
123
|
+
extra_input: Optional[Dict[str, Any]] = None,
|
124
|
+
) -> Tuple[Dict[str, Any], Optional[Dict[str, Dict[str, Any]]]]:
|
125
|
+
"""Preprocess.
|
126
|
+
|
127
|
+
Parameters
|
128
|
+
----------
|
129
|
+
input : dict
|
130
|
+
The input from the Junifer Data object.
|
131
|
+
extra_input : dict, optional
|
132
|
+
The other fields in the Junifer Data object.
|
133
|
+
|
134
|
+
Returns
|
135
|
+
-------
|
136
|
+
dict
|
137
|
+
The computed result as dictionary.
|
138
|
+
None
|
139
|
+
Extra "helper" data types as dictionary to add to the Junifer Data
|
140
|
+
object.
|
141
|
+
|
142
|
+
Raises
|
143
|
+
------
|
144
|
+
ValueError
|
145
|
+
If ``extra_input`` is None when transforming to native space
|
146
|
+
i.e., using ``"T1w"`` as reference.
|
147
|
+
RuntimeError
|
148
|
+
If the data is in the correct space and does not require
|
149
|
+
warping or
|
150
|
+
if FSL is used for template space warping.
|
151
|
+
|
152
|
+
"""
|
153
|
+
logger.info(f"Warping to {self.reference} space using SpaceWarper")
|
154
|
+
# Transform to native space
|
155
|
+
if self.using in ["fsl", "ants"] and self.reference == "T1w":
|
156
|
+
# Check for extra inputs
|
157
|
+
if extra_input is None:
|
158
|
+
raise_error(
|
159
|
+
"No extra input provided, requires `Warp` and "
|
160
|
+
f"`{self.reference}` data types in particular."
|
161
|
+
)
|
162
|
+
# Conditional preprocessor
|
163
|
+
if self.using == "fsl":
|
164
|
+
input = FSLWarper().preprocess(
|
165
|
+
input=input,
|
166
|
+
extra_input=extra_input,
|
167
|
+
)
|
168
|
+
elif self.using == "ants":
|
169
|
+
input = ANTsWarper().preprocess(
|
170
|
+
input=input,
|
171
|
+
extra_input=extra_input,
|
172
|
+
reference=self.reference,
|
173
|
+
)
|
174
|
+
# Transform to template space with ANTs possible
|
175
|
+
elif self.using == "ants" and self.reference != "T1w":
|
176
|
+
# Check pre-requirements for space manipulation
|
177
|
+
if self.reference == input["space"]:
|
178
|
+
raise_error(
|
179
|
+
(
|
180
|
+
f"The target data is in {self.reference} space "
|
181
|
+
"and thus warping will not be performed, hence you "
|
182
|
+
"should remove the SpaceWarper from the preprocess "
|
183
|
+
"step."
|
184
|
+
),
|
185
|
+
klass=RuntimeError,
|
186
|
+
)
|
187
|
+
|
188
|
+
input = ANTsWarper().preprocess(
|
189
|
+
input=input,
|
190
|
+
extra_input={},
|
191
|
+
reference=self.reference,
|
192
|
+
)
|
193
|
+
# Transform to template space with FSL not possible
|
194
|
+
elif self.using == "fsl" and self.reference != "T1w":
|
195
|
+
raise_error(
|
196
|
+
(
|
197
|
+
f"Warping to {self.reference} space not possible with "
|
198
|
+
"FSL, use ANTs instead."
|
199
|
+
),
|
200
|
+
klass=RuntimeError,
|
201
|
+
)
|
202
|
+
|
203
|
+
return input, None
|