junifer 0.0.7.dev332__py3-none-any.whl → 0.0.8__py3-none-any.whl
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/_version.py +9 -19
- junifer/api/__init__.pyi +17 -2
- junifer/api/functions.py +222 -39
- junifer/api/queue_context/__init__.pyi +11 -3
- junifer/api/queue_context/gnu_parallel_local_adapter.py +81 -120
- junifer/api/queue_context/htcondor_adapter.py +118 -181
- junifer/api/queue_context/queue_context_adapter.py +51 -7
- junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +10 -35
- junifer/api/queue_context/tests/test_htcondor_adapter.py +13 -50
- junifer/api/res/fsl/run_fsl_docker.sh +4 -0
- junifer/api/tests/test_functions.py +863 -36
- junifer/cli/__init__.py +1 -7
- junifer/cli/cli.py +41 -22
- junifer/cli/parser.py +23 -147
- junifer/cli/tests/data/gmd_mean.yaml +6 -6
- junifer/cli/tests/data/gmd_mean_htcondor.yaml +6 -5
- junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +1 -0
- junifer/cli/tests/test_cli.py +120 -4
- junifer/cli/tests/test_cli_utils.py +23 -6
- junifer/cli/utils.py +14 -9
- junifer/configs/__init__.py +5 -0
- junifer/configs/__init__.pyi +0 -0
- junifer/configs/juseless/datagrabbers/__init__.pyi +4 -2
- junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +18 -24
- junifer/configs/juseless/datagrabbers/camcan_vbm.py +20 -27
- junifer/configs/juseless/datagrabbers/ixi_vbm.py +44 -52
- junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -7
- junifer/configs/juseless/datagrabbers/tests/test_ucla.py +2 -19
- junifer/configs/juseless/datagrabbers/ucla.py +111 -104
- junifer/configs/juseless/datagrabbers/ukb_vbm.py +19 -25
- junifer/configs/py.typed +0 -0
- junifer/conftest.py +63 -24
- junifer/data/_dispatch.py +9 -19
- junifer/data/coordinates/_ants_coordinates_warper.py +4 -1
- junifer/data/coordinates/_coordinates.py +51 -6
- junifer/data/coordinates/_fsl_coordinates_warper.py +4 -1
- junifer/data/coordinates/tests/test_coordinates.py +15 -3
- junifer/data/coordinates/tests/test_coordinates_names.py +37 -0
- junifer/data/maps/_ants_maps_warper.py +18 -12
- junifer/data/maps/_fsl_maps_warper.py +7 -3
- junifer/data/maps/_maps.py +12 -8
- junifer/data/maps/tests/test_maps.py +13 -21
- junifer/data/masks/_ants_mask_warper.py +18 -12
- junifer/data/masks/_fsl_mask_warper.py +7 -3
- junifer/data/masks/_masks.py +15 -12
- junifer/data/masks/tests/test_masks.py +20 -17
- junifer/data/parcellations/_ants_parcellation_warper.py +18 -12
- junifer/data/parcellations/_fsl_parcellation_warper.py +7 -5
- junifer/data/parcellations/_parcellations.py +125 -91
- junifer/data/parcellations/tests/test_parcellations.py +122 -1
- junifer/data/template_spaces.py +117 -50
- junifer/data/tests/test_template_spaces.py +10 -7
- junifer/data/utils.py +10 -8
- junifer/datagrabber/__init__.pyi +38 -5
- junifer/datagrabber/aomic/__init__.pyi +8 -1
- junifer/datagrabber/aomic/_types.py +22 -0
- junifer/datagrabber/aomic/id1000.py +193 -183
- junifer/datagrabber/aomic/piop1.py +215 -259
- junifer/datagrabber/aomic/piop2.py +211 -244
- junifer/datagrabber/aomic/tests/test_id1000.py +70 -53
- junifer/datagrabber/aomic/tests/test_piop1.py +98 -102
- junifer/datagrabber/aomic/tests/test_piop2.py +88 -85
- junifer/datagrabber/base.py +253 -79
- junifer/datagrabber/datalad_base.py +127 -76
- junifer/datagrabber/dmcc13_benchmark.py +204 -289
- junifer/datagrabber/hcp1200/__init__.pyi +7 -2
- junifer/datagrabber/hcp1200/datalad_hcp1200.py +61 -40
- junifer/datagrabber/hcp1200/hcp1200.py +151 -164
- junifer/datagrabber/hcp1200/tests/test_hcp1200.py +116 -128
- junifer/datagrabber/multiple.py +183 -63
- junifer/datagrabber/pattern.py +358 -227
- junifer/datagrabber/pattern_datalad.py +84 -124
- junifer/datagrabber/pattern_validation_mixin.py +22 -50
- junifer/datagrabber/tests/test_base.py +17 -4
- junifer/datagrabber/tests/test_datalad_base.py +20 -27
- junifer/datagrabber/tests/test_dmcc13_benchmark.py +110 -122
- junifer/datagrabber/tests/test_multiple.py +293 -31
- junifer/datagrabber/tests/test_pattern.py +577 -18
- junifer/datagrabber/tests/test_pattern_datalad.py +177 -107
- junifer/datagrabber/tests/test_pattern_validation_mixin.py +9 -51
- junifer/datareader/default.py +8 -5
- junifer/datareader/tests/test_default_reader.py +1 -1
- junifer/external/BrainPrint/.codecov.yml +2 -0
- junifer/external/BrainPrint/.codespellignore +2 -0
- junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +45 -0
- junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +12 -0
- junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +24 -0
- junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +28 -0
- junifer/external/BrainPrint/.github/dependabot.yml +6 -0
- junifer/external/BrainPrint/.github/workflows/build.yml +53 -0
- junifer/external/BrainPrint/.github/workflows/code-style.yml +44 -0
- junifer/external/BrainPrint/.github/workflows/doc.yml +65 -0
- junifer/external/BrainPrint/.github/workflows/publish.yml +31 -0
- junifer/external/BrainPrint/.github/workflows/pytest.yml +54 -0
- junifer/external/BrainPrint/.gitignore +123 -0
- junifer/external/BrainPrint/LICENSE +21 -0
- junifer/external/BrainPrint/README.md +108 -0
- junifer/external/BrainPrint/brainprint/cli/__init__.py +11 -0
- junifer/external/BrainPrint/brainprint/cli/help_text.py +169 -0
- junifer/external/BrainPrint/brainprint/cli/parser.py +150 -0
- junifer/external/BrainPrint/brainprint/cli/utils.py +14 -0
- junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
- junifer/external/BrainPrint/brainprint/commands/sys_info.py +18 -0
- junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
- junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +33 -0
- junifer/external/BrainPrint/doc/Makefile +20 -0
- junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
- junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +10 -0
- junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +8 -0
- junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +6 -0
- junifer/external/BrainPrint/doc/api/index.rst +11 -0
- junifer/external/BrainPrint/doc/conf.py +272 -0
- junifer/external/BrainPrint/doc/index.rst +140 -0
- junifer/external/BrainPrint/doc/links.inc +36 -0
- junifer/external/BrainPrint/doc/make.bat +35 -0
- junifer/external/BrainPrint/doc/references.bib +23 -0
- junifer/external/BrainPrint/pyproject.toml +170 -0
- junifer/external/BrainPrint/setup.py +3 -0
- junifer/external/__init__.py +5 -0
- junifer/external/__init__.pyi +0 -0
- junifer/external/nilearn/junifer_connectivity_measure.py +95 -39
- junifer/external/nilearn/junifer_nifti_spheres_masker.py +226 -67
- junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +39 -27
- junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +231 -21
- junifer/external/py.typed +0 -0
- junifer/markers/__init__.pyi +6 -3
- junifer/markers/base.py +126 -76
- junifer/markers/brainprint.py +30 -39
- junifer/markers/complexity/__init__.py +20 -3
- junifer/markers/complexity/complexity_base.py +40 -41
- junifer/markers/complexity/hurst_exponent.py +22 -35
- junifer/markers/complexity/multiscale_entropy_auc.py +53 -41
- junifer/markers/complexity/perm_entropy.py +22 -36
- junifer/markers/complexity/range_entropy.py +22 -35
- junifer/markers/complexity/range_entropy_auc.py +27 -36
- junifer/markers/complexity/sample_entropy.py +22 -36
- junifer/markers/complexity/tests/test_complexity_registry.py +48 -0
- junifer/markers/complexity/tests/test_hurst_exponent.py +47 -36
- junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +50 -36
- junifer/markers/complexity/tests/test_perm_entropy.py +48 -36
- junifer/markers/complexity/tests/test_range_entropy.py +47 -36
- junifer/markers/complexity/tests/test_range_entropy_auc.py +47 -36
- junifer/markers/complexity/tests/test_sample_entropy.py +48 -36
- junifer/markers/complexity/tests/test_weighted_perm_entropy.py +50 -36
- junifer/markers/complexity/weighted_perm_entropy.py +22 -36
- junifer/markers/ets_rss.py +35 -31
- junifer/markers/falff/__init__.pyi +7 -1
- junifer/markers/falff/_afni_falff.py +22 -9
- junifer/markers/falff/_junifer_falff.py +47 -31
- junifer/markers/falff/falff_base.py +80 -60
- junifer/markers/falff/falff_maps.py +17 -41
- junifer/markers/falff/falff_parcels.py +26 -51
- junifer/markers/falff/falff_spheres.py +34 -61
- junifer/markers/falff/tests/test_falff_maps.py +20 -23
- junifer/markers/falff/tests/test_falff_mask.py +99 -0
- junifer/markers/falff/tests/test_falff_parcels.py +14 -10
- junifer/markers/falff/tests/test_falff_spheres.py +14 -10
- junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +32 -34
- junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +12 -25
- junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +19 -34
- junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +24 -44
- junifer/markers/functional_connectivity/functional_connectivity_base.py +50 -40
- junifer/markers/functional_connectivity/functional_connectivity_maps.py +12 -25
- junifer/markers/functional_connectivity/functional_connectivity_parcels.py +19 -34
- junifer/markers/functional_connectivity/functional_connectivity_spheres.py +24 -45
- junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +21 -22
- junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +8 -7
- junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +8 -4
- junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +8 -4
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +8 -7
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +9 -5
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +8 -12
- junifer/markers/maps_aggregation.py +77 -55
- junifer/markers/parcel_aggregation.py +91 -70
- junifer/markers/reho/__init__.pyi +7 -1
- junifer/markers/reho/_afni_reho.py +23 -14
- junifer/markers/reho/_junifer_reho.py +112 -123
- junifer/markers/reho/reho_base.py +115 -37
- junifer/markers/reho/reho_maps.py +18 -32
- junifer/markers/reho/reho_parcels.py +26 -41
- junifer/markers/reho/reho_spheres.py +33 -54
- junifer/markers/reho/tests/test_junifer_reho.py +178 -0
- junifer/markers/reho/tests/test_reho_maps.py +27 -25
- junifer/markers/reho/tests/test_reho_parcels.py +28 -22
- junifer/markers/reho/tests/test_reho_spheres.py +16 -12
- junifer/markers/sphere_aggregation.py +88 -72
- junifer/markers/temporal_snr/temporal_snr_base.py +32 -30
- junifer/markers/temporal_snr/temporal_snr_maps.py +9 -18
- junifer/markers/temporal_snr/temporal_snr_parcels.py +19 -27
- junifer/markers/temporal_snr/temporal_snr_spheres.py +27 -41
- junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +2 -2
- junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +17 -22
- junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +11 -3
- junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +9 -9
- junifer/markers/tests/test_brainprint.py +10 -9
- junifer/markers/tests/test_ets_rss.py +7 -3
- junifer/markers/tests/test_lost_regions.py +279 -0
- junifer/markers/tests/test_maps_aggregation.py +67 -114
- junifer/markers/tests/test_marker_utils.py +40 -1
- junifer/markers/tests/test_markers_base.py +275 -6
- junifer/markers/tests/test_parcel_aggregation.py +91 -53
- junifer/markers/tests/test_sphere_aggregation.py +53 -47
- junifer/markers/utils.py +267 -5
- junifer/onthefly/__init__.py +2 -3
- junifer/onthefly/__init__.pyi +4 -0
- junifer/onthefly/_brainprint.py +3 -5
- junifer/onthefly/py.typed +0 -0
- junifer/onthefly/read_transform.py +11 -9
- junifer/onthefly/tests/test_read_transform.py +7 -7
- junifer/pipeline/__init__.pyi +4 -2
- junifer/pipeline/marker_collection.py +14 -10
- junifer/pipeline/pipeline_component_registry.py +25 -6
- junifer/pipeline/pipeline_step_mixin.py +5 -12
- junifer/pipeline/tests/test_data_object_dumper.py +10 -10
- junifer/pipeline/tests/test_marker_collection.py +145 -168
- junifer/pipeline/tests/test_pipeline_component_registry.py +52 -8
- junifer/pipeline/tests/test_pipeline_step_mixin.py +12 -26
- junifer/pipeline/tests/test_update_meta_mixin.py +4 -5
- junifer/pipeline/tests/test_workdir_manager.py +39 -0
- junifer/pipeline/update_meta_mixin.py +13 -10
- junifer/pipeline/utils.py +22 -17
- junifer/pipeline/workdir_manager.py +41 -32
- junifer/preprocess/__init__.pyi +9 -4
- junifer/preprocess/_temporal_filter.py +34 -33
- junifer/preprocess/_temporal_slicer.py +17 -30
- junifer/preprocess/base.py +99 -55
- junifer/preprocess/confounds/__init__.pyi +10 -2
- junifer/preprocess/confounds/fmriprep_confound_remover.py +87 -109
- junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +64 -45
- junifer/preprocess/smoothing/__init__.pyi +2 -2
- junifer/preprocess/smoothing/_afni_smoothing.py +8 -7
- junifer/preprocess/smoothing/_fsl_smoothing.py +6 -4
- junifer/preprocess/smoothing/_nilearn_smoothing.py +7 -5
- junifer/preprocess/smoothing/smoothing.py +59 -40
- junifer/preprocess/smoothing/tests/test_smoothing.py +28 -8
- junifer/preprocess/tests/test_preprocess_base.py +17 -9
- junifer/preprocess/tests/test_temporal_filter.py +37 -16
- junifer/preprocess/tests/test_temporal_slicer.py +12 -12
- junifer/preprocess/warping/__init__.pyi +2 -2
- junifer/preprocess/warping/_ants_warper.py +56 -40
- junifer/preprocess/warping/_fsl_warper.py +49 -36
- junifer/preprocess/warping/_utils.py +106 -0
- junifer/preprocess/warping/space_warper.py +99 -98
- junifer/preprocess/warping/tests/test_space_warper.py +46 -41
- junifer/preprocess/warping/tests/test_warping_utils.py +163 -0
- junifer/stats.py +46 -34
- junifer/storage/__init__.pyi +8 -4
- junifer/storage/base.py +129 -64
- junifer/storage/hdf5.py +307 -199
- junifer/storage/pandas_base.py +46 -24
- junifer/storage/sqlite.py +99 -62
- junifer/storage/tests/data/collected_h5io_fork.hdf5 +0 -0
- junifer/storage/tests/test_hdf5.py +147 -12
- junifer/storage/tests/test_repeated_storage.py +293 -0
- junifer/storage/tests/test_sqlite.py +9 -20
- junifer/storage/tests/test_storage_base.py +18 -21
- junifer/storage/tests/test_utils.py +83 -22
- junifer/storage/utils.py +58 -38
- junifer/testing/__init__.pyi +2 -2
- junifer/testing/datagrabbers.py +480 -44
- junifer/testing/registry.py +12 -0
- junifer/testing/tests/test_adhdtesting_datagrabber.py +24 -0
- junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +5 -0
- junifer/testing/tests/test_partlycloudytesting_datagrabber.py +52 -0
- junifer/testing/tests/test_spmauditory_datagrabber.py +16 -0
- junifer/testing/tests/test_testing_registry.py +31 -0
- junifer/testing/tests/test_testing_utils.py +35 -0
- junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +81 -0
- junifer/testing/utils.py +33 -1
- junifer/tests/test_stats.py +1 -5
- junifer/typing/__init__.pyi +2 -0
- junifer/typing/_typing.py +34 -19
- junifer/typing/py.typed +0 -0
- junifer/utils/__init__.pyi +10 -1
- junifer/utils/_config.py +1 -2
- junifer/utils/helpers.py +68 -2
- junifer/utils/logging.py +31 -7
- junifer/utils/tests/test_helpers.py +36 -1
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/METADATA +43 -35
- junifer-0.0.8.dist-info/RECORD +402 -0
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/WHEEL +1 -1
- junifer/cli/tests/test_parser.py +0 -280
- junifer/external/h5io/h5io/__init__.py +0 -15
- junifer/external/h5io/h5io/_h5io.py +0 -767
- junifer/external/h5io/h5io/_version.py +0 -1
- junifer/external/h5io/h5io/chunked_array.py +0 -94
- junifer/external/h5io/h5io/chunked_list.py +0 -65
- junifer/markers/complexity/__init__.pyi +0 -17
- junifer-0.0.7.dev332.dist-info/RECORD +0 -353
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/entry_points.txt +0 -0
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/licenses/AUTHORS.rst +0 -0
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/licenses/LICENSE.md +0 -0
- {junifer-0.0.7.dev332.dist-info → junifer-0.0.8.dist-info}/top_level.txt +0 -0
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
# Synchon Mandal <s.mandal@fz-juelich.de>
|
|
6
6
|
# License: AGPL
|
|
7
7
|
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Annotated, Any
|
|
9
|
+
|
|
10
|
+
from pydantic import BeforeValidator
|
|
9
11
|
|
|
10
12
|
from ...api.decorators import register_marker
|
|
13
|
+
from ...datagrabber import DataType
|
|
14
|
+
from ...utils import ensure_list
|
|
11
15
|
from ..parcel_aggregation import ParcelAggregation
|
|
12
16
|
from .functional_connectivity_base import FunctionalConnectivityBase
|
|
13
17
|
|
|
@@ -25,56 +29,37 @@ class FunctionalConnectivityParcels(FunctionalConnectivityBase):
|
|
|
25
29
|
The name(s) of the parcellation(s) to use.
|
|
26
30
|
See :func:`.list_data` for options.
|
|
27
31
|
agg_method : str, optional
|
|
28
|
-
The
|
|
32
|
+
The aggregation function to use.
|
|
29
33
|
See :func:`.get_aggfunc_by_name` for options
|
|
30
34
|
(default "mean").
|
|
31
|
-
agg_method_params : dict, optional
|
|
32
|
-
|
|
33
|
-
See :func:`.get_aggfunc_by_name` for options
|
|
34
|
-
(default None).
|
|
35
|
+
agg_method_params : dict or None, optional
|
|
36
|
+
The parameters to pass to the aggregation function.
|
|
37
|
+
See :func:`.get_aggfunc_by_name` for options (default None).
|
|
35
38
|
conn_method : str, optional
|
|
36
|
-
The
|
|
39
|
+
The connectivity measure to use.
|
|
37
40
|
See :class:`.JuniferConnectivityMeasure` for options
|
|
38
41
|
(default "correlation").
|
|
39
|
-
conn_method_params : dict, optional
|
|
40
|
-
|
|
42
|
+
conn_method_params : dict or None, optional
|
|
43
|
+
The parameters to pass to :class:`.JuniferConnectivityMeasure`.
|
|
41
44
|
If None, ``{"empirical": True}`` will be used, which would mean
|
|
42
45
|
:class:`sklearn.covariance.EmpiricalCovariance` is used to compute
|
|
43
46
|
covariance. If usage of :class:`sklearn.covariance.LedoitWolf` is
|
|
44
47
|
desired, ``{"empirical": False}`` should be passed
|
|
45
48
|
(default None).
|
|
46
|
-
masks : str, dict
|
|
49
|
+
masks : str, dict, list of them or None, optional
|
|
47
50
|
The specification of the masks to apply to regions before extracting
|
|
48
51
|
signals. Check :ref:`Using Masks <using_masks>` for more details.
|
|
49
52
|
If None, will not apply any mask (default None).
|
|
50
|
-
name : str, optional
|
|
51
|
-
The name of the marker.
|
|
52
|
-
|
|
53
|
+
name : str or None, optional
|
|
54
|
+
The name of the marker.
|
|
55
|
+
If None, will use the class name (default None).
|
|
53
56
|
|
|
54
57
|
"""
|
|
55
58
|
|
|
56
|
-
|
|
57
|
-
self,
|
|
58
|
-
parcellation: Union[str, list[str]],
|
|
59
|
-
agg_method: str = "mean",
|
|
60
|
-
agg_method_params: Optional[dict] = None,
|
|
61
|
-
conn_method: str = "correlation",
|
|
62
|
-
conn_method_params: Optional[dict] = None,
|
|
63
|
-
masks: Union[str, dict, list[Union[dict, str]], None] = None,
|
|
64
|
-
name: Optional[str] = None,
|
|
65
|
-
) -> None:
|
|
66
|
-
self.parcellation = parcellation
|
|
67
|
-
super().__init__(
|
|
68
|
-
agg_method=agg_method,
|
|
69
|
-
agg_method_params=agg_method_params,
|
|
70
|
-
conn_method=conn_method,
|
|
71
|
-
conn_method_params=conn_method_params,
|
|
72
|
-
masks=masks,
|
|
73
|
-
name=name,
|
|
74
|
-
)
|
|
59
|
+
parcellation: Annotated[str | list[str], BeforeValidator(ensure_list)]
|
|
75
60
|
|
|
76
61
|
def aggregate(
|
|
77
|
-
self, input: dict[str, Any], extra_input:
|
|
62
|
+
self, input: dict[str, Any], extra_input: dict | None = None
|
|
78
63
|
) -> dict:
|
|
79
64
|
"""Perform parcel aggregation.
|
|
80
65
|
|
|
@@ -107,5 +92,5 @@ class FunctionalConnectivityParcels(FunctionalConnectivityBase):
|
|
|
107
92
|
method=self.agg_method,
|
|
108
93
|
method_params=self.agg_method_params,
|
|
109
94
|
masks=self.masks,
|
|
110
|
-
on=
|
|
95
|
+
on=DataType.BOLD,
|
|
111
96
|
).compute(input=input, extra_input=extra_input)
|
|
@@ -5,11 +5,13 @@
|
|
|
5
5
|
# Synchon Mandal <s.mandal@fz-juelich.de>
|
|
6
6
|
# License: AGPL
|
|
7
7
|
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, Literal
|
|
9
|
+
|
|
10
|
+
from pydantic import PositiveFloat
|
|
9
11
|
|
|
10
12
|
from ...api.decorators import register_marker
|
|
13
|
+
from ...datagrabber import DataType
|
|
11
14
|
from ..sphere_aggregation import SphereAggregation
|
|
12
|
-
from ..utils import raise_error
|
|
13
15
|
from .functional_connectivity_base import FunctionalConnectivityBase
|
|
14
16
|
|
|
15
17
|
|
|
@@ -25,71 +27,48 @@ class FunctionalConnectivitySpheres(FunctionalConnectivityBase):
|
|
|
25
27
|
coords : str
|
|
26
28
|
The name of the coordinates list to use.
|
|
27
29
|
See :func:`.list_data` for options.
|
|
28
|
-
radius : positive float, optional
|
|
29
|
-
The radius of the sphere
|
|
30
|
+
radius : ``zero`` or positive float or None, optional
|
|
31
|
+
The radius of the sphere in millimetres.
|
|
30
32
|
If None, the signal will be extracted from a single voxel.
|
|
31
33
|
See :class:`.JuniferNiftiSpheresMasker` for more information
|
|
32
34
|
(default None).
|
|
33
35
|
allow_overlap : bool, optional
|
|
34
|
-
Whether to allow overlapping spheres.
|
|
35
|
-
the spheres overlap (default False).
|
|
36
|
+
Whether to allow overlapping spheres.
|
|
37
|
+
If False, an error is raised if the spheres overlap (default False).
|
|
36
38
|
agg_method : str, optional
|
|
37
|
-
The
|
|
39
|
+
The aggregation function to use.
|
|
38
40
|
See :func:`.get_aggfunc_by_name` for options
|
|
39
41
|
(default "mean").
|
|
40
|
-
agg_method_params : dict, optional
|
|
41
|
-
|
|
42
|
-
See :func:`.get_aggfunc_by_name` for options
|
|
43
|
-
(default None).
|
|
42
|
+
agg_method_params : dict or None, optional
|
|
43
|
+
The parameters to pass to the aggregation function.
|
|
44
|
+
See :func:`.get_aggfunc_by_name` for options (default None).
|
|
44
45
|
conn_method : str, optional
|
|
45
|
-
The
|
|
46
|
+
The connectivity measure to use.
|
|
46
47
|
See :class:`.JuniferConnectivityMeasure` for options
|
|
47
48
|
(default "correlation").
|
|
48
|
-
conn_method_params : dict, optional
|
|
49
|
-
|
|
49
|
+
conn_method_params : dict or None, optional
|
|
50
|
+
The parameters to pass to :class:`.JuniferConnectivityMeasure`.
|
|
50
51
|
If None, ``{"empirical": True}`` will be used, which would mean
|
|
51
52
|
:class:`sklearn.covariance.EmpiricalCovariance` is used to compute
|
|
52
53
|
covariance. If usage of :class:`sklearn.covariance.LedoitWolf` is
|
|
53
54
|
desired, ``{"empirical": False}`` should be passed
|
|
54
55
|
(default None).
|
|
55
|
-
masks : str, dict
|
|
56
|
+
masks : str, dict, list of them or None, optional
|
|
56
57
|
The specification of the masks to apply to regions before extracting
|
|
57
58
|
signals. Check :ref:`Using Masks <using_masks>` for more details.
|
|
58
59
|
If None, will not apply any mask (default None).
|
|
59
|
-
name : str, optional
|
|
60
|
-
The name of the marker.
|
|
61
|
-
|
|
60
|
+
name : str or None, optional
|
|
61
|
+
The name of the marker.
|
|
62
|
+
If None, will use the class name (default None).
|
|
62
63
|
|
|
63
64
|
"""
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
radius: Optional[float] = None,
|
|
69
|
-
allow_overlap: bool = False,
|
|
70
|
-
agg_method: str = "mean",
|
|
71
|
-
agg_method_params: Optional[dict] = None,
|
|
72
|
-
conn_method: str = "correlation",
|
|
73
|
-
conn_method_params: Optional[dict] = None,
|
|
74
|
-
masks: Union[str, dict, list[Union[dict, str]], None] = None,
|
|
75
|
-
name: Optional[str] = None,
|
|
76
|
-
) -> None:
|
|
77
|
-
self.coords = coords
|
|
78
|
-
self.radius = radius
|
|
79
|
-
self.allow_overlap = allow_overlap
|
|
80
|
-
if radius is None or radius <= 0:
|
|
81
|
-
raise_error(f"radius should be > 0: provided {radius}")
|
|
82
|
-
super().__init__(
|
|
83
|
-
agg_method=agg_method,
|
|
84
|
-
agg_method_params=agg_method_params,
|
|
85
|
-
conn_method=conn_method,
|
|
86
|
-
conn_method_params=conn_method_params,
|
|
87
|
-
masks=masks,
|
|
88
|
-
name=name,
|
|
89
|
-
)
|
|
66
|
+
coords: str
|
|
67
|
+
radius: Literal[0] | PositiveFloat | None = None
|
|
68
|
+
allow_overlap: bool = False
|
|
90
69
|
|
|
91
70
|
def aggregate(
|
|
92
|
-
self, input: dict[str, Any], extra_input:
|
|
71
|
+
self, input: dict[str, Any], extra_input: dict | None = None
|
|
93
72
|
) -> dict:
|
|
94
73
|
"""Perform sphere aggregation.
|
|
95
74
|
|
|
@@ -124,5 +103,5 @@ class FunctionalConnectivitySpheres(FunctionalConnectivityBase):
|
|
|
124
103
|
method=self.agg_method,
|
|
125
104
|
method_params=self.agg_method_params,
|
|
126
105
|
masks=self.masks,
|
|
127
|
-
on=
|
|
106
|
+
on=DataType.BOLD,
|
|
128
107
|
).compute(input=input, extra_input=extra_input)
|
junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py
CHANGED
|
@@ -9,16 +9,19 @@ from pathlib import Path
|
|
|
9
9
|
|
|
10
10
|
import pytest
|
|
11
11
|
|
|
12
|
+
from junifer.datagrabber import DataType
|
|
12
13
|
from junifer.datareader import DefaultDataReader
|
|
13
|
-
from junifer.markers
|
|
14
|
+
from junifer.markers import CrossParcellationFC
|
|
14
15
|
from junifer.pipeline import WorkDirManager
|
|
15
|
-
from junifer.
|
|
16
|
-
from junifer.
|
|
17
|
-
from junifer.testing.datagrabbers import SPMAuditoryTestingDataGrabber
|
|
16
|
+
from junifer.storage import HDF5FeatureStorage
|
|
17
|
+
from junifer.testing.datagrabbers import PartlyCloudyTestingDataGrabber
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
pytestmark = pytest.mark.external
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
parcellation_one = "Shen_2013_50"
|
|
24
|
+
parcellation_two = "Shen_2013_100"
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
def test_init() -> None:
|
|
@@ -35,12 +38,11 @@ def test_storage_type() -> None:
|
|
|
35
38
|
"""Test CrossParcellationFC storage_type."""
|
|
36
39
|
assert "matrix" == CrossParcellationFC(
|
|
37
40
|
parcellation_one=parcellation_one, parcellation_two=parcellation_two
|
|
38
|
-
).storage_type(
|
|
41
|
+
).storage_type(
|
|
42
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
43
|
+
)
|
|
39
44
|
|
|
40
45
|
|
|
41
|
-
@pytest.mark.skipif(
|
|
42
|
-
_check_ants() is False, reason="requires ANTs to be in PATH"
|
|
43
|
-
)
|
|
44
46
|
def test_compute(tmp_path: Path) -> None:
|
|
45
47
|
"""Test CrossParcellationFC compute().
|
|
46
48
|
|
|
@@ -50,8 +52,8 @@ def test_compute(tmp_path: Path) -> None:
|
|
|
50
52
|
The path to the test directory.
|
|
51
53
|
|
|
52
54
|
"""
|
|
53
|
-
with
|
|
54
|
-
element_data = DefaultDataReader().fit_transform(dg["
|
|
55
|
+
with PartlyCloudyTestingDataGrabber() as dg:
|
|
56
|
+
element_data = DefaultDataReader().fit_transform(dg["sub-01"])
|
|
55
57
|
WorkDirManager().workdir = tmp_path
|
|
56
58
|
crossparcellation = CrossParcellationFC(
|
|
57
59
|
parcellation_one=parcellation_one,
|
|
@@ -61,14 +63,11 @@ def test_compute(tmp_path: Path) -> None:
|
|
|
61
63
|
out = crossparcellation.compute(element_data["BOLD"])[
|
|
62
64
|
"functional_connectivity"
|
|
63
65
|
]
|
|
64
|
-
assert out["data"].shape == (
|
|
65
|
-
assert len(out["col_names"]) ==
|
|
66
|
-
assert len(out["row_names"]) ==
|
|
66
|
+
assert out["data"].shape == (184, 93)
|
|
67
|
+
assert len(out["col_names"]) == 93
|
|
68
|
+
assert len(out["row_names"]) == 184
|
|
67
69
|
|
|
68
70
|
|
|
69
|
-
@pytest.mark.skipif(
|
|
70
|
-
_check_ants() is False, reason="requires ANTs to be in PATH"
|
|
71
|
-
)
|
|
72
71
|
def test_store(tmp_path: Path) -> None:
|
|
73
72
|
"""Test CrossParcellationFC store().
|
|
74
73
|
|
|
@@ -78,16 +77,16 @@ def test_store(tmp_path: Path) -> None:
|
|
|
78
77
|
The path to the test directory.
|
|
79
78
|
|
|
80
79
|
"""
|
|
81
|
-
with
|
|
82
|
-
element_data = DefaultDataReader().fit_transform(dg["
|
|
80
|
+
with PartlyCloudyTestingDataGrabber() as dg:
|
|
81
|
+
element_data = DefaultDataReader().fit_transform(dg["sub-01"])
|
|
83
82
|
WorkDirManager().workdir = tmp_path
|
|
84
83
|
crossparcellation = CrossParcellationFC(
|
|
85
84
|
parcellation_one=parcellation_one,
|
|
86
85
|
parcellation_two=parcellation_two,
|
|
87
86
|
corr_method="spearman",
|
|
88
87
|
)
|
|
89
|
-
storage =
|
|
90
|
-
uri=tmp_path / "test_crossparcellation.
|
|
88
|
+
storage = HDF5FeatureStorage(
|
|
89
|
+
uri=tmp_path / "test_crossparcellation.hdf5",
|
|
91
90
|
)
|
|
92
91
|
# Fit transform marker on data with storage
|
|
93
92
|
crossparcellation.fit_transform(input=element_data, storage=storage)
|
|
@@ -7,10 +7,14 @@ from pathlib import Path
|
|
|
7
7
|
|
|
8
8
|
import pytest
|
|
9
9
|
|
|
10
|
-
from junifer.datagrabber import
|
|
10
|
+
from junifer.datagrabber import DataType
|
|
11
11
|
from junifer.datareader import DefaultDataReader
|
|
12
12
|
from junifer.markers import EdgeCentricFCMaps
|
|
13
13
|
from junifer.storage import HDF5FeatureStorage
|
|
14
|
+
from junifer.testing.datagrabbers import ADHDTestingDataGrabber
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
pytestmark = pytest.mark.external
|
|
14
18
|
|
|
15
19
|
|
|
16
20
|
@pytest.mark.parametrize(
|
|
@@ -22,7 +26,6 @@ from junifer.storage import HDF5FeatureStorage
|
|
|
22
26
|
)
|
|
23
27
|
def test_EdgeCentricFCMaps(
|
|
24
28
|
tmp_path: Path,
|
|
25
|
-
maps_datagrabber: PatternDataladDataGrabber,
|
|
26
29
|
conn_method_params: dict[str, bool],
|
|
27
30
|
) -> None:
|
|
28
31
|
"""Test EdgeCentricFCMaps.
|
|
@@ -31,14 +34,12 @@ def test_EdgeCentricFCMaps(
|
|
|
31
34
|
----------
|
|
32
35
|
tmp_path : pathlib.Path
|
|
33
36
|
The path to the test directory.
|
|
34
|
-
maps_datagrabber : PatternDataladDataGrabber
|
|
35
|
-
The testing PatternDataladDataGrabber, as fixture.
|
|
36
37
|
conn_method_params : dict
|
|
37
38
|
The parametrized parameters to connectivity measure method.
|
|
38
39
|
|
|
39
40
|
"""
|
|
40
|
-
with
|
|
41
|
-
element = dg[
|
|
41
|
+
with ADHDTestingDataGrabber() as dg:
|
|
42
|
+
element = dg["sub-01"]
|
|
42
43
|
element_data = DefaultDataReader().fit_transform(element)
|
|
43
44
|
# Setup marker
|
|
44
45
|
marker = EdgeCentricFCMaps(
|
|
@@ -48,7 +49,7 @@ def test_EdgeCentricFCMaps(
|
|
|
48
49
|
)
|
|
49
50
|
# Check correct output
|
|
50
51
|
assert "matrix" == marker.storage_type(
|
|
51
|
-
input_type=
|
|
52
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
52
53
|
)
|
|
53
54
|
|
|
54
55
|
# Fit-transform the data
|
|
@@ -8,12 +8,16 @@ from pathlib import Path
|
|
|
8
8
|
|
|
9
9
|
import pytest
|
|
10
10
|
|
|
11
|
+
from junifer.datagrabber import DataType
|
|
11
12
|
from junifer.datareader import DefaultDataReader
|
|
12
13
|
from junifer.markers.functional_connectivity import EdgeCentricFCParcels
|
|
13
|
-
from junifer.storage import
|
|
14
|
+
from junifer.storage import HDF5FeatureStorage
|
|
14
15
|
from junifer.testing.datagrabbers import PartlyCloudyTestingDataGrabber
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
pytestmark = pytest.mark.external
|
|
19
|
+
|
|
20
|
+
|
|
17
21
|
@pytest.mark.parametrize(
|
|
18
22
|
"conn_method_params",
|
|
19
23
|
[
|
|
@@ -46,7 +50,7 @@ def test_EdgeCentricFCParcels(
|
|
|
46
50
|
)
|
|
47
51
|
# Check correct output
|
|
48
52
|
assert "matrix" == marker.storage_type(
|
|
49
|
-
input_type=
|
|
53
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
50
54
|
)
|
|
51
55
|
|
|
52
56
|
# Fit-transform the data
|
|
@@ -63,8 +67,8 @@ def test_EdgeCentricFCParcels(
|
|
|
63
67
|
assert len(set(edge_fc_bold["col_names"])) == n_edges
|
|
64
68
|
|
|
65
69
|
# Store
|
|
66
|
-
storage =
|
|
67
|
-
uri=tmp_path / "test_edge_fc_parcels.
|
|
70
|
+
storage = HDF5FeatureStorage(
|
|
71
|
+
uri=tmp_path / "test_edge_fc_parcels.hdf5",
|
|
68
72
|
)
|
|
69
73
|
marker.fit_transform(input=element_data, storage=storage)
|
|
70
74
|
features = storage.list_features()
|
|
@@ -8,12 +8,16 @@ from pathlib import Path
|
|
|
8
8
|
|
|
9
9
|
import pytest
|
|
10
10
|
|
|
11
|
+
from junifer.datagrabber import DataType
|
|
11
12
|
from junifer.datareader import DefaultDataReader
|
|
12
13
|
from junifer.markers.functional_connectivity import EdgeCentricFCSpheres
|
|
13
|
-
from junifer.storage import
|
|
14
|
+
from junifer.storage import HDF5FeatureStorage
|
|
14
15
|
from junifer.testing.datagrabbers import SPMAuditoryTestingDataGrabber
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
pytestmark = pytest.mark.external
|
|
19
|
+
|
|
20
|
+
|
|
17
21
|
@pytest.mark.parametrize(
|
|
18
22
|
"conn_method_params",
|
|
19
23
|
[
|
|
@@ -47,7 +51,7 @@ def test_EdgeCentricFCSpheres(
|
|
|
47
51
|
)
|
|
48
52
|
# Check correct output
|
|
49
53
|
assert "matrix" == marker.storage_type(
|
|
50
|
-
input_type=
|
|
54
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
51
55
|
)
|
|
52
56
|
|
|
53
57
|
# Fit-transform the data
|
|
@@ -65,8 +69,8 @@ def test_EdgeCentricFCSpheres(
|
|
|
65
69
|
assert len(set(edge_fc_bold["col_names"])) == n_edges
|
|
66
70
|
|
|
67
71
|
# Store
|
|
68
|
-
storage =
|
|
69
|
-
uri=tmp_path / "test_edge_fc_spheres.
|
|
72
|
+
storage = HDF5FeatureStorage(
|
|
73
|
+
uri=tmp_path / "test_edge_fc_spheres.hdf5",
|
|
70
74
|
)
|
|
71
75
|
marker.fit_transform(input=element_data, storage=storage)
|
|
72
76
|
features = storage.list_features()
|
|
@@ -13,10 +13,14 @@ from numpy.testing import assert_array_almost_equal
|
|
|
13
13
|
from sklearn.covariance import EmpiricalCovariance, LedoitWolf
|
|
14
14
|
|
|
15
15
|
from junifer.data import MapsRegistry
|
|
16
|
-
from junifer.datagrabber import
|
|
16
|
+
from junifer.datagrabber import DataType
|
|
17
17
|
from junifer.datareader import DefaultDataReader
|
|
18
18
|
from junifer.markers import FunctionalConnectivityMaps
|
|
19
19
|
from junifer.storage import HDF5FeatureStorage
|
|
20
|
+
from junifer.testing.datagrabbers import ADHDTestingDataGrabber
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
pytestmark = pytest.mark.external
|
|
20
24
|
|
|
21
25
|
|
|
22
26
|
if TYPE_CHECKING:
|
|
@@ -32,7 +36,6 @@ if TYPE_CHECKING:
|
|
|
32
36
|
)
|
|
33
37
|
def test_FunctionalConnectivityMaps(
|
|
34
38
|
tmp_path: Path,
|
|
35
|
-
maps_datagrabber: PatternDataladDataGrabber,
|
|
36
39
|
conn_method_params: dict[str, bool],
|
|
37
40
|
cov_estimator: type["BaseEstimator"],
|
|
38
41
|
) -> None:
|
|
@@ -42,16 +45,14 @@ def test_FunctionalConnectivityMaps(
|
|
|
42
45
|
----------
|
|
43
46
|
tmp_path : pathlib.Path
|
|
44
47
|
The path to the test directory.
|
|
45
|
-
maps_datagrabber : PatternDataladDataGrabber
|
|
46
|
-
The testing PatternDataladDataGrabber, as fixture.
|
|
47
48
|
conn_method_params : dict
|
|
48
49
|
The parametrized parameters to connectivity measure method.
|
|
49
50
|
cov_estimator : estimator object
|
|
50
51
|
The parametrized covariance estimator.
|
|
51
52
|
|
|
52
53
|
"""
|
|
53
|
-
with
|
|
54
|
-
element = dg[
|
|
54
|
+
with ADHDTestingDataGrabber() as dg:
|
|
55
|
+
element = dg["sub-01"]
|
|
55
56
|
element_data = DefaultDataReader().fit_transform(element)
|
|
56
57
|
# Setup marker
|
|
57
58
|
marker = FunctionalConnectivityMaps(
|
|
@@ -61,7 +62,7 @@ def test_FunctionalConnectivityMaps(
|
|
|
61
62
|
)
|
|
62
63
|
# Check correct output
|
|
63
64
|
assert "matrix" == marker.storage_type(
|
|
64
|
-
input_type=
|
|
65
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
65
66
|
)
|
|
66
67
|
|
|
67
68
|
# Fit-transform the data
|
|
@@ -15,14 +15,18 @@ from numpy.testing import assert_array_almost_equal
|
|
|
15
15
|
from sklearn.covariance import EmpiricalCovariance, LedoitWolf
|
|
16
16
|
|
|
17
17
|
from junifer.data import ParcellationRegistry
|
|
18
|
+
from junifer.datagrabber import DataType
|
|
18
19
|
from junifer.datareader import DefaultDataReader
|
|
19
|
-
from junifer.markers
|
|
20
|
+
from junifer.markers import (
|
|
20
21
|
FunctionalConnectivityParcels,
|
|
21
22
|
)
|
|
22
|
-
from junifer.storage import
|
|
23
|
+
from junifer.storage import HDF5FeatureStorage
|
|
23
24
|
from junifer.testing.datagrabbers import PartlyCloudyTestingDataGrabber
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
pytestmark = pytest.mark.external
|
|
28
|
+
|
|
29
|
+
|
|
26
30
|
if TYPE_CHECKING:
|
|
27
31
|
from sklearn.base import BaseEstimator
|
|
28
32
|
|
|
@@ -62,7 +66,7 @@ def test_FunctionalConnectivityParcels(
|
|
|
62
66
|
)
|
|
63
67
|
# Check correct output
|
|
64
68
|
assert "matrix" == marker.storage_type(
|
|
65
|
-
input_type=
|
|
69
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
66
70
|
)
|
|
67
71
|
|
|
68
72
|
# Fit-transform the data
|
|
@@ -101,8 +105,8 @@ def test_FunctionalConnectivityParcels(
|
|
|
101
105
|
)
|
|
102
106
|
|
|
103
107
|
# Store
|
|
104
|
-
storage =
|
|
105
|
-
uri=tmp_path / "test_fc_parcels.
|
|
108
|
+
storage = HDF5FeatureStorage(
|
|
109
|
+
uri=tmp_path / "test_fc_parcels.hdf5",
|
|
106
110
|
)
|
|
107
111
|
marker.fit_transform(input=element_data, storage=storage)
|
|
108
112
|
features = storage.list_features()
|
|
@@ -16,14 +16,18 @@ from numpy.testing import assert_array_almost_equal
|
|
|
16
16
|
from sklearn.covariance import EmpiricalCovariance, LedoitWolf
|
|
17
17
|
|
|
18
18
|
from junifer.data import CoordinatesRegistry
|
|
19
|
+
from junifer.datagrabber import DataType
|
|
19
20
|
from junifer.datareader import DefaultDataReader
|
|
20
21
|
from junifer.markers.functional_connectivity import (
|
|
21
22
|
FunctionalConnectivitySpheres,
|
|
22
23
|
)
|
|
23
|
-
from junifer.storage import
|
|
24
|
+
from junifer.storage import HDF5FeatureStorage
|
|
24
25
|
from junifer.testing.datagrabbers import SPMAuditoryTestingDataGrabber
|
|
25
26
|
|
|
26
27
|
|
|
28
|
+
pytestmark = pytest.mark.external
|
|
29
|
+
|
|
30
|
+
|
|
27
31
|
if TYPE_CHECKING:
|
|
28
32
|
from sklearn.base import BaseEstimator
|
|
29
33
|
|
|
@@ -64,7 +68,7 @@ def test_FunctionalConnectivitySpheres(
|
|
|
64
68
|
)
|
|
65
69
|
# Check correct output
|
|
66
70
|
assert "matrix" == marker.storage_type(
|
|
67
|
-
input_type=
|
|
71
|
+
input_type=DataType.BOLD, output_feature="functional_connectivity"
|
|
68
72
|
)
|
|
69
73
|
|
|
70
74
|
# Fit-transform the data
|
|
@@ -102,8 +106,8 @@ def test_FunctionalConnectivitySpheres(
|
|
|
102
106
|
)
|
|
103
107
|
|
|
104
108
|
# Store
|
|
105
|
-
storage =
|
|
106
|
-
uri=tmp_path / "test_fc_spheres.
|
|
109
|
+
storage = HDF5FeatureStorage(
|
|
110
|
+
uri=tmp_path / "test_fc_spheres.hdf5",
|
|
107
111
|
)
|
|
108
112
|
marker.fit_transform(input=element_data, storage=storage)
|
|
109
113
|
features = storage.list_features()
|
|
@@ -112,11 +116,3 @@ def test_FunctionalConnectivitySpheres(
|
|
|
112
116
|
== "BOLD_FunctionalConnectivitySpheres_functional_connectivity"
|
|
113
117
|
for x in features.values()
|
|
114
118
|
)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
def test_FunctionalConnectivitySpheres_error() -> None:
|
|
118
|
-
"""Test FunctionalConnectivitySpheres errors."""
|
|
119
|
-
with pytest.raises(ValueError, match="radius should be > 0"):
|
|
120
|
-
FunctionalConnectivitySpheres(
|
|
121
|
-
coords="DMNBuckner", radius=-0.1, conn_method="correlation"
|
|
122
|
-
)
|