junifer 0.0.5.dev131__py3-none-any.whl → 0.0.5.dev152__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 (124) hide show
  1. junifer/__init__.py +17 -0
  2. junifer/_version.py +2 -2
  3. junifer/api/__init__.py +3 -0
  4. junifer/api/decorators.py +9 -0
  5. junifer/api/functions.py +7 -4
  6. junifer/api/parser.py +3 -0
  7. junifer/api/queue_context/__init__.py +3 -0
  8. junifer/api/res/afni/run_afni_docker.sh +1 -1
  9. junifer/api/res/ants/run_ants_docker.sh +1 -1
  10. junifer/api/res/fsl/run_fsl_docker.sh +1 -1
  11. junifer/configs/juseless/__init__.py +3 -0
  12. junifer/configs/juseless/datagrabbers/__init__.py +9 -0
  13. junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +3 -0
  14. junifer/configs/juseless/datagrabbers/camcan_vbm.py +3 -0
  15. junifer/configs/juseless/datagrabbers/ixi_vbm.py +3 -0
  16. junifer/configs/juseless/datagrabbers/ucla.py +3 -0
  17. junifer/configs/juseless/datagrabbers/ukb_vbm.py +3 -0
  18. junifer/data/__init__.py +20 -0
  19. junifer/data/coordinates.py +8 -0
  20. junifer/data/masks.py +10 -0
  21. junifer/data/parcellations.py +9 -0
  22. junifer/data/template_spaces.py +3 -0
  23. junifer/data/utils.py +3 -0
  24. junifer/datagrabber/__init__.py +15 -0
  25. junifer/datagrabber/aomic/__init__.py +3 -0
  26. junifer/datagrabber/aomic/id1000.py +3 -0
  27. junifer/datagrabber/aomic/piop1.py +3 -0
  28. junifer/datagrabber/aomic/piop2.py +3 -0
  29. junifer/datagrabber/base.py +3 -0
  30. junifer/datagrabber/datalad_base.py +3 -0
  31. junifer/datagrabber/hcp1200/__init__.py +3 -0
  32. junifer/datagrabber/hcp1200/datalad_hcp1200.py +3 -0
  33. junifer/datagrabber/hcp1200/hcp1200.py +3 -0
  34. junifer/datagrabber/multiple.py +3 -0
  35. junifer/datagrabber/pattern.py +3 -0
  36. junifer/datagrabber/pattern_datalad.py +3 -0
  37. junifer/datagrabber/utils.py +3 -0
  38. junifer/datareader/__init__.py +3 -0
  39. junifer/datareader/default.py +3 -0
  40. junifer/external/nilearn/junifer_nifti_spheres_masker.py +7 -7
  41. junifer/markers/__init__.py +21 -0
  42. junifer/markers/base.py +21 -7
  43. junifer/markers/brainprint.py +3 -0
  44. junifer/markers/collection.py +3 -0
  45. junifer/markers/complexity/__init__.py +10 -0
  46. junifer/markers/complexity/complexity_base.py +3 -0
  47. junifer/markers/complexity/hurst_exponent.py +3 -0
  48. junifer/markers/complexity/multiscale_entropy_auc.py +3 -0
  49. junifer/markers/complexity/perm_entropy.py +3 -0
  50. junifer/markers/complexity/range_entropy.py +3 -0
  51. junifer/markers/complexity/range_entropy_auc.py +3 -0
  52. junifer/markers/complexity/sample_entropy.py +3 -0
  53. junifer/markers/complexity/tests/test_hurst_exponent.py +7 -0
  54. junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +7 -0
  55. junifer/markers/complexity/tests/test_perm_entropy.py +7 -0
  56. junifer/markers/complexity/tests/test_range_entropy.py +7 -0
  57. junifer/markers/complexity/tests/test_range_entropy_auc.py +7 -0
  58. junifer/markers/complexity/tests/test_sample_entropy.py +7 -0
  59. junifer/markers/complexity/tests/test_weighted_perm_entropy.py +7 -0
  60. junifer/markers/complexity/weighted_perm_entropy.py +3 -0
  61. junifer/markers/ets_rss.py +3 -0
  62. junifer/markers/falff/__init__.py +3 -0
  63. junifer/markers/falff/_afni_falff.py +3 -0
  64. junifer/markers/falff/_junifer_falff.py +3 -0
  65. junifer/markers/falff/falff_base.py +3 -0
  66. junifer/markers/falff/falff_parcels.py +3 -0
  67. junifer/markers/falff/falff_spheres.py +3 -0
  68. junifer/markers/functional_connectivity/__init__.py +9 -0
  69. junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +3 -0
  70. junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +3 -0
  71. junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +3 -0
  72. junifer/markers/functional_connectivity/functional_connectivity_base.py +3 -0
  73. junifer/markers/functional_connectivity/functional_connectivity_parcels.py +3 -0
  74. junifer/markers/functional_connectivity/functional_connectivity_spheres.py +3 -0
  75. junifer/markers/parcel_aggregation.py +3 -0
  76. junifer/markers/reho/__init__.py +3 -0
  77. junifer/markers/reho/_afni_reho.py +3 -0
  78. junifer/markers/reho/_junifer_reho.py +3 -0
  79. junifer/markers/reho/reho_base.py +2 -0
  80. junifer/markers/reho/reho_parcels.py +3 -0
  81. junifer/markers/reho/reho_spheres.py +3 -0
  82. junifer/markers/sphere_aggregation.py +3 -0
  83. junifer/markers/temporal_snr/__init__.py +3 -0
  84. junifer/markers/temporal_snr/temporal_snr_base.py +3 -0
  85. junifer/markers/temporal_snr/temporal_snr_parcels.py +3 -0
  86. junifer/markers/temporal_snr/temporal_snr_spheres.py +3 -0
  87. junifer/onthefly/__init__.py +3 -0
  88. junifer/onthefly/read_transform.py +3 -0
  89. junifer/pipeline/__init__.py +8 -0
  90. junifer/pipeline/pipeline_step_mixin.py +3 -0
  91. junifer/pipeline/registry.py +3 -0
  92. junifer/pipeline/singleton.py +3 -0
  93. junifer/pipeline/update_meta_mixin.py +3 -0
  94. junifer/pipeline/utils.py +3 -0
  95. junifer/pipeline/workdir_manager.py +3 -0
  96. junifer/preprocess/__init__.py +8 -0
  97. junifer/preprocess/base.py +4 -1
  98. junifer/preprocess/confounds/__init__.py +3 -0
  99. junifer/preprocess/confounds/fmriprep_confound_remover.py +3 -0
  100. junifer/preprocess/smoothing/__init__.py +3 -0
  101. junifer/preprocess/warping/__init__.py +3 -0
  102. junifer/preprocess/warping/_ants_warper.py +3 -0
  103. junifer/preprocess/warping/_fsl_warper.py +3 -0
  104. junifer/stats.py +3 -0
  105. junifer/storage/__init__.py +8 -0
  106. junifer/storage/base.py +3 -0
  107. junifer/storage/hdf5.py +3 -0
  108. junifer/storage/pandas_base.py +3 -0
  109. junifer/storage/sqlite.py +3 -0
  110. junifer/storage/utils.py +9 -0
  111. junifer/testing/__init__.py +3 -0
  112. junifer/testing/datagrabbers.py +7 -0
  113. junifer/testing/utils.py +3 -0
  114. junifer/utils/__init__.py +10 -0
  115. junifer/utils/fs.py +3 -0
  116. junifer/utils/helpers.py +3 -0
  117. junifer/utils/logging.py +10 -0
  118. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/METADATA +15 -15
  119. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/RECORD +124 -124
  120. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/AUTHORS.rst +0 -0
  121. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/LICENSE.md +0 -0
  122. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/WHEEL +0 -0
  123. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/entry_points.txt +0 -0
  124. {junifer-0.0.5.dev131.dist-info → junifer-0.0.5.dev152.dist-info}/top_level.txt +0 -0
