junifer 0.0.5.dev208__py3-none-any.whl → 0.0.5.dev240__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.
Files changed (35) hide show
  1. junifer/_version.py +2 -2
  2. junifer/datagrabber/__init__.py +2 -0
  3. junifer/datagrabber/base.py +10 -6
  4. junifer/datagrabber/hcp1200/hcp1200.py +1 -1
  5. junifer/datagrabber/multiple.py +42 -6
  6. junifer/datagrabber/pattern.py +33 -10
  7. junifer/datagrabber/pattern_validation_mixin.py +388 -0
  8. junifer/datagrabber/tests/test_multiple.py +161 -84
  9. junifer/datagrabber/tests/{test_datagrabber_utils.py → test_pattern_validation_mixin.py} +133 -108
  10. junifer/external/nilearn/__init__.py +2 -1
  11. junifer/external/nilearn/junifer_connectivity_measure.py +483 -0
  12. junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +1089 -0
  13. junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +25 -13
  14. junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +26 -22
  15. junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +33 -27
  16. junifer/markers/functional_connectivity/functional_connectivity_base.py +42 -30
  17. junifer/markers/functional_connectivity/functional_connectivity_parcels.py +25 -19
  18. junifer/markers/functional_connectivity/functional_connectivity_spheres.py +31 -24
  19. junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +3 -3
  20. junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +21 -4
  21. junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +22 -9
  22. junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +29 -8
  23. junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +30 -61
  24. junifer/utils/__init__.py +2 -1
  25. junifer/utils/helpers.py +30 -2
  26. junifer/utils/logging.py +18 -1
  27. junifer/utils/tests/test_logging.py +8 -0
  28. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/METADATA +1 -1
  29. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/RECORD +34 -32
  30. junifer/datagrabber/utils.py +0 -317
  31. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/AUTHORS.rst +0 -0
  32. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/LICENSE.md +0 -0
  33. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/WHEEL +0 -0
  34. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/entry_points.txt +0 -0
  35. {junifer-0.0.5.dev208.dist-info → junifer-0.0.5.dev240.dist-info}/top_level.txt +0 -0
@@ -5,6 +5,9 @@
5
5
  # License: AGPL
6
6
 
7
7
  from pathlib import Path
8
+ from typing import Dict
9
+
10
+ import pytest
8
11
 
9
12
  from junifer.datareader import DefaultDataReader
10
13
  from junifer.markers.functional_connectivity import EdgeCentricFCSpheres
@@ -12,19 +15,36 @@ from junifer.storage import SQLiteFeatureStorage
12
15
  from junifer.testing.datagrabbers import SPMAuditoryTestingDataGrabber
13
16
 
14
17
 
15
- def test_EdgeCentricFCSpheres(tmp_path: Path) -> None:
18
+ @pytest.mark.parametrize(
19
+ "conn_method_params",
20
+ [
21
+ {"empirical": False},
22
+ {"empirical": True},
23
+ ],
24
+ )
25
+ def test_EdgeCentricFCSpheres(
26
+ tmp_path: Path,
27
+ conn_method_params: Dict[str, bool],
28
+ ) -> None:
16
29
  """Test EdgeCentricFCSpheres.
17
30
 
18
31
  Parameters
19
32
  ----------
20
33
  tmp_path : pathlib.Path
21
34
  The path to the test directory.
35
+ conn_method_params : dict
36
+ The parametrized parameters to connectivity measure method.
22
37
 
23
38
  """
24
39
  with SPMAuditoryTestingDataGrabber() as dg:
40
+ # Get element data
25
41
  element_data = DefaultDataReader().fit_transform(dg["sub001"])
42
+ # Setup marker
26
43
  marker = EdgeCentricFCSpheres(
27
- coords="DMNBuckner", radius=5.0, cor_method="correlation"
44
+ coords="DMNBuckner",
45
+ radius=5.0,
46
+ conn_method="correlation",
47
+ conn_method_params=conn_method_params,
28
48
  )
29
49
  # Check correct output
