junifer 0.0.2.dev138__py3-none-any.whl → 0.0.2.dev140__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 +2 -2
- junifer/data/masks.py +102 -30
- junifer/data/tests/test_masks.py +166 -8
- junifer/datagrabber/aomic/id1000.py +33 -1
- junifer/datagrabber/aomic/piop1.py +14 -0
- junifer/datagrabber/aomic/piop2.py +35 -1
- junifer/datagrabber/aomic/tests/test_id1000.py +6 -0
- junifer/datagrabber/aomic/tests/test_piop1.py +6 -0
- junifer/datagrabber/aomic/tests/test_piop2.py +6 -1
- junifer/markers/ets_rss.py +8 -8
- junifer/markers/falff/falff_parcels.py +7 -7
- junifer/markers/falff/falff_spheres.py +8 -8
- junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +8 -8
- junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +7 -7
- junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +8 -8
- junifer/markers/functional_connectivity/functional_connectivity_base.py +7 -7
- junifer/markers/functional_connectivity/functional_connectivity_parcels.py +7 -7
- junifer/markers/functional_connectivity/functional_connectivity_spheres.py +8 -8
- junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +4 -2
- junifer/markers/parcel_aggregation.py +11 -9
- junifer/markers/reho/reho_parcels.py +8 -8
- junifer/markers/reho/reho_spheres.py +8 -8
- junifer/markers/sphere_aggregation.py +11 -9
- junifer/markers/tests/test_collection.py +8 -6
- junifer/markers/tests/test_marker_utils.py +2 -1
- junifer/markers/tests/test_parcel_aggregation.py +2 -2
- junifer/markers/tests/test_sphere_aggregation.py +1 -1
- junifer/markers/utils.py +10 -10
- junifer/preprocess/base.py +11 -1
- junifer/preprocess/confounds/fmriprep_confound_remover.py +31 -24
- junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +59 -3
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/METADATA +1 -1
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/RECORD +38 -38
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/AUTHORS.rst +0 -0
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/LICENSE.md +0 -0
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/WHEEL +0 -0
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/entry_points.txt +0 -0
- {junifer-0.0.2.dev138.dist-info → junifer-0.0.2.dev140.dist-info}/top_level.txt +0 -0
@@ -39,7 +39,7 @@ def test_marker_collection_incorrect_markers() -> None:
|
|
39
39
|
),
|
40
40
|
]
|
41
41
|
with pytest.raises(ValueError, match=r"must have different names"):
|
42
|
-
MarkerCollection(wrong_markers)
|
42
|
+
MarkerCollection(wrong_markers) # type: ignore
|
43
43
|
|
44
44
|
|
45
45
|
def test_marker_collection() -> None:
|
@@ -62,7 +62,7 @@ def test_marker_collection() -> None:
|
|
62
62
|
name="gmd_schaefer100x7_trim_mean90",
|
63
63
|
),
|
64
64
|
]
|
65
|
-
mc = MarkerCollection(markers=markers)
|
65
|
+
mc = MarkerCollection(markers=markers) # type: ignore
|
66
66
|
assert mc._markers == markers
|
67
67
|
assert mc._preprocessing is None
|
68
68
|
assert mc._storage is None
|
@@ -96,7 +96,7 @@ def test_marker_collection() -> None:
|
|
96
96
|
return input
|
97
97
|
|
98
98
|
mc2 = MarkerCollection(
|
99
|
-
markers=markers,
|
99
|
+
markers=markers, # type: ignore
|
100
100
|
preprocessing=BypassPreprocessing(),
|
101
101
|
datareader=DefaultDataReader(),
|
102
102
|
)
|
@@ -127,7 +127,7 @@ def test_marker_collection_with_preprocessing() -> None:
|
|
127
127
|
),
|
128
128
|
]
|
129
129
|
mc = MarkerCollection(
|
130
|
-
markers=markers,
|
130
|
+
markers=markers, # type: ignore
|
131
131
|
preprocessing=fMRIPrepConfoundRemover(),
|
132
132
|
)
|
133
133
|
assert mc._markers == markers
|
@@ -173,7 +173,7 @@ def test_marker_collection_storage(tmp_path: Path) -> None:
|
|
173
173
|
uri = tmp_path / "test_marker_collection_storage.sqlite"
|
174
174
|
storage = SQLiteFeatureStorage(uri=uri)
|
175
175
|
mc = MarkerCollection(
|
176
|
-
markers=markers,
|
176
|
+
markers=markers, # type: ignore
|
177
177
|
storage=storage,
|
178
178
|
datareader=DefaultDataReader(),
|
179
179
|
)
|
@@ -185,7 +185,9 @@ def test_marker_collection_storage(tmp_path: Path) -> None:
|
|
185
185
|
out = mc.fit(input)
|
186
186
|
assert out is None
|
187
187
|
|
188
|
-
mc2 = MarkerCollection(
|
188
|
+
mc2 = MarkerCollection(
|
189
|
+
markers=markers, datareader=DefaultDataReader() # type: ignore
|
190
|
+
)
|
189
191
|
mc2.validate(dg)
|
190
192
|
assert mc2._storage is None
|
191
193
|
|
@@ -27,13 +27,14 @@ def test_ets() -> None:
|
|
27
27
|
n_edges = int(n_rois * (n_rois - 1) / 2)
|
28
28
|
|
29
29
|
# test without labels
|
30
|
-
edge_ts = _ets(bold_ts)
|
30
|
+
edge_ts, _ = _ets(bold_ts)
|
31
31
|
assert edge_ts.shape == (n_time, n_edges)
|
32
32
|
|
33
33
|
# test with labels
|
34
34
|
roi_labels = [f"Label_{x}" for x in range(n_rois)]
|
35
35
|
edge_ts, edge_labels = _ets(bold_ts, roi_labels)
|
36
36
|
assert edge_ts.shape == (n_time, n_edges)
|
37
|
+
assert edge_labels is not None
|
37
38
|
assert len(edge_labels) == n_edges
|
38
39
|
|
39
40
|
|
@@ -229,7 +229,7 @@ def test_ParcelAggregation_3D_mask() -> None:
|
|
229
229
|
marker = ParcelAggregation(
|
230
230
|
parcellation="Schaefer100x7",
|
231
231
|
method="mean",
|
232
|
-
|
232
|
+
masks="GM_prob0.2",
|
233
233
|
name="gmd_schaefer100x7_mean",
|
234
234
|
on="VBM_GM",
|
235
235
|
) # Test passing "on" as a keyword argument
|
@@ -274,7 +274,7 @@ def test_ParcelAggregation_3D_mask_computed() -> None:
|
|
274
274
|
marker = ParcelAggregation(
|
275
275
|
parcellation="Schaefer100x7",
|
276
276
|
method="mean",
|
277
|
-
|
277
|
+
masks={"compute_brain_mask": {"threshold": 0.2}},
|
278
278
|
name="gmd_schaefer100x7_mean",
|
279
279
|
on="VBM_GM",
|
280
280
|
) # Test passing "on" as a keyword argument
|
@@ -159,7 +159,7 @@ def test_SphereAggregation_3D_mask() -> None:
|
|
159
159
|
method="mean",
|
160
160
|
radius=RADIUS,
|
161
161
|
on="VBM_GM",
|
162
|
-
|
162
|
+
masks="GM_prob0.2",
|
163
163
|
)
|
164
164
|
input = {"VBM_GM": {"data": img, "meta": {}}}
|
165
165
|
jun_values4d = marker.fit_transform(input)["VBM_GM"]["data"]
|
junifer/markers/utils.py
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
# Federico Raimondo <f.raimondo@fz-juelich.de>
|
8
8
|
# License: AGPL
|
9
9
|
|
10
|
-
from typing import Any, Callable, Dict, List, Type, Union
|
10
|
+
from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union
|
11
11
|
|
12
12
|
import numpy as np
|
13
13
|
import pandas as pd
|
@@ -56,8 +56,9 @@ def singleton(cls: Type) -> Type:
|
|
56
56
|
|
57
57
|
|
58
58
|
def _ets(
|
59
|
-
bold_ts: np.ndarray,
|
60
|
-
|
59
|
+
bold_ts: np.ndarray,
|
60
|
+
roi_names: Union[None, List[str]] = None,
|
61
|
+
) -> Tuple[np.ndarray, Optional[List[str]]]:
|
61
62
|
"""Compute the edge-wise time series based on BOLD time series.
|
62
63
|
|
63
64
|
Take a timeseries of brain areas, and calculate timeseries for each
|
@@ -80,9 +81,8 @@ def _ets(
|
|
80
81
|
edge-wise time series, i.e. estimate of functional connectivity at each
|
81
82
|
time point.
|
82
83
|
edge_names : List[str]
|
83
|
-
List of edge names corresponding to columns in the
|
84
|
-
|
85
|
-
are specified.
|
84
|
+
List of edge names corresponding to columns in the edge-wise time
|
85
|
+
series. If roi_names are not specified, this is None.
|
86
86
|
|
87
87
|
References
|
88
88
|
----------
|
@@ -102,18 +102,18 @@ def _ets(
|
|
102
102
|
ets = timeseries[:, u] * timeseries[:, v]
|
103
103
|
# Obtain the corresponding edge labels if specified else return
|
104
104
|
if roi_names is None:
|
105
|
-
return ets
|
105
|
+
return ets, None
|
106
106
|
else:
|
107
107
|
if len(roi_names) != n_roi:
|
108
108
|
raise_error(
|
109
109
|
"List of roi names does not correspond "
|
110
110
|
"to the number of ROIs in the timeseries!"
|
111
111
|
)
|
112
|
-
|
112
|
+
_roi_names = np.array(roi_names)
|
113
113
|
edge_names = [
|
114
|
-
"~".join([x, y]) for x, y in zip(
|
114
|
+
"~".join([x, y]) for x, y in zip(_roi_names[u], _roi_names[v])
|
115
115
|
]
|
116
|
-
return ets,
|
116
|
+
return ets, edge_names
|
117
117
|
|
118
118
|
|
119
119
|
def _correlate_dataframes(
|
junifer/preprocess/base.py
CHANGED
@@ -115,12 +115,22 @@ class BasePreprocessor(ABC, PipelineStepMixin, UpdateMetaMixin):
|
|
115
115
|
if type_ in input.keys():
|
116
116
|
logger.info(f"Computing {type_}")
|
117
117
|
t_input = input[type_]
|
118
|
-
|
118
|
+
|
119
|
+
# Pass the other data types as extra input, removing
|
120
|
+
# the current type
|
121
|
+
extra_input = input
|
119
122
|
extra_input.pop(type_)
|
120
123
|
key, t_out = self.preprocess(
|
121
124
|
input=t_input, extra_input=extra_input
|
122
125
|
)
|
126
|
+
|
127
|
+
# Add the output to the Junifer Data object
|
123
128
|
out[key] = t_out
|
129
|
+
|
130
|
+
# In case we are creating a new type, re-add the original input
|
131
|
+
if key != type_:
|
132
|
+
out[type_] = t_input
|
133
|
+
|
124
134
|
self.update_meta(out[key], "preprocess")
|
125
135
|
return out
|
126
136
|
|
@@ -11,9 +11,9 @@ import numpy as np
|
|
11
11
|
import pandas as pd
|
12
12
|
from nilearn._utils.niimg_conversions import check_niimg_4d
|
13
13
|
from nilearn.image import clean_img
|
14
|
-
from nilearn.masking import compute_brain_mask
|
15
14
|
|
16
15
|
from ...api.decorators import register_preprocessor
|
16
|
+
from ...data import get_mask
|
17
17
|
from ...utils import logger, raise_error
|
18
18
|
from ..base import BasePreprocessor
|
19
19
|
|
@@ -134,11 +134,10 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
134
134
|
t_r : float, optional
|
135
135
|
Repetition time, in second (sampling period).
|
136
136
|
If None, it will use t_r from nifti header (default None).
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
If not
|
141
|
-
:func:`nilearn.masking.compute_brain_mask` (default None).
|
137
|
+
masks : str, dict or list of dict or str, optional
|
138
|
+
The specification of the masks to apply to regions before extracting
|
139
|
+
signals. Check :ref:`Using Masks <using_masks>` for more details.
|
140
|
+
If None, will not apply any mask (default None).
|
142
141
|
|
143
142
|
"""
|
144
143
|
|
@@ -153,7 +152,7 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
153
152
|
low_pass: Optional[float] = None,
|
154
153
|
high_pass: Optional[float] = None,
|
155
154
|
t_r: Optional[float] = None,
|
156
|
-
|
155
|
+
masks: Union[str, Dict, List[Union[Dict, str]], None] = None,
|
157
156
|
) -> None:
|
158
157
|
"""Initialise the class."""
|
159
158
|
if strategy is None:
|
@@ -169,7 +168,7 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
169
168
|
self.low_pass = low_pass
|
170
169
|
self.high_pass = high_pass
|
171
170
|
self.t_r = t_r
|
172
|
-
self.
|
171
|
+
self.masks = masks
|
173
172
|
|
174
173
|
self._valid_components = ["motion", "wm_csf", "global_signal"]
|
175
174
|
self._valid_confounds = ["basic", "power2", "derivatives", "full"]
|
@@ -521,19 +520,20 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
521
520
|
raise ValueError(f"Invalid confounds format {t_format}")
|
522
521
|
|
523
522
|
def _remove_confounds(
|
524
|
-
self,
|
523
|
+
self,
|
524
|
+
input: Dict[str, Any],
|
525
|
+
extra_input: Optional[Dict[str, Any]] = None,
|
525
526
|
) -> Union["Nifti1Image", "Nifti2Image", "MGHImage", List]:
|
526
527
|
"""Remove confounds from the BOLD image.
|
527
528
|
|
528
529
|
Parameters
|
529
530
|
----------
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
correspond to number of volumes in the BOLD image.
|
531
|
+
input : dict
|
532
|
+
Dictionary containing the ``BOLD`` value from the
|
533
|
+
Junifer Data object.
|
534
|
+
extra_input : dict, optional
|
535
|
+
Dictionary containing the rest of the Junifer Data object. Must
|
536
|
+
include the ``BOLD_confounds`` key.
|
537
537
|
|
538
538
|
Returns
|
539
539
|
--------
|
@@ -541,8 +541,11 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
541
541
|
Input image with confounds removed.
|
542
542
|
|
543
543
|
"""
|
544
|
+
assert extra_input is not None # Not the case, data is validated
|
545
|
+
confounds_df = self._pick_confounds(extra_input["BOLD_confounds"])
|
544
546
|
confounds_array = confounds_df.values
|
545
547
|
|
548
|
+
bold_img = input["data"]
|
546
549
|
t_r = self.t_r
|
547
550
|
if t_r is None:
|
548
551
|
logger.info("No `t_r` specified, using t_r from nifti header")
|
@@ -552,10 +555,17 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
552
555
|
f"Read t_r from nifti header: {t_r}",
|
553
556
|
)
|
554
557
|
|
555
|
-
mask_img =
|
556
|
-
if
|
557
|
-
logger.
|
558
|
-
mask_img =
|
558
|
+
mask_img = None
|
559
|
+
if self.masks is not None:
|
560
|
+
logger.debug(f"Masking with {self.masks}")
|
561
|
+
mask_img = get_mask(
|
562
|
+
masks=self.masks, target_data=input, extra_input=extra_input
|
563
|
+
)
|
564
|
+
# Save the mask in the extra input and link it to the bold data
|
565
|
+
# this allows to use "inherit" down the pipeline
|
566
|
+
if extra_input is not None:
|
567
|
+
extra_input["BOLD_mask"] = {"data": mask_img}
|
568
|
+
input["mask_item"] = "BOLD_mask"
|
559
569
|
|
560
570
|
logger.info("Cleaning image")
|
561
571
|
logger.debug(f"\tdetrend: {self.detrend}")
|
@@ -600,8 +610,5 @@ class fMRIPrepConfoundRemover(BasePreprocessor):
|
|
600
610
|
|
601
611
|
"""
|
602
612
|
self._validate_data(input, extra_input)
|
603
|
-
|
604
|
-
bold_img = input["data"]
|
605
|
-
confounds_df = self._pick_confounds(extra_input["BOLD_confounds"])
|
606
|
-
input["data"] = self._remove_confounds(bold_img, confounds_df)
|
613
|
+
input["data"] = self._remove_confounds(input, extra_input=extra_input)
|
607
614
|
return "BOLD", input
|
@@ -452,10 +452,10 @@ def test_fMRIPrepConfoundRemover__remove_confounds() -> None:
|
|
452
452
|
with PartlyCloudyTestingDataGrabber(reduce_confounds=False) as dg:
|
453
453
|
input = dg["sub-01"]
|
454
454
|
input = reader.fit_transform(input)
|
455
|
-
confounds = confound_remover._pick_confounds(input["BOLD_confounds"])
|
456
455
|
raw_bold = input["BOLD"]["data"]
|
456
|
+
extra_input = {k: v for k, v in input.items() if k != "BOLD"}
|
457
457
|
clean_bold = confound_remover._remove_confounds(
|
458
|
-
|
458
|
+
input=input["BOLD"], extra_input=extra_input
|
459
459
|
)
|
460
460
|
clean_bold = typing.cast(nib.Nifti1Image, clean_bold)
|
461
461
|
# TODO: Find a better way to test functionality here
|
@@ -533,7 +533,63 @@ def test_fMRIPrepConfoundRemover_fit_transform() -> None:
|
|
533
533
|
assert t_meta["low_pass"] is None
|
534
534
|
assert t_meta["high_pass"] is None
|
535
535
|
assert t_meta["t_r"] is None
|
536
|
-
assert t_meta["
|
536
|
+
assert t_meta["masks"] is None
|
537
|
+
|
538
|
+
assert "dependencies" in output["BOLD"]["meta"]
|
539
|
+
dependencies = output["BOLD"]["meta"]["dependencies"]
|
540
|
+
assert dependencies == {"numpy", "nilearn"}
|
541
|
+
|
542
|
+
|
543
|
+
def test_fMRIPrepConfoundRemover_fit_transform_masks() -> None:
|
544
|
+
"""Test fMRIPrepConfoundRemover with all confounds present."""
|
545
|
+
|
546
|
+
# need reader for the data
|
547
|
+
reader = DefaultDataReader()
|
548
|
+
# All strategies full, no spike
|
549
|
+
confound_remover = fMRIPrepConfoundRemover(
|
550
|
+
masks={"compute_brain_mask": {"threshold": 0.2}}
|
551
|
+
)
|
552
|
+
|
553
|
+
with PartlyCloudyTestingDataGrabber(reduce_confounds=False) as dg:
|
554
|
+
input = dg["sub-01"]
|
555
|
+
input = reader.fit_transform(input)
|
556
|
+
orig_bold = input["BOLD"]["data"].get_fdata().copy()
|
557
|
+
output = confound_remover.fit_transform(input)
|
558
|
+
trans_bold = output["BOLD"]["data"].get_fdata()
|
559
|
+
# Transformation is in place
|
560
|
+
assert_array_equal(trans_bold, input["BOLD"]["data"].get_fdata())
|
561
|
+
|
562
|
+
# Data should have the same shape
|
563
|
+
assert orig_bold.shape == trans_bold.shape
|
564
|
+
|
565
|
+
# but be different
|
566
|
+
assert_raises(
|
567
|
+
AssertionError, assert_array_equal, orig_bold, trans_bold
|
568
|
+
)
|
569
|
+
|
570
|
+
assert "meta" in output["BOLD"]
|
571
|
+
assert "preprocess" in output["BOLD"]["meta"]
|
572
|
+
t_meta = output["BOLD"]["meta"]["preprocess"]
|
573
|
+
assert t_meta["class"] == "fMRIPrepConfoundRemover"
|
574
|
+
# It should have all the default parameters
|
575
|
+
assert t_meta["strategy"] == confound_remover.strategy
|
576
|
+
assert t_meta["spike"] is None
|
577
|
+
assert t_meta["detrend"] is True
|
578
|
+
assert t_meta["standardize"] is True
|
579
|
+
assert t_meta["low_pass"] is None
|
580
|
+
assert t_meta["high_pass"] is None
|
581
|
+
assert t_meta["t_r"] is None
|
582
|
+
assert isinstance(t_meta["masks"], dict)
|
583
|
+
assert t_meta["masks"] is not None
|
584
|
+
assert len(t_meta["masks"]) == 1
|
585
|
+
assert "compute_brain_mask" in t_meta["masks"]
|
586
|
+
assert len(t_meta["masks"]["compute_brain_mask"]) == 1
|
587
|
+
assert "threshold" in t_meta["masks"]["compute_brain_mask"]
|
588
|
+
assert t_meta["masks"]["compute_brain_mask"]["threshold"] == 0.2
|
589
|
+
|
590
|
+
assert "BOLD_mask" in output
|
591
|
+
assert "mask_item" in output["BOLD"]
|
592
|
+
assert output["BOLD"]["mask_item"] == "BOLD_mask"
|
537
593
|
|
538
594
|
assert "dependencies" in output["BOLD"]["meta"]
|
539
595
|
dependencies = output["BOLD"]["meta"]["dependencies"]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.2.
|
3
|
+
Version: 0.0.2.dev140
|
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=rJgTGeR-SOntQoLSGo36zKDTE8IMRBn2-YwC0JSNUpU,377
|
2
|
-
junifer/_version.py,sha256=
|
2
|
+
junifer/_version.py,sha256=HvZxramN6g_D--rQIkn39dXpmFhOcuXTkrv5rcfxKgs,177
|
3
3
|
junifer/stats.py,sha256=3Yt9xD51S0S922T8R6hElO7itvf-Sz41P_SwPzR9KIg,3523
|
4
4
|
junifer/api/__init__.py,sha256=YILu9M7SC0Ri4CVd90fELH2OnK_gvCYAXCoqBNCFE8E,257
|
5
5
|
junifer/api/cli.py,sha256=WiMF7c3SJuRi_rxxBaaTb7YCQOpfebvhAOh-cKDV8sM,8993
|
@@ -35,7 +35,7 @@ junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py,sha256=V2vk6Y2RP4sLZ
|
|
35
35
|
junifer/configs/tests/test_juseless.py,sha256=J_Ujtbttb3dLy5phkNLNuTPZy2xXejRhl_7SGIjV91Q,876
|
36
36
|
junifer/data/__init__.py,sha256=mqayvhnk3oVzAzJyFhw8QGKIZY0GGGIXPzQHJkOkMQ0,482
|
37
37
|
junifer/data/coordinates.py,sha256=kezVbrHDfa_LGjMWg9BM6Izl3Rr9pajQhDoakO4lQ6A,4686
|
38
|
-
junifer/data/masks.py,sha256=
|
38
|
+
junifer/data/masks.py,sha256=8C33Z84mDzB27bemDSYff9Job2rNHJNsaCJQIRqmZIg,11273
|
39
39
|
junifer/data/parcellations.py,sha256=fzOPlKaD-F4Du1723vFn0qZ3ZNlCPpBUOiyzvEIqtWs,24404
|
40
40
|
junifer/data/utils.py,sha256=K9quLIoWRmm2QFM8Rdy_5bYsWb_XhL0l5Uq_1Sie0kA,1274
|
41
41
|
junifer/data/VOIs/meta/CogAC_VOIs.txt,sha256=PJr-gShA19NA8rV_pcWDEwrTl35H_95qQNXdIeQotLU,397
|
@@ -60,7 +60,7 @@ junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.
|
|
60
60
|
junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz,sha256=jfMe_4H9XEnArYms5bSQbqS2V1_HbLHTfI5amQa_Pes,8700
|
61
61
|
junifer/data/tests/test_coordinates.py,sha256=RCYOuaAjs2wqPeFHX-l9Bryt5Zw5mOIV0WpsH891RwA,3240
|
62
62
|
junifer/data/tests/test_data_utils.py,sha256=Vy7x8zaHws5hmn92PKSv3H38hU2kamOpyaH6nG_NNpw,1086
|
63
|
-
junifer/data/tests/test_masks.py,sha256=
|
63
|
+
junifer/data/tests/test_masks.py,sha256=hekRQNhbLqCMSYmO5NISdYdWwdsbHOowOxmbgrBG76c,13266
|
64
64
|
junifer/data/tests/test_parcellations.py,sha256=2UAnQw2NZNHzrZ6wcPplZH6y8mf6yuNuAlg6RmJAi0U,17123
|
65
65
|
junifer/datagrabber/__init__.py,sha256=US44K6DeCFWnF7TJzNt_CD5c7q9XaAF5NLS0llyGibQ,579
|
66
66
|
junifer/datagrabber/base.py,sha256=RS9jNUPgzjUoOQUEwqVQDr6yOkaBDtQpbHXbiu0eRjs,4638
|
@@ -71,12 +71,12 @@ junifer/datagrabber/pattern.py,sha256=OjPqz6VM22bVTeWra1DEzDBe0jL1NMTqu8jHTWGCWy
|
|
71
71
|
junifer/datagrabber/pattern_datalad.py,sha256=9_HDjChlqb4RLxaC3zrB5EO5fdKT43iroEDvDIk0xVI,1628
|
72
72
|
junifer/datagrabber/utils.py,sha256=x2NG076T_jTiDLpl6lXy7-_RUVuPwSmygf3FZcOdK6k,2769
|
73
73
|
junifer/datagrabber/aomic/__init__.py,sha256=e2PiVk95yR99Wzy6MBnNmUCAyuQcg9jzbfrA3Frm5fQ,295
|
74
|
-
junifer/datagrabber/aomic/id1000.py,sha256=
|
75
|
-
junifer/datagrabber/aomic/piop1.py,sha256=
|
76
|
-
junifer/datagrabber/aomic/piop2.py,sha256=
|
77
|
-
junifer/datagrabber/aomic/tests/test_id1000.py,sha256
|
78
|
-
junifer/datagrabber/aomic/tests/test_piop1.py,sha256=
|
79
|
-
junifer/datagrabber/aomic/tests/test_piop2.py,sha256=
|
74
|
+
junifer/datagrabber/aomic/id1000.py,sha256=X_hs8Y0qP1CO7YXQM3g0KIGJiFQjFfexuGN0acypYLM,3944
|
75
|
+
junifer/datagrabber/aomic/piop1.py,sha256=wd8-WlDG7KJRCUmZ7ORABxc8iFLMMedSfc6wYBAn9CI,5698
|
76
|
+
junifer/datagrabber/aomic/piop2.py,sha256=hBOVvBsBSyeS9dPp7xSIhQFIqFl69y7wifjfkz5cypM,5303
|
77
|
+
junifer/datagrabber/aomic/tests/test_id1000.py,sha256=-QCMDylQgGM0Re_EYHilnT4NrOVtyQ2AASPCpMXy0vk,3523
|
78
|
+
junifer/datagrabber/aomic/tests/test_piop1.py,sha256=Aw9oRs_H-hnUyr6-w5CPf85yOVneAAx_T_XcAIVCy9I,4576
|
79
|
+
junifer/datagrabber/aomic/tests/test_piop2.py,sha256=sCJXdc3-HG5rTkurdNJfTRgEzjnX8dlW1b7DrMnVryg,4351
|
80
80
|
junifer/datagrabber/tests/test_base.py,sha256=gzyVbat1e9BE82zbcxEp22eR1yD7rFabQVO_0M2hELg,1994
|
81
81
|
junifer/datagrabber/tests/test_datagrabber_utils.py,sha256=Y7g08B8neHiB4HMHDhBxMXDNOmXsQ4fTMalhoA0iLFA,2745
|
82
82
|
junifer/datagrabber/tests/test_datalad_base.py,sha256=HeWVdXybfvsVfzQfZxC7wYD6gWTXz2dNCAbZ5thl01E,14683
|
@@ -94,45 +94,45 @@ junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py,sha256=ll0Qo
|
|
94
94
|
junifer/markers/__init__.py,sha256=K35ML9FHYV2V79P4X098YB1ZOfDcnRfZrAZHvVuBg90,769
|
95
95
|
junifer/markers/base.py,sha256=PnBMhq3_NJxSr0ige1fuqxbHM3C7cMXSt9_C0KkAZlU,5877
|
96
96
|
junifer/markers/collection.py,sha256=AvtaGj08WEhV2oREzD9xG7vQFqs5AFsgCuNbkZkUAfM,4585
|
97
|
-
junifer/markers/ets_rss.py,sha256=
|
98
|
-
junifer/markers/parcel_aggregation.py,sha256=
|
99
|
-
junifer/markers/sphere_aggregation.py,sha256=
|
100
|
-
junifer/markers/utils.py,sha256=
|
97
|
+
junifer/markers/ets_rss.py,sha256=brN2FfB5yYwRpm7sfZQh-9wf-GKZm3NiKUYpzdGs5WA,4504
|
98
|
+
junifer/markers/parcel_aggregation.py,sha256=QgqTd42xKE_Fj0g-Nsfv2QLlNFBxrBByEgofxSV2giU,8049
|
99
|
+
junifer/markers/sphere_aggregation.py,sha256=TxO4pbQCWz2Nx1omUu0RU2Ml62BNJTcwHPeYtQxXKLw,5431
|
100
|
+
junifer/markers/utils.py,sha256=0F-6FI80IsKxcyVOAKh3xHho-wshzrB9hDfVOgHYsxk,4608
|
101
101
|
junifer/markers/falff/__init__.py,sha256=TFVPjdJ7hIkjIqIf9zwI3Ee0T1hDvhikHBnwv8DqtFA,253
|
102
102
|
junifer/markers/falff/falff_base.py,sha256=BdyuUR0xB7bZJfYb3SCVD-KEUTwA_xt_kuaBzUdVQhs,5577
|
103
103
|
junifer/markers/falff/falff_estimator.py,sha256=4aaMsDf_HZkQ7KjZAcu0yJvdffb2IIpgAMHD3qU8THQ,10376
|
104
|
-
junifer/markers/falff/falff_parcels.py,sha256=
|
105
|
-
junifer/markers/falff/falff_spheres.py,sha256=
|
104
|
+
junifer/markers/falff/falff_parcels.py,sha256=Wyjt_p2UsSZ-2OXBpFv6hvrRkVcDJMix4VLhpQo-GXk,4566
|
105
|
+
junifer/markers/falff/falff_spheres.py,sha256=O0AF5PRxfrDVKXla1hqog6aYHu1GUr9GMmvdBEx1HjA,4813
|
106
106
|
junifer/markers/falff/tests/test_falff_estimator.py,sha256=7UVMFgyxVrWwlh7voKIcgYadcaRxmeuAn0QaN4tTsJs,7706
|
107
107
|
junifer/markers/falff/tests/test_falff_parcels.py,sha256=qI_KaS1YPYd-LdhkKhWgLj5yQjqUva7GHsgyPgpdiFY,4844
|
108
108
|
junifer/markers/falff/tests/test_falff_spheres.py,sha256=QoMyCq9DNCCz0hO1RGl2nJFOEforZv87m6nHqukZ8_Q,4929
|
109
109
|
junifer/markers/functional_connectivity/__init__.py,sha256=Uq8aXpHJesedJNHEixpc4bn7VvYZMhf710jyiX45XlE,499
|
110
|
-
junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py,sha256=
|
111
|
-
junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=
|
112
|
-
junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=
|
113
|
-
junifer/markers/functional_connectivity/functional_connectivity_base.py,sha256=
|
114
|
-
junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=
|
115
|
-
junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=
|
110
|
+
junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py,sha256=JN1GezdwR5yQgfsmJ0_jM92QVLecmGR1ihljIm9NLYE,5129
|
111
|
+
junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py,sha256=Hrtq08UDnCxUcSMJrmXVfOjnfzxZOrLSwffd5FsHRqM,3357
|
112
|
+
junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py,sha256=9hWv8_zd74E5nPtoBapwraWV6fIjOAYUiT9Ktd8XBmA,3710
|
113
|
+
junifer/markers/functional_connectivity/functional_connectivity_base.py,sha256=iFuAf5vnFgScIiIavILNMpTiJVkTLk1iw6byt2MNsWQ,5067
|
114
|
+
junifer/markers/functional_connectivity/functional_connectivity_parcels.py,sha256=_KcmqDgr3snjrbFuvtg8b3hts9bRgdW0-gvJxYgVW40,3050
|
115
|
+
junifer/markers/functional_connectivity/functional_connectivity_spheres.py,sha256=dcdRK2MhxiNMSf9ZisgV9GUE8dDwfk-oH9pXCIY7LK8,3448
|
116
116
|
junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py,sha256=-CkCWwSbApt6d3DCEC2OhTLXyyySFyYXeWcO4te-z4k,2872
|
117
117
|
junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py,sha256=Ir9vZPNU5PoqfzVfy1Mfs5us-juuCegzMO0os2PWVfE,1945
|
118
118
|
junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py,sha256=8cjs8BlfjUgzHuu1uODKWtd__Dp81teHEw02ZAqvgBE,2293
|
119
|
-
junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py,sha256=
|
119
|
+
junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py,sha256=RmPTrG0uLKb5RgdHXUnH6lon60FxN1JCtr-dsTBaX28,522
|
120
120
|
junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py,sha256=KmbhscwDxk_HbH2MKAXpiRnvj1KFVJZTb2snqcn9a9c,3118
|
121
121
|
junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=zsiGsZp0Oy7qZOhNjoMafVBST69ET1q7WWITVaaQirc,4170
|
122
122
|
junifer/markers/reho/__init__.py,sha256=9IfeAxKEVgMWbhud-8T54Le07I4pR6A29sMKeFtvEPg,189
|
123
123
|
junifer/markers/reho/reho_base.py,sha256=z7qFl8x-_NUPYQR7i_3zTH2uA2ImE-Ayn3FMfTVadn8,3619
|
124
124
|
junifer/markers/reho/reho_estimator.py,sha256=Ycn__Ir327P4_r1oBJ_d_WXICENHcJxqg1ponUx_r3w,17376
|
125
|
-
junifer/markers/reho/reho_parcels.py,sha256=
|
126
|
-
junifer/markers/reho/reho_spheres.py,sha256=
|
125
|
+
junifer/markers/reho/reho_parcels.py,sha256=eewXe2ApcvI4UnZ1JJZ2hBWM8au1fYwvYHCyOvn_onQ,5651
|
126
|
+
junifer/markers/reho/reho_spheres.py,sha256=modxKp6ys_z-GzYszKjwTxsQ9U2md-kvUo1QTZJYtUA,5880
|
127
127
|
junifer/markers/reho/tests/test_reho_estimator.py,sha256=Cp8N2FapKQjDxU0Wy-3h6vRHdXAo6CKik84ODzgSQ_U,9100
|
128
128
|
junifer/markers/reho/tests/test_reho_parcels.py,sha256=5wDT0u5skCScVuQFeJGq9WJeRTh6h1AB87oS4ejh8nI,4243
|
129
129
|
junifer/markers/reho/tests/test_reho_spheres.py,sha256=o77NIkynWcsUJ07BES3S2NDdUNiYOECMgAwTnvmgkmw,4251
|
130
|
-
junifer/markers/tests/test_collection.py,sha256=
|
130
|
+
junifer/markers/tests/test_collection.py,sha256=R1GlTdxeiVa7-6emQtxWHrrka74UCVUfpyAGUuvXXLk,6850
|
131
131
|
junifer/markers/tests/test_ets_rss.py,sha256=xc70Q_9W8e0tIZ5XG_JYbZ8qO8eB0NQ1NFn5UCSY-hw,2619
|
132
|
-
junifer/markers/tests/test_marker_utils.py,sha256=
|
132
|
+
junifer/markers/tests/test_marker_utils.py,sha256=SR3ADWI3uGv4ozYqVu-rMZnJVqP6JnjLBgo6qUm16Wk,1478
|
133
133
|
junifer/markers/tests/test_markers_base.py,sha256=afn7SRjpb8uNOa6N4_-31JOm4uUl6j4vDb0cYOzkbmo,2196
|
134
|
-
junifer/markers/tests/test_parcel_aggregation.py,sha256=
|
135
|
-
junifer/markers/tests/test_sphere_aggregation.py,sha256=
|
134
|
+
junifer/markers/tests/test_parcel_aggregation.py,sha256=vgWOX07qi-gsWXfCJFtSvJI07FIsEHXpKXqeK-oTje4,15599
|
135
|
+
junifer/markers/tests/test_sphere_aggregation.py,sha256=Ot7-0pas4JpK6XwA1bDDrnB7bo7vKh7hE-hZVAZZobs,5442
|
136
136
|
junifer/pipeline/__init__.py,sha256=gOOrLf_C3oe9RdmLLjKMhs2gqtrr5Tzfi_cyTFEp8HM,238
|
137
137
|
junifer/pipeline/pipeline_step_mixin.py,sha256=kwqLKmYcdmrAmTHnxImW32O3oMpNSOmJxxVIuUrwyMw,4842
|
138
138
|
junifer/pipeline/registry.py,sha256=KavghqdJiCRBF4FYw3NkpL2RegpCfLH2fAY3AWwisaI,3595
|
@@ -142,10 +142,10 @@ junifer/pipeline/tests/test_pipeline_step_mixin.py,sha256=lthbb53HUObOBUnvO6mMta
|
|
142
142
|
junifer/pipeline/tests/test_registry.py,sha256=XrBx2UaYwoZpjTTc1MWyEb8BD476TFH3JCn6-PPjypk,3864
|
143
143
|
junifer/pipeline/tests/test_update_meta_mixin.py,sha256=C9cDTZB-9CN4zYLeSHLSo0dpWrB8o1fj0jlWpcP9Wsc,1374
|
144
144
|
junifer/preprocess/__init__.py,sha256=GPbiTHFhb9BzUOSgmo_SpgTFNMmkcCJPhQoUA2MQgJI,255
|
145
|
-
junifer/preprocess/base.py,sha256=
|
145
|
+
junifer/preprocess/base.py,sha256=VI5hO0VKQW5J2ddpPJpAgqXHfDeoXaQzhbV17TS_gSM,5008
|
146
146
|
junifer/preprocess/confounds/__init__.py,sha256=EDlcD9jy8O9xluJr6XOnFXtjGCDVqwg6sDIRDMbM8ZU,235
|
147
|
-
junifer/preprocess/confounds/fmriprep_confound_remover.py,sha256=
|
148
|
-
junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py,sha256=
|
147
|
+
junifer/preprocess/confounds/fmriprep_confound_remover.py,sha256=1z7R2ESYcHO2GPn95pa5PUBMEnVExT4__P2k8IM6vNY,21584
|
148
|
+
junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py,sha256=AsQHcCrm98n-BO3MevvmZcVzLbRn5e3YDta9JCJlvtQ,21614
|
149
149
|
junifer/preprocess/tests/test_preprocess_base.py,sha256=oWokM9bBx4MYXuN6onKsncOsP17_1Y5EOS2fUX4JT5Y,2559
|
150
150
|
junifer/storage/__init__.py,sha256=voc6EDpLAZocPVa0VL2NCEWCZU66IBrFmdStesm3uk8,300
|
151
151
|
junifer/storage/base.py,sha256=tpPmqkDcMmH-M2fpj-rhVAOuOzM2tOG6XdPZGDb8N_k,8771
|
@@ -172,10 +172,10 @@ junifer/utils/fs.py,sha256=Jd9AoV2fIF7pT7KhXsn8T1O1fJ1_SFZgaFuOBAM7DG8,460
|
|
172
172
|
junifer/utils/logging.py,sha256=F2C6y5cNAb3OCVmBdiD8YW_tAknc8EeX_SgKewxcCEA,8852
|
173
173
|
junifer/utils/tests/test_fs.py,sha256=o7XTk6OpafppxE4Kx_pDaUfYRt_bU_e1M86FTl5TPVk,862
|
174
174
|
junifer/utils/tests/test_logging.py,sha256=uTzlwwlOv7bh_7DngitVFxCDbH_OWsqfeXEcNyKvF24,7748
|
175
|
-
junifer-0.0.2.
|
176
|
-
junifer-0.0.2.
|
177
|
-
junifer-0.0.2.
|
178
|
-
junifer-0.0.2.
|
179
|
-
junifer-0.0.2.
|
180
|
-
junifer-0.0.2.
|
181
|
-
junifer-0.0.2.
|
175
|
+
junifer-0.0.2.dev140.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
|
176
|
+
junifer-0.0.2.dev140.dist-info/LICENSE.md,sha256=z5aMVBrc-9kk0pxaOdOAkI62S5YhYMiF6ADsMtZmOZg,34353
|
177
|
+
junifer-0.0.2.dev140.dist-info/METADATA,sha256=fmFDkC4Bep5p-M_2Om4eDnyOmYbfuw9bW8S9KwjFFPo,5656
|
178
|
+
junifer-0.0.2.dev140.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
179
|
+
junifer-0.0.2.dev140.dist-info/entry_points.txt,sha256=DxFvKq0pOqRunAK0FxwJcoDfV1-dZvsFDpD5HRqSDhw,48
|
180
|
+
junifer-0.0.2.dev140.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
|
181
|
+
junifer-0.0.2.dev140.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|