@@ -25,3 +25,13 @@ else:
25
25
  from .weighted_perm_entropy import WeightedPermEntropy
26
26
  from .sample_entropy import SampleEntropy
27
27
  from .multiscale_entropy_auc import MultiscaleEntropyAUC
28
+
29
+ __all__ = [
30
+ "HurstExponent",
31
+ "RangeEntropy",
32
+ "RangeEntropyAUC",
33
+ "PermEntropy",
34
+ "WeightedPermEntropy",
35
+ "SampleEntropy",
36
+ "MultiscaleEntropyAUC",
37
+ ]
@@ -24,6 +24,9 @@ if TYPE_CHECKING:
24
24
  import numpy as np
25
25
 
26
26
 
27
+ __all__ = ["ComplexityBase"]
28
+
29
+
27
30
  class ComplexityBase(BaseMarker):
28
31
  """Base class for complexity computation.
29
32
 
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["HurstExponent"]
18
+
19
+
17
20
  @register_marker
18
21
  class HurstExponent(ComplexityBase):
19
22
  """Class for Hurst exponent of a time series.
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["MultiscaleEntropyAUC"]
18
+
19
+
17
20
  @register_marker
18
21
  class MultiscaleEntropyAUC(ComplexityBase):
19
22
  """Class for AUC of multiscale entropy of a time series.
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["PermEntropy"]
18
+
19
+
17
20
  @register_marker
18
21
  class PermEntropy(ComplexityBase):
19
22
  """Class for permutation entropy of a time series.
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["RangeEntropy"]
18
+
19
+
17
20
  @register_marker