30
50
  assert "matrix" == marker.get_output_type(
@@ -45,13 +65,6 @@ def test_EdgeCentricFCSpheres(tmp_path: Path) -> None:
45
65
  assert len(set(edge_fc_bold["row_names"])) == n_edges
46
66
  assert len(set(edge_fc_bold["col_names"])) == n_edges
47
67
 
48
- # Check empirical correlation method parameters
49
- marker = EdgeCentricFCSpheres(
50
- coords="DMNBuckner",
51
- radius=5.0,
52
- cor_method="correlation",
53
- cor_method_params={"empirical": True},
54
- )
55
68
  # Store
56
69
  storage = SQLiteFeatureStorage(
57
70
  uri=tmp_path / "test_edge_fc_spheres.sqlite", upsert="ignore"
@@ -6,10 +6,13 @@
6
6
  # License: AGPL
7
7
 
8
8
  from pathlib import Path
9
+ from typing import TYPE_CHECKING, Dict, Type
9
10
 
11
+ import pytest
10
12
  from nilearn.connectome import ConnectivityMeasure
11
13
  from nilearn.maskers import NiftiLabelsMasker
12
14
  from numpy.testing import assert_array_almost_equal
15
+ from sklearn.covariance import EmpiricalCovariance, LedoitWolf
13
16
 
14
17
  from junifer.data import get_parcellation
15
18
  from junifer.datareader import DefaultDataReader
@@ -20,19 +23,42 @@ from junifer.storage import SQLiteFeatureStorage
20
23
  from junifer.testing.datagrabbers import PartlyCloudyTestingDataGrabber
21
24
 
22
25
 
23
- def test_FunctionalConnectivityParcels(tmp_path: Path) -> None:
26
+ if TYPE_CHECKING:
27
+ from sklearn.base import BaseEstimator
28
+
29
+
30
+ @pytest.mark.parametrize(
31
+ "conn_method_params, cov_estimator",
32
+ [
33
+ ({"empirical": False}, LedoitWolf(store_precision=False)),
34
+ ({"empirical": True}, EmpiricalCovariance(store_precision=False)),
35
+ ],
36
+ )
37
+ def test_FunctionalConnectivityParcels(
38
+ tmp_path: Path,
39
+ conn_method_params: Dict[str, bool],
40
+ cov_estimator: Type["BaseEstimator"],
41
+ ) -> None:
24
42
  """Test FunctionalConnectivityParcels.
25
43
 
26
44
  Parameters
27
45
  ----------
28
46
  tmp_path : pathlib.Path
29
47
  The path to the test directory.
48
+ conn_method_params : dict
49
+ The parametrized parameters to connectivity measure method.
50
+ cov_estimator : estimator object
51
+ The parametrized covariance estimator.
30
52
 
31
53
  """
32
54
  with PartlyCloudyTestingDataGrabber() as dg:
55
+ # Get element data
33
56
  element_data = DefaultDataReader().fit_transform(dg["sub-01"])
57
+ # Setup marker
34
58
  marker = FunctionalConnectivityParcels(
35
- parcellation="TianxS1x3TxMNInonlinear2009cAsym"
59
+ parcellation="TianxS1x3TxMNInonlinear2009cAsym",
60
+ conn_method="correlation",
61
+ conn_method_params=conn_method_params,
36
62
  )
37
63
  # Check correct output
38
64
  assert "matrix" == marker.get_output_type(
@@ -65,7 +91,7 @@ def test_FunctionalConnectivityParcels(tmp_path: Path) -> None:
65
91
  )
66
92
  # Compute the connectivity measure
67
93
  connectivity_measure = ConnectivityMeasure(
68
- kind="covariance"
94
+ cov_estimator=cov_estimator, kind="correlation" # type: ignore
69
95
  ).fit_transform([extracted_timeseries])[0]
70
96
 
71
97
  # Check that FC are almost equal
@@ -73,11 +99,6 @@ def test_FunctionalConnectivityParcels(tmp_path: Path) -> None:
73
99
  connectivity_measure, fc_bold["data"], decimal=3
74
100
  )
75
101
 
76
- # Check empirical correlation method parameters
77
- marker = FunctionalConnectivityParcels(
78
- parcellation="TianxS1x3TxMNInonlinear2009cAsym",
79
- cor_method_params={"empirical": True},
80
- )
81
102
  # Store
82
103
  storage = SQLiteFeatureStorage(
83
104
  uri=tmp_path / "test_fc_parcels.sqlite", upsert="ignore"
@@ -7,12 +7,13 @@
7
7
  # License: AGPL
8
8
 
9
9
  from pathlib import Path
10
+ from typing import TYPE_CHECKING, Dict, Type
10
11
 
11
12
  import pytest
12
13
  from nilearn.connectome import ConnectivityMeasure
13
14
  from nilearn.maskers import NiftiSpheresMasker
14
15
  from numpy.testing import assert_array_almost_equal
15
- from sklearn.covariance import EmpiricalCovariance
16
+ from sklearn.covariance import EmpiricalCovariance, LedoitWolf
16
17
 
17
18
  from junifer.data import get_coordinates
18
19
  from junifer.datareader import DefaultDataReader
@@ -23,19 +24,43 @@ from junifer.storage import SQLiteFeatureStorage
23
24
  from junifer.testing.datagrabbers import SPMAuditoryTestingDataGrabber
24
25
 
25
26
 
26
- def test_FunctionalConnectivitySpheres(tmp_path: Path) -> None:
27
+ if TYPE_CHECKING:
28
+ from sklearn.base import BaseEstimator
29
+
30
+
31
+ @pytest.mark.parametrize(
32
+ "conn_method_params, cov_estimator",
33
+ [
34
+ ({"empirical": False}, LedoitWolf(store_precision=False)),
35
+ ({"empirical": True}, EmpiricalCovariance(store_precision=False)),
36
+ ],
37
+ )
38
+ def test_FunctionalConnectivitySpheres(
39
+ tmp_path: Path,
40
+ conn_method_params: Dict[str, bool],
41
+ cov_estimator: Type["BaseEstimator"],
42
+ ) -> None:
27
43
  """Test FunctionalConnectivitySpheres.
28
44
 
29
45
  Parameters
30
46
  ----------
31
47
  tmp_path : pathlib.Path
32
48
  The path to the test directory.
49
+ conn_method_params : dict
50
+ The parametrized parameters to connectivity measure method.
51
+ cov_estimator : estimator object
52
+ The parametrized covariance estimator.
33
53
 
34
54
  """
35
55
  with SPMAuditoryTestingDataGrabber() as dg:
56
+ # Get element data
36
57
  element_data = DefaultDataReader().fit_transform(dg["sub001"])
58
+ # Setup marker
37
59
  marker = FunctionalConnectivitySpheres(
38
- coords="DMNBuckner", radius=5.0, cor_method="correlation"
60
+ coords="DMNBuckner",
61
+ radius=5.0,
62
+ conn_method="correlation",
63
+ conn_method_params=conn_method_params,
39
64
  )
40
65
  # Check correct output
41
66
  assert "matrix" == marker.get_output_type(
@@ -67,7 +92,7 @@ def test_FunctionalConnectivitySpheres(tmp_path: Path) -> None:
67
92
  )
68
93
  # Compute the connectivity measure
69
94
  connectivity_measure = ConnectivityMeasure(
70
- kind="correlation"
95
+ cov_estimator=cov_estimator, kind="correlation" # type: ignore
71
96
  ).fit_transform([extracted_timeseries])[0]
72
97
 
73
98
  # Check that FC are almost equal
@@ -88,65 +113,9 @@ def test_FunctionalConnectivitySpheres(tmp_path: Path) -> None:
88
113
  )
89
114
 
90
115
 
91
- def test_FunctionalConnectivitySpheres_empirical(tmp_path: Path) -> None:
92
- """Test FunctionalConnectivitySpheres with empirical covariance.
93
-
94
- Parameters
95
- ----------
96
- tmp_path : pathlib.Path
97
- The path to the test directory.
98
-
99
- """
100
- with SPMAuditoryTestingDataGrabber() as dg:
101
- element_data = DefaultDataReader().fit_transform(dg["sub001"])
102
- marker = FunctionalConnectivitySpheres(
103
- coords="DMNBuckner",
104
- radius=5.0,
105
- cor_method="correlation",
106
- cor_method_params={"empirical": True},
107
- )
108
- # Check correct output
109
- assert "matrix" == marker.get_output_type(
110
- input_type="BOLD", output_feature="functional_connectivity"
111
- )
112
-
113
- # Fit-transform the data
114
- fc = marker.fit_transform(element_data)
115
- fc_bold = fc["BOLD"]["functional_connectivity"]
116
-
117
- assert "data" in fc_bold
118
- assert "row_names" in fc_bold
119
- assert "col_names" in fc_bold
120
- assert fc_bold["data"].shape == (6, 6)
121
- assert len(set(fc_bold["row_names"])) == 6
122
- assert len(set(fc_bold["col_names"])) == 6
123
-
124
- # Compare with nilearn
125
- # Load testing coordinates for the target data
126
- testing_coords, _ = get_coordinates(
127
- coords="DMNBuckner", target_data=element_data["BOLD"]
128
- )
129
- # Extract timeseries
130
- nifti_spheres_masker = NiftiSpheresMasker(
131
- seeds=testing_coords, radius=5.0
132
- )
133
- extracted_timeseries = nifti_spheres_masker.fit_transform(
134
- element_data["BOLD"]["data"]
135
- )
136
- # Compute the connectivity measure
137
- connectivity_measure = ConnectivityMeasure(
138
- cov_estimator=EmpiricalCovariance(), kind="correlation" # type: ignore
139
- ).fit_transform([extracted_timeseries])[0]
140
-
141
- # Check that FC are almost equal
142
- assert_array_almost_equal(
143
- connectivity_measure, fc_bold["data"], decimal=3
144
- )
145
-
146
-
147
116
  def test_FunctionalConnectivitySpheres_error() -> None:
148
117
  """Test FunctionalConnectivitySpheres errors."""
149
118
  with pytest.raises(ValueError, match="radius should be > 0"):
150
119
  FunctionalConnectivitySpheres(
151
- coords="DMNBuckner", radius=-0.1, cor_method="correlation"
120
+ coords="DMNBuckner", radius=-0.1, conn_method="correlation"
152
121
  )
junifer/utils/__init__.py CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  from .fs import make_executable
8
8
  from .logging import configure_logging, logger, raise_error, warn_with_log
9
- from .helpers import run_ext_cmd
9
+ from .helpers import run_ext_cmd, deep_update
10
10
 
11
11
 
12
12
  __all__ = [
@@ -16,4 +16,5 @@ __all__ = [
16
16
  "raise_error",
17
17
  "warn_with_log",
18
18
  "run_ext_cmd",
19
+ "deep_update",
19
20
  ]
junifer/utils/helpers.py CHANGED
@@ -3,13 +3,14 @@
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
5
5
 
6
+ import collections.abc
6
7
  import subprocess
7
- from typing import List
8
+ from typing import Dict, List
8
9
 
9
10
  from .logging import logger, raise_error
10
11
 
11
12
 
12
- __all__ = ["run_ext_cmd"]
13
+ __all__ = ["run_ext_cmd", "deep_update"]
13
14
 
14
15
 
15
16
  def run_ext_cmd(name: str, cmd: List[str]) -> None:
@@ -54,3 +55,30 @@ def run_ext_cmd(name: str, cmd: List[str]) -> None:
54
55
  ),
55
56
  klass=RuntimeError,
56
57
  )
