junifer 0.0.6.dev358__py3-none-any.whl → 0.0.6.dev371__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/_masks.py +64 -22
- junifer/data/parcellations/_parcellations.py +18 -22
- junifer/data/template_spaces.py +22 -4
- junifer/markers/reho/tests/test_reho_parcels.py +0 -4
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/METADATA +1 -1
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/RECORD +12 -12
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/AUTHORS.rst +0 -0
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/LICENSE.md +0 -0
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/WHEEL +0 -0
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/entry_points.txt +0 -0
- {junifer-0.0.6.dev358.dist-info → junifer-0.0.6.dev371.dist-info}/top_level.txt +0 -0
junifer/_version.py
CHANGED
@@ -12,5 +12,5 @@ __version__: str
|
|
12
12
|
__version_tuple__: VERSION_TUPLE
|
13
13
|
version_tuple: VERSION_TUPLE
|
14
14
|
|
15
|
-
__version__ = version = '0.0.6.
|
16
|
-
__version_tuple__ = version_tuple = (0, 0, 6, '
|
15
|
+
__version__ = version = '0.0.6.dev371'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 6, 'dev371')
|
junifer/data/masks/_masks.py
CHANGED
@@ -14,8 +14,8 @@ from typing import (
|
|
14
14
|
)
|
15
15
|
|
16
16
|
import nibabel as nib
|
17
|
+
import nilearn.image as nimg
|
17
18
|
import numpy as np
|
18
|
-
from nilearn.image import get_data, new_img_like, resample_to_img
|
19
19
|
from nilearn.masking import (
|
20
20
|
compute_background_mask,
|
21
21
|
compute_epi_mask,
|
@@ -48,6 +48,7 @@ def compute_brain_mask(
|
|
48
48
|
mask_type: str = "brain",
|
49
49
|
threshold: float = 0.5,
|
50
50
|
source: str = "template",
|
51
|
+
template_space: Optional[str] = None,
|
51
52
|
extra_input: Optional[dict[str, Any]] = None,
|
52
53
|
) -> "Nifti1Image":
|
53
54
|
"""Compute the whole-brain, grey-matter or white-matter mask.
|
@@ -78,6 +79,9 @@ def compute_brain_mask(
|
|
78
79
|
The source of the mask. If "subject", the mask is computed from the
|
79
80
|
subject's data (``VBM_GM`` or ``VBM_WM``). If "template", the mask is
|
80
81
|
computed from the template data (default "template").
|
82
|
+
template_space : str, optional
|
83
|
+
The space of the template. If not provided, the space is inferred from
|
84
|
+
the ``target_data`` (default None).
|
81
85
|
extra_input : dict, optional
|
82
86
|
The other fields in the data object. Useful for accessing other data
|
83
87
|
types (default None).
|
@@ -93,6 +97,7 @@ def compute_brain_mask(
|
|
93
97
|
If ``mask_type`` is invalid or
|
94
98
|
if ``source`` is invalid or
|
95
99
|
if ``source="subject"`` and ``mask_type`` is invalid or
|
100
|
+
if ``template_space`` is provided when ``source="subject"`` or
|
96
101
|
if ``warp_data`` is None when ``target_data``'s space is native or
|
97
102
|
if ``extra_input`` is None when ``source="subject"`` or
|
98
103
|
if ``VBM_GM`` or ``VBM_WM`` data types are not in ``extra_input``
|
@@ -111,6 +116,9 @@ def compute_brain_mask(
|
|
111
116
|
if source == "subject" and mask_type not in ["gm", "wm"]:
|
112
117
|
raise_error(f"Unknown mask type: {mask_type} for subject space")
|
113
118
|
|
119
|
+
if source == "subject" and template_space is not None:
|
120
|
+
raise_error("Cannot provide `template_space` when source is `subject`")
|
121
|
+
|
114
122
|
# Check pre-requirements for space manipulation
|
115
123
|
if target_data["space"] == "native":
|
116
124
|
# Warp data check
|
@@ -138,15 +146,40 @@ def compute_brain_mask(
|
|
138
146
|
)
|
139
147
|
template = extra_input[key]["data"]
|
140
148
|
template_space = extra_input[key]["space"]
|
149
|
+
logger.debug(f"Using {key} in {template_space} for mask computation.")
|
141
150
|
else:
|
151
|
+
template_resolution = None
|
152
|
+
if template_space is None:
|
153
|
+
template_space = target_std_space
|
154
|
+
elif template_space != target_std_space:
|
155
|
+
# We re going to warp, so get the highest resolution
|
156
|
+
template_resolution = "highest"
|
157
|
+
|
142
158
|
# Fetch template in closest resolution
|
143
159
|
template = get_template(
|
144
|
-
space=
|
160
|
+
space=template_space,
|
145
161
|
target_img=target_data["data"],
|
146
162
|
extra_input=None,
|
147
163
|
template_type=mask_type,
|
164
|
+
resolution=template_resolution,
|
148
165
|
)
|
149
|
-
|
166
|
+
|
167
|
+
mask_name = f"template_{target_std_space}_for_compute_brain_mask"
|
168
|
+
|
169
|
+
# Warp template to correct space (MNI to MNI)
|
170
|
+
if template_space != "native" and template_space != target_std_space:
|
171
|
+
logger.debug(
|
172
|
+
f"Warping template to {target_std_space} space using ANTs."
|
173
|
+
)
|
174
|
+
template = ANTsMaskWarper().warp(
|
175
|
+
mask_name=mask_name,
|
176
|
+
mask_img=template,
|
177
|
+
src=template_space,
|
178
|
+
dst=target_std_space,
|
179
|
+
target_data=target_data,
|
180
|
+
warp_data=None,
|
181
|
+
)
|
182
|
+
|
150
183
|
# Resample and warp template if target space is native
|
151
184
|
if target_data["space"] == "native" and template_space != "native":
|
152
185
|
if warp_data["warper"] == "fsl":
|
@@ -168,14 +201,16 @@ def compute_brain_mask(
|
|
168
201
|
)
|
169
202
|
# Resample template to target image
|
170
203
|
else:
|
171
|
-
|
204
|
+
# Resample template to target image
|
205
|
+
resampled_template = nimg.resample_to_img(
|
172
206
|
source_img=template, target_img=target_data["data"]
|
173
207
|
)
|
174
208
|
|
175
209
|
# Threshold resampled template and get mask
|
176
|
-
|
177
|
-
|
178
|
-
|
210
|
+
logger.debug("Thresholding template to get mask.")
|
211
|
+
mask = (nimg.get_data(resampled_template) >= threshold).astype("int8")
|
212
|
+
logger.debug("Mask computation from brain template complete.")
|
213
|
+
return nimg.new_img_like(target_data["data"], mask) # type: ignore
|
179
214
|
|
180
215
|
|
181
216
|
class MaskRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
@@ -523,7 +558,7 @@ class MaskRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
|
523
558
|
)
|
524
559
|
logger.debug("Resampling inherited mask to target image.")
|
525
560
|
# Resample inherited mask to target image
|
526
|
-
mask_img = resample_to_img(
|
561
|
+
mask_img = nimg.resample_to_img(
|
527
562
|
source_img=mask_img,
|
528
563
|
target_img=target_data["data"],
|
529
564
|
)
|
@@ -568,34 +603,41 @@ class MaskRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
|
568
603
|
"mask."
|
569
604
|
)
|
570
605
|
|
606
|
+
# Set here to simplify things later
|
607
|
+
mask_img: nib.nifti1.Nifti1Image = mask_object
|
608
|
+
|
571
609
|
# Resample and warp mask to standard space
|
572
610
|
if mask_space != target_std_space:
|
573
611
|
logger.debug(
|
574
612
|
f"Warping {t_mask} to {target_std_space} space "
|
575
|
-
"using
|
613
|
+
"using ANTs."
|
576
614
|
)
|
577
615
|
mask_img = ANTsMaskWarper().warp(
|
578
616
|
mask_name=mask_name,
|
579
|
-
mask_img=
|
617
|
+
mask_img=mask_img,
|
580
618
|
src=mask_space,
|
581
619
|
dst=target_std_space,
|
582
620
|
target_data=target_data,
|
583
621
|
warp_data=warper_spec,
|
584
622
|
)
|
623
|
+
# Remove extra dimension added by ANTs
|
624
|
+
mask_img = nimg.math_img(
|
625
|
+
"np.squeeze(img)", img=mask_img
|
626
|
+
)
|
585
627
|
|
586
|
-
|
587
|
-
#
|
628
|
+
if target_space != "native":
|
629
|
+
# No warping is going to happen, just resampling,
|
630
|
+
# because we are in the correct space
|
588
631
|
logger.debug(f"Resampling {t_mask} to target image.")
|
589
|
-
|
590
|
-
mask_img
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
#
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
if target_space == "native":
|
632
|
+
mask_img = nimg.resample_to_img(
|
633
|
+
source_img=mask_img,
|
634
|
+
target_img=target_img,
|
635
|
+
)
|
636
|
+
else:
|
637
|
+
# Warp mask if target space is native as
|
638
|
+
# either the image is in the right non-native space or
|
639
|
+
# it's warped from one non-native space to another
|
640
|
+
# non-native space
|
599
641
|
logger.debug(
|
600
642
|
"Warping mask to native space using "
|
601
643
|
f"{warper_spec['warper']}."
|
@@ -16,9 +16,10 @@ from typing import TYPE_CHECKING, Any, Optional, Union
|
|
16
16
|
|
17
17
|
import httpx
|
18
18
|
import nibabel as nib
|
19
|
+
import nilearn.image as nimg
|
19
20
|
import numpy as np
|
20
21
|
import pandas as pd
|
21
|
-
from nilearn import datasets
|
22
|
+
from nilearn import datasets
|
22
23
|
|
23
24
|
from ...utils import logger, raise_error, warn_with_log
|
24
25
|
from ...utils.singleton import Singleton
|
@@ -470,28 +471,23 @@ class ParcellationRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
|
470
471
|
warp_data=None,
|
471
472
|
)
|
472
473
|
# Remove extra dimension added by ANTs
|
473
|
-
img =
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
474
|
+
img = nimg.math_img("np.squeeze(img)", img=raw_img)
|
475
|
+
|
476
|
+
if target_space != "native":
|
477
|
+
# No warping is going to happen, just resampling, because
|
478
|
+
# we are in the correct space
|
479
|
+
logger.debug(f"Resampling {name} to target image.")
|
480
|
+
# Resample parcellation to target image
|
481
|
+
img = nimg.resample_to_img(
|
482
|
+
source_img=img,
|
483
|
+
target_img=target_img,
|
478
484
|
interpolation="nearest",
|
485
|
+
copy=True,
|
479
486
|
)
|
480
487
|
else:
|
481
|
-
if
|
482
|
-
|
483
|
-
|
484
|
-
logger.debug(f"Resampling {name} to target image.")
|
485
|
-
# Resample parcellation to target image
|
486
|
-
img = image.resample_to_img(
|
487
|
-
source_img=img,
|
488
|
-
target_img=target_img,
|
489
|
-
interpolation="nearest",
|
490
|
-
copy=True,
|
491
|
-
)
|
492
|
-
|
493
|
-
# Warp parcellation if target space is native
|
494
|
-
if target_space == "native":
|
488
|
+
# Warp parcellation if target space is native as either
|
489
|
+
# the image is in the right non-native space or it's
|
490
|
+
# warped from one non-native space to another non-native space
|
495
491
|
logger.debug(
|
496
492
|
"Warping parcellation to native space using "
|
497
493
|
f"{warper_spec['warper']}."
|
@@ -1807,7 +1803,7 @@ def merge_parcellations(
|
|
1807
1803
|
"The parcellations have different resolutions!"
|
1808
1804
|
"Resampling all parcellations to the first one in the list."
|
1809
1805
|
)
|
1810
|
-
t_parc =
|
1806
|
+
t_parc = nimg.resample_to_img(
|
1811
1807
|
t_parc, ref_parc, interpolation="nearest", copy=True
|
1812
1808
|
)
|
1813
1809
|
|
@@ -1833,6 +1829,6 @@ def merge_parcellations(
|
|
1833
1829
|
"parcellation that was first in the list."
|
1834
1830
|
)
|
1835
1831
|
|
1836
|
-
parcellation_img_res =
|
1832
|
+
parcellation_img_res = nimg.new_img_like(parcellations_list[0], parc_data)
|
1837
1833
|
|
1838
1834
|
return parcellation_img_res, labels
|
junifer/data/template_spaces.py
CHANGED
@@ -125,6 +125,7 @@ def get_template(
|
|
125
125
|
target_img: nib.Nifti1Image,
|
126
126
|
extra_input: Optional[dict[str, Any]] = None,
|
127
127
|
template_type: str = "T1w",
|
128
|
+
resolution: Optional[Union[int, "str"]] = None,
|
128
129
|
) -> nib.Nifti1Image:
|
129
130
|
"""Get template for the space, tailored for the target image.
|
130
131
|
|
@@ -140,6 +141,10 @@ def get_template(
|
|
140
141
|
types (default None).
|
141
142
|
template_type : {"T1w", "brain", "gm", "wm", "csf"}, optional
|
142
143
|
The template type to retrieve (default "T1w").
|
144
|
+
resolution : int or "highest", optional
|
145
|
+
The resolution of the template to fetch. If None, the closest
|
146
|
+
resolution to the target image is used (default None). If "highest",
|
147
|
+
the highest resolution is used.
|
143
148
|
|
144
149
|
Returns
|
145
150
|
-------
|
@@ -149,7 +154,8 @@ def get_template(
|
|
149
154
|
Raises
|
150
155
|
------
|
151
156
|
ValueError
|
152
|
-
If ``space`` or ``template_type`` is invalid
|
157
|
+
If ``space`` or ``template_type`` is invalid or
|
158
|
+
if ``resolution`` is not at int or "highest".
|
153
159
|
RuntimeError
|
154
160
|
If required template is not found.
|
155
161
|
|
@@ -162,18 +168,30 @@ def get_template(
|
|
162
168
|
if template_type not in ["T1w", "brain", "gm", "wm", "csf"]:
|
163
169
|
raise_error(f"Unknown template type: {template_type}")
|
164
170
|
|
165
|
-
|
166
|
-
|
171
|
+
if isinstance(resolution, str) and resolution != "highest":
|
172
|
+
raise_error(
|
173
|
+
"Invalid resolution value. Must be an integer or 'highest'"
|
174
|
+
)
|
167
175
|
|
168
176
|
# Fetch available resolutions for the template
|
169
177
|
available_resolutions = [
|
170
178
|
int(min(val["zooms"]))
|
171
179
|
for val in tflow.get_metadata(space)["res"].values()
|
172
180
|
]
|
181
|
+
|
182
|
+
# Get the min of the voxels sizes and use it as the resolution
|
183
|
+
if resolution is None:
|
184
|
+
resolution = np.min(target_img.header.get_zooms()[:3]).astype(int)
|
185
|
+
elif resolution == "highest":
|
186
|
+
resolution = 0
|
187
|
+
|
173
188
|
# Use the closest resolution if desired resolution is not found
|
174
189
|
resolution = closest_resolution(resolution, available_resolutions)
|
175
190
|
|
176
|
-
logger.info(
|
191
|
+
logger.info(
|
192
|
+
f"Downloading template {space} ({template_type} in "
|
193
|
+
f"resolution {resolution}"
|
194
|
+
)
|
177
195
|
# Retrieve template
|
178
196
|
try:
|
179
197
|
suffix = None
|
@@ -86,10 +86,6 @@ def test_ReHoParcels(caplog: pytest.LogCaptureFixture, tmp_path: Path) -> None:
|
|
86
86
|
@pytest.mark.skipif(
|
87
87
|
_check_afni() is False, reason="requires AFNI to be in PATH"
|
88
88
|
)
|
89
|
-
@pytest.mark.xfail(
|
90
|
-
reason="junifer ReHo needs to use the correct mask",
|
91
|
-
raises=AssertionError,
|
92
|
-
)
|
93
89
|
def test_ReHoParcels_comparison(tmp_path: Path) -> None:
|
94
90
|
"""Test ReHoParcels implementation comparison.
|
95
91
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.6.
|
3
|
+
Version: 0.0.6.dev371
|
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,6 +1,6 @@
|
|
1
1
|
junifer/__init__.py,sha256=2McgH1yNue6Z1V26-uN_mfMjbTcx4CLhym-DMBl5xA4,266
|
2
2
|
junifer/__init__.pyi,sha256=SsTvgq2Dod6UqJN96GH1lCphH6hJQQurEJHGNhHjGUI,508
|
3
|
-
junifer/_version.py,sha256=
|
3
|
+
junifer/_version.py,sha256=onk4xlkzaS1Ll-ut-FU2OO_R2pb-yHUL5TWaWF6Lxt0,428
|
4
4
|
junifer/conftest.py,sha256=PWYkkRDU8ly2lYwv7VBKMHje4et6HX7Yey3Md_I2KbA,613
|
5
5
|
junifer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
junifer/stats.py,sha256=e9aaagMGtgpRfW3Wdpz9ocpnYld1IWylCDcjFUgX9Mk,6225
|
@@ -75,7 +75,7 @@ junifer/data/__init__.pyi,sha256=qYszjUYcbFi_2zO23MnbA2HhTW-Ad2oh1pqPQYd6yt0,542
|
|
75
75
|
junifer/data/_dispatch.py,sha256=O524U1R4MtbGhGJsL0HSh9EqisapBFJWK7uupXrJuMg,6158
|
76
76
|
junifer/data/pipeline_data_registry_base.py,sha256=G8bE3WTj4D_rKC4ZKZe6E48Sd96CGea1PS3SxmTgGK4,2010
|
77
77
|
junifer/data/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
|
-
junifer/data/template_spaces.py,sha256=
|
78
|
+
junifer/data/template_spaces.py,sha256=wkxaDA_I_W5FB42GPxOKrl_A_fp0Crdrh6wFux27_NA,7147
|
79
79
|
junifer/data/utils.py,sha256=5r-0QGQCNZvDM1tVcl9xyrIdgAO85mww0plpM1RUaGA,3247
|
80
80
|
junifer/data/coordinates/__init__.py,sha256=ffM8rwcHLgHAWixJbKrATrbUKzX940V1UF6RAxZdUMg,186
|
81
81
|
junifer/data/coordinates/__init__.pyi,sha256=Z-Ti5XD3HigkZ8uYN6oYsLqw40-F1GvTVQ5QAy08Wng,88
|
@@ -106,7 +106,7 @@ junifer/data/masks/__init__.py,sha256=eEEhHglyVEx1LrqwXjq3cOmjf4sTsgBstRx5-k7zIQ
|
|
106
106
|
junifer/data/masks/__init__.pyi,sha256=lcgr8gmWDPibC4RxnWBXb8DDpIkO73Aax09u6VXiJJI,114
|
107
107
|
junifer/data/masks/_ants_mask_warper.py,sha256=Mwgc2_ZMf28vS_-fviRvZnHyT7JoQ1cQLozo7nUZSyM,5350
|
108
108
|
junifer/data/masks/_fsl_mask_warper.py,sha256=VApp-ofGBKePNmCdgTg1HoEA66lMQiAPT0ihkhB2ezY,2415
|
109
|
-
junifer/data/masks/_masks.py,sha256=
|
109
|
+
junifer/data/masks/_masks.py,sha256=NBkcIhjiSPoBE8J2BGkSfoun9Kpc2k_b2AhSf-E5cjU,27672
|
110
110
|
junifer/data/masks/tests/test_masks.py,sha256=W0bzRB5Bp-iGO44VtEmaf7BuT-joe_2tQI0lma5NQHA,16090
|
111
111
|
junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz,sha256=jcX1pDOrDsoph8cPMNFVKH5gZYio5G4rJNpOFXm9wJI,946636
|
112
112
|
junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz,sha256=j6EY8EtRnUuRxeKgD65Q6B0GPEPIALKDJEIje1TfnAU,88270
|
@@ -116,7 +116,7 @@ junifer/data/parcellations/__init__.py,sha256=6-Ysil3NyZ69V6rWx4RO15_d-iDKizfbHu
|
|
116
116
|
junifer/data/parcellations/__init__.pyi,sha256=lhBHTbMDizzqUqVHrx2eyfPFodrTBgMFeTgxfESSkQ8,140
|
117
117
|
junifer/data/parcellations/_ants_parcellation_warper.py,sha256=YUCJC0_wutGw7j_n9JRU3LCwm9Ttg5PIlJUgqejfRhs,5806
|
118
118
|
junifer/data/parcellations/_fsl_parcellation_warper.py,sha256=JfJ022flg5OR48P4OAALVHHQgTVxdMBXT-fAqBl3nUM,2679
|
119
|
-
junifer/data/parcellations/_parcellations.py,sha256=
|
119
|
+
junifer/data/parcellations/_parcellations.py,sha256=JUUglL0ZM_UKL5jTG1q-3x6Fd3CUO6Hl4YAGAUsGtmI,67019
|
120
120
|
junifer/data/parcellations/tests/test_parcellations.py,sha256=ESQI-KWsepmgKB2BWWWUxjkpjOWeIZhhlKxNuTsRPJg,39268
|
121
121
|
junifer/data/tests/test_data_utils.py,sha256=136iGPjGecCxyqgUwU8VZMHoE6imcYJ0WNC32PDGK4g,1063
|
122
122
|
junifer/data/tests/test_template_spaces.py,sha256=ZEicEcLqOJ-NpuBZ5SYh4yZ0xZRkhYHnYXiC_YSxjrY,3219
|
@@ -239,7 +239,7 @@ junifer/markers/reho/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
239
239
|
junifer/markers/reho/reho_base.py,sha256=Q88TbhIM4rQWdeQPLwwxwZ9DrR8l09orD1rdTkSYDtc,4077
|
240
240
|
junifer/markers/reho/reho_parcels.py,sha256=UE1ia3uqbmTcZMc_FI625xVPLxBYvwpfrcvhekopbkI,6392
|
241
241
|
junifer/markers/reho/reho_spheres.py,sha256=FCC2qncC85Kd82hg-MOu4T7NAKEkXHUaCcwC9taau9Y,6996
|
242
|
-
junifer/markers/reho/tests/test_reho_parcels.py,sha256=
|
242
|
+
junifer/markers/reho/tests/test_reho_parcels.py,sha256=bRtDi91qRcRYaRqqQjuSU6NuNz-KwLVCoTYo-e5VmsI,4075
|
243
243
|
junifer/markers/reho/tests/test_reho_spheres.py,sha256=VyyQ3hhD6ArFc1BmigmAdePACB1EMQlo1mDr2QKvT2I,3989
|
244
244
|
junifer/markers/temporal_snr/__init__.py,sha256=86hNMyaSfWlWOXZ6m9reSDtMIgUaByOXjcxCvo7LmDw,235
|
245
245
|
junifer/markers/temporal_snr/__init__.pyi,sha256=20FhG9ZkAHQfmJ0r5p6fRMxhK8xrFQeFr0cgTrqu3ik,162
|
@@ -341,10 +341,10 @@ junifer/utils/tests/test_config.py,sha256=7ltIXuwb_W4Mv_1dxQWyiyM10XgUAfsWKV6D_i
|
|
341
341
|
junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
|
342
342
|
junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
|
343
343
|
junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
|
344
|
-
junifer-0.0.6.
|
345
|
-
junifer-0.0.6.
|
346
|
-
junifer-0.0.6.
|
347
|
-
junifer-0.0.6.
|
348
|
-
junifer-0.0.6.
|
349
|
-
junifer-0.0.6.
|
350
|
-
junifer-0.0.6.
|
344
|
+
junifer-0.0.6.dev371.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
|
345
|
+
junifer-0.0.6.dev371.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
|
346
|
+
junifer-0.0.6.dev371.dist-info/METADATA,sha256=UHywu8RLD9o6oUt1r5pQlfxWb9AG3nogaV_kfRJe778,8429
|
347
|
+
junifer-0.0.6.dev371.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
348
|
+
junifer-0.0.6.dev371.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
|
349
|
+
junifer-0.0.6.dev371.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
|
350
|
+
junifer-0.0.6.dev371.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|