junifer 0.0.6.dev205__py3-none-any.whl → 0.0.6.dev219__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/conftest.py +25 -0
- junifer/data/coordinates/_coordinates.py +2 -3
- junifer/data/masks/_masks.py +2 -3
- junifer/data/parcellations/_parcellations.py +2 -3
- junifer/data/pipeline_data_registry_base.py +2 -1
- junifer/datagrabber/hcp1200/tests/test_hcp1200.py +6 -1
- junifer/markers/falff/_afni_falff.py +2 -3
- junifer/markers/falff/_junifer_falff.py +2 -3
- junifer/markers/reho/_afni_reho.py +2 -3
- junifer/markers/reho/_junifer_reho.py +2 -3
- junifer/pipeline/pipeline_component_registry.py +2 -3
- junifer/pipeline/tests/test_workdir_manager.py +42 -0
- junifer/pipeline/workdir_manager.py +19 -5
- junifer/{pipeline → utils}/singleton.py +19 -14
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/METADATA +1 -1
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/RECORD +22 -21
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/AUTHORS.rst +0 -0
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/LICENSE.md +0 -0
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/WHEEL +0 -0
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.dist-info}/entry_points.txt +0 -0
- {junifer-0.0.6.dev205.dist-info → junifer-0.0.6.dev219.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.dev219'
|
16
|
+
__version_tuple__ = version_tuple = (0, 0, 6, 'dev219')
|
junifer/conftest.py
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
"""Provide conftest for pytest."""
|
2
|
+
|
3
|
+
# Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
|
4
|
+
# License: AGPL
|
5
|
+
|
6
|
+
import pytest
|
7
|
+
|
8
|
+
from junifer.utils.singleton import Singleton
|
9
|
+
|
10
|
+
|
11
|
+
@pytest.fixture(autouse=True)
|
12
|
+
def reset_singletons() -> None:
|
13
|
+
"""Reset all singletons."""
|
14
|
+
to_clean = ["WorkDirManager"]
|
15
|
+
to_remove = [
|
16
|
+
v for k, v in Singleton.instances.items() if k.__name__ in to_clean
|
17
|
+
]
|
18
|
+
Singleton.instances = {
|
19
|
+
k: v
|
20
|
+
for k, v in Singleton.instances.items()
|
21
|
+
if k.__name__ not in to_clean
|
22
|
+
}
|
23
|
+
# Force deleting the singletons
|
24
|
+
for elem in to_remove:
|
25
|
+
del elem
|
@@ -11,8 +11,8 @@ import numpy as np
|
|
11
11
|
import pandas as pd
|
12
12
|
from numpy.typing import ArrayLike
|
13
13
|
|
14
|
-
from ...pipeline.singleton import singleton
|
15
14
|
from ...utils import logger, raise_error
|
15
|
+
from ...utils.singleton import Singleton
|
16
16
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
17
17
|
from ._ants_coordinates_warper import ANTsCoordinatesWarper
|
18
18
|
from ._fsl_coordinates_warper import FSLCoordinatesWarper
|
@@ -21,8 +21,7 @@ from ._fsl_coordinates_warper import FSLCoordinatesWarper
|
|
21
21
|
__all__ = ["CoordinatesRegistry"]
|
22
22
|
|
23
23
|
|
24
|
-
|
25
|
-
class CoordinatesRegistry(BasePipelineDataRegistry):
|
24
|
+
class CoordinatesRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
26
25
|
"""Class for coordinates data registry.
|
27
26
|
|
28
27
|
This class is a singleton and is used for managing available coordinates
|
junifer/data/masks/_masks.py
CHANGED
@@ -25,8 +25,8 @@ from nilearn.masking import (
|
|
25
25
|
intersect_masks,
|
26
26
|
)
|
27
27
|
|
28
|
-
from ...pipeline.singleton import singleton
|
29
28
|
from ...utils import logger, raise_error
|
29
|
+
from ...utils.singleton import Singleton
|
30
30
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
31
31
|
from ..template_spaces import get_template
|
32
32
|
from ..utils import closest_resolution
|
@@ -126,8 +126,7 @@ def compute_brain_mask(
|
|
126
126
|
return new_img_like(target_img, mask) # type: ignore
|
127
127
|
|
128
128
|
|
129
|
-
|
130
|
-
class MaskRegistry(BasePipelineDataRegistry):
|
129
|
+
class MaskRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
131
130
|
"""Class for mask data registry.
|
132
131
|
|
133
132
|
This class is a singleton and is used for managing available mask
|
@@ -20,8 +20,8 @@ import numpy as np
|
|
20
20
|
import pandas as pd
|
21
21
|
from nilearn import datasets, image
|
22
22
|
|
23
|
-
from ...pipeline.singleton import singleton
|
24
23
|
from ...utils import logger, raise_error, warn_with_log
|
24
|
+
from ...utils.singleton import Singleton
|
25
25
|
from ..pipeline_data_registry_base import BasePipelineDataRegistry
|
26
26
|
from ..utils import closest_resolution
|
27
27
|
from ._ants_parcellation_warper import ANTsParcellationWarper
|
@@ -38,8 +38,7 @@ __all__ = [
|
|
38
38
|
]
|
39
39
|
|
40
40
|
|
41
|
-
|
42
|
-
class ParcellationRegistry(BasePipelineDataRegistry):
|
41
|
+
class ParcellationRegistry(BasePipelineDataRegistry, metaclass=Singleton):
|
43
42
|
"""Class for parcellation data registry.
|
44
43
|
|
45
44
|
This class is a singleton and is used for managing available parcellation
|
@@ -7,12 +7,13 @@ from abc import ABC, abstractmethod
|
|
7
7
|
from typing import Any, List, Mapping
|
8
8
|
|
9
9
|
from ..utils import raise_error
|
10
|
+
from ..utils.singleton import ABCSingleton
|
10
11
|
|
11
12
|
|
12
13
|
__all__ = ["BasePipelineDataRegistry"]
|
13
14
|
|
14
15
|
|
15
|
-
class BasePipelineDataRegistry(ABC):
|
16
|
+
class BasePipelineDataRegistry(ABC, metaclass=ABCSingleton):
|
16
17
|
"""Abstract base class for pipeline data registry.
|
17
18
|
|
18
19
|
For every interface that is required, one needs to provide a concrete
|
@@ -3,6 +3,9 @@
|
|
3
3
|
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
4
|
# License: AGPL
|
5
5
|
|
6
|
+
import shutil
|
7
|
+
import tempfile
|
8
|
+
from pathlib import Path
|
6
9
|
from typing import Iterable, Optional
|
7
10
|
|
8
11
|
import pytest
|
@@ -17,7 +20,8 @@ URI = "https://gin.g-node.org/juaml/datalad-example-hcp1200"
|
|
17
20
|
@pytest.fixture(scope="module")
|
18
21
|
def hcpdg() -> Iterable[DataladHCP1200]:
|
19
22
|
"""Return a HCP1200 DataGrabber."""
|
20
|
-
|
23
|
+
tmpdir = Path(tempfile.gettempdir())
|
24
|
+
dg = DataladHCP1200(datadir=tmpdir / "datadir")
|
21
25
|
# Set URI to Gin
|
22
26
|
dg.uri = URI
|
23
27
|
# Set correct root directory
|
@@ -26,6 +30,7 @@ def hcpdg() -> Iterable[DataladHCP1200]:
|
|
26
30
|
for t_elem in dg.get_elements():
|
27
31
|
dg[t_elem]
|
28
32
|
yield dg
|
33
|
+
shutil.rmtree(tmpdir / "datadir", ignore_errors=True)
|
29
34
|
|
30
35
|
|
31
36
|
@pytest.mark.parametrize(
|
@@ -18,8 +18,8 @@ from typing import (
|
|
18
18
|
import nibabel as nib
|
19
19
|
|
20
20
|
from ...pipeline import WorkDirManager
|
21
|
-
from ...pipeline.singleton import singleton
|
22
21
|
from ...utils import logger, run_ext_cmd
|
22
|
+
from ...utils.singleton import Singleton
|
23
23
|
|
24
24
|
|
25
25
|
if TYPE_CHECKING:
|
@@ -29,8 +29,7 @@ if TYPE_CHECKING:
|
|
29
29
|
__all__ = ["AFNIALFF"]
|
30
30
|
|
31
31
|
|
32
|
-
|
33
|
-
class AFNIALFF:
|
32
|
+
class AFNIALFF(metaclass=Singleton):
|
34
33
|
"""Class for computing ALFF using AFNI.
|
35
34
|
|
36
35
|
This class uses AFNI's 3dRSFC to compute ALFF. It's designed as a singleton
|
@@ -19,8 +19,8 @@ import scipy as sp
|
|
19
19
|
from nilearn import image as nimg
|
20
20
|
|
21
21
|
from ...pipeline import WorkDirManager
|
22
|
-
from ...pipeline.singleton import singleton
|
23
22
|
from ...utils import logger
|
23
|
+
from ...utils.singleton import Singleton
|
24
24
|
|
25
25
|
|
26
26
|
if TYPE_CHECKING:
|
@@ -30,8 +30,7 @@ if TYPE_CHECKING:
|
|
30
30
|
__all__ = ["JuniferALFF"]
|
31
31
|
|
32
32
|
|
33
|
-
|
34
|
-
class JuniferALFF:
|
33
|
+
class JuniferALFF(metaclass=Singleton):
|
35
34
|
"""Class for computing ALFF using junifer.
|
36
35
|
|
37
36
|
It's designed as a singleton with caching for efficient computation.
|
@@ -18,8 +18,8 @@ from typing import (
|
|
18
18
|
import nibabel as nib
|
19
19
|
|
20
20
|
from ...pipeline import WorkDirManager
|
21
|
-
from ...pipeline.singleton import singleton
|
22
21
|
from ...utils import logger, run_ext_cmd
|
22
|
+
from ...utils.singleton import Singleton
|
23
23
|
|
24
24
|
|
25
25
|
if TYPE_CHECKING:
|
@@ -29,8 +29,7 @@ if TYPE_CHECKING:
|
|
29
29
|
__all__ = ["AFNIReHo"]
|
30
30
|
|
31
31
|
|
32
|
-
|
33
|
-
class AFNIReHo:
|
32
|
+
class AFNIReHo(metaclass=Singleton):
|
34
33
|
"""Class for computing ReHo using AFNI.
|
35
34
|
|
36
35
|
This class uses AFNI's 3dReHo to compute ReHo. It's designed as a singleton
|
@@ -20,8 +20,8 @@ from nilearn import image as nimg
|
|
20
20
|
from nilearn import masking as nmask
|
21
21
|
|
22
22
|
from ...pipeline import WorkDirManager
|
23
|
-
from ...pipeline.singleton import singleton
|
24
23
|
from ...utils import logger, raise_error
|
24
|
+
from ...utils.singleton import Singleton
|
25
25
|
|
26
26
|
|
27
27
|
if TYPE_CHECKING:
|
@@ -31,8 +31,7 @@ if TYPE_CHECKING:
|
|
31
31
|
__all__ = ["JuniferReHo"]
|
32
32
|
|
33
33
|
|
34
|
-
|
35
|
-
class JuniferReHo:
|
34
|
+
class JuniferReHo(metaclass=Singleton):
|
36
35
|
"""Class for computing ReHo using junifer.
|
37
36
|
|
38
37
|
It's designed as a singleton with caching for efficient computation.
|
@@ -9,7 +9,7 @@ import importlib
|
|
9
9
|
from typing import TYPE_CHECKING, Dict, List, Mapping, Optional, Union
|
10
10
|
|
11
11
|
from ..utils import logger, raise_error
|
12
|
-
from .singleton import
|
12
|
+
from ..utils.singleton import Singleton
|
13
13
|
|
14
14
|
|
15
15
|
if TYPE_CHECKING:
|
@@ -21,8 +21,7 @@ if TYPE_CHECKING:
|
|
21
21
|
__all__ = ["PipelineComponentRegistry"]
|
22
22
|
|
23
23
|
|
24
|
-
|
25
|
-
class PipelineComponentRegistry:
|
24
|
+
class PipelineComponentRegistry(metaclass=Singleton):
|
26
25
|
"""Class for pipeline component registry.
|
27
26
|
|
28
27
|
This class is a singleton and is used for managing pipeline components.
|
@@ -102,3 +102,45 @@ def test_workdir_manager_get_and_delete_tempdir(tmp_path: Path) -> None:
|
|
102
102
|
workdir_mgr._cleanup()
|
103
103
|
# Should remove temporary directory
|
104
104
|
assert workdir_mgr.root_tempdir is None
|
105
|
+
|
106
|
+
def test_workdir_manager_no_cleanup(tmp_path: Path) -> None:
|
107
|
+
"""Test WorkDirManager correctly bypasses cleanup.
|
108
|
+
|
109
|
+
Parameters
|
110
|
+
----------
|
111
|
+
tmp_path : pathlib.Path
|
112
|
+
The path to the test directory.
|
113
|
+
|
114
|
+
"""
|
115
|
+
workdir_mgr = WorkDirManager(cleanup=False)
|
116
|
+
workdir_mgr.workdir = tmp_path
|
117
|
+
# Check no root temporary directory
|
118
|
+
assert workdir_mgr.root_tempdir is None
|
119
|
+
|
120
|
+
tempdir = workdir_mgr.get_tempdir()
|
121
|
+
assert tempdir.exists()
|
122
|
+
# Should create a temporary directory
|
123
|
+
assert workdir_mgr.root_tempdir is not None
|
124
|
+
|
125
|
+
workdir_mgr.delete_tempdir(tempdir)
|
126
|
+
workdir_mgr._cleanup()
|
127
|
+
|
128
|
+
# Should remove temporary directory
|
129
|
+
assert workdir_mgr.root_tempdir is None
|
130
|
+
# But the temporary directory should still exist
|
131
|
+
assert tempdir.exists()
|
132
|
+
|
133
|
+
# Now the same but for the element directory
|
134
|
+
|
135
|
+
# Check no element directory
|
136
|
+
assert workdir_mgr.elementdir is None
|
137
|
+
|
138
|
+
tempdir = workdir_mgr.get_element_tempdir()
|
139
|
+
# Should create a temporary directory
|
140
|
+
assert workdir_mgr.elementdir is not None
|
141
|
+
|
142
|
+
workdir_mgr.cleanup_elementdir()
|
143
|
+
# Should remove temporary directory
|
144
|
+
assert workdir_mgr.elementdir is None
|
145
|
+
# But the temporary directory should still exist
|
146
|
+
assert tempdir.exists()
|
@@ -10,14 +10,13 @@ from pathlib import Path
|
|
10
10
|
from typing import Optional, Union
|
11
11
|
|
12
12
|
from ..utils import logger
|
13
|
-
from .singleton import
|
13
|
+
from ..utils.singleton import Singleton
|
14
14
|
|
15
15
|
|
16
16
|
__all__ = ["WorkDirManager"]
|
17
17
|
|
18
18
|
|
19
|
-
|
20
|
-
class WorkDirManager:
|
19
|
+
class WorkDirManager(metaclass=Singleton):
|
21
20
|
"""Class for working directory manager.
|
22
21
|
|
23
22
|
This class is a singleton and is used for managing temporary and working
|
@@ -40,15 +39,20 @@ class WorkDirManager:
|
|
40
39
|
The path to the element directory.
|
41
40
|
root_tempdir : pathlib.Path or None
|
42
41
|
The path to the root temporary directory.
|
42
|
+
cleanup : bool, optional
|
43
|
+
If False, the directories are not cleaned up after the object is
|
44
|
+
destroyed. This is useful for debugging purposes (default True).
|
43
45
|
|
44
46
|
"""
|
45
47
|
|
46
|
-
def __init__(
|
48
|
+
def __init__(
|
49
|
+
self, workdir: Optional[Union[str, Path]] = None, cleanup=True
|
50
|
+
) -> None:
|
47
51
|
"""Initialize the class."""
|
48
52
|
self._workdir = Path(workdir) if isinstance(workdir, str) else workdir
|
49
53
|
self._elementdir = None
|
50
54
|
self._root_tempdir = None
|
51
|
-
|
55
|
+
self._cleanup_dirs = cleanup
|
52
56
|
self._set_default_workdir()
|
53
57
|
|
54
58
|
def _set_default_workdir(self) -> None:
|
@@ -73,6 +77,9 @@ class WorkDirManager:
|
|
73
77
|
|
74
78
|
def _cleanup(self) -> None:
|
75
79
|
"""Clean up the element and temporary directories."""
|
80
|
+
if self._cleanup_dirs is False:
|
81
|
+
self._root_tempdir = None
|
82
|
+
return
|
76
83
|
# Remove element directory
|
77
84
|
self.cleanup_elementdir()
|
78
85
|
# Remove root temporary directory
|
@@ -172,6 +179,8 @@ class WorkDirManager:
|
|
172
179
|
The temporary directory path to be deleted.
|
173
180
|
|
174
181
|
"""
|
182
|
+
if self._cleanup_dirs is False:
|
183
|
+
return
|
175
184
|
logger.debug(f"Deleting element temporary directory at {tempdir}")
|
176
185
|
shutil.rmtree(tempdir, ignore_errors=True)
|
177
186
|
|
@@ -183,6 +192,9 @@ class WorkDirManager:
|
|
183
192
|
can lead to required intermediate files not being found.
|
184
193
|
|
185
194
|
"""
|
195
|
+
if self._cleanup_dirs is False:
|
196
|
+
self._elementdir = None
|
197
|
+
return
|
186
198
|
if self._elementdir is not None:
|
187
199
|
logger.debug(
|
188
200
|
"Deleting element directory at "
|
@@ -245,5 +257,7 @@ class WorkDirManager:
|
|
245
257
|
The temporary directory path to be deleted.
|
246
258
|
|
247
259
|
"""
|
260
|
+
if self._cleanup_dirs is False:
|
261
|
+
return
|
248
262
|
logger.debug(f"Deleting temporary directory at {tempdir}")
|
249
263
|
shutil.rmtree(tempdir, ignore_errors=True)
|
@@ -1,15 +1,17 @@
|
|
1
1
|
"""Provide a singleton class to be used by pipeline components."""
|
2
2
|
|
3
3
|
# Authors: Synchon Mandal <s.mandal@fz-juelich.de>
|
4
|
+
# Federico Raimondo <f.raimondo@fz-juelich.de>
|
4
5
|
# License: AGPL
|
5
6
|
|
6
|
-
from
|
7
|
+
from abc import ABCMeta
|
8
|
+
from typing import Any, ClassVar, Dict, Type
|
7
9
|
|
8
10
|
|
9
|
-
__all__ = ["
|
11
|
+
__all__ = ["Singleton", "ABCSingleton"]
|
10
12
|
|
11
13
|
|
12
|
-
|
14
|
+
class Singleton(type):
|
13
15
|
"""Make a class singleton.
|
14
16
|
|
15
17
|
Parameters
|
@@ -17,15 +19,11 @@ def singleton(cls: Type) -> Type:
|
|
17
19
|
cls : class
|
18
20
|
The class to designate as singleton.
|
19
21
|
|
20
|
-
Returns
|
21
|
-
-------
|
22
|
-
class
|
23
|
-
The only instance of the class.
|
24
|
-
|
25
22
|
"""
|
26
|
-
instances: Dict = {}
|
27
23
|
|
28
|
-
|
24
|
+
instances: ClassVar[Dict] = {}
|
25
|
+
|
26
|
+
def __call__(cls, *args: Any, **kwargs: Any) -> Type:
|
29
27
|
"""Get the only instance for a class.
|
30
28
|
|
31
29
|
Parameters
|
@@ -41,8 +39,15 @@ def singleton(cls: Type) -> Type:
|
|
41
39
|
The only instance of the class.
|
42
40
|
|
43
41
|
"""
|
44
|
-
if cls not in instances:
|
45
|
-
instances[cls] =
|
46
|
-
|
42
|
+
if cls not in cls.instances:
|
43
|
+
cls.instances[cls] = super(Singleton, cls).__call__( # noqa: UP008
|
44
|
+
*args, **kwargs
|
45
|
+
)
|
46
|
+
|
47
|
+
return cls.instances[cls]
|
48
|
+
|
49
|
+
|
50
|
+
class ABCSingleton(ABCMeta, Singleton):
|
51
|
+
"""Make an abstract class a singleton."""
|
47
52
|
|
48
|
-
|
53
|
+
pass
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: junifer
|
3
|
-
Version: 0.0.6.
|
3
|
+
Version: 0.0.6.dev219
|
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,7 @@
|
|
1
1
|
junifer/__init__.py,sha256=2McgH1yNue6Z1V26-uN_mfMjbTcx4CLhym-DMBl5xA4,266
|
2
2
|
junifer/__init__.pyi,sha256=uPLuY27S7AY4kFzJX0ncCpzHnWJdztveMJpY3Di-wwQ,482
|
3
|
-
junifer/_version.py,sha256=
|
3
|
+
junifer/_version.py,sha256=CjqUG_Y4LDEZ8B4jqZpARBHOYed_438kYzl-7CnGiQU,428
|
4
|
+
junifer/conftest.py,sha256=PWYkkRDU8ly2lYwv7VBKMHje4et6HX7Yey3Md_I2KbA,613
|
4
5
|
junifer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
6
|
junifer/stats.py,sha256=BjQb2lfTGDP9l4UuQYmJFcJJNRfbJDGlNvC06SJaDDE,6237
|
6
7
|
junifer/api/__init__.py,sha256=aAXW_KAEGQ8aAP5Eni2G1R4MWBF7UgjKOgM6akLuJco,252
|
@@ -72,14 +73,14 @@ junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py,sha256=b9hjc1mgO--PS
|
|
72
73
|
junifer/data/__init__.py,sha256=xJDI2QKtdjcNzpd1oVFM3guh1SFHM6jKstl7pFmzOuk,267
|
73
74
|
junifer/data/__init__.pyi,sha256=qYszjUYcbFi_2zO23MnbA2HhTW-Ad2oh1pqPQYd6yt0,542
|
74
75
|
junifer/data/_dispatch.py,sha256=_hmlIXuuuLJBbY5VH6lohJzhbMB7KEhFkVFwRDEdR_E,6189
|
75
|
-
junifer/data/pipeline_data_registry_base.py,sha256=
|
76
|
+
junifer/data/pipeline_data_registry_base.py,sha256=8UyrkXHVr7JdeVfD2xgIRQlrlH3lR2RLHUfnqbw0EyI,1989
|
76
77
|
junifer/data/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
78
|
junifer/data/template_spaces.py,sha256=9uZuFztBGNZk3mhUI2h0oQMajjx6Wv31Fx11pGlDI20,6510
|
78
79
|
junifer/data/utils.py,sha256=R-AMuerRiJLU4aMK9_WWXFJn2yOuXtZ-YKrdHvFjZf4,1454
|
79
80
|
junifer/data/coordinates/__init__.py,sha256=ffM8rwcHLgHAWixJbKrATrbUKzX940V1UF6RAxZdUMg,186
|
80
81
|
junifer/data/coordinates/__init__.pyi,sha256=Z-Ti5XD3HigkZ8uYN6oYsLqw40-F1GvTVQ5QAy08Wng,88
|
81
82
|
junifer/data/coordinates/_ants_coordinates_warper.py,sha256=Q08zC0MBQPwj94V8G6ZGdRoYA7V3ACNCDlcFlLXc0j8,2809
|
82
|
-
junifer/data/coordinates/_coordinates.py,sha256=
|
83
|
+
junifer/data/coordinates/_coordinates.py,sha256=0zem18y7vT9d_lBAUwF6EqxoUG29qD_nblI0RDx8oH4,11960
|
83
84
|
junifer/data/coordinates/_fsl_coordinates_warper.py,sha256=9R0JiyYWXogMr1i6DLepXkjb1aeTZ3CUoxvAPuxNGls,2568
|
84
85
|
junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt,sha256=9af38naeL18Tlt_gy_ep6vyTAxOB336JYjbo5FvP8PQ,686
|
85
86
|
junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt,sha256=Sr5_E712OLdeQRyUcDNM0wLBvZIyO6gc9Q7KkyJHX1A,398
|
@@ -105,7 +106,7 @@ junifer/data/masks/__init__.py,sha256=eEEhHglyVEx1LrqwXjq3cOmjf4sTsgBstRx5-k7zIQ
|
|
105
106
|
junifer/data/masks/__init__.pyi,sha256=lcgr8gmWDPibC4RxnWBXb8DDpIkO73Aax09u6VXiJJI,114
|
106
107
|
junifer/data/masks/_ants_mask_warper.py,sha256=6bBqFO9HNoYG5eYw4IVNZEv2sL58Koz-YXCdpM7U6NQ,4937
|
107
108
|
junifer/data/masks/_fsl_mask_warper.py,sha256=mxxJy4WYbbMHEZSpNaBL1RDT4H0RmhA4u8fp7oOW_k4,2567
|
108
|
-
junifer/data/masks/_masks.py,sha256=
|
109
|
+
junifer/data/masks/_masks.py,sha256=2RMG9UL2GU11GgLaEoKPvrWVLtOVVf5etrTbEUefJm8,20960
|
109
110
|
junifer/data/masks/tests/test_masks.py,sha256=RDYe8Z46M_hHdZn3hOvdqQXqiMlxJ6454gD3d1ee3zM,16132
|
110
111
|
junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz,sha256=jcX1pDOrDsoph8cPMNFVKH5gZYio5G4rJNpOFXm9wJI,946636
|
111
112
|
junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz,sha256=j6EY8EtRnUuRxeKgD65Q6B0GPEPIALKDJEIje1TfnAU,88270
|
@@ -115,7 +116,7 @@ junifer/data/parcellations/__init__.py,sha256=6-Ysil3NyZ69V6rWx4RO15_d-iDKizfbHu
|
|
115
116
|
junifer/data/parcellations/__init__.pyi,sha256=lhBHTbMDizzqUqVHrx2eyfPFodrTBgMFeTgxfESSkQ8,140
|
116
117
|
junifer/data/parcellations/_ants_parcellation_warper.py,sha256=1oOY_O0Ft0NOkGjk4Cx8lyChy7QYJRZbOtdQfDpo4jI,5399
|
117
118
|
junifer/data/parcellations/_fsl_parcellation_warper.py,sha256=PwGXT1fEchjIIyQJVr53Ksssf6hHJTtJwgJj8t65LTA,2839
|
118
|
-
junifer/data/parcellations/_parcellations.py,sha256=
|
119
|
+
junifer/data/parcellations/_parcellations.py,sha256=qgAZ1A17PMHEzKtZoEvdfL0VScMy1RIaOJ_C03x-Za0,65780
|
119
120
|
junifer/data/parcellations/tests/test_parcellations.py,sha256=43h7lR7nEvo9vTK-AeUDMk0XdGTqyzQI8isYl8dWw6s,38339
|
120
121
|
junifer/data/tests/test_data_utils.py,sha256=_DaiC8K79gs9HFHxr-udNeE2YTM6JA0-1i-K2cqK9qA,1087
|
121
122
|
junifer/data/tests/test_template_spaces.py,sha256=PJulN7xHpAcSOTY-UzTG_WPywZEBSlAZGiNG4gzk1_8,3144
|
@@ -143,7 +144,7 @@ junifer/datagrabber/hcp1200/__init__.pyi,sha256=2ttZanYSzCsB195_xfXUyztPsVIF02AR
|
|
143
144
|
junifer/datagrabber/hcp1200/datalad_hcp1200.py,sha256=hngQYLv4b8tC9Ep2X5A5R_L2sFM3ZJ8dmWTr_OlRLAA,2463
|
144
145
|
junifer/datagrabber/hcp1200/hcp1200.py,sha256=AfVPd44CdyMcrUTOfps2PSpTQrXde68QeZaLGkXUTn4,6116
|
145
146
|
junifer/datagrabber/hcp1200/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
146
|
-
junifer/datagrabber/hcp1200/tests/test_hcp1200.py,sha256=
|
147
|
+
junifer/datagrabber/hcp1200/tests/test_hcp1200.py,sha256=17LK9fRAKmRQipo8UAgLOx9rA8G-91cTR_V_uAfKffk,10945
|
147
148
|
junifer/datagrabber/tests/test_base.py,sha256=fZdVhNhvfht9lpTHrAUf5E6mAfNNUP7OTQ5KLaBQ1gI,3506
|
148
149
|
junifer/datagrabber/tests/test_datalad_base.py,sha256=71erxpAECuy8iLtkmq_SRqfP4sKQf4uEb3O8CThBHT0,16285
|
149
150
|
junifer/datagrabber/tests/test_dmcc13_benchmark.py,sha256=DcqkDXXBoabHFVbxekGR2NZyGeugGlxpOwXIwy38Ofg,9109
|
@@ -207,8 +208,8 @@ junifer/markers/complexity/tests/test_sample_entropy.py,sha256=rfbiguVq7CUwYIvYB
|
|
207
208
|
junifer/markers/complexity/tests/test_weighted_perm_entropy.py,sha256=yDWKEaUbxrnrG6J2NlktLfwSBre5OuXd63kEof7t8PM,2373
|
208
209
|
junifer/markers/falff/__init__.py,sha256=qxdx_3FsVrn7h3gtbocK0ZmvqZwPQZGKuVkPm31ejNM,217
|
209
210
|
junifer/markers/falff/__init__.pyi,sha256=X-q2zBjUX0imQ37yN2Cg5gKfDvq8sh_9y2hRH4g5ufY,120
|
210
|
-
junifer/markers/falff/_afni_falff.py,sha256=
|
211
|
-
junifer/markers/falff/_junifer_falff.py,sha256=
|
211
|
+
junifer/markers/falff/_afni_falff.py,sha256=6kHNWU9k-U6_wlCnysDK90svCqcRggVGOD4SjHnoI9I,4528
|
212
|
+
junifer/markers/falff/_junifer_falff.py,sha256=UPu3myI6cNoDU1FB0t4Y71KOubPG1xBntdgZysOHiro,4424
|
212
213
|
junifer/markers/falff/falff_base.py,sha256=1VjEZMd7BpXDc2subm0VzZNxFp6uxMb9QjBmMC6tDVg,4903
|
213
214
|
junifer/markers/falff/falff_parcels.py,sha256=RuACr7qjxJ6fDo8KrbO2fUwpLtzLQXPr9WX4n--XUb0,6029
|
214
215
|
junifer/markers/falff/falff_spheres.py,sha256=ZjcPLg29LBfsCLD8iZk0pW0nItH5uLmsn4nlLoUNB78,6668
|
@@ -232,8 +233,8 @@ junifer/markers/functional_connectivity/tests/test_functional_connectivity_parce
|
|
232
233
|
junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py,sha256=OU2FWAH0Gb4gEOF0m1PAoo5xLKVPetNkwV-ssQTZ1Yw,4157
|
233
234
|
junifer/markers/reho/__init__.py,sha256=WZf4A0XaRThjl8SlFOhvTLUfhTHp5koLxZgowsgTSAE,211
|
234
235
|
junifer/markers/reho/__init__.pyi,sha256=_aFb-Ry_EP2OMU6xRL4GlfuDpSl_egHllL-fz7vXjcE,118
|
235
|
-
junifer/markers/reho/_afni_reho.py,sha256=
|
236
|
-
junifer/markers/reho/_junifer_reho.py,sha256=
|
236
|
+
junifer/markers/reho/_afni_reho.py,sha256=eMHTaj2-zEHVgkz96Xx30Wn5sAGhXO-JmgItQAI9eNo,6476
|
237
|
+
junifer/markers/reho/_junifer_reho.py,sha256=GFaKoEPUiLk9YRLXTfWplEhQmYipXWkPQj-7YvMXKO0,9314
|
237
238
|
junifer/markers/reho/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
238
239
|
junifer/markers/reho/reho_base.py,sha256=Tdnl5SJ66p461UJ-UilEGKrMdEPwGMemN_QIQgmc8o8,4065
|
239
240
|
junifer/markers/reho/reho_parcels.py,sha256=tfGasSaAI-ioxVBTD2L_4gJQthoAq5Fp9e5iRS3mXhI,6404
|
@@ -262,18 +263,17 @@ junifer/onthefly/tests/test_read_transform.py,sha256=D2C3IpXQHdsJSF07v8rEwGntLGX
|
|
262
263
|
junifer/pipeline/__init__.py,sha256=rxKQGRwc6_sts1KhVIcVVpuXeiFABf11mQQ2h5jgA3U,194
|
263
264
|
junifer/pipeline/__init__.pyi,sha256=hhcvNcABhtLaUQiZdTjo5sMWC3rtDkwVshL0sxD5JAE,399
|
264
265
|
junifer/pipeline/marker_collection.py,sha256=1xcJqeOZ_IerB7PAMN1itWBv8UR6lUW9xXRoIu4qLXU,5557
|
265
|
-
junifer/pipeline/pipeline_component_registry.py,sha256=
|
266
|
+
junifer/pipeline/pipeline_component_registry.py,sha256=XE4lSSd6STp2VBhsaG21-tfe8kRt97N-1zwE26fF7Yc,9501
|
266
267
|
junifer/pipeline/pipeline_step_mixin.py,sha256=wakimkG8GC0PWkFHMHIfgzM2yak41xLrzbVRH0oe8D4,7613
|
267
268
|
junifer/pipeline/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
268
|
-
junifer/pipeline/singleton.py,sha256=c5U8Xn10MQqaXjlLzxLbw3AmSYW6aTw_iSL0rDkbuMU,1011
|
269
269
|
junifer/pipeline/update_meta_mixin.py,sha256=A_gYCPqdPlM0Xpum9TjJowb41O7ntxQg6y4YOgYeyy4,1564
|
270
270
|
junifer/pipeline/utils.py,sha256=CAp0P7rZST7bsJ9lSlkvZgIJebHW2cIm8VXTuu1A6tE,10291
|
271
|
-
junifer/pipeline/workdir_manager.py,sha256=
|
271
|
+
junifer/pipeline/workdir_manager.py,sha256=T7-sZY_Gj0SM7p9N1ATjUFK2T-6CYIMQeYwHpBz96Gs,8616
|
272
272
|
junifer/pipeline/tests/test_marker_collection.py,sha256=edBHfmwMTXG_q0ZagApbAbkFNoegi3hVEQiNcBtZOKc,6959
|
273
273
|
junifer/pipeline/tests/test_pipeline_component_registry.py,sha256=ww_akEhtvE1_fsWbX5Yd5w_G2Ki6w_5MInfihwwRYFk,5800
|
274
274
|
junifer/pipeline/tests/test_pipeline_step_mixin.py,sha256=_ykZzyNzREXy-r_yv1gY_jquLZzVBl8qwYrVORCKY_k,7807
|
275
275
|
junifer/pipeline/tests/test_update_meta_mixin.py,sha256=UeWwpUi-Q5WVd36Fgfn_utXplSVXMSjLcdO2mR2xLTk,1355
|
276
|
-
junifer/pipeline/tests/test_workdir_manager.py,sha256=
|
276
|
+
junifer/pipeline/tests/test_workdir_manager.py,sha256=N7_5cTnmv0eSQCT9UWOmFFVT-BIrNWq8GFmaqa-BtRI,4050
|
277
277
|
junifer/preprocess/__init__.py,sha256=91D43p254il88g-7sSN64M7HsCvwytYoiTS_GLEr37Y,342
|
278
278
|
junifer/preprocess/__init__.pyi,sha256=EApXtuEZohQZnIeP6k882Y2H5IRiGmhJbVGdN7VCWFc,254
|
279
279
|
junifer/preprocess/base.py,sha256=v6azVA3RwDe3HriYlcaISOX1A6gYgFUKNzQeIDLx92Q,6681
|
@@ -332,13 +332,14 @@ junifer/utils/fs.py,sha256=M3CKBLh4gPS6s9giyopgb1hHMXzLb6k3cung2wHVBjs,492
|
|
332
332
|
junifer/utils/helpers.py,sha256=_IqnaPaOcFy1yrEyNmmg7XqQWb1wHOtxfOBnlaRYbiI,2063
|
333
333
|
junifer/utils/logging.py,sha256=ardaiJkDfZMYvak5UIL5Etxg5Ii7inmVQSBdFLdgtb8,9781
|
334
334
|
junifer/utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
|
+
junifer/utils/singleton.py,sha256=3mEZT4GJ7lMkH8H7ZPgy0DBe6CNTqg9CRVJFDAy3h60,1201
|
335
336
|
junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
|
336
337
|
junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
|
337
338
|
junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
|
338
|
-
junifer-0.0.6.
|
339
|
-
junifer-0.0.6.
|
340
|
-
junifer-0.0.6.
|
341
|
-
junifer-0.0.6.
|
342
|
-
junifer-0.0.6.
|
343
|
-
junifer-0.0.6.
|
344
|
-
junifer-0.0.6.
|
339
|
+
junifer-0.0.6.dev219.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
|
340
|
+
junifer-0.0.6.dev219.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
|
341
|
+
junifer-0.0.6.dev219.dist-info/METADATA,sha256=NmVabUMfIEWcEJ8nOtLA7HTzwuZYBhoIZPA1Z44ycdw,8448
|
342
|
+
junifer-0.0.6.dev219.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
|
343
|
+
junifer-0.0.6.dev219.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
|
344
|
+
junifer-0.0.6.dev219.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
|
345
|
+
junifer-0.0.6.dev219.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|