58
+
59
+
60
+ def deep_update(d: Dict, u: Dict) -> Dict:
61
+ """Deep update `d` with `u`.
62
+
63
+ From: "https://stackoverflow.com/questions/3232943/update-value-of-a-nested
64
+ -dictionary-of-varying-depth"
65
+
66
+ Parameters
67
+ ----------
68
+ d : dict
69
+ The dictionary to deep-update.
70
+ u : dict
71
+ The dictionary to deep-update `d` with.
72
+
73
+ Returns
74
+ -------
75
+ dict
76
+ The updated dictionary.
77
+
78
+ """
79
+ for k, v in u.items():
80
+ if isinstance(v, collections.abc.Mapping):
81
+ d[k] = deep_update(d.get(k, {}), v)
82
+ else:
83
+ d[k] = v
84
+ return d
junifer/utils/logging.py CHANGED
@@ -13,6 +13,7 @@ else: # pragma: no cover
13
13
  from looseversion import LooseVersion
14
14
 
15
15
  import logging
16
+ import warnings
16
17
  from pathlib import Path
17
18
  from subprocess import PIPE, Popen, TimeoutExpired
18
19
  from typing import Dict, NoReturn, Optional, Type, Union
@@ -44,6 +45,23 @@ _logging_types = {
44
45
  }
