junifer 0.0.4.dev15__tar.gz → 0.0.4.dev25__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.dev15 → junifer-0.0.4.dev25}/PKG-INFO +1 -1
- junifer-0.0.4.dev25/junifer/_version.py +4 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/cli.py +59 -14
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/functions.py +3 -1
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/test_cli.py +61 -1
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/base.py +48 -3
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_base.py +57 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/PKG-INFO +1 -1
- junifer-0.0.4.dev15/junifer/_version.py +0 -4
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/pull_request_template.md +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/ci.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/docs.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.github/workflows/pypi.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.gitignore +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.gitmodules +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/.pre-commit-config.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/AUTHORS.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/LICENSE.md +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/README.md +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/codecov.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/conda-env.yml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/Makefile +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/_templates/versions.html +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/api.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/configs.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/data.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/index.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/markers.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/nilearn.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/onthefly.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/stats.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/storage.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/testing.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/api/utils.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/builtin.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/changes/newsfragments/233.bugfix +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/changes/newsfragments/247.doc +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/changes/newsfragments/248.change +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/conf.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/contribution.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/coordinates.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/datagrabber.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/extension.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/index.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/marker.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/masks.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/extending/parcellations.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/faq.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/help.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/index.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/installation.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/links.inc +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/maintaining.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/redirect.html +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/sphinxext/gh_substitutions.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/starting.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/data.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/index.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/marker.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/preprocess.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/understanding/storage.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/using/codeless.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/using/index.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/using/masks.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/using/queueing.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/using/running.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/docs/whats_new.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/README.rst +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/run_compute_parcel_mean.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/run_ets_rss_marker.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/run_junifer_julearn.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/ignore_words.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/decorators.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/parser.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/afni/run_afni_docker.sh +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/res/run_conda.sh +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/test_api_utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/test_functions.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/tests/test_parser.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/api/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/coordinates.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/masks.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/parcellations.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/tests/test_coordinates.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/tests/test_masks.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/tests/test_parcellations.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/data/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/id1000.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/piop1.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/piop2.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/datalad_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/hcp1200/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/multiple.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/pattern.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/pattern_datalad.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_multiple.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_pattern.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datagrabber/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datareader/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datareader/default.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/nilearn/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/collection.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/ets_rss.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/falff_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/falff_estimator.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/falff_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/falff_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/tests/test_falff_estimator.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/reho_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/reho_estimator.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/reho_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/reho_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/tests/test_reho_estimator.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_collection.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_ets_rss.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_markers_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/markers/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/onthefly/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/onthefly/read_transform.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/registry.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/tests/test_registry.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/pipeline/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/confounds/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/stats.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/hdf5.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/pandas_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/sqlite.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/tests/test_hdf5.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/storage/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/datagrabbers.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/registry.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/testing/utils.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/utils/__init__.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/utils/fs.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/utils/logging.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer/utils/tests/test_logging.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/SOURCES.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/requires.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/pyproject.toml +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/setup.cfg +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/setup.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_aomic1000_example_dataset.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_aomicpiop1_example_dataset.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_aomicpiop2_example_dataset.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_bids_example_dataset.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_bids_example_dataset_sessions.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/tools/create_hcp1200_example_dataset.py +0 -0
- {junifer-0.0.4.dev15 → junifer-0.0.4.dev25}/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.dev25
|
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>
|
@@ -8,7 +8,7 @@ import pathlib
|
|
8
8
|
import subprocess
|
9
9
|
import sys
|
10
10
|
from pathlib import Path
|
11
|
-
from typing import Dict, List, Union
|
11
|
+
from typing import Dict, List, Tuple, Union
|
12
12
|
|
13
13
|
import click
|
14
14
|
|
@@ -32,27 +32,48 @@ from .utils import (
|
|
32
32
|
)
|
33
33
|
|
34
34
|
|
35
|
-
def _parse_elements(element: str, config: Dict) -> Union[List, None]:
|
35
|
+
def _parse_elements(element: Tuple[str], config: Dict) -> Union[List, None]:
|
36
36
|
"""Parse elements from cli.
|
37
37
|
|
38
38
|
Parameters
|
39
39
|
----------
|
40
|
-
element : str
|
41
|
-
The element to operate on.
|
40
|
+
element : tuple of str
|
41
|
+
The element(s) to operate on.
|
42
42
|
config : dict
|
43
43
|
The configuration to operate using.
|
44
44
|
|
45
45
|
Returns
|
46
46
|
-------
|
47
|
-
list
|
48
|
-
The element(s) as list.
|
47
|
+
list or None
|
48
|
+
The element(s) as list or None.
|
49
|
+
|
50
|
+
Raises
|
51
|
+
------
|
52
|
+
ValueError
|
53
|
+
If no element is found either in the command-line options or
|
54
|
+
the configuration file.
|
55
|
+
|
56
|
+
Warns
|
57
|
+
-----
|
58
|
+
RuntimeWarning
|
59
|
+
If elements are specified both via the command-line options and
|
60
|
+
the configuration file.
|
49
61
|
|
50
62
|
"""
|
51
63
|
logger.debug(f"Parsing elements: {element}")
|
64
|
+
# Early return None to continue with all elements
|
52
65
|
if len(element) == 0:
|
53
66
|
return None
|
54
|
-
#
|
55
|
-
|
67
|
+
# Check if the element is a file for single element;
|
68
|
+
# if yes, then parse elements from it
|
69
|
+
if len(element) == 1 and Path(element[0]).resolve().is_file():
|
70
|
+
fetched_element = _parse_elements_file(Path(element[0]).resolve())
|
71
|
+
else:
|
72
|
+
fetched_element = element
|
73
|
+
# Process multi-keyed elements
|
74
|
+
elements = [
|
75
|
+
tuple(x.split(",")) if "," in x else x for x in fetched_element
|
76
|
+
]
|
56
77
|
logger.debug(f"Parsed elements: {elements}")
|
57
78
|
if elements is not None and "elements" in config:
|
58
79
|
warn_with_log(
|
@@ -61,19 +82,41 @@ def _parse_elements(element: str, config: Dict) -> Union[List, None]:
|
|
61
82
|
"over the configuration file. That is, the elements specified "
|
62
83
|
"in the command line will be used. The elements specified in "
|
63
84
|
"the configuration file will be ignored. To remove this warning, "
|
64
|
-
|
85
|
+
"please remove the `elements` item from the configuration file."
|
65
86
|
)
|
66
87
|
elif elements is None:
|
88
|
+
# Check in config
|
67
89
|
elements = config.get("elements", None)
|
68
90
|
if elements is None:
|
69
91
|
raise_error(
|
70
|
-
"The
|
71
|
-
" is
|
92
|
+
"The `elements` key is set in the configuration, but its value"
|
93
|
+
" is `None`. It is likely that there is an empty `elements` "
|
72
94
|
"section in the yaml configuration file."
|
73
95
|
)
|
74
96
|
return elements
|
75
97
|
|
76
98
|
|
99
|
+
def _parse_elements_file(filepath: Path) -> List[str]:
|
100
|
+
"""Parse elements from file.
|
101
|
+
|
102
|
+
Parameters
|
103
|
+
----------
|
104
|
+
filepath : pathlib.Path
|
105
|
+
The path to the element file.
|
106
|
+
|
107
|
+
Returns
|
108
|
+
-------
|
109
|
+
list of str
|
110
|
+
The element(s) as list.
|
111
|
+
|
112
|
+
"""
|
113
|
+
# Read file
|
114
|
+
with open(filepath) as file:
|
115
|
+
raw_elements = file.readlines()
|
116
|
+
# Strip whitespace and return
|
117
|
+
return [element.strip() for element in raw_elements]
|
118
|
+
|
119
|
+
|
77
120
|
def _validate_verbose(
|
78
121
|
ctx: click.Context, param: str, value: str
|
79
122
|
) -> Union[str, int]:
|
@@ -133,7 +176,9 @@ def cli() -> None: # pragma: no cover
|
|
133
176
|
callback=_validate_verbose,
|
134
177
|
default="info",
|
135
178
|
)
|
136
|
-
def run(
|
179
|
+
def run(
|
180
|
+
filepath: click.Path, element: Tuple[str], verbose: Union[str, int]
|
181
|
+
) -> None:
|
137
182
|
"""Run command for CLI.
|
138
183
|
|
139
184
|
\f
|
@@ -142,8 +187,8 @@ def run(filepath: click.Path, element: str, verbose: Union[str, int]) -> None:
|
|
142
187
|
----------
|
143
188
|
filepath : click.Path
|
144
189
|
The filepath to the configuration file.
|
145
|
-
element : str
|
146
|
-
The element to operate
|
190
|
+
element : tuple of str
|
191
|
+
The element to operate on.
|
147
192
|
verbose : click.Choice
|
148
193
|
The verbosity level: warning, info or debug (default "info").
|
149
194
|
|
@@ -163,7 +163,9 @@ def run(
|
|
163
163
|
# Fit elements
|
164
164
|
with datagrabber_object:
|
165
165
|
if elements is not None:
|
166
|
-
for t_element in
|
166
|
+
for t_element in datagrabber_object.filter(
|
167
|
+
elements # type: ignore
|
168
|
+
):
|
167
169
|
mc.fit(datagrabber_object[t_element])
|
168
170
|
else:
|
169
171
|
for t_element in datagrabber_object:
|
@@ -35,7 +35,16 @@ runner = CliRunner()
|
|
35
35
|
def test_run_and_collect_commands(
|
36
36
|
tmp_path: Path, elements: Tuple[str, ...]
|
37
37
|
) -> None:
|
38
|
-
"""Test run and collect commands.
|
38
|
+
"""Test run and collect commands.
|
39
|
+
|
40
|
+
Parameters
|
41
|
+
----------
|
42
|
+
tmp_path : pathlib.Path
|
43
|
+
The path to the test directory.
|
44
|
+
elements : tuple of str
|
45
|
+
The elements to operate on.
|
46
|
+
|
47
|
+
"""
|
39
48
|
# Get test config
|
40
49
|
infile = Path(__file__).parent / "data" / "gmd_mean.yaml"
|
41
50
|
# Read test config
|
@@ -74,6 +83,57 @@ def test_run_and_collect_commands(
|
|
74
83
|
assert collect_result.exit_code == 0
|
75
84
|
|
76
85
|
|
86
|
+
@pytest.mark.parametrize(
|
87
|
+
"elements",
|
88
|
+
[
|
89
|
+
"sub-01",
|
90
|
+
"sub-01\nsub-02",
|
91
|
+
],
|
92
|
+
)
|
93
|
+
def test_run_using_element_file(tmp_path: Path, elements: str) -> None:
|
94
|
+
"""Test run command using element file.
|
95
|
+
|
96
|
+
Parameters
|
97
|
+
----------
|
98
|
+
tmp_path : pathlib.Path
|
99
|
+
The path to the test directory.
|
100
|
+
elements : str
|
101
|
+
The elements to write to the element file.
|
102
|
+
|
103
|
+
"""
|
104
|
+
# Create test file
|
105
|
+
test_file_path = tmp_path / "elements.txt"
|
106
|
+
with open(test_file_path, "w") as f:
|
107
|
+
f.write(elements)
|
108
|
+
|
109
|
+
# Get test config
|
110
|
+
infile = Path(__file__).parent / "data" / "gmd_mean.yaml"
|
111
|
+
# Read test config
|
112
|
+
contents = yaml.load(infile)
|
113
|
+
# Working directory
|
114
|
+
workdir = tmp_path / "workdir"
|
115
|
+
contents["workdir"] = str(workdir.resolve())
|
116
|
+
# Output directory
|
117
|
+
outdir = tmp_path / "outdir"
|
118
|
+
# Storage
|
119
|
+
contents["storage"]["uri"] = str(outdir.resolve())
|
120
|
+
# Write new test config
|
121
|
+
outfile = tmp_path / "in.yaml"
|
122
|
+
yaml.dump(contents, stream=outfile)
|
123
|
+
# Run command arguments
|
124
|
+
run_args = [
|
125
|
+
str(outfile.absolute()),
|
126
|
+
"--verbose",
|
127
|
+
"debug",
|
128
|
+
"--element",
|
129
|
+
str(test_file_path.resolve()),
|
130
|
+
]
|
131
|
+
# Invoke run command
|
132
|
+
run_result = runner.invoke(run, run_args)
|
133
|
+
# Check
|
134
|
+
assert run_result.exit_code == 0
|
135
|
+
|
136
|
+
|
77
137
|
def test_wtf_short() -> None:
|
78
138
|
"""Test short version of wtf command."""
|
79
139
|
# Invoke wtf command
|
@@ -58,12 +58,12 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
58
58
|
"""
|
59
59
|
yield from self.get_elements()
|
60
60
|
|
61
|
-
def __getitem__(self, element: Union[str, Tuple]) -> Dict[str, Dict]:
|
61
|
+
def __getitem__(self, element: Union[str, Tuple[str]]) -> Dict[str, Dict]:
|
62
62
|
"""Enable indexing support.
|
63
63
|
|
64
64
|
Parameters
|
65
65
|
----------
|
66
|
-
element : str or tuple
|
66
|
+
element : str or tuple of str
|
67
67
|
The element to be indexed.
|
68
68
|
|
69
69
|
Returns
|
@@ -117,6 +117,51 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
117
117
|
"""
|
118
118
|
return self._datadir
|
119
119
|
|
120
|
+
def filter(self, selection: List[Union[str, Tuple[str]]]) -> Iterator:
|
121
|
+
"""Filter elements to be grabbed.
|
122
|
+
|
123
|
+
Parameters
|
124
|
+
----------
|
125
|
+
selection : list of str or tuple
|
126
|
+
The list of partial element key values to filter using.
|
127
|
+
|
128
|
+
Yields
|
129
|
+
------
|
130
|
+
object
|
131
|
+
An element that can be indexed by the DataGrabber.
|
132
|
+
|
133
|
+
"""
|
134
|
+
|
135
|
+
def filter_func(element: Union[str, Tuple[str]]) -> bool:
|
136
|
+
"""Filter element based on selection.
|
137
|
+
|
138
|
+
Parameters
|
139
|
+
----------
|
140
|
+
element : str or tuple of str
|
141
|
+
The element to be filtered.
|
142
|
+
|
143
|
+
Returns
|
144
|
+
-------
|
145
|
+
bool
|
146
|
+
If the element passes the filter or not.
|
147
|
+
|
148
|
+
"""
|
149
|
+
# Convert element to tuple
|
150
|
+
if not isinstance(element, tuple):
|
151
|
+
element = (element,)
|
152
|
+
# Filter based on selection kind
|
153
|
+
if isinstance(selection[0], str):
|
154
|
+
for opt in selection:
|
155
|
+
if opt in element:
|
156
|
+
return True
|
157
|
+
elif isinstance(selection[0], tuple):
|
158
|
+
for opt in selection:
|
159
|
+
if set(opt).issubset(element):
|
160
|
+
return True
|
161
|
+
return False
|
162
|
+
|
163
|
+
yield from filter(filter_func, self.get_elements())
|
164
|
+
|
120
165
|
@abstractmethod
|
121
166
|
def get_element_keys(self) -> List[str]:
|
122
167
|
"""Get element keys.
|
@@ -136,7 +181,7 @@ class BaseDataGrabber(ABC, UpdateMetaMixin):
|
|
136
181
|
)
|
137
182
|
|
138
183
|
@abstractmethod
|
139
|
-
def get_elements(self) -> List:
|
184
|
+
def get_elements(self) -> List[Union[str, Tuple[str]]]:
|
140
185
|
"""Get elements.
|
141
186
|
|
142
187
|
Returns
|
@@ -67,3 +67,60 @@ def test_BaseDataGrabber() -> None:
|
|
67
67
|
|
68
68
|
with pytest.raises(NotImplementedError):
|
69
69
|
dg.get_item(subject=1) # type: ignore
|
70
|
+
|
71
|
+
|
72
|
+
def test_BaseDataGrabber_filter_single() -> None:
|
73
|
+
"""Test single-keyed element filter for BaseDataGrabber."""
|
74
|
+
|
75
|
+
# Create concrete class
|
76
|
+
class FilterDataGrabber(BaseDataGrabber):
|
77
|
+
def get_item(self, subject):
|
78
|
+
return {"BOLD": {}}
|
79
|
+
|
80
|
+
def get_elements(self):
|
81
|
+
return ["sub01", "sub02", "sub03"]
|
82
|
+
|
83
|
+
def get_element_keys(self):
|
84
|
+
return ["subject"]
|
85
|
+
|
86
|
+
dg = FilterDataGrabber(datadir="/tmp", types=["BOLD"])
|
87
|
+
with dg:
|
88
|
+
assert "sub01" in list(dg.filter(["sub01"]))
|
89
|
+
assert "sub02" not in list(dg.filter(["sub01"]))
|
90
|
+
|
91
|
+
|
92
|
+
def test_BaseDataGrabber_filter_multi() -> None:
|
93
|
+
"""Test multi-keyed element filter for BaseDataGrabber."""
|
94
|
+
|
95
|
+
# Create concrete class
|
96
|
+
class FilterDataGrabber(BaseDataGrabber):
|
97
|
+
def get_item(self, subject):
|
98
|
+
return {"BOLD": {}}
|
99
|
+
|
100
|
+
def get_elements(self):
|
101
|
+
return [
|
102
|
+
("sub01", "rest"),
|
103
|
+
("sub01", "movie"),
|
104
|
+
("sub02", "rest"),
|
105
|
+
("sub02", "movie"),
|
106
|
+
("sub03", "rest"),
|
107
|
+
("sub03", "movie"),
|
108
|
+
]
|
109
|
+
|
110
|
+
def get_element_keys(self):
|
111
|
+
return ["subject", "task"]
|
112
|
+
|
113
|
+
dg = FilterDataGrabber(datadir="/tmp", types=["BOLD"])
|
114
|
+
with dg:
|
115
|
+
assert ("sub01", "rest") in list(
|
116
|
+
dg.filter([("sub01", "rest")]) # type: ignore
|
117
|
+
)
|
118
|
+
assert ("sub01", "movie") not in list(
|
119
|
+
dg.filter([("sub01", "rest")]) # type: ignore
|
120
|
+
)
|
121
|
+
assert ("sub02", "rest") not in list(
|
122
|
+
dg.filter([("sub01", "rest")]) # type: ignore
|
123
|
+
)
|
124
|
+
assert ("sub02", "movie") not in list(
|
125
|
+
dg.filter([("sub01", "rest")]) # type: ignore
|
126
|
+
)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.4.
|
3
|
+
Version: 0.0.4.dev25
|
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>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|