junifer 0.0.4.dev831__tar.gz → 0.0.5__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.dev831 → junifer-0.0.5}/.github/workflows/ci.yml +15 -8
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/workflows/docs.yml +1 -1
- junifer-0.0.5/.gitmodules +6 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.pre-commit-config.yaml +12 -5
- {junifer-0.0.4.dev831 → junifer-0.0.5}/PKG-INFO +17 -16
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/nilearn.rst +0 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/onthefly.rst +0 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/builtin.rst +0 -8
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/conf.py +1 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/coordinates.rst +2 -8
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/datagrabber.rst +180 -137
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/dependencies.rst +2 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/marker.rst +76 -81
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/parcellations.rst +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/preprocessor.rst +12 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/installation.rst +33 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/data.rst +14 -7
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/marker.rst +2 -4
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/preprocess.rst +4 -8
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/storage.rst +20 -13
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/using/queueing.rst +80 -7
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/whats_new.rst +131 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/run_compute_parcel_mean.py +2 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/run_ets_rss_marker.py +2 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/run_junifer_julearn.py +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/ignore_words.txt +2 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/__init__.py +17 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/_version.py +2 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/__init__.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/cli.py +91 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/decorators.py +9 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/functions.py +56 -10
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/parser.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/__init__.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/gnu_parallel_local_adapter.py +16 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/htcondor_adapter.py +16 -5
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +41 -12
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/tests/test_htcondor_adapter.py +48 -15
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/afni/run_afni_docker.sh +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/ants/run_ants_docker.sh +1 -1
- junifer-0.0.5/junifer/api/res/freesurfer/mri_binarize +3 -0
- junifer-0.0.5/junifer/api/res/freesurfer/mri_mc +3 -0
- junifer-0.0.5/junifer/api/res/freesurfer/mri_pretess +3 -0
- junifer-0.0.5/junifer/api/res/freesurfer/mris_convert +3 -0
- junifer-0.0.5/junifer/api/res/freesurfer/run_freesurfer_docker.sh +61 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/fsl/run_fsl_docker.sh +1 -1
- junifer-0.0.4.dev831/junifer/api/res/run_conda.sh → junifer-0.0.5/junifer/api/res/run_conda.bash +1 -1
- junifer-0.0.5/junifer/api/res/run_conda.zsh +23 -0
- junifer-0.0.5/junifer/api/res/run_venv.bash +22 -0
- junifer-0.0.4.dev831/junifer/api/res/run_venv.sh → junifer-0.0.5/junifer/api/res/run_venv.zsh +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/test_api_utils.py +4 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/test_cli.py +83 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/test_functions.py +27 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/__init__.py +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/__init__.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/__init__.py +10 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +4 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +4 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +1 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ucla.py +12 -9
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/__init__.py +21 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/coordinates.py +10 -19
- junifer-0.0.5/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/masks.py +58 -87
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/parcellations.py +14 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/template_spaces.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/tests/test_masks.py +26 -37
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/utils.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/__init__.py +18 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/aomic/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/aomic/id1000.py +70 -37
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/aomic/piop1.py +69 -36
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/aomic/piop2.py +71 -38
- junifer-0.0.5/junifer/datagrabber/aomic/tests/test_id1000.py +124 -0
- junifer-0.0.5/junifer/datagrabber/aomic/tests/test_piop1.py +166 -0
- junifer-0.0.5/junifer/datagrabber/aomic/tests/test_piop2.py +146 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/base.py +13 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/datalad_base.py +13 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/dmcc13_benchmark.py +36 -53
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/hcp1200/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/hcp1200/hcp1200.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/multiple.py +45 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/pattern.py +170 -62
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/pattern_datalad.py +25 -12
- junifer-0.0.5/junifer/datagrabber/pattern_validation_mixin.py +388 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/tests/test_datalad_base.py +4 -4
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +46 -19
- junifer-0.0.5/junifer/datagrabber/tests/test_multiple.py +280 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/tests/test_pattern.py +45 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/tests/test_pattern_datalad.py +4 -4
- junifer-0.0.5/junifer/datagrabber/tests/test_pattern_validation_mixin.py +249 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datareader/__init__.py +4 -1
- junifer-0.0.5/junifer/datareader/default.py +210 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/__init__.py +4 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/_version.py +3 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/asymmetry.py +91 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/brainprint.py +441 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/surfaces.py +258 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/__init__.py +1 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/_config.py +112 -0
- junifer-0.0.5/junifer/external/BrainPrint/brainprint/utils/utils.py +188 -0
- {junifer-0.0.4.dev831/junifer/preprocess/fsl → junifer-0.0.5/junifer/external}/__init__.py +1 -1
- junifer-0.0.5/junifer/external/nilearn/__init__.py +10 -0
- junifer-0.0.5/junifer/external/nilearn/junifer_connectivity_measure.py +483 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +23 -9
- junifer-0.0.5/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +1089 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +76 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/__init__.py +23 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/base.py +68 -28
- junifer-0.0.5/junifer/markers/brainprint.py +459 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/collection.py +10 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/__init__.py +10 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/complexity_base.py +26 -43
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/hurst_exponent.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/multiscale_entropy_auc.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/perm_entropy.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/range_entropy.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/range_entropy_auc.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/sample_entropy.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_hurst_exponent.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_perm_entropy.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_range_entropy.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_range_entropy_auc.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_sample_entropy.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +11 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/weighted_perm_entropy.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/ets_rss.py +27 -42
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/_afni_falff.py +5 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/_junifer_falff.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/falff_base.py +20 -46
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/falff_parcels.py +56 -27
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/falff_spheres.py +60 -29
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/tests/test_falff_parcels.py +39 -23
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/falff/tests/test_falff_spheres.py +39 -23
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/__init__.py +9 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +63 -60
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +45 -32
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +49 -36
- junifer-0.0.5/junifer/markers/functional_connectivity/functional_connectivity_base.py +155 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +34 -25
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +40 -30
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +11 -7
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +27 -7
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +28 -12
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +35 -11
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +36 -62
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/parcel_aggregation.py +47 -61
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/_afni_reho.py +5 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/_junifer_reho.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/reho_base.py +8 -27
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/reho_parcels.py +28 -17
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/reho_spheres.py +27 -18
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/tests/test_reho_parcels.py +8 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/reho/tests/test_reho_spheres.py +8 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/sphere_aggregation.py +43 -59
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_base.py +23 -32
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_parcels.py +9 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/temporal_snr_spheres.py +9 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +6 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +6 -3
- junifer-0.0.5/junifer/markers/tests/test_brainprint.py +58 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_collection.py +9 -8
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_ets_rss.py +15 -9
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_markers_base.py +17 -18
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_parcel_aggregation.py +93 -32
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_sphere_aggregation.py +72 -19
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/onthefly/__init__.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/onthefly/read_transform.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/__init__.py +9 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/pipeline_step_mixin.py +21 -4
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/registry.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/singleton.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/tests/test_registry.py +1 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/update_meta_mixin.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/utils.py +67 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/workdir_manager.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/__init__.py +10 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/base.py +6 -3
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/confounds/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/confounds/fmriprep_confound_remover.py +47 -60
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +72 -113
- junifer-0.0.5/junifer/preprocess/smoothing/__init__.py +9 -0
- junifer-0.0.5/junifer/preprocess/smoothing/_afni_smoothing.py +119 -0
- junifer-0.0.5/junifer/preprocess/smoothing/_fsl_smoothing.py +116 -0
- junifer-0.0.5/junifer/preprocess/smoothing/_nilearn_smoothing.py +69 -0
- junifer-0.0.5/junifer/preprocess/smoothing/smoothing.py +174 -0
- junifer-0.0.5/junifer/preprocess/smoothing/tests/test_smoothing.py +94 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/warping/__init__.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/warping/_ants_warper.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/warping/_fsl_warper.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/stats.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/__init__.py +9 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/base.py +40 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/hdf5.py +71 -9
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/pandas_base.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/sqlite.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/tests/test_hdf5.py +82 -10
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/utils.py +9 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/__init__.py +4 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/datagrabbers.py +13 -6
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +7 -7
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/utils.py +3 -0
- junifer-0.0.5/junifer/utils/__init__.py +20 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/fs.py +3 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/helpers.py +32 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/logging.py +33 -4
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/tests/test_logging.py +8 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/PKG-INFO +17 -16
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/SOURCES.txt +30 -14
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/requires.txt +16 -15
- {junifer-0.0.4.dev831 → junifer-0.0.5}/pyproject.toml +49 -27
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tools/create_aomic1000_example_dataset.py +39 -2
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tools/create_aomicpiop1_example_dataset.py +38 -1
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tools/create_aomicpiop2_example_dataset.py +38 -1
- junifer-0.0.5/tools/create_bids_example_dataset.py +40 -0
- junifer-0.0.5/tools/create_bids_example_dataset_sessions.py +50 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tox.ini +1 -0
- junifer-0.0.4.dev831/.gitmodules +0 -3
- junifer-0.0.4.dev831/docs/changes/newsfragments/320.fix +0 -1
- junifer-0.0.4.dev831/docs/changes/newsfragments/321.fix +0 -1
- junifer-0.0.4.dev831/junifer/datagrabber/aomic/tests/test_id1000.py +0 -180
- junifer-0.0.4.dev831/junifer/datagrabber/aomic/tests/test_piop1.py +0 -209
- junifer-0.0.4.dev831/junifer/datagrabber/aomic/tests/test_piop2.py +0 -203
- junifer-0.0.4.dev831/junifer/datagrabber/tests/test_datagrabber_utils.py +0 -218
- junifer-0.0.4.dev831/junifer/datagrabber/tests/test_multiple.py +0 -203
- junifer-0.0.4.dev831/junifer/datagrabber/utils.py +0 -230
- junifer-0.0.4.dev831/junifer/datareader/default.py +0 -158
- junifer-0.0.4.dev831/junifer/external/__init__.py +0 -4
- junifer-0.0.4.dev831/junifer/external/nilearn/__init__.py +0 -6
- junifer-0.0.4.dev831/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -154
- junifer-0.0.4.dev831/junifer/preprocess/ants/__init__.py +0 -4
- junifer-0.0.4.dev831/junifer/preprocess/ants/ants_apply_transforms_warper.py +0 -185
- junifer-0.0.4.dev831/junifer/preprocess/ants/tests/test_ants_apply_transforms_warper.py +0 -56
- junifer-0.0.4.dev831/junifer/preprocess/bold_warper.py +0 -265
- junifer-0.0.4.dev831/junifer/preprocess/fsl/apply_warper.py +0 -179
- junifer-0.0.4.dev831/junifer/preprocess/fsl/tests/test_apply_warper.py +0 -45
- junifer-0.0.4.dev831/junifer/preprocess/tests/test_bold_warper.py +0 -159
- junifer-0.0.4.dev831/junifer/utils/__init__.py +0 -9
- junifer-0.0.4.dev831/tools/create_bids_example_dataset.py +0 -34
- junifer-0.0.4.dev831/tools/create_bids_example_dataset_sessions.py +0 -41
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/dependabot.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/pull_request_template.md +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/workflows/ci-docs.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/workflows/docs-preview.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/workflows/lint.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.github/workflows/pypi.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/.gitignore +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/AUTHORS.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/LICENSE.md +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/README.md +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/codecov.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/conda-env.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/Makefile +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/_static/css/custom.css +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/_static/js/custom.js +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/_templates/versions.html +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/api.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/configs.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/data.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/datagrabbers.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/datareaders.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/index.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/markers.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/pipeline.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/preprocessing.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/stats.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/storage.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/testing.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/api/utils.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/changes/contributors.inc +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/changes/newsfragments/.gitignore +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/contribution.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/extension.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/index.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/extending/masks.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/faq.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/help.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/images/junifer_logo.png +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/index.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/links.inc +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/maintaining.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/redirect.html +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/sphinxext/gh_substitutions.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/starting.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/datagrabber.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/datareader.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/index.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/understanding/pipeline.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/using/codeless.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/using/index.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/using/masks.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/docs/using/running.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/README.rst +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/norun_hcpfc_pearson.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/norun_ukbvm_gmd.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/run_datagrabber_bids_datalad.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/run_run_gmd_mean.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/yamls/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/examples/yamls/ukb_gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/queue_context/queue_context_adapter.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/afni/3dRSFC +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/afni/3dReHo +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/afni/afni +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/ants/ResampleImage +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/ants/antsApplyTransforms +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/fsl/applywarp +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/fsl/flirt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/fsl/img2imgcoord +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/res/fsl/std2imgcoord +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/data/gmd_mean.yaml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/data/gmd_mean_htcondor.yaml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/tests/test_parser.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/api/utils.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/tests/test_coordinates.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/tests/test_data_utils.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/tests/test_parcellations.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/data/tests/test_template_spaces.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datagrabber/tests/test_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/datareader/tests/test_default_reader.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/h5io/h5io/__init__.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/h5io/h5io/_h5io.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/h5io/h5io/_version.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/h5io/h5io/chunked_array.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/external/h5io/h5io/chunked_list.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/tests/test_marker_utils.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/markers/utils.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/onthefly/tests/test_read_transform.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/warping/space_warper.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/tests/test_pandas_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/tests/test_sqlite.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/tests/test_storage_base.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/storage/tests/test_utils.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/registry.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/testing/tests/test_testing_registry.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/tests/test_main.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/tests/test_stats.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/tests/test_fs.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer/utils/tests/test_helpers.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/dependency_links.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/entry_points.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/junifer.egg-info/top_level.txt +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/setup.cfg +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/setup.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
- {junifer-0.0.4.dev831 → junifer-0.0.5}/tools/create_hcp1200_example_dataset.py +0 -0
@@ -66,36 +66,43 @@ jobs:
|
|
66
66
|
sudo tcsh @update.afni.binaries -package linux_ubuntu_16_64 -bindir /afni
|
67
67
|
echo "/afni" >> $GITHUB_PATH
|
68
68
|
if: matrix.python-version == 3.11
|
69
|
+
# Bypass AFNI installation failure
|
70
|
+
continue-on-error: true
|
69
71
|
- name: Check AFNI
|
70
72
|
run: |
|
71
73
|
echo "Using AFNI : $(afni --version)"
|
72
74
|
if: matrix.python-version == 3.11
|
75
|
+
# Bypass AFNI installation failure
|
76
|
+
continue-on-error: true
|
73
77
|
- name: Install ANTs
|
74
78
|
run: |
|
75
79
|
sudo apt-get install -y -qq unzip
|
76
|
-
curl -fsSL -o ants.zip https://github.com/ANTsX/ANTs/releases/download/v2.5.
|
80
|
+
curl -fsSL -o ants.zip https://github.com/ANTsX/ANTs/releases/download/v2.5.2/ants-2.5.2-ubuntu-22.04-X64-gcc.zip
|
77
81
|
unzip ants.zip -d /opt
|
78
|
-
mv /opt/ants-2.5.
|
82
|
+
mv /opt/ants-2.5.2/bin/* /opt/ants-2.5.2
|
79
83
|
rm ants.zip
|
80
|
-
echo "/opt/ants-2.5.
|
84
|
+
echo "/opt/ants-2.5.2" >> $GITHUB_PATH
|
81
85
|
if: matrix.python-version == 3.11
|
86
|
+
# Bypass ANTs installation failure
|
87
|
+
continue-on-error: true
|
82
88
|
- name: Check ANTs
|
83
89
|
run: |
|
84
90
|
echo "Using ANTs : $(antsRegistration --version)"
|
85
91
|
if: matrix.python-version == 3.11
|
92
|
+
# Bypass ANTs installation failure
|
93
|
+
continue-on-error: true
|
86
94
|
- name: Install FSL
|
87
95
|
run: |
|
88
|
-
|
89
|
-
curl -fsSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py | python3 - -d /opt/fsl-6.0.6.4 -V 6.0.6.4
|
96
|
+
curl -fsSL https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py | python - -d /opt/fsl/
|
90
97
|
FSLOUTPUTTYPE="NIFTI_GZ"
|
91
98
|
FSLMULTIFILEQUIT="TRUE"
|
92
|
-
FSLTCLSH="/opt/fsl
|
93
|
-
FSLWISH="/opt/fsl
|
99
|
+
FSLTCLSH="/opt/fsl/bin/fsltclsh"
|
100
|
+
FSLWISH="/opt/fsl/bin/fslwish"
|
94
101
|
FSLLOCKDIR=""
|
95
102
|
FSLMACHINELIST=""
|
96
103
|
FSLREMOTECALL=""
|
97
104
|
FSLGECUDAQ="cuda.q"
|
98
|
-
echo "/opt/fsl
|
105
|
+
echo "/opt/fsl" >> $GITHUB_PATH
|
99
106
|
if: matrix.python-version == 3.11
|
100
107
|
# Bypass FSL installation failure
|
101
108
|
continue-on-error: true
|
@@ -68,7 +68,7 @@ jobs:
|
|
68
68
|
touch docs/_build/.nojekyll
|
69
69
|
cp docs/redirect.html docs/_build/index.html
|
70
70
|
- name: Publish docs to gh-pages
|
71
|
-
uses: peaceiris/actions-gh-pages@
|
71
|
+
uses: peaceiris/actions-gh-pages@v4
|
72
72
|
with:
|
73
73
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
74
74
|
publish_dir: docs/_build
|
@@ -4,7 +4,7 @@ ci:
|
|
4
4
|
|
5
5
|
repos:
|
6
6
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
7
|
-
rev: v4.
|
7
|
+
rev: v4.6.0
|
8
8
|
hooks:
|
9
9
|
- id: check-ast
|
10
10
|
- id: check-docstring-first
|
@@ -20,14 +20,14 @@ repos:
|
|
20
20
|
rev: v0.16
|
21
21
|
hooks:
|
22
22
|
- id: validate-pyproject
|
23
|
-
- repo: https://github.com/psf/black
|
24
|
-
rev: 24.
|
23
|
+
- repo: https://github.com/psf/black-pre-commit-mirror
|
24
|
+
rev: 24.4.2
|
25
25
|
hooks:
|
26
26
|
- id: black
|
27
27
|
exclude: ^(docs/|examples/|tools/)
|
28
28
|
args: [--check]
|
29
29
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
30
|
-
rev: v0.
|
30
|
+
rev: v0.4.2
|
31
31
|
hooks:
|
32
32
|
- id: ruff
|
33
33
|
types_or: [python, jupyter]
|
@@ -38,7 +38,7 @@ repos:
|
|
38
38
|
hooks:
|
39
39
|
- id: codespell
|
40
40
|
exclude: ^(.github/|docs/)
|
41
|
-
args: [--
|
41
|
+
args: [--toml, pyproject.toml]
|
42
42
|
- repo: https://github.com/pre-commit/pygrep-hooks
|
43
43
|
rev: v1.10.0
|
44
44
|
hooks:
|
@@ -47,3 +47,10 @@ repos:
|
|
47
47
|
- id: rst-backticks
|
48
48
|
- id: rst-directive-colons
|
49
49
|
- id: rst-inline-touching-normal
|
50
|
+
- repo: https://github.com/adamchainz/blacken-docs
|
51
|
+
rev: "1.16.0"
|
52
|
+
hooks:
|
53
|
+
- id: blacken-docs
|
54
|
+
additional_dependencies:
|
55
|
+
- black==24.4.2
|
56
|
+
args: [-l 79]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.5
|
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>
|
@@ -29,19 +29,20 @@ Description-Content-Type: text/markdown
|
|
29
29
|
License-File: LICENSE.md
|
30
30
|
License-File: AUTHORS.rst
|
31
31
|
Requires-Dist: click<8.2,>=8.1.3
|
32
|
-
Requires-Dist: numpy<
|
33
|
-
Requires-Dist: scipy<=1.
|
34
|
-
Requires-Dist: datalad<0.
|
35
|
-
Requires-Dist: pandas<2.2
|
36
|
-
Requires-Dist: nibabel<5.
|
37
|
-
Requires-Dist: nilearn<=0.10.
|
38
|
-
Requires-Dist: sqlalchemy<=2.1.0,>=
|
32
|
+
Requires-Dist: numpy<2.0.0,>=1.24.0
|
33
|
+
Requires-Dist: scipy<=1.14.0,>=1.10.0
|
34
|
+
Requires-Dist: datalad<1.2.0,>=1.0.0
|
35
|
+
Requires-Dist: pandas<2.3.0,>=2.0.0
|
36
|
+
Requires-Dist: nibabel<5.3.0,>=5.2.0
|
37
|
+
Requires-Dist: nilearn<=0.10.4,>=0.10.3
|
38
|
+
Requires-Dist: sqlalchemy<=2.1.0,>=2.0.25
|
39
39
|
Requires-Dist: ruamel.yaml<0.18,>=0.17
|
40
40
|
Requires-Dist: h5py>=3.10
|
41
41
|
Requires-Dist: httpx[http2]==0.26.0
|
42
42
|
Requires-Dist: tqdm==4.66.1
|
43
43
|
Requires-Dist: templateflow>=23.0.0
|
44
|
-
Requires-Dist:
|
44
|
+
Requires-Dist: lapy<2.0.0,>=1.0.0
|
45
|
+
Requires-Dist: importlib_metadata; python_version < "3.9"
|
45
46
|
Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
|
46
47
|
Provides-Extra: all
|
47
48
|
Requires-Dist: bctpy==0.6.0; extra == "all"
|
@@ -56,14 +57,14 @@ Provides-Extra: dev
|
|
56
57
|
Requires-Dist: tox; extra == "dev"
|
57
58
|
Requires-Dist: pre-commit; extra == "dev"
|
58
59
|
Provides-Extra: docs
|
59
|
-
Requires-Dist: seaborn<0.
|
60
|
-
Requires-Dist: sphinx<7.
|
61
|
-
Requires-Dist: sphinx-gallery<0.
|
62
|
-
Requires-Dist: furo<
|
63
|
-
Requires-Dist: numpydoc<1.
|
64
|
-
Requires-Dist: julearn
|
60
|
+
Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "docs"
|
61
|
+
Requires-Dist: sphinx<7.4.0,>=7.3.0; extra == "docs"
|
62
|
+
Requires-Dist: sphinx-gallery<0.17.0,>=0.15.0; extra == "docs"
|
63
|
+
Requires-Dist: furo<2024.6.0,>=2024.4.27; extra == "docs"
|
64
|
+
Requires-Dist: numpydoc<1.8.0,>=1.6.0; extra == "docs"
|
65
|
+
Requires-Dist: julearn==0.3.3; extra == "docs"
|
65
66
|
Requires-Dist: sphinx-copybutton<0.5.3,>=0.5.1; extra == "docs"
|
66
|
-
Requires-Dist: towncrier<23.
|
67
|
+
Requires-Dist: towncrier<23.12.0,>=23.10.0; extra == "docs"
|
67
68
|
Requires-Dist: sphinxcontrib-mermaid<0.10,>=0.8.1; extra == "docs"
|
68
69
|
|
69
70
|

|
@@ -729,14 +729,6 @@ Available
|
|
729
729
|
- | Compute a brain mask for the images by guessing the value of the
|
730
730
|
| background from the border of the image.
|
731
731
|
| See :func:`nilearn.masking.compute_background_mask`
|
732
|
-
* - ``nilearn``'s ICBM152 template gray-matter mask
|
733
|
-
- | ``fetch_icbm152_brain_gm_mask``
|
734
|
-
- ``MNI152NLin2009aAsym``
|
735
|
-
- 0.0.2
|
736
|
-
- | Compute a gray-matter mask from the asymmetrical ICBM152 2009 template,
|
737
|
-
| release a.
|
738
|
-
| See :func:`nilearn.datasets.fetch_icbm152_brain_gm_mask`
|
739
|
-
|
740
732
|
|
741
733
|
..
|
742
734
|
Planned
|
@@ -70,10 +70,7 @@ with the DMN. Here, we use the DMN coordinates used in a
|
|
70
70
|
.. code-block:: python
|
71
71
|
|
72
72
|
dmn_coords = np.array(
|
73
|
-
[[0, -52, 18],
|
74
|
-
[-46, -68, 32],
|
75
|
-
[46, -68, 32],
|
76
|
-
[1, 50, -5]]
|
73
|
+
[[0, -52, 18], [-46, -68, 32], [46, -68, 32], [1, 50, -5]]
|
77
74
|
)
|
78
75
|
voi_names = [
|
79
76
|
"Posterior Cingulate Cortex",
|
@@ -90,10 +87,7 @@ simply use this to register our coordinates:
|
|
90
87
|
.. code-block:: python
|
91
88
|
|
92
89
|
register_coordinates(
|
93
|
-
name="DMNCustom",
|
94
|
-
coordinates=dmn_coords,
|
95
|
-
voi_names=voi_names,
|
96
|
-
space="MNI"
|
90
|
+
name="DMNCustom", coordinates=dmn_coords, voi_names=voi_names, space="MNI"
|
97
91
|
)
|
98
92
|
|
99
93
|
Now, when we run this script, ``junifer`` registers these coordinates and we can
|
@@ -115,14 +115,14 @@ For example, in our BIDS example, the variables will be:
|
|
115
115
|
|
116
116
|
types = ["T1w", "BOLD"]
|
117
117
|
patterns = {
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
118
|
+
"T1w": {
|
119
|
+
"pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
120
|
+
"space": "native",
|
121
|
+
},
|
122
|
+
"BOLD": {
|
123
|
+
"pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
124
|
+
"space": "MNI152NLin6Asym",
|
125
|
+
},
|
126
126
|
}
|
127
127
|
replacements = ["subject", "session"]
|
128
128
|
|
@@ -144,25 +144,24 @@ With the variables defined above, we can create our DataGrabber and name it
|
|
144
144
|
|
145
145
|
|
146
146
|
class ExampleBIDSDataGrabber(PatternDataGrabber):
|
147
|
-
|
148
147
|
def __init__(self, datadir: str | Path) -> None:
|
149
148
|
types = ["T1w", "BOLD"]
|
150
149
|
patterns = {
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
150
|
+
"T1w": {
|
151
|
+
"pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
152
|
+
"space": "native",
|
153
|
+
},
|
154
|
+
"BOLD": {
|
155
|
+
"pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
156
|
+
"space": "MNI152NLin6Asym",
|
157
|
+
},
|
159
158
|
}
|
160
159
|
replacements = ["subject", "session"]
|
161
160
|
super().__init__(
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
161
|
+
datadir=datadir,
|
162
|
+
types=types,
|
163
|
+
patterns=patterns,
|
164
|
+
replacements=replacements,
|
166
165
|
)
|
167
166
|
|
168
167
|
Our DataGrabber is ready to be used by ``junifer``. However, it is still unknown
|
@@ -180,25 +179,24 @@ use the :func:`.register_datagrabber` decorator.
|
|
180
179
|
|
181
180
|
@register_datagrabber
|
182
181
|
class ExampleBIDSDataGrabber(PatternDataGrabber):
|
183
|
-
|
184
182
|
def __init__(self, datadir: str | Path) -> None:
|
185
183
|
types = ["T1w", "BOLD"]
|
186
184
|
patterns = {
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
185
|
+
"T1w": {
|
186
|
+
"pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
187
|
+
"space": "native",
|
188
|
+
},
|
189
|
+
"BOLD": {
|
190
|
+
"pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
191
|
+
"space": "MNI152NLin6Asym",
|
192
|
+
},
|
195
193
|
}
|
196
194
|
replacements = ["subject", "session"]
|
197
195
|
super().__init__(
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
196
|
+
datadir=datadir,
|
197
|
+
types=types,
|
198
|
+
patterns=patterns,
|
199
|
+
replacements=replacements,
|
202
200
|
)
|
203
201
|
|
204
202
|
|
@@ -267,29 +265,28 @@ And we can create our DataGrabber:
|
|
267
265
|
|
268
266
|
@register_datagrabber
|
269
267
|
class ExampleBIDSDataGrabber(PatternDataladDataGrabber):
|
270
|
-
|
271
268
|
def __init__(self) -> None:
|
272
269
|
types = ["T1w", "BOLD"]
|
273
270
|
patterns = {
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
271
|
+
"T1w": {
|
272
|
+
"pattern": "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
273
|
+
"space": "native",
|
274
|
+
},
|
275
|
+
"BOLD": {
|
276
|
+
"pattern": "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
277
|
+
"space": "MNI152NLin6Asym",
|
278
|
+
},
|
282
279
|
}
|
283
280
|
replacements = ["subject", "session"]
|
284
281
|
uri = "https://gin.g-node.org/juaml/datalad-example-bids"
|
285
282
|
rootdir = "example_bids_ses"
|
286
283
|
super().__init__(
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
284
|
+
datadir=None,
|
285
|
+
uri=uri,
|
286
|
+
rootdir=rootdir,
|
287
|
+
types=types,
|
288
|
+
patterns=patterns,
|
289
|
+
replacements=replacements,
|
293
290
|
)
|
294
291
|
|
295
292
|
This approach can be used directly from the YAML, like so:
|
@@ -297,22 +294,69 @@ This approach can be used directly from the YAML, like so:
|
|
297
294
|
.. code-block:: yaml
|
298
295
|
|
299
296
|
datagrabber:
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
297
|
+
kind: PatternDataladDataGrabber
|
298
|
+
types:
|
299
|
+
- BOLD
|
300
|
+
- T1w
|
301
|
+
patterns:
|
302
|
+
BOLD:
|
303
|
+
pattern: "{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz"
|
304
|
+
space: MNI152NLin6Asym
|
305
|
+
T1w:
|
306
|
+
pattern: "{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz"
|
307
|
+
space: native
|
308
|
+
replacements:
|
309
|
+
- subject
|
310
|
+
- session
|
311
|
+
uri: "https://gin.g-node.org/juaml/datalad-example-bids"
|
312
|
+
rootdir: example_bids_ses
|
313
|
+
|
314
|
+
Advanced: Using Unix-like path expansion directives
|
315
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
316
|
+
|
317
|
+
It is also possible to use some advanced Unix-like path expansion tricks to
|
318
|
+
define our patterns.
|
319
|
+
|
320
|
+
A very common thing would be to use ``*`` to match any number of
|
321
|
+
characters but we cannot use it right after a replacement like:
|
322
|
+
|
323
|
+
.. code-block:: python
|
324
|
+
|
325
|
+
"derivatives/freesurfer/{subject}*"
|
326
|
+
|
327
|
+
or if there are multiple files or no files which can be globbed.
|
328
|
+
|
329
|
+
We can also use ``[]`` and ``[!]`` to glob certain tricky files like with the
|
330
|
+
case of FreeSurfer derivatives. The file structure seen in a typical
|
331
|
+
FreeSurfer derivative of a dataset (like ``AOMIC`` ones) is like so:
|
332
|
+
|
333
|
+
.. code-block::
|
334
|
+
|
335
|
+
.
|
336
|
+
└── derivatives
|
337
|
+
└── freesurfer
|
338
|
+
├── fsaverage
|
339
|
+
│ ├── mri
|
340
|
+
│ | ├── T1.mgz
|
341
|
+
│ | └── ...
|
342
|
+
│ └── ...
|
343
|
+
├── sub-01
|
344
|
+
│ ├── mri
|
345
|
+
│ | ├── T1.mgz
|
346
|
+
│ | └── ...
|
347
|
+
│ | └── ...
|
348
|
+
│ └── ...
|
349
|
+
...
|
350
|
+
|
351
|
+
With a structure like this, it would be cumbersome to write custom methods
|
352
|
+
for the class and thus we could use a pattern like this:
|
353
|
+
|
354
|
+
.. code-block:: python
|
355
|
+
|
356
|
+
"derivatives/freesurfer/[!f]{subject}/mri/T1.mg[z]"
|
357
|
+
|
358
|
+
This would ignore the ``fsaverage`` directory as a subject and let ``T1.mgz`` be
|
359
|
+
fetched as there can be many files with the same prefix.
|
316
360
|
|
317
361
|
.. _extending_datagrabbers_base:
|
318
362
|
|
@@ -344,17 +388,17 @@ and ``session``, we will use them as parameters of ``get_item``:
|
|
344
388
|
.. code-block:: python
|
345
389
|
|
346
390
|
def get_item(self, subject: str, session: str) -> dict[str, dict[str, str]]:
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
391
|
+
out = {
|
392
|
+
"T1w": {
|
393
|
+
"path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
394
|
+
"space": "native",
|
395
|
+
},
|
396
|
+
"BOLD": {
|
397
|
+
"path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
398
|
+
"space": "MNI152NLin6Asym",
|
399
|
+
},
|
400
|
+
}
|
401
|
+
return out
|
358
402
|
|
359
403
|
|
360
404
|
The second method, ``get_elements``, needs to return a list of all the elements
|
@@ -368,16 +412,16 @@ need to remember that for session *ses-03* there is no BOLD data.
|
|
368
412
|
|
369
413
|
|
370
414
|
def get_elements(self) -> list[str]:
|
371
|
-
|
372
|
-
|
415
|
+
subjects = ["sub-01", "sub-02", "sub-03"]
|
416
|
+
sessions = ["ses-01", "ses-02"]
|
373
417
|
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
418
|
+
# If we are not working on BOLD data, we can add "ses-03"
|
419
|
+
if "BOLD" not in self.types:
|
420
|
+
sessions.append("ses-03")
|
421
|
+
elements = []
|
422
|
+
for subject, element in product(subjects, sessions):
|
423
|
+
elements.append({"subject": subject, "session": session})
|
424
|
+
return elements
|
381
425
|
|
382
426
|
|
383
427
|
And finally, we can implement the ``get_element_keys`` method. This method needs
|
@@ -388,7 +432,7 @@ method, in the same order.
|
|
388
432
|
.. code-block:: python
|
389
433
|
|
390
434
|
def get_element_keys(self) -> list[str]:
|
391
|
-
|
435
|
+
return ["subject", "session"]
|
392
436
|
|
393
437
|
|
394
438
|
So, to summarise, our DataGrabber will look like this:
|
@@ -401,35 +445,36 @@ So, to summarise, our DataGrabber will look like this:
|
|
401
445
|
|
402
446
|
@register_datagrabber
|
403
447
|
class ExampleBIDSDataGrabber(BaseDataGrabber):
|
448
|
+
def get_item(
|
449
|
+
self, subject: str, session: str
|
450
|
+
) -> dict[str, dict[str, str]]:
|
451
|
+
out = {
|
452
|
+
"T1w": {
|
453
|
+
"path": f"{subject}/{session}/anat/{subject}_{session}_T1w.nii.gz",
|
454
|
+
"space": "native",
|
455
|
+
},
|
456
|
+
"BOLD": {
|
457
|
+
"path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
458
|
+
"space": "MNI152NLin6Asym",
|
459
|
+
},
|
460
|
+
}
|
461
|
+
return out
|
462
|
+
|
463
|
+
def get_elements(self) -> list[str]:
|
464
|
+
subjects = ["sub-01", "sub-02", "sub-03"]
|
465
|
+
sessions = ["ses-01", "ses-02"]
|
404
466
|
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
return out
|
417
|
-
|
418
|
-
def get_elements(self) -> list[str]:
|
419
|
-
subjects = ["sub-01", "sub-02", "sub-03"]
|
420
|
-
sessions = ["ses-01", "ses-02"]
|
421
|
-
|
422
|
-
# If we are not working on BOLD data, we can add "ses-03"
|
423
|
-
if "BOLD" not in self.types:
|
424
|
-
sessions.append("ses-03")
|
425
|
-
elements = []
|
426
|
-
for subject in subjects:
|
427
|
-
for session in sessions:
|
428
|
-
elements.append({"subject": subject, "session": session})
|
429
|
-
return elements
|
430
|
-
|
431
|
-
def get_element_keys(self) -> list[str]:
|
432
|
-
return ["subject", "session"]
|
467
|
+
# If we are not working on BOLD data, we can add "ses-03"
|
468
|
+
if "BOLD" not in self.types:
|
469
|
+
sessions.append("ses-03")
|
470
|
+
elements = []
|
471
|
+
for subject in subjects:
|
472
|
+
for session in sessions:
|
473
|
+
elements.append({"subject": subject, "session": session})
|
474
|
+
return elements
|
475
|
+
|
476
|
+
def get_element_keys(self) -> list[str]:
|
477
|
+
return ["subject", "session"]
|
433
478
|
|
434
479
|
Optional: Using datalad
|
435
480
|
~~~~~~~~~~~~~~~~~~~~~~~
|
@@ -442,11 +487,11 @@ Step 4: Optional: Adding *BOLD confounds*
|
|
442
487
|
-----------------------------------------
|
443
488
|
|
444
489
|
For some analyses, it is useful to have the confounds associated with the BOLD
|
445
|
-
data. This corresponds to the ``
|
490
|
+
data. This corresponds to the ``BOLD.confounds`` item in the
|
446
491
|
:ref:`Data Object <data_object>` (see :ref:`data_types`). However, the
|
447
|
-
``
|
492
|
+
``BOLD.confounds`` element does not only consists of a ``path``, but it requires
|
448
493
|
more information about the format of the confounds file. Thus, the
|
449
|
-
``
|
494
|
+
``BOLD.confounds`` element is a dictionary with the following keys:
|
450
495
|
|
451
496
|
- ``path``: the path to the confounds file.
|
452
497
|
- ``format``: the format of the confounds file. Currently, this can be either
|
@@ -475,26 +520,24 @@ this:
|
|
475
520
|
|
476
521
|
.. code-block:: python
|
477
522
|
|
478
|
-
def get_item(
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
},
|
497
|
-
}
|
523
|
+
def get_item(self, subject: str, session: str) -> dict:
|
524
|
+
out = {
|
525
|
+
"BOLD": {
|
526
|
+
"path": f"{subject}/{session}/func/{subject}_{session}_task-rest_bold.nii.gz",
|
527
|
+
"space": "MNI152NLin6Asym",
|
528
|
+
"confounds": {
|
529
|
+
"path": f"{subject}/{session}/func/{subject}_{session}_confounds.tsv",
|
530
|
+
"format": "adhoc",
|
531
|
+
"mappings": {
|
532
|
+
"fmriprep": {
|
533
|
+
"variable1": "rot_x",
|
534
|
+
"variable2": "rot_z",
|
535
|
+
"variable3": "rot_y",
|
536
|
+
},
|
537
|
+
},
|
538
|
+
},
|
539
|
+
},
|
540
|
+
}
|
498
541
|
|
499
542
|
.. note::
|
500
543
|
|