45
46
 
46
47
 
48
+ # Copied over from stdlib and tweaked to our use-case.
49
+ def _showwarning(message, category, filename, lineno, file=None, line=None):
50
+ s = warnings.formatwarning(message, category, filename, lineno, line)
51
+ logger.warning(str(s))
52
+
53
+
54
+ # Overwrite warnings display to integrate with logging
55
+
56
+
57
+ def capture_warnings():
58
+ """Capture warnings and log them."""
59
+ warnings.showwarning = _showwarning
60
+
61
+
62
+ capture_warnings()
63
+
64
+
47
65
  class WrapStdOut(logging.StreamHandler):
48
66
  """Dynamically wrap to sys.stdout.
49
67
 
@@ -325,5 +343,4 @@ def warn_with_log(
325
343
  The warning subclass (default RuntimeWarning).
326
344
 
327
345
  """
328
- logger.warning(msg)
329
346
  warn(msg, category=category, stacklevel=2)
@@ -145,8 +145,16 @@ def test_log_file(tmp_path: Path) -> None:
145
145
  assert any("Warn3 message" in line for line in lines)
146
146
  assert any("Error3 message" in line for line in lines)
147
147
 
148
+ # This should raise a warning (test that it was raised)
148
149
  with pytest.warns(RuntimeWarning, match=r"Warn raised"):
149
150
  warn_with_log("Warn raised")
151
+
152
+ # This should log the warning (workaround for pytest messing with logging)
153
+ from junifer.utils.logging import capture_warnings
154
+
155
+ capture_warnings()
156
+
157
+ warn_with_log("Warn raised 2")
150
158
  with pytest.raises(ValueError, match=r"Error raised"):
151
159
  raise_error("Error raised")