18
21
  class RangeEntropy(ComplexityBase):
19
22
  """Class for range entropy of a time series.
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["RangeEntropyAUC"]
18
+
19
+
17
20
  @register_marker
18
21
  class RangeEntropyAUC(ComplexityBase):
19
22
  """Class for AUC of range entropy values of a time series over r = 0 to 1.
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["SampleEntropy"]
18
+
19
+
17
20
  @register_marker
18
21
  class SampleEntropy(ComplexityBase):
19
22
  """Class for sample entropy of a time series.
@@ -14,6 +14,7 @@ pytest.importorskip("neurokit2")
14
14
 
15
15
  from junifer.datareader import DefaultDataReader # noqa: E402
16
16
  from junifer.markers.complexity import HurstExponent # noqa: E402
17
+ from junifer.pipeline.utils import _check_ants # noqa: E402
17
18
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
18
19
  from junifer.testing.datagrabbers import ( # noqa: E402
19
20
  SPMAuditoryTestingDataGrabber,
@@ -24,6 +25,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
24
25
  PARCELLATION = "Schaefer100x17"
25
26
 
26
27
 
28
+ @pytest.mark.skipif(
29
+ _check_ants() is False, reason="requires ANTs to be in PATH"
30
+ )
27
31
  def test_compute() -> None:
28
32
  """Test HurstExponent compute()."""
29
33
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -45,6 +49,9 @@ def test_get_output_type() -> None:
45
49
  assert marker.get_output_type("BOLD") == "vector"
46
50
 
47
51
 
52
+ @pytest.mark.skipif(
53
+ _check_ants() is False, reason="requires ANTs to be in PATH"
54
+ )
48
55
  def test_store(tmp_path: Path) -> None:
49
56
  """Test HurstExponent store().
50
57
 
@@ -13,6 +13,7 @@ pytest.importorskip("neurokit2")
13
13
 
14
14
  from junifer.datareader import DefaultDataReader # noqa: E402
15
15
  from junifer.markers.complexity import MultiscaleEntropyAUC # noqa: E402