152
160
  with open(tmp_path / "test4.log") as f:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.5.dev208
3
+ Version: 0.0.5.dev240
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>
@@ -1,5 +1,5 @@
1
1
  junifer/__init__.py,sha256=-T9XmiCCL0j3YLx-0Pph15sPfL5FlcBDscajjJ-V4sU,604
2
- junifer/_version.py,sha256=kedBS_xvcCpCkX8kxPSz2iA8XWihtXq5SiXQfLsn4PU,428
2
+ junifer/_version.py,sha256=6Q_MQ6ezLFpUtQxuhNlj5d2DOuMMDGQedZzC1lzNGWw,428
3
3
  junifer/stats.py,sha256=BjQb2lfTGDP9l4UuQYmJFcJJNRfbJDGlNvC06SJaDDE,6237
4
4
  junifer/api/__init__.py,sha256=lwyIF0hPc7fICuSoddJfay0LPqlTRxHJ_xbtizgFYZA,312
5
5
  junifer/api/cli.py,sha256=53pews3mXkJ7DUDSkV51PbitYnuVAdQRkWG-gjO08Uw,16142
@@ -90,14 +90,14 @@ junifer/data/tests/test_data_utils.py,sha256=_DaiC8K79gs9HFHxr-udNeE2YTM6JA0-1i-
90
90
  junifer/data/tests/test_masks.py,sha256=pL42xTzrvy0qLCqpG5p5CdCCqjJ9n5nz7BCUofydfag,15723
91
91
  junifer/data/tests/test_parcellations.py,sha256=ZEU1VHIK0AyxpclcJhG_0rQU0phaBU_dHP7Erfi3mN8,38222
92
92
  junifer/data/tests/test_template_spaces.py,sha256=PJulN7xHpAcSOTY-UzTG_WPywZEBSlAZGiNG4gzk1_8,3144
93
- junifer/datagrabber/__init__.py,sha256=uR31UhuNwNZ0i9m3oo8RZtHUyMbnG2sd1i9aLa6aG_o,967
94
- junifer/datagrabber/base.py,sha256=qVEeWtnnl95owug9gBCmhfG6km3402o0k5VH4QsPt8A,6335
93
+ junifer/datagrabber/__init__.py,sha256=kYvlrRS6f64fwntAuyk_fL2c_vyw9m9mZpMWpm_cxEM,1058
94
+ junifer/datagrabber/base.py,sha256=fFPIt6p3SdZ6vzReGQxK2qJnQzh8HTwBe87A2WYArVI,6538
95
95
  junifer/datagrabber/datalad_base.py,sha256=6B7XMIMFlBw3uixDnfoaH4gBU9EzJIO5gwmc0iHniRo,11044
96
96
  junifer/datagrabber/dmcc13_benchmark.py,sha256=se9F6QVw9WX22MNld33OQv_BtdW-yPvXXu6kYykxLNw,12225
97
- junifer/datagrabber/multiple.py,sha256=p_rq99kKtHNr1sAl0GJ4RJ5Ss-uUKMsJVHrdWGi1XB8,4959
98
- junifer/datagrabber/pattern.py,sha256=pGiYlczva76JRxtsCY7Xuok5wPCGcXWHNZMCXNGUJ_k,16013
97
+ junifer/datagrabber/multiple.py,sha256=IjBcFN-KegIad9bwopsfAQ9b_WRRUHmCbKRX2gmus0Q,6487
98
+ junifer/datagrabber/pattern.py,sha256=iSubnHOJjYck1Zhk_JAYRZjRPKYmfoO81tG1zowd3B4,17039
99
99
  junifer/datagrabber/pattern_datalad.py,sha256=QPWXIToYHDU4mvm9lz_hy8BjdqqoCXiGiJKCcATrT-w,4568
100
- junifer/datagrabber/utils.py,sha256=XoS2B8Gg0YTR7HaJR9GpPFr0drZOn8p1HO7al735mO0,9975
100
+ junifer/datagrabber/pattern_validation_mixin.py,sha256=SSnTdUA7elaTh9HF7syvW-lTBS1VgdSkyOJiw5mT2Vw,13469
101
101
  junifer/datagrabber/aomic/__init__.py,sha256=lRezU9dyIEoL4tJYglMX01P-F5_hrnZrJxuaQxF_z2w,358
102
102
  junifer/datagrabber/aomic/id1000.py,sha256=wJpZiSZrsfil5w-506bOtKMWm3FllnbB8-cMvGDPiLM,7219
103
103
  junifer/datagrabber/aomic/piop1.py,sha256=AcjIueSUmhepuIfmbMEpocV7grUbJ2xKXG94O1dq2FA,9637
@@ -107,15 +107,15 @@ junifer/datagrabber/aomic/tests/test_piop1.py,sha256=J9ei2HLzdJPciysWjRo33cbZsqP
107
107
  junifer/datagrabber/aomic/tests/test_piop2.py,sha256=Bk23KvRse4clMTuC88YntSfJnJyTunafC79Y1OJwJI0,4166
108
108
  junifer/datagrabber/hcp1200/__init__.py,sha256=yKINewhzkPRcqVpBd6DG02jrs3qLsUbUsi93YJZOUIk,231
109
109
  junifer/datagrabber/hcp1200/datalad_hcp1200.py,sha256=hngQYLv4b8tC9Ep2X5A5R_L2sFM3ZJ8dmWTr_OlRLAA,2463
110
- junifer/datagrabber/hcp1200/hcp1200.py,sha256=xgIU-WZXrEvI7we2RX3sqKowKz1NxtdjtHM6g5RcPzQ,6115
110
+ junifer/datagrabber/hcp1200/hcp1200.py,sha256=AfVPd44CdyMcrUTOfps2PSpTQrXde68QeZaLGkXUTn4,6116
111
111
  junifer/datagrabber/hcp1200/tests/test_hcp1200.py,sha256=KJ-Jq01l0a6TaboG898qjBdPTHG1E3PZtHCjJ7n-1X0,10765
112
112
  junifer/datagrabber/tests/test_base.py,sha256=fZdVhNhvfht9lpTHrAUf5E6mAfNNUP7OTQ5KLaBQ1gI,3506
113
- junifer/datagrabber/tests/test_datagrabber_utils.py,sha256=x1nqFiHI9xHBQFwXji0DPUG8crVoEzw6zmi3pKdhJQk,6513
114
113
  junifer/datagrabber/tests/test_datalad_base.py,sha256=71erxpAECuy8iLtkmq_SRqfP4sKQf4uEb3O8CThBHT0,16285
115
114
  junifer/datagrabber/tests/test_dmcc13_benchmark.py,sha256=DcqkDXXBoabHFVbxekGR2NZyGeugGlxpOwXIwy38Ofg,9109
116
- junifer/datagrabber/tests/test_multiple.py,sha256=Mx3xfDrQiWG2W5MW24P5L2XiSeALpJ2-jFlzWkKtu9w,5659
115
+ junifer/datagrabber/tests/test_multiple.py,sha256=gdekgSHyRx_EtcMNQpJsGEyo56xSxH5-XSQRQ5P2zt4,8288
117
116
  junifer/datagrabber/tests/test_pattern.py,sha256=H55jYRPfT3rMsoIQOAnWJgw3nGrkU7m2xFa3-ed6NQE,9527
118
117
  junifer/datagrabber/tests/test_pattern_datalad.py,sha256=5lA4hkYNaIAVy3GjcVqBXj1d-3qd8-14Pv0z6QGqgtI,6483
118
+ junifer/datagrabber/tests/test_pattern_validation_mixin.py,sha256=4diiRduuqMxOZpfWBoe-O9AhDPYb7DLQU8-JaWAfTrg,7494
119
119
  junifer/datareader/__init__.py,sha256=9TXyHpy5o-yfs-q8QHGfjUCcWdORp7qv_jrokAOPBP8,293
120
120
  junifer/datareader/default.py,sha256=peNQTYHx9x3ZqGjm2Uj5yCLlsJ6X86r0f2XiUgnpw1M,6745
121
121
  junifer/datareader/tests/test_default_reader.py,sha256=9dPZSkba1YQjFsA0XwdUbx5sq8DVIEZoy_WfMAcvRus,5220
@@ -133,8 +133,10 @@ junifer/external/h5io/h5io/_h5io.py,sha256=8dWZDYegoPcBkH_fHPdl0eXNWTaRdk9hfIQo8
133
133
  junifer/external/h5io/h5io/_version.py,sha256=mFY0GwwuN-a3M8w93_mskS6GZIvv9SNdjLfJaWNsm-I,22
134
134
  junifer/external/h5io/h5io/chunked_array.py,sha256=K1HWf7R2Jc7gCzBqAoBjx0ZnMmUhTe3iAO6RF6PdUO4,3338
135
135
  junifer/external/h5io/h5io/chunked_list.py,sha256=1Y5BbuWzurJlEFQzJNuDdC3fNZ39ENEMba99X_4VeSM,1952