16
+ from junifer.pipeline.utils import _check_ants # noqa: E402
16
17
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
17
18
  from junifer.testing.datagrabbers import ( # noqa: E402
18
19
  SPMAuditoryTestingDataGrabber,
@@ -23,6 +24,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
23
24
  PARCELLATION = "Schaefer100x17"
24
25
 
25
26
 
27
+ @pytest.mark.skipif(
28
+ _check_ants() is False, reason="requires ANTs to be in PATH"
29
+ )
26
30
  def test_compute() -> None:
27
31
  """Test MultiscaleEntropyAUC compute()."""
28
32
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -44,6 +48,9 @@ def test_get_output_type() -> None:
44
48
  assert marker.get_output_type("BOLD") == "vector"
45
49
 
46
50
 
51
+ @pytest.mark.skipif(
52
+ _check_ants() is False, reason="requires ANTs to be in PATH"
53
+ )
47
54
  def test_store(tmp_path: Path) -> None:
48
55
  """Test MultiscaleEntropyAUC store().
49
56
 
@@ -13,6 +13,7 @@ pytest.importorskip("neurokit2")
13
13
 
14
14
  from junifer.datareader import DefaultDataReader # noqa: E402
15
15
  from junifer.markers.complexity import PermEntropy # noqa: E402
16
+ from junifer.pipeline.utils import _check_ants # noqa: E402
16
17
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
17
18
  from junifer.testing.datagrabbers import ( # noqa: E402
18
19
  SPMAuditoryTestingDataGrabber,
@@ -23,6 +24,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
23
24
  PARCELLATION = "Schaefer100x17"
24
25
 
25
26
 
27
+ @pytest.mark.skipif(
28
+ _check_ants() is False, reason="requires ANTs to be in PATH"
29
+ )
26
30
  def test_compute() -> None:
27
31
  """Test PermEntropy compute()."""
28
32
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -44,6 +48,9 @@ def test_get_output_type() -> None:
44
48
  assert marker.get_output_type("BOLD") == "vector"
45
49
 
46
50
 
51
+ @pytest.mark.skipif(
52
+ _check_ants() is False, reason="requires ANTs to be in PATH"
53
+ )
47
54
  def test_store(tmp_path: Path) -> None:
48
55
  """Test PermEntropy store().
49
56
 
@@ -14,6 +14,7 @@ pytest.importorskip("neurokit2")
14
14
 
15
15
  from junifer.datareader import DefaultDataReader # noqa: E402
16
16
  from junifer.markers.complexity import RangeEntropy # noqa: E402
17
+ from junifer.pipeline.utils import _check_ants # noqa: E402
17
18
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
18
19
  from junifer.testing.datagrabbers import ( # noqa: E402
19
20
  SPMAuditoryTestingDataGrabber,
@@ -24,6 +25,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
24
25
  PARCELLATION = "Schaefer100x17"
25
26
 
26
27
 
28
+ @pytest.mark.skipif(
29
+ _check_ants() is False, reason="requires ANTs to be in PATH"
30
+ )
27
31
  def test_compute() -> None:
28
32
  """Test RangeEntropy compute()."""
29
33
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -45,6 +49,9 @@ def test_get_output_type() -> None:
45
49
  assert marker.get_output_type("BOLD") == "vector"
46
50
 
47
51
 
52
+ @pytest.mark.skipif(
53
+ _check_ants() is False, reason="requires ANTs to be in PATH"
54
+ )
48
55
  def test_store(tmp_path: Path) -> None:
49
56
  """Test RangeEntropy store().
50
57
 
@@ -14,6 +14,7 @@ pytest.importorskip("neurokit2")
14
14
 
15
15
  from junifer.datareader import DefaultDataReader # noqa: E402
16
16
  from junifer.markers.complexity import RangeEntropyAUC # noqa: E402
17
+ from junifer.pipeline.utils import _check_ants # noqa: E402
17
18
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
18
19
  from junifer.testing.datagrabbers import ( # noqa: E402
19
20
  SPMAuditoryTestingDataGrabber,
@@ -24,6 +25,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
24
25
  PARCELLATION = "Schaefer100x17"
25
26
 
26
27
 
28
+ @pytest.mark.skipif(
29
+ _check_ants() is False, reason="requires ANTs to be in PATH"
30
+ )
27
31
  def test_compute() -> None:
28
32
  """Test RangeEntropyAUC compute()."""
29
33
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -45,6 +49,9 @@ def test_get_output_type() -> None:
45
49
  assert marker.get_output_type("BOLD") == "vector"
46
50
 
47
51
 
52
+ @pytest.mark.skipif(
53
+ _check_ants() is False, reason="requires ANTs to be in PATH"
54
+ )
48
55
  def test_store(tmp_path: Path) -> None:
49
56
  """Test RangeEntropyAUC store().
50
57
 
@@ -13,6 +13,7 @@ pytest.importorskip("neurokit2")
13
13
 
14
14
  from junifer.datareader import DefaultDataReader # noqa: E402
15
15
  from junifer.markers.complexity import SampleEntropy # noqa: E402
16
+ from junifer.pipeline.utils import _check_ants # noqa: E402
16
17
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
17
18
  from junifer.testing.datagrabbers import ( # noqa: E402
18
19
  SPMAuditoryTestingDataGrabber,
@@ -23,6 +24,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
23
24
  PARCELLATION = "Schaefer100x17"
24
25
 
25
26
 
27
+ @pytest.mark.skipif(
28
+ _check_ants() is False, reason="requires ANTs to be in PATH"
29
+ )
26
30
  def test_compute() -> None:
27
31
  """Test SampleEntropy compute()."""
28
32
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -44,6 +48,9 @@ def test_get_output_type() -> None:
44
48
  assert marker.get_output_type("BOLD") == "vector"
45
49
 
46
50
 
51
+ @pytest.mark.skipif(
52
+ _check_ants() is False, reason="requires ANTs to be in PATH"
53
+ )
47
54
  def test_store(tmp_path: Path) -> None:
48
55
  """Test SampleEntropy store().
49
56
 
@@ -13,6 +13,7 @@ pytest.importorskip("neurokit2")
13
13
 
14
14
  from junifer.datareader import DefaultDataReader # noqa: E402
15
15
  from junifer.markers.complexity import WeightedPermEntropy # noqa: E402
16
+ from junifer.pipeline.utils import _check_ants # noqa: E402
16
17
  from junifer.storage import SQLiteFeatureStorage # noqa: E402
17
18
  from junifer.testing.datagrabbers import ( # noqa: E402
18
19
  SPMAuditoryTestingDataGrabber,
@@ -23,6 +24,9 @@ from junifer.testing.datagrabbers import ( # noqa: E402
23
24
  PARCELLATION = "Schaefer100x17"
24
25
 
25
26
 
27
+ @pytest.mark.skipif(
28
+ _check_ants() is False, reason="requires ANTs to be in PATH"
29
+ )
26
30
  def test_compute() -> None:
27
31
  """Test WeightedPermEntropy compute()."""
28
32
  with SPMAuditoryTestingDataGrabber() as dg:
@@ -44,6 +48,9 @@ def test_get_output_type() -> None:
44
48
  assert marker.get_output_type("BOLD") == "vector"
45
49
 
46
50
 
51
+ @pytest.mark.skipif(
52
+ _check_ants() is False, reason="requires ANTs to be in PATH"
53
+ )
47
54
  def test_store(tmp_path: Path) -> None:
48
55
  """Test WeightedPermEntropy store().
49
56
 
@@ -14,6 +14,9 @@ from ...utils import logger, warn_with_log
14
14
  from .complexity_base import ComplexityBase
15
15
 
16
16
 
17
+ __all__ = ["WeightedPermEntropy"]
18
+
19
+
17
20
  @register_marker
18
21
  class WeightedPermEntropy(ComplexityBase):
19
22
  """Class for weighted permutation entropy of a time series.
@@ -17,6 +17,9 @@ from .parcel_aggregation import ParcelAggregation
17
17
  from .utils import _ets
18
18
 
19
19
 
20
+ __all__ = ["RSSETSMarker"]
21
+
22
+
20
23
  @register_marker
21
24
  class RSSETSMarker(BaseMarker):
22
25
  """Class for root sum of squares of edgewise timeseries.
@@ -5,3 +5,6 @@
5
5
 
6
6
  from .falff_parcels import ALFFParcels
7
7
  from .falff_spheres import ALFFSpheres
8
+
9
+
10
+ __all__ = ["ALFFParcels", "ALFFSpheres"]
@@ -26,6 +26,9 @@ if TYPE_CHECKING:
26
26
  from nibabel import Nifti1Image
27
27
 
28
28
 
29
+ __all__ = ["AFNIALFF"]
30
+
31
+
29
32
  @singleton
30
33
  class AFNIALFF:
31
34
  """Class for computing ALFF using AFNI.
@@ -27,6 +27,9 @@ if TYPE_CHECKING:
27
27
  from nibabel import Nifti1Image
28
28
 
29
29
 
30
+ __all__ = ["JuniferALFF"]
31
+
32
+
30
33
  @singleton
31
34
  class JuniferALFF:
32
35
  """Class for computing ALFF using junifer.
@@ -29,6 +29,9 @@ if TYPE_CHECKING:
29
29
  from nibabel import Nifti1Image
30
30
 
31
31
 
32
+ __all__ = ["ALFFBase"]
33
+
34
+
32
35
  class ALFFBase(BaseMarker):
33
36
  """Base class for (fractional) Amplitude Low Frequency Fluctuation.
34
37
 
@@ -14,6 +14,9 @@ from ..parcel_aggregation import ParcelAggregation
14
14
  from .falff_base import ALFFBase
15
15
 
16
16
 
17
+ __all__ = ["ALFFParcels"]
18
+
19
+
17
20
  @register_marker
18
21
  class ALFFParcels(ALFFBase):
19
22
  """Class for ALFF / fALFF on parcels.
@@ -14,6 +14,9 @@ from ..sphere_aggregation import SphereAggregation
14
14
  from .falff_base import ALFFBase
15
15
 
16
16
 
17
+ __all__ = ["ALFFSpheres"]
18
+
19
+
17
20
  @register_marker
18
21
  class ALFFSpheres(ALFFBase):
19
22
  """Class for computing ALFF / fALFF on spheres.
@@ -8,3 +8,12 @@ from .functional_connectivity_spheres import FunctionalConnectivitySpheres
8
8
  from .crossparcellation_functional_connectivity import CrossParcellationFC
9
9
  from .edge_functional_connectivity_parcels import EdgeCentricFCParcels
10
10
  from .edge_functional_connectivity_spheres import EdgeCentricFCSpheres
11
+
12
+
13
+ __all__ = [
14
+ "FunctionalConnectivityParcels",
15
+ "FunctionalConnectivitySpheres",
16
+ "CrossParcellationFC",
17
+ "EdgeCentricFCParcels",
18
+ "EdgeCentricFCSpheres",
19
+ ]
@@ -15,6 +15,9 @@ from ..parcel_aggregation import ParcelAggregation
15
15
  from ..utils import _correlate_dataframes
16
16
 
17
17
 
18
+ __all__ = ["CrossParcellationFC"]
19
+
20
+
18
21
  @register_marker
19
22
  class CrossParcellationFC(BaseMarker):
20
23
  """Class for calculating parcel-wise correlations with 2 parcellations.
@@ -12,6 +12,9 @@ from ..utils import _ets
12
12
  from .functional_connectivity_base import FunctionalConnectivityBase
13
13
 
14
14
 
15
+ __all__ = ["EdgeCentricFCParcels"]
16
+
17
+
15
18
  @register_marker
16
19
  class EdgeCentricFCParcels(FunctionalConnectivityBase):
17
20
  """Class for edge-centric FC using parcellations.
@@ -12,6 +12,9 @@ from ..utils import _ets, raise_error
12
12
  from .functional_connectivity_base import FunctionalConnectivityBase
13
13
 
14
14
 
15
+ __all__ = ["EdgeCentricFCSpheres"]
16
+
17
+
15
18
  @register_marker
16
19
  class EdgeCentricFCSpheres(FunctionalConnectivityBase):
17
20
  """Class for edge-centric FC using coordinates (spheres).
@@ -14,6 +14,9 @@ from ...utils import raise_error
14
14
  from ..base import BaseMarker
15
15
 
16
16
 
17
+ __all__ = ["FunctionalConnectivityBase"]
18
+
19
+
17
20
  class FunctionalConnectivityBase(BaseMarker):
18
21
  """Abstract base class for functional connectivity markers.
19
22
 
@@ -12,6 +12,9 @@ from ..parcel_aggregation import ParcelAggregation
12
12
  from .functional_connectivity_base import FunctionalConnectivityBase
13
13
 
14
14
 
15
+ __all__ = ["FunctionalConnectivityParcels"]
16
+
17
+
15
18
  @register_marker
16
19
  class FunctionalConnectivityParcels(FunctionalConnectivityBase):
17
20
  """Class for functional connectivity using parcellations.
@@ -13,6 +13,9 @@ from ..utils import raise_error
13
13
  from .functional_connectivity_base import FunctionalConnectivityBase
14
14
 
15
15
 
16
+ __all__ = ["FunctionalConnectivitySpheres"]
17
+
18
+
16
19
  @register_marker
17
20
  class FunctionalConnectivitySpheres(FunctionalConnectivityBase):
18
21
  """Class for functional connectivity using coordinates (spheres).
@@ -17,6 +17,9 @@ from ..utils import logger, raise_error, warn_with_log
17
17
  from .base import BaseMarker
18
18
 
19
19
 
20
+ __all__ = ["ParcelAggregation"]
21
+
22
+
20
23
  @register_marker
21
24
  class ParcelAggregation(BaseMarker):
22
25
  """Class for parcel aggregation.
@@ -5,3 +5,6 @@
5
5
 
6
6
  from .reho_parcels import ReHoParcels
7
7
  from .reho_spheres import ReHoSpheres
8
+
9
+
10
+ __all__ = ["ReHoParcels", "ReHoSpheres"]
@@ -26,6 +26,9 @@ if TYPE_CHECKING:
26
26
  from nibabel import Nifti1Image
27
27
 
28
28
 
29
+ __all__ = ["AFNIReHo"]
30
+
31
+
29
32
  @singleton
30
33
  class AFNIReHo:
31
34
  """Class for computing ReHo using AFNI.
@@ -28,6 +28,9 @@ if TYPE_CHECKING:
28
28
  from nibabel import Nifti1Image
29
29
 
30
30
 
31
+ __all__ = ["JuniferReHo"]
32
+
33
+
31
34
  @singleton
32
35
  class JuniferReHo:
33
36
  """Class for computing ReHo using junifer.
@@ -26,6 +26,8 @@ from ._junifer_reho import JuniferReHo
26
26
  if TYPE_CHECKING:
27
27
  from nibabel import Nifti1Image
28
28
 
29
+ __all__ = ["ReHoBase"]
30
+
29
31
 
30
32
  class ReHoBase(BaseMarker):
31
33
  """Base class for regional homogeneity computation.
@@ -14,6 +14,9 @@ from ..parcel_aggregation import ParcelAggregation
14
14
  from .reho_base import ReHoBase
15
15
 
16
16
 
17
+ __all__ = ["ReHoParcels"]
18
+
19
+
17
20
  @register_marker
18
21
  class ReHoParcels(ReHoBase):
19
22
  """Class for regional homogeneity on parcels.
@@ -14,6 +14,9 @@ from ..sphere_aggregation import SphereAggregation
14
14
  from .reho_base import ReHoBase
15
15
 
16
16
 
17
+ __all__ = ["ReHoSpheres"]
18
+
19
+
17
20
  @register_marker
18
21
  class ReHoSpheres(ReHoBase):
19
22
  """Class for regional homogeneity on spheres.
@@ -14,6 +14,9 @@ from ..utils import logger, raise_error, warn_with_log
14
14
  from .base import BaseMarker
15
15
 
16
16
 
17
+ __all__ = ["SphereAggregation"]
18
+
19
+
17
20
  @register_marker
18
21
  class SphereAggregation(BaseMarker):
19
22
  """Class for sphere aggregation.
@@ -5,3 +5,6 @@
5
5
 
6
6
  from .temporal_snr_parcels import TemporalSNRParcels
7
7
  from .temporal_snr_spheres import TemporalSNRSpheres
8
+
9
+
10
+ __all__ = ["TemporalSNRParcels", "TemporalSNRSpheres"]
@@ -13,6 +13,9 @@ from ...utils import raise_error
13
13
  from ..base import BaseMarker
14
14
 
15
15
 
16
+ __all__ = ["TemporalSNRBase"]
17
+
18
+
16
19
  class TemporalSNRBase(BaseMarker):
17
20
  """Abstract base class for temporal SNR markers.
18
21
 
@@ -10,6 +10,9 @@ from ..parcel_aggregation import ParcelAggregation
10
10
  from .temporal_snr_base import TemporalSNRBase
11
11
 
12
12
 
13
+ __all__ = ["TemporalSNRParcels"]
14
+
15
+
13
16
  @register_marker
14
17
  class TemporalSNRParcels(TemporalSNRBase):
15
18
  """Class for temporal signal-to-noise ratio using parcellations.
@@ -11,6 +11,9 @@ from ..utils import raise_error
11
11
  from .temporal_snr_base import TemporalSNRBase
12
12
 
13
13
 
14
+ __all__ = ["TemporalSNRSpheres"]
15
+
16
+
14
17
  @register_marker
15
18
  class TemporalSNRSpheres(TemporalSNRBase):
16
19
  """Class for temporal signal-to-noise ratio using coordinates (spheres).
@@ -4,3 +4,6 @@
4
4
  # License: AGPL
5
5
 
6
6
  from .read_transform import read_transform
7
+
8
+
9
+ __all__ = ["read_transform"]
@@ -15,6 +15,9 @@ if TYPE_CHECKING:
15
15
  from junifer.storage import BaseFeatureStorage
16
16
 
17
17
 
18
+ __all__ = ["read_transform"]
19
+
20
+
18
21
  def read_transform(
19
22
  storage: Type["BaseFeatureStorage"],
20
23
  transform: str,
@@ -7,3 +7,11 @@ from . import registry
7
7
  from .pipeline_step_mixin import PipelineStepMixin
8
8
  from .update_meta_mixin import UpdateMetaMixin
9
9
  from .workdir_manager import WorkDirManager
10
+
11
+
12
+ __all__ = [
13
+ "registry",
14
+ "PipelineStepMixin",
15
+ "UpdateMetaMixin",
16
+ "WorkDirManager",
17
+ ]
@@ -17,6 +17,9 @@ from ..utils import raise_error
17
17
  from .utils import check_ext_dependencies
18
18
 
19
19
 
20
+ __all__ = ["PipelineStepMixin"]
21
+
22
+
20
23
  class PipelineStepMixin:
21
24
  """Mixin class for a pipeline step."""
22
25
 
@@ -16,6 +16,9 @@ if TYPE_CHECKING:
16
16
  from .pipeline_step_mixin import PipelineStepMixin
17
17
 
18
18
 
19
+ __all__ = ["register", "get_step_names", "get_class", "build"]
20
+
21
+
19
22
  # Define valid steps for operation
20
23
  _VALID_STEPS: List[str] = [
21
24
  "datagrabber",
@@ -6,6 +6,9 @@
6
6
  from typing import Any, Dict, Type
7
7
 
8
8
 
9
+ __all__ = ["singleton"]
10
+
11
+
9
12
  def singleton(cls: Type) -> Type:
10
13
  """Make a class singleton.
11
14
 
@@ -7,6 +7,9 @@
7
7
  from typing import Dict
8
8
 
9
9
 
10
+ __all__ = ["UpdateMetaMixin"]
11
+
12
+
10
13
  class UpdateMetaMixin:
11
14
  """Mixin class for updating meta."""
12
15