136
- junifer/external/nilearn/__init__.py,sha256=Cx9SM-AHU2OmyC5n6YmRv2JMEYp3qoVnxl5bk4XYWjc,222
136
+ junifer/external/nilearn/__init__.py,sha256=UdUKYArx3hvcziln89iaSGZcNGwHvsmbB4E5gS1zvOs,321
137
+ junifer/external/nilearn/junifer_connectivity_measure.py,sha256=y6MSWz_7YjRNfahLiS8_ptmEBoSBqhj6J9E0p7cN1Jw,16847
137
138
  junifer/external/nilearn/junifer_nifti_spheres_masker.py,sha256=DbSK2hKrgpHZ_vCRLbVv3YJpLZNkEAG0HFfQQpG6zdU,16546
139
+ junifer/external/nilearn/tests/test_junifer_connectivity_measure.py,sha256=cwm-RMSHLS6GF-z2ioSNln3N9WoSrLf41mGvyYYMd7w,33918
138
140
  junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py,sha256=zpvBYIvaNjUj9fIUg5K78LRzJqbyMYlUo2UQYS9_lo4,12275
139
141
  junifer/markers/__init__.py,sha256=u4BFgS_3GXAwFN2HfqdAhlBkyenLw4IYlMlwXwnjkVQ,1235
140
142
  junifer/markers/base.py,sha256=__Z0owDdjTwb7alQneOeoaUqaeCVbHwFRnaRZERi37M,8364
@@ -170,18 +172,18 @@ junifer/markers/falff/falff_spheres.py,sha256=h-A2B8D2KvnvLzBcBeB6Kt3EcXhcfvvIMv
170
172
  junifer/markers/falff/tests/test_falff_parcels.py,sha256=Z3n1i8dkYbdXgouUjfIif9yLv5MubBEdrtAA-a6kRcc,4349
171
173
  junifer/markers/falff/tests/test_falff_spheres.py,sha256=-VLEvFaF8CMCN_7FLYCSfP7MMjy-gm1Zgu13je5Pku8,4373
172
174
  junifer/markers/functional_connectivity/__init__.py,sha256=j7HshYNBjSbjXXM8h_PBKORk--Gb3qw-MSEm0i3XgTI,672
173
- junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py,sha256=cwq2LzS1z2aHfPOHjFbNQM5KAqmdrBZrfpYNt3PMWhI,5266
174
- junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=GyNMVhwIEAR5qebRaKcV7aiRvgBexZvKhNqmCYX76Oc,4548
175
- junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=FU1GM2Lu6SNK3dmsiWLLvawuYWU1xxYMS7uIbVvXwd4,5157
176
- junifer/markers/functional_connectivity/functional_connectivity_base.py,sha256=XCfq4AabQt0vUpF4rxHtmm_bpKhZ3p-rBibm8RvUTes,5151
177
- junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=O_v5XsdXTadSKy_T6MIrpEeTtvHU6qprZ2qV6E4ypNg,3973
178
- junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=haiTBkye0gCg2Mvcc_lYxGk9ZC4xeDrappQuiHODEpk,4673
179
- junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py,sha256=_cBlWwlgubG-HRcdc7leudNKOk9rDMWaf-KecxiZ6Ec,3252
180
- junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py,sha256=Ck0Hu3G9xvELshPrlE-ClaY2taK7rWMF74bpzDXNdpM,2130
181
- junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py,sha256=iU_KCv4y7k02xFnHKfqmq1omTzc83aUHqgw89IdS5ms,2335
175
+ junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py,sha256=V2-WbUOGoCtW32A0VOWO-2G-iBiG5mV88Z2EvTjS3HY,5696
176
+ junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=nAvTT4ZLqW-uDAQ_r5hT__TbxFTqTkjm4BJ-1YD7a7s,4745
177
+ junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=atV7iNjnFbIKbzBkzFYtgF0cbetESvv3a5R-SLzrt6Y,5412
178
+ junifer/markers/functional_connectivity/functional_connectivity_base.py,sha256=dUv-pfgAhkHuz_zSKClEYeOkcIdhjdJ1fiNvvWhATDg,5639
179
+ junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=pefRn1EhYegN1KCs1VvMOe4vj4KO-5kSzXJxoUzHSvw,4213
180
+ junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=-N-OO3vl1Djl1nSTJAey_Re3BH2tpyr4UpXfR38ogWw,4946
181
+ junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py,sha256=CP8ZZoTciMoI9c-VVsLF9mJivyzPB6C4mZE0tlL52pI,3231
182
+ junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py,sha256=y0O-eBjOzUp77g6o_II7D5KB2rKtDz_a_hez-MPDU3M,2482
183
+ junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py,sha256=NYWe8kdSVVXlluLm074koDE6xw_t0bhPn47kRYMg1vA,2522
182
184
  junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py,sha256=RmPTrG0uLKb5RgdHXUnH6lon60FxN1JCtr-dsTBaX28,522
183
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py,sha256=ORnuc_PKYNCiVN-m1ubtxJ6Xg484i2BDU9_PPX-BJW0,3234
184
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=PYdebNfwU4ArkpjmxehlLbMF5I_meRMla3yR0CN_4mE,5330
185
+ junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py,sha256=GiRtQ-cbbmM4_oekGjIDtFaNkmYON_eSf3F4jzS0XCo,3876
186
+ junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=Bu2vicoxET-eHYqmfiPtYmFOhBCjBsXO7vv9UzLdYJQ,4143
185
187
  junifer/markers/reho/__init__.py,sha256=_6WkTQcg0ksZguSQGi1XuoMKuGwYs5tvDLVZ1h6xB5E,232
186
188
  junifer/markers/reho/_afni_reho.py,sha256=iaZFPJbyB9-QQAZ5-kKxwN0APB5MH85pOAChq-JFLNI,6469
187
189
  junifer/markers/reho/_junifer_reho.py,sha256=7-jD28YQQWb3dfT6SxyYfGugFSq8wi7_2hUA-ryiGAo,9307
@@ -257,17 +259,17 @@ junifer/testing/tests/test_spmauditory_datagrabber.py,sha256=1G1emk-Ze59HiNLaYsy
257
259
  junifer/testing/tests/test_testing_registry.py,sha256=oerticBaPRaRZm3yANzInLac0Mqph3Y0aZPQFayu7xA,827
258
260
  junifer/tests/test_main.py,sha256=GMff7jlisGM9_FsiUwWDte43j-KQJGFRYZpwRRqTkd8,373
259
261
  junifer/tests/test_stats.py,sha256=3vPMgYYpWxk8ECDFOMm3-dFBlh4XxjL83SwRBSBAHok,4155
260
- junifer/utils/__init__.py,sha256=V1-1FKPhACiS2nUr8TTgQFq7irEnp2an5YdIU3Zz7RY,439
262
+ junifer/utils/__init__.py,sha256=F_I7WXtZMrBGGNLN09LvzBRwWKopL2k1z0UgCZvpwj0,471
261
263
  junifer/utils/fs.py,sha256=M3CKBLh4gPS6s9giyopgb1hHMXzLb6k3cung2wHVBjs,492
262
- junifer/utils/helpers.py,sha256=uEdZ3wCgvbWwp1v0DdxIbaV8qORmNSoJIaWmb9haKh0,1366
263
- junifer/utils/logging.py,sha256=T9gzk7l1O-dmRiZJHggVDkQGzup_P2_FV3xsaoq0BmI,9369
264
+ junifer/utils/helpers.py,sha256=D17zdq1y92fOc-5nwnhaXfgbk8o5yHocLSct9E05YUk,1996
265
+ junifer/utils/logging.py,sha256=ardaiJkDfZMYvak5UIL5Etxg5Ii7inmVQSBdFLdgtb8,9781
264
266
  junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
265
267
  junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
266
- junifer/utils/tests/test_logging.py,sha256=l8oo-AiBV7H6_IzlsNcj__cLeZBUvgIGoaMszD9VaJg,7754
267
- junifer-0.0.5.dev208.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
268
- junifer-0.0.5.dev208.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
269
- junifer-0.0.5.dev208.dist-info/METADATA,sha256=ey1tbudrcwsCfs7GNLwwk_mkcZ62rFXKhNkIpu-XiOY,8280
270
- junifer-0.0.5.dev208.dist-info/WHEEL,sha256=-oYQCr74JF3a37z2nRlQays_SX2MqOANoqVjBBAP2yE,91
271
- junifer-0.0.5.dev208.dist-info/entry_points.txt,sha256=DxFvKq0pOqRunAK0FxwJcoDfV1-dZvsFDpD5HRqSDhw,48
272
- junifer-0.0.5.dev208.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
273
- junifer-0.0.5.dev208.dist-info/RECORD,,
268
+ junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
269
+ junifer-0.0.5.dev240.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
270
+ junifer-0.0.5.dev240.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
271
+ junifer-0.0.5.dev240.dist-info/METADATA,sha256=TrOQ7QMrM1aoEKacXjdZDCOaa-tFrKJDFQCjYsBswqI,8280
272
+ junifer-0.0.5.dev240.dist-info/WHEEL,sha256=-oYQCr74JF3a37z2nRlQays_SX2MqOANoqVjBBAP2yE,91
273
+ junifer-0.0.5.dev240.dist-info/entry_points.txt,sha256=DxFvKq0pOqRunAK0FxwJcoDfV1-dZvsFDpD5HRqSDhw,48
274
+ junifer-0.0.5.dev240.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
275
+ junifer-0.0.5.dev240.dist-info/RECORD,,