careamics 0.1.0rc4__py3-none-any.whl → 0.1.0rc5__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.

Potentially problematic release.


This version of careamics might be problematic. Click here for more details.

Files changed (62) hide show
  1. careamics/careamist.py +12 -11
  2. careamics/config/__init__.py +0 -1
  3. careamics/config/architectures/unet_model.py +1 -0
  4. careamics/config/callback_model.py +1 -0
  5. careamics/config/configuration_example.py +0 -2
  6. careamics/config/configuration_factory.py +112 -42
  7. careamics/config/configuration_model.py +14 -16
  8. careamics/config/data_model.py +59 -157
  9. careamics/config/inference_model.py +19 -20
  10. careamics/config/references/algorithm_descriptions.py +1 -0
  11. careamics/config/references/references.py +1 -0
  12. careamics/config/support/supported_extraction_strategies.py +1 -0
  13. careamics/config/training_model.py +1 -0
  14. careamics/config/transformations/n2v_manipulate_model.py +1 -0
  15. careamics/config/transformations/nd_flip_model.py +6 -11
  16. careamics/config/transformations/normalize_model.py +1 -0
  17. careamics/config/transformations/transform_model.py +1 -0
  18. careamics/config/transformations/xy_random_rotate90_model.py +6 -8
  19. careamics/config/validators/validator_utils.py +1 -0
  20. careamics/conftest.py +1 -0
  21. careamics/dataset/dataset_utils/__init__.py +0 -1
  22. careamics/dataset/dataset_utils/dataset_utils.py +1 -0
  23. careamics/dataset/in_memory_dataset.py +14 -45
  24. careamics/dataset/iterable_dataset.py +13 -68
  25. careamics/dataset/patching/__init__.py +0 -7
  26. careamics/dataset/patching/patching.py +1 -0
  27. careamics/dataset/patching/sequential_patching.py +6 -6
  28. careamics/dataset/patching/tiled_patching.py +10 -6
  29. careamics/lightning_datamodule.py +20 -24
  30. careamics/lightning_module.py +1 -1
  31. careamics/lightning_prediction_datamodule.py +15 -10
  32. careamics/losses/__init__.py +0 -1
  33. careamics/losses/loss_factory.py +1 -0
  34. careamics/model_io/__init__.py +0 -1
  35. careamics/model_io/bioimage/_readme_factory.py +2 -1
  36. careamics/model_io/bioimage/bioimage_utils.py +1 -0
  37. careamics/model_io/bioimage/model_description.py +1 -0
  38. careamics/model_io/bmz_io.py +2 -1
  39. careamics/models/layers.py +1 -0
  40. careamics/models/model_factory.py +1 -0
  41. careamics/models/unet.py +91 -17
  42. careamics/prediction/stitch_prediction.py +1 -0
  43. careamics/transforms/__init__.py +2 -23
  44. careamics/transforms/compose.py +98 -0
  45. careamics/transforms/n2v_manipulate.py +18 -23
  46. careamics/transforms/nd_flip.py +38 -64
  47. careamics/transforms/normalize.py +45 -34
  48. careamics/transforms/pixel_manipulation.py +2 -2
  49. careamics/transforms/transform.py +33 -0
  50. careamics/transforms/tta.py +2 -2
  51. careamics/transforms/xy_random_rotate90.py +41 -68
  52. careamics/utils/__init__.py +0 -1
  53. careamics/utils/context.py +1 -0
  54. careamics/utils/logging.py +1 -0
  55. careamics/utils/metrics.py +1 -0
  56. careamics/utils/torch_utils.py +1 -0
  57. {careamics-0.1.0rc4.dist-info → careamics-0.1.0rc5.dist-info}/METADATA +16 -61
  58. careamics-0.1.0rc5.dist-info/RECORD +111 -0
  59. careamics/dataset/patching/patch_transform.py +0 -44
  60. careamics-0.1.0rc4.dist-info/RECORD +0 -110
  61. {careamics-0.1.0rc4.dist-info → careamics-0.1.0rc5.dist-info}/WHEEL +0 -0
  62. {careamics-0.1.0rc4.dist-info → careamics-0.1.0rc5.dist-info}/licenses/LICENSE +0 -0
@@ -1,14 +1,15 @@
1
- from typing import Any
1
+ from typing import Optional, Tuple
2
2
 
3
3
  import numpy as np
4
- from albumentations import DualTransform
5
4
 
5
+ from careamics.transforms.transform import Transform
6
6
 
7
- class Normalize(DualTransform):
7
+
8
+ class Normalize(Transform):
8
9
  """
9
10
  Normalize an image or image patch.
10
11
 
11
- Normalization is a zero mean and unit variance. This transform expects (Z)YXC
12
+ Normalization is a zero mean and unit variance. This transform expects C(Z)YX
12
13
  dimensions.
13
14
 
14
15
  Not that an epsilon value of 1e-6 is added to the standard deviation to avoid
@@ -20,8 +21,6 @@ class Normalize(DualTransform):
20
21
  Mean value.
21
22
  std : float
22
23
  Standard deviation value.
23
- eps : float
24
- Epsilon value to avoid division by zero.
25
24
  """
26
25
 
27
26
  def __init__(
@@ -29,48 +28,42 @@ class Normalize(DualTransform):
29
28
  mean: float,
30
29
  std: float,
31
30
  ):
32
- super().__init__(always_apply=True, p=1)
33
-
34
31
  self.mean = mean
35
32
  self.std = std
36
33
  self.eps = 1e-6
37
34
 
38
- def apply(self, patch: np.ndarray, **kwargs: Any) -> np.ndarray:
39
- """
40
- Apply the transform to the image.
35
+ def __call__(
36
+ self, patch: np.ndarray, target: Optional[np.ndarray] = None
37
+ ) -> Tuple[np.ndarray, Optional[np.ndarray]]:
38
+ """Apply the transform to the source patch and the target (optional).
41
39
 
42
40
  Parameters
43
41
  ----------
44
42
  patch : np.ndarray
45
- Image or image patch, 2D or 3D, shape (y, x, c) or (z, y, x, c).
43
+ Patch, 2D or 3D, shape C(Z)YX.
44
+ target : Optional[np.ndarray], optional
45
+ Target for the patch, by default None
46
46
 
47
47
  Returns
48
48
  -------
49
- np.ndarray
50
- Normalized image or image patch.
49
+ Tuple[np.ndarray, Optional[np.ndarray]]
50
+ Transformed patch and target.
51
51
  """
52
- return ((patch - self.mean) / (self.std + self.eps)).astype(np.float32)
52
+ norm_patch = self._apply(patch)
53
+ norm_target = self._apply(target) if target is not None else None
53
54
 
54
- def apply_to_mask(self, mask: np.ndarray, **kwargs: Any) -> np.ndarray:
55
- """
56
- Apply the transform to the mask.
55
+ return norm_patch, norm_target
57
56
 
58
- The mask is returned as is.
59
-
60
- Parameters
61
- ----------
62
- mask : np.ndarray
63
- Mask or mask patch, 2D or 3D, shape (y, x, c) or (z, y, x, c).
64
- """
65
- return mask
57
+ def _apply(self, patch: np.ndarray) -> np.ndarray:
58
+ return ((patch - self.mean) / (self.std + self.eps)).astype(np.float32)
66
59
 
67
60
 
68
- class Denormalize(DualTransform):
61
+ class Denormalize:
69
62
  """
70
63
  Denormalize an image or image patch.
71
64
 
72
65
  Denormalization is performed expecting a zero mean and unit variance input. This
73
- transform expects (Z)YXC dimensions.
66
+ transform expects C(Z)YX dimensions.
74
67
 
75
68
  Not that an epsilon value of 1e-6 is added to the standard deviation to avoid
76
69
  division by zero during the normalization step, which is taken into account during
@@ -82,8 +75,6 @@ class Denormalize(DualTransform):
82
75
  Mean value.
83
76
  std : float
84
77
  Standard deviation value.
85
- eps : float
86
- Epsilon value to avoid division by zero.
87
78
  """
88
79
 
89
80
  def __init__(
@@ -91,19 +82,39 @@ class Denormalize(DualTransform):
91
82
  mean: float,
92
83
  std: float,
93
84
  ):
94
- super().__init__(always_apply=True, p=1)
95
-
96
85
  self.mean = mean
97
86
  self.std = std
98
87
  self.eps = 1e-6
99
88
 
100
- def apply(self, patch: np.ndarray, **kwargs: Any) -> np.ndarray:
89
+ def __call__(
90
+ self, patch: np.ndarray, target: Optional[np.ndarray] = None
91
+ ) -> Tuple[np.ndarray, Optional[np.ndarray]]:
92
+ """Apply the transform to the source patch and the target (optional).
93
+
94
+ Parameters
95
+ ----------
96
+ patch : np.ndarray
97
+ Patch, 2D or 3D, shape C(Z)YX.
98
+ target : Optional[np.ndarray], optional
99
+ Target for the patch, by default None
100
+
101
+ Returns
102
+ -------
103
+ Tuple[np.ndarray, Optional[np.ndarray]]
104
+ Transformed patch and target.
105
+ """
106
+ norm_patch = self._apply(patch)
107
+ norm_target = self._apply(target) if target is not None else None
108
+
109
+ return norm_patch, norm_target
110
+
111
+ def _apply(self, patch: np.ndarray) -> np.ndarray:
101
112
  """
102
113
  Apply the transform to the image.
103
114
 
104
115
  Parameters
105
116
  ----------
106
117
  patch : np.ndarray
107
- Image or image patch, 2D or 3D, shape (y, x, c) or (z, y, x, c).
118
+ Image or image patch, 2D or 3D, shape C(Z)YX.
108
119
  """
109
120
  return patch * (self.std + self.eps) + self.mean
@@ -4,6 +4,7 @@ Pixel manipulation methods.
4
4
  Pixel manipulation is used in N2V and similar algorithm to replace the value of
5
5
  masked pixels.
6
6
  """
7
+
7
8
  from typing import Optional, Tuple, Union
8
9
 
9
10
  import numpy as np
@@ -246,8 +247,7 @@ def uniform_manipulate(
246
247
  subpatch_size : int
247
248
  Size of the subpatch the new pixel value is sampled from, by default 11.
248
249
  remove_center : bool
249
- Whether to remove the center pixel from the subpatch, by default False. See
250
- uniform with/without central pixel in the documentation. #TODO add link
250
+ Whether to remove the center pixel from the subpatch, by default False.
251
251
  struct_params: Optional[StructMaskParameters]
252
252
  Parameters for the structN2V mask (axis and span).
253
253
 
@@ -0,0 +1,33 @@
1
+ """A general parent class for transforms."""
2
+
3
+ from typing import Optional, Tuple
4
+
5
+ import numpy as np
6
+
7
+
8
+ class Transform:
9
+ """A general parent class for transforms."""
10
+
11
+ def __call__(
12
+ self, patch: np.ndarray, target: Optional[np.ndarray] = None
13
+ ) -> Tuple[np.ndarray, ...]:
14
+ """Apply the transform to the input data.
15
+
16
+ Parameters
17
+ ----------
18
+ patch : np.ndarray
19
+ The input data to transform.
20
+ target : Optional[np.ndarray], optional
21
+ The target data to transform, by default None
22
+
23
+ Returns
24
+ -------
25
+ Tuple[np.ndarray, ...]
26
+ The output of the transformations.
27
+
28
+ Raises
29
+ ------
30
+ NotImplementedError
31
+ This method should be implemented in the child class.
32
+ """
33
+ raise NotImplementedError
@@ -1,7 +1,7 @@
1
1
  """Test-time augmentations."""
2
+
2
3
  from typing import List
3
4
 
4
- import numpy as np
5
5
  from torch import Tensor, flip, mean, rot90, stack
6
6
 
7
7
 
@@ -48,7 +48,7 @@ class ImageRestorationTTA:
48
48
  augmented_flip.append(flip(x_, dims=(-3, -1)))
49
49
  return augmented_flip
50
50
 
51
- def backward(self, x: List[Tensor]) -> np.ndarray:
51
+ def backward(self, x: List[Tensor]) -> Tensor:
52
52
  """Undo the test-time augmentation.
53
53
 
54
54
  Parameters
@@ -1,95 +1,68 @@
1
- from typing import Any, Dict, Tuple
1
+ from typing import Optional, Tuple
2
2
 
3
3
  import numpy as np
4
- from albumentations import DualTransform
5
4
 
5
+ from careamics.transforms.transform import Transform
6
6
 
7
- class XYRandomRotate90(DualTransform):
8
- """Applies random 90 degree rotations to the YX axis.
9
7
 
10
- This transform expects (Z)YXC dimensions.
8
+ class XYRandomRotate90(Transform):
9
+ """Applies random 90 degree rotations to the YX axis.
11
10
 
12
- Parameters
13
- ----------
14
- p : int, optional
15
- Probability to apply the transform, by default 0.5
16
- is_3D : bool, optional
17
- Whether the patches are 3D, by default False
11
+ This transform expects C(Z)YX dimensions.
18
12
  """
19
13
 
20
- def __init__(self, p: float = 0.5, is_3D: bool = False):
14
+ def __init__(self, seed: Optional[int] = None):
21
15
  """Constructor.
22
16
 
23
17
  Parameters
24
18
  ----------
25
- p : float, optional
26
- Probability to apply the transform, by default 0.5
27
- is_3D : bool, optional
28
- Whether the patches are 3D, by default False
19
+ seed : Optional[int], optional
20
+ Random seed, by default None
29
21
  """
30
- super().__init__(p=p)
31
-
32
- self.is_3D = is_3D
22
+ # numpy random generator
23
+ self.rng = np.random.default_rng(seed=seed)
33
24
 
34
- # rotation axes
35
- if is_3D:
36
- self.axes = (1, 2)
37
- else:
38
- self.axes = (0, 1)
25
+ def __call__(
26
+ self, patch: np.ndarray, target: Optional[np.ndarray] = None
27
+ ) -> Tuple[np.ndarray, Optional[np.ndarray]]:
28
+ """Apply the transform to the source patch and the target (optional).
39
29
 
40
- def get_params(self, **kwargs: Any) -> Dict[str, int]:
41
- """Get the transform parameters.
30
+ Parameters
31
+ ----------
32
+ patch : np.ndarray
33
+ Patch, 2D or 3D, shape C(Z)YX.
34
+ target : Optional[np.ndarray], optional
35
+ Target for the patch, by default None
42
36
 
43
37
  Returns
44
38
  -------
45
- Dict[str, int]
46
- Transform parameters.
39
+ Tuple[np.ndarray, Optional[np.ndarray]]
40
+ Transformed patch and target.
47
41
  """
48
- return {"n_rotations": np.random.randint(1, 4)}
42
+ # number of rotations
43
+ n_rot = self.rng.integers(1, 4)
49
44
 
50
- def apply(self, patch: np.ndarray, n_rotations: int, **kwargs: Any) -> np.ndarray:
51
- """Apply the transform to the image.
45
+ axes = (-2, -1)
46
+ patch_transformed = self._apply(patch, n_rot, axes)
47
+ target_transformed = (
48
+ self._apply(target, n_rot, axes) if target is not None else None
49
+ )
52
50
 
53
- Parameters
54
- ----------
55
- patch : np.ndarray
56
- Image or image patch, 2D or 3D, shape (y, x, c) or (z, y, x, c).
57
- flip_axis : int
58
- Axis along which to flip the patch.
59
- """
60
- if len(patch.shape) == 3 and self.is_3D:
61
- raise ValueError(
62
- "Incompatible patch shape and dimensionality. ZYXC patch shape "
63
- "expected, but got YXC shape."
64
- )
51
+ return patch_transformed, target_transformed
65
52
 
66
- return np.ascontiguousarray(np.rot90(patch, k=n_rotations, axes=self.axes))
67
-
68
- def apply_to_mask(
69
- self, mask: np.ndarray, n_rotations: int, **kwargs: Any
53
+ def _apply(
54
+ self, patch: np.ndarray, n_rot: int, axes: Tuple[int, int]
70
55
  ) -> np.ndarray:
71
- """Apply the transform to the mask.
56
+ """Apply the transform to the image.
72
57
 
73
58
  Parameters
74
59
  ----------
75
- mask : np.ndarray
76
- Mask or mask patch, 2D or 3D, shape (y, x, c) or (z, y, x, c).
77
- """
78
- if len(mask.shape) != 4 and self.is_3D:
79
- raise ValueError(
80
- "Incompatible mask shape and dimensionality. ZYXC patch shape "
81
- "expected, but got YXC shape."
82
- )
83
-
84
- return np.ascontiguousarray(np.rot90(mask, k=n_rotations, axes=self.axes))
85
-
86
- def get_transform_init_args_names(self) -> Tuple[str, str]:
87
- """
88
- Get the transform arguments.
89
-
90
- Returns
91
- -------
92
- Tuple[str]
93
- Transform arguments.
60
+ patch : np.ndarray
61
+ Image or image patch, 2D or 3D, shape C(Z)YX.
62
+ n_rot : int
63
+ Number of 90 degree rotations.
64
+ axes : Tuple[int, int]
65
+ Axes along which to rotate the patch.
94
66
  """
95
- return ("p", "is_3D")
67
+ # TODO why ascontiguousarray?
68
+ return np.ascontiguousarray(np.rot90(patch, k=n_rot, axes=axes))
@@ -1,6 +1,5 @@
1
1
  """Utils module."""
2
2
 
3
-
4
3
  __all__ = [
5
4
  "cwd",
6
5
  "get_ram_size",
@@ -3,6 +3,7 @@ Context submodule.
3
3
 
4
4
  A convenience function to change the working directory in order to save data.
5
5
  """
6
+
6
7
  import os
7
8
  from contextlib import contextmanager
8
9
  from pathlib import Path
@@ -3,6 +3,7 @@ Logging submodule.
3
3
 
4
4
  The methods are responsible for the in-console logger.
5
5
  """
6
+
6
7
  import logging
7
8
  import sys
8
9
  import time
@@ -3,6 +3,7 @@ Metrics submodule.
3
3
 
4
4
  This module contains various metrics and a metrics tracking class.
5
5
  """
6
+
6
7
  from typing import Union
7
8
 
8
9
  import numpy as np
@@ -3,6 +3,7 @@ Convenience functions using torch.
3
3
 
4
4
  These functions are used to control certain aspects and behaviours of PyTorch.
5
5
  """
6
+
6
7
  import inspect
7
8
  from typing import Dict, Union
8
9
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: careamics
3
- Version: 0.1.0rc4
3
+ Version: 0.1.0rc5
4
4
  Summary: Toolbox for running N2V and friends.
5
5
  Project-URL: homepage, https://careamics.github.io/
6
6
  Project-URL: repository, https://github.com/CAREamics/careamics
@@ -16,7 +16,6 @@ Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Typing :: Typed
18
18
  Requires-Python: >=3.8
19
- Requires-Dist: albumentations
20
19
  Requires-Dist: bioimageio-core>=0.6.0
21
20
  Requires-Dist: psutil
22
21
  Requires-Dist: pydantic>=2.5
@@ -48,7 +47,7 @@ Description-Content-Type: text/markdown
48
47
  </a>
49
48
  </p>
50
49
 
51
- # CAREamics Restoration
50
+ # CAREamics
52
51
 
53
52
  [![License](https://img.shields.io/pypi/l/careamics.svg?color=green)](https://github.com/CAREamics/careamics/blob/main/LICENSE)
54
53
  [![PyPI](https://img.shields.io/pypi/v/careamics.svg?color=green)](https://pypi.org/project/careamics)
@@ -56,67 +55,23 @@ Description-Content-Type: text/markdown
56
55
  [![CI](https://github.com/CAREamics/careamics/actions/workflows/ci.yml/badge.svg)](https://github.com/CAREamics/careamics/actions/workflows/ci.yml)
57
56
  [![codecov](https://codecov.io/gh/CAREamics/careamics/branch/main/graph/badge.svg)](https://codecov.io/gh/CAREamics/careamics)
58
57
 
59
- ## Installation
60
58
 
61
- ``` bash
62
- pip install careamics
63
- ```
64
- For more details on the options please follow the installation [guide](https://careamics.github.io/careamics/).
59
+ CAREamics is a PyTorch library aimed at simplifying the use of Noise2Void and its many
60
+ variants and cousins (CARE, Noise2Noise, N2V2, P(P)N2V, HDN, muSplit etc.).
65
61
 
66
- ## Usage
62
+ ## Why CAREamics?
67
63
 
68
- CAREamics uses the Engine object to construct the pipeline for both training and prediction. First we import the Engine.
69
- ```python
70
- from careamics_restoration.engine import Engine
71
- ```
72
- The Engine could be initialized in 2 ways:
73
- 1. Using the [yaml config](examples/n2v_2D_reference.yml) file
64
+ Noise2Void is a widely used denoising algorithm, and is readily available from the `n2v`
65
+ python package. However, n2v is based on TensorFlow and Keras and we found it
66
+ increasingly hard to maintain. In addition, more recent methods (PPN2V, DivNoising,
67
+ HDN) are all implemented in PyTorch, but are lacking the extra features that would make
68
+ them usable by the community.
74
69
 
75
- Specify the mandatory parameters in the config file
76
- ```yaml
77
- experiment_name: Name of the experiment
78
- working_directory: Path to the working directory, where all the outputs will be stored
70
+ The aim of CAREamics is to provide a PyTorch library reuniting all the latest methods
71
+ in one package, while providing a simple and consistent API. The library relies on
72
+ PyTorch Lightning as a back-end. In addition, we will provide extensive documentation and
73
+ tutorials on how to best apply these methods in a scientific context.
79
74
 
80
- algorithm:
81
- loss: type of loss function, e.g. n2v for Noise2Void
82
- model: model architecture, e.g. UNet
83
- is_3D: True if 3D data, False if 2D data
84
-
85
- training:
86
- num_epochs: Number of training epochs
87
- patch_size: Size of the patches, List of 2 or 3 elements
88
- batch_size: Batch size for training
89
-
90
- extraction_strategy: Controls how the patches are extracted from the data
91
-
92
- data:
93
- data_format: File extension, e.g. tif
94
- axes: Defines the shape of the input data
95
- ```
96
- Full description of the configuration parameters is in the [documentation](https://careamics.github.io/careamics/).
97
-
98
-
99
- ```python
100
- engine = Engine(config_path="config.yml")
101
-
102
- ```
103
- 2. Using the path to the pretrained model
104
- It's also possible to initialize the Engine using the model checkpoint, saved during the training or downloaded from the [BioImage Model Zoo](https://bioimage.io/#/).
105
- Checkpoint must contain model_state_dict.
106
- Read more abount saving and loading models in the [documentation](https://careamics.github.io/careamics/).
107
-
108
- Once Engine is initialized, we can start training, providing the relative paths to train and validation data
109
-
110
- ```python
111
- engine.train(train_path=train_path, val_path=val_path)
112
- ```
113
- Training will run for the specified number of epochs and save the model checkpoint in the working directory.
114
-
115
- Prediction could be done directly after the training or by loading the pretrained model checkpoint.
116
-
117
- ```python
118
- predictions = engine.predict(pred_path=predict_path)
119
- ```
120
-
121
- For more examples please take a look at the [notebooks](examples).
75
+ ## Installation and use
122
76
 
77
+ Check out the [documentation](https://careamics.github.io/) for installation instructions and guides!
@@ -0,0 +1,111 @@
1
+ careamics/__init__.py,sha256=DkMGt4t9ua0gCgvZFEtb6eydvoxG976T0KUro8KnDNA,760
2
+ careamics/careamist.py,sha256=SI-ZQCzw3nAnsUONcaBDoX9CC5P_vfUU-y7LmUn448o,28755
3
+ careamics/conftest.py,sha256=mKIH8SQGO_MMynAQAtqjHkTIQ5KDtY_vKKfFB5F3vmU,659
4
+ careamics/lightning_datamodule.py,sha256=z88iqh_P5J1mWEHlL11JAs7FxWHgOP2TQJM_5zZvLV0,31661
5
+ careamics/lightning_module.py,sha256=DcZ2wja3Pyfd4XBISbXCOhqoFRzJRpBjhWUG2xYVnz4,10168
6
+ careamics/lightning_prediction_datamodule.py,sha256=vrNcTlmu0bKqDOn89DaQGxBm4tH2FP2rmVx7W1tRjyI,15517
7
+ careamics/lightning_prediction_loop.py,sha256=EcUSgM2BHkWhjR4zN0NNf2M8xQF_I3aQ9qAFk0slYYw,4483
8
+ careamics/py.typed,sha256=esB4cHc6c07uVkGtqf8at7ttEnprwRxwk8obY8Qumq4,187
9
+ careamics/callbacks/__init__.py,sha256=spxJlDByD-6QtMl9vcIty8Wb0tyHaSTKTItozHenI44,204
10
+ careamics/callbacks/hyperparameters_callback.py,sha256=CdOtxazXi6YXH3Fq4AahqBQ3Ai64YpAMkd8gFnAnkjc,1258
11
+ careamics/callbacks/progress_bar_callback.py,sha256=ojeat3wwaqq7uEAVZBren71CZtNiEch1FR7o8FiaEPg,1868
12
+ careamics/config/__init__.py,sha256=SP1oJKhK3VDN9ABwnpfR3H02qRprzymjRfNYeC7kHEo,1019
13
+ careamics/config/algorithm_model.py,sha256=7Y7-kr9Bc-cCOiavJ6vzahYTdlLZcLZo7FvKOPFZoWg,5732
14
+ careamics/config/callback_model.py,sha256=MAliEULQOTTAFJSXqqR9dlCQdJtknWjkCY3RkhknR2o,3226
15
+ careamics/config/configuration_example.py,sha256=g-y3HTsxz_q-UQ-11aLoprpbc6BjD1dD1gq7PsRgc0Q,2541
16
+ careamics/config/configuration_factory.py,sha256=SBJKjfxHwrxRfRxSfS7xHtWdet-kZbZnlZla-JZQT_I,21734
17
+ careamics/config/configuration_model.py,sha256=j7QryeMNQAsD_0byb81u99Oek2uyj3Syr0nUepFYTe8,18494
18
+ careamics/config/data_model.py,sha256=ueGsuAeH2OZs6Jt7SKDiH26OTU5A9iYcWVwcJ1KSN5s,12946
19
+ careamics/config/inference_model.py,sha256=sZzpsqQBwp8crsluTID3SdT1_gJ9p7gtkT5AsfUnpOs,7909
20
+ careamics/config/noise_models.py,sha256=1P6dXqqBhbVHT7EZ2hluO2aHKIywkAyl4BndrvtKRKU,4338
21
+ careamics/config/optimizer_models.py,sha256=Umu6O2qKv1o4ReWBuldAHmvF0u_DKS5eHCa7YdxvOaw,5266
22
+ careamics/config/tile_information.py,sha256=2bVLTvZfdjPOZVq7jYXVuAFLlPFmJ2DBiwtwm5n7K-U,2939
23
+ careamics/config/training_model.py,sha256=oghv91J7xIdI69wpNJGmLUAwgM9l3VhMsbsOo4USqkU,1559
24
+ careamics/config/architectures/__init__.py,sha256=CdnViydyTdQixus3uWHBIgbgxmu9t1_ADehqpjN_57U,444
25
+ careamics/config/architectures/architecture_model.py,sha256=EomNAhjuhu3uqEjzG6uvRclSQNVuGkcH_mt4R47yIHg,681
26
+ careamics/config/architectures/custom_model.py,sha256=2tMvr6XqFY8hY8Tfljba-kp1c61fDKaV4vylbg4AyUg,4473
27
+ careamics/config/architectures/register_model.py,sha256=sW6fvj54F6G1rg3fmXTwCAu_YcKs3xZTsdYnDGFRahY,2389
28
+ careamics/config/architectures/unet_model.py,sha256=frQp5nWPF0v9X4lR7Y7-KjbmBS1-FIpVVCKCBpIQ5VM,2864
29
+ careamics/config/architectures/vae_model.py,sha256=n1pvVmpelNqQXsXtxXPdmMBBkCLyMIlTQJbMqB-amCc,899
30
+ careamics/config/references/__init__.py,sha256=rZAQzmrciX5cNICcXaBH6sbE6N6L7_qYQUkasNy9y-c,763
31
+ careamics/config/references/algorithm_descriptions.py,sha256=wR3hIoeg5eiUEPbwTxMpQYLTKQyRl_5naSDbBZOZESU,3541
32
+ careamics/config/references/references.py,sha256=AXx08FJQxHb7SYOluCr_eQn_mbOris5dXqhKrCnhBTE,1573
33
+ careamics/config/support/__init__.py,sha256=XMnPEPHVy63DDxAfczIFqFjuYrtDRrbzA5b0Ff1qmyU,1149
34
+ careamics/config/support/supported_activations.py,sha256=-KaTxdm8IJ9c6xkCVMw3SWjbw6wmvV-1WuoeSbyCdH4,476
35
+ careamics/config/support/supported_algorithms.py,sha256=wc3pTYhgoZ0W_O6jcJY0ZsVErYMSTmi24ptw3ezAuUw,316
36
+ careamics/config/support/supported_architectures.py,sha256=EDrh8eghqxWcwjXVhhJpfymV6dsmyaUxk2E397VXXbA,495
37
+ careamics/config/support/supported_data.py,sha256=AvdoWVLLpX5jzozJGUqeo5EJVkb6Z_OcQbaS8AkyHSg,2048
38
+ careamics/config/support/supported_extraction_strategies.py,sha256=aMh6pTcEpvtSN1-gls9DN58SEzHEkHJxxI_tGMh8_X0,579
39
+ careamics/config/support/supported_loggers.py,sha256=slbpUZSMdRMCKNAQfnCxh7n1Sql2NFoH79cIoiuavcU,159
40
+ careamics/config/support/supported_losses.py,sha256=fu0SPPhubMVq3zXJk8G8Av9ojWNw62EKm7WnUmapuRs,502
41
+ careamics/config/support/supported_optimizers.py,sha256=Y_Ns3DijRU9xUoY54AMm0VEeIx0ntS_4UkpyBKaSSl4,1337
42
+ careamics/config/support/supported_pixel_manipulations.py,sha256=0lZfCwL9bwPK5E8qzi7l9UGOq41U2fCH9KpxnDEpznc,360
43
+ careamics/config/support/supported_struct_axis.py,sha256=VzyKEVwNARtF9HviAmsHqAjyenHCRFR5UObks6s6R9Y,378
44
+ careamics/config/support/supported_transforms.py,sha256=7lF2ZdWC7Fa7ExemQ6JzM9s9RXM0_tsGWilmmq-MoMw,889
45
+ careamics/config/transformations/__init__.py,sha256=FnLBxNyJ0cTPf8e1dhtkhks5vu_z8Wi48aBjvAPDErk,357
46
+ careamics/config/transformations/n2v_manipulate_model.py,sha256=UTyfpm1mmMvYg_HoMzXilZhJGx_muiV-lLQ4UThCFJ0,1854
47
+ careamics/config/transformations/nd_flip_model.py,sha256=ooQdHZdHQdeAuOJolTArw2hpSIF_NSxc9bqAItsjWy4,586
48
+ careamics/config/transformations/normalize_model.py,sha256=fua-JAcfNdTuikERreaR_0mz9ExsYSDJ7mUgIDl-U0M,804
49
+ careamics/config/transformations/transform_model.py,sha256=i7KAtSv4nah2H7uyJFKqg7RdKF68OHIPMNNvDo0HxGY,1000
50
+ careamics/config/transformations/xy_random_rotate90_model.py,sha256=G9WsuZ02OnpiBeYEPGhEryRiuEvITwVYrohYfEuhhYE,636
51
+ careamics/config/validators/__init__.py,sha256=iv0nVI0W7j9DxFPwh0DjRCzM9P8oLQn4Gwi5rfuFrrI,180
52
+ careamics/config/validators/validator_utils.py,sha256=H11pttfXFdnlUw9FFIgPWy3sxO1ks38dtmYAS6Kl9-c,2624
53
+ careamics/dataset/__init__.py,sha256=cUcqy1Nxa5WhDQim6948r3i1kGQ-HijUqAACyyM7cuU,174
54
+ careamics/dataset/in_memory_dataset.py,sha256=1LmI0aeRalacBkdI1tcoQPWJhi7p9iqUILSa8QaYWZc,10900
55
+ careamics/dataset/iterable_dataset.py,sha256=KDm66o_AFVY2e6eCnydvT16zAeP5hqUHPQ49EQX4VuI,12333
56
+ careamics/dataset/zarr_dataset.py,sha256=cpouzhaWUOkqAjjliJhrtfqVvZEMaq1d9V3LDoEvJQA,5644
57
+ careamics/dataset/dataset_utils/__init__.py,sha256=5U_kavgh_QEvTiDuM-O4hsqmDOKh6_y6iDvZPE8Jtsc,446
58
+ careamics/dataset/dataset_utils/dataset_utils.py,sha256=luTUsKx11gYsbWY10NgmcrRLC6tbh8BTd0FnWpdfTqA,2667
59
+ careamics/dataset/dataset_utils/file_utils.py,sha256=VHK7__34keJfkYWfyrOApalFA0wyINLK7CB79T_Sqm4,4030
60
+ careamics/dataset/dataset_utils/read_tiff.py,sha256=KcO5pZXaXEGXlJoCLnFriAHmHACCPI5kRWZK-oovfBo,1648
61
+ careamics/dataset/dataset_utils/read_utils.py,sha256=hwb2pFr-ueusVf8hoTtDsD71V5HDVU-6eQ14cpPp6d4,547
62
+ careamics/dataset/dataset_utils/read_zarr.py,sha256=B75gaOsLctkonYqwouCDWBu-AVwy697mJbEXDC0ft3I,1635
63
+ careamics/dataset/patching/__init__.py,sha256=7-s12oUAZNlMOwSkxSwbD7vojQINWYFzn_4qIJ87WBg,37
64
+ careamics/dataset/patching/patching.py,sha256=CcVgg9pBYFK6rU3ZxBG9ZSxbaZASoR8ATqQT0HeN8vI,6259
65
+ careamics/dataset/patching/random_patching.py,sha256=93R5a56O4k6CxrWvRpTwkFDnw37tpDTaajcPAQbc4Nw,6025
66
+ careamics/dataset/patching/sequential_patching.py,sha256=2p52u0y8h_mOomMfCuM4icVk7TqdRbjixOtaKUHnQbs,5651
67
+ careamics/dataset/patching/tiled_patching.py,sha256=zypmytFXEMo5V-LTjA4qGyNJGd7tV7aUgLXSUvo90U8,5814
68
+ careamics/dataset/patching/validate_patch_dimension.py,sha256=cHiD2XNX44eArlRR7ZK7_4Mihv3DzjncthgN-nXqR4s,2001
69
+ careamics/losses/__init__.py,sha256=Os1S7QHHd0o3SI1GMHD9eNRmXblXK3I8e80WU6eamCU,215
70
+ careamics/losses/loss_factory.py,sha256=Fj_TiOupo694AC5FABfBF69RXJNySy4Dd88Zq62Dgj4,992
71
+ careamics/losses/losses.py,sha256=a-8NLw0R86r2XxcHh97D7Mnhtbn0c5VFjZLPfttKCCM,2304
72
+ careamics/losses/noise_model_factory.py,sha256=zbRxlU3hTLJR9fM-PkeTthQ8idrwJD7-AelvXxaoHEQ,988
73
+ careamics/losses/noise_models.py,sha256=fRr4_mxP_jirC-UkQDVF09RcwqvZJES9JVCc8tccCFc,17801
74
+ careamics/model_io/__init__.py,sha256=HITzjiuZQwo-rQ2_Ma3bz9l7PDANv1_S489E-tffV9s,155
75
+ careamics/model_io/bmz_io.py,sha256=4zcIGopVmDUwkJPmpdnceyRIJQ3PbJjMZ0tTL6OZrFM,6967
76
+ careamics/model_io/model_io_utils.py,sha256=x5u1HszZgRfvuku4eKQhmInyxRaEzkgNqAhGSyLS6e4,2116
77
+ careamics/model_io/bioimage/__init__.py,sha256=r94nu8WDAvj0Fbu4C-iJXdOhfSQXeZBvN3UKsLG0RNI,298
78
+ careamics/model_io/bioimage/_readme_factory.py,sha256=LZAuEiWNBTPaD8KrLPMq16yJuOPKDZiGQuTMHKLvoT4,3514
79
+ careamics/model_io/bioimage/bioimage_utils.py,sha256=nlW0J1daYyLbL6yVN3QSn3HhA2joMjIG-thK64lpVTY,1085
80
+ careamics/model_io/bioimage/model_description.py,sha256=wXGJBzGGSwEds-V0G4mgPvoi4dDXNn_7Tp6iPCsAeTY,9208
81
+ careamics/models/__init__.py,sha256=Wty5hwQb_As33pQOZqY5j-DpDOdh5ArBH4BhQDSuXTQ,133
82
+ careamics/models/activation.py,sha256=21g0isrf_SpY4MUQoxbcsc1hAP5luSmWgtzGOvXKzTw,936
83
+ careamics/models/layers.py,sha256=rm72-gWsIaJ0ZmjAuGIGa-XFioVsWlL1SDN8ono8f7w,11558
84
+ careamics/models/model_factory.py,sha256=WD2Qi29kOIZQyDyrtBeZQF2EPAvcCwLh0byM1iOqv1o,1359
85
+ careamics/models/unet.py,sha256=NYYfL3N_tnXUU6j7l6qDP2IU031sN5aNunHAyWhTDeg,13431
86
+ careamics/prediction/__init__.py,sha256=-Bfc7UqPSqpGx0NGvHMkE-bHOkZYMn7EaxQ9tO6A3uU,118
87
+ careamics/prediction/stitch_prediction.py,sha256=msrtuFKmCgC6BqrG2rmItwZcVDNd_RfClxDeFW2eDOM,2216
88
+ careamics/transforms/__init__.py,sha256=cv4mmAWvcCT1-WGWhFD80gC1nM8ZHy8OjLIltOS3s5U,483
89
+ careamics/transforms/compose.py,sha256=IbiA2yMEIMPEUoY0gkAfom83KbwMlwPnIl5J2CfqSnw,2710
90
+ careamics/transforms/n2v_manipulate.py,sha256=3gimPlxzBL7IXi4ZG02s2PcgpBJDBcA22HovnC65Qbw,4098
91
+ careamics/transforms/nd_flip.py,sha256=bjyLfQ0FNG-4QvFYXgVMz_-WJFtzy35qH8icUeSHNMg,1917
92
+ careamics/transforms/normalize.py,sha256=-IlpCuUgaAqDE2LHpnWsgMX-GbBwqtM1XOP4pIHoCEk,3235
93
+ careamics/transforms/pixel_manipulation.py,sha256=rYCdj4ziTiHmeY-nUSFckZo9glBJDZqg2ziqKQ_Xk2Q,12693
94
+ careamics/transforms/struct_mask_parameters.py,sha256=tcxs_MHxZTD6PZE2q5gsGJYIMDF368X9Ggw8O9SkfP0,360
95
+ careamics/transforms/transform.py,sha256=d-V7MZMDn_WXtuS1HbihXKEIOOBDkqfSDfT7_a1npnQ,835
96
+ careamics/transforms/tta.py,sha256=6H0E0yxmZT_TEslenOIXqlEM-l_0oCtIk59gAGP0byM,1960
97
+ careamics/transforms/xy_random_rotate90.py,sha256=-ns-nhBE1CeSUfAr6HND7CboK9do1MUVsLXRWUKgVhM,1978
98
+ careamics/utils/__init__.py,sha256=tO1X5QTfnthepuW0uYagz5fWehtLtwK2gPmkUeqhdOw,334
99
+ careamics/utils/base_enum.py,sha256=eoMYdKpcEojJWXrIxzchY1U0W_AubLijMt27WMoSXoc,753
100
+ careamics/utils/context.py,sha256=Ljf70OR1FcYpsVpxb5Sr2fzmPVIZgDS1uZob_3BcELg,1409
101
+ careamics/utils/logging.py,sha256=coIscjkDYpqcsGnsONuYOdIYd6_gHxdnYIZ-e9Y2Ybg,10322
102
+ careamics/utils/metrics.py,sha256=9YQe5Aj2Pv2h9jnRFeRbDQ_3qXAW0QHpucSqiUtwDcA,2382
103
+ careamics/utils/path_utils.py,sha256=mYxqHxHNKLKPJrs4w7ncyvUsoDVRRZZCVl_SJLW0tRs,518
104
+ careamics/utils/ram.py,sha256=kI637_OtrOF0SoHfp_EcyszhlCwtufv1q4M-p0XUqgA,198
105
+ careamics/utils/receptive_field.py,sha256=uALb2oCh4C_xmejdOU2aqyo5fOO9W2713Xb8QGQZvaw,3027
106
+ careamics/utils/running_stats.py,sha256=GIPMPuH9EOUKD_cYBkJFPggXRKnQEiOXx68Pq9UCCVI,1384
107
+ careamics/utils/torch_utils.py,sha256=g1zxdlM7_BA7mMLcCzmrxZX4LmH__KXlJibC95muVaA,3014
108
+ careamics-0.1.0rc5.dist-info/METADATA,sha256=b1tXRpeNsl51L5wwwLvXOUmm4T3qT5j3qdvlj9yaY98,3413
109
+ careamics-0.1.0rc5.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
110
+ careamics-0.1.0rc5.dist-info/licenses/LICENSE,sha256=6zdNW-k_xHRKYWUf9tDI_ZplUciFHyj0g16DYuZ2udw,1509
111
+ careamics-0.1.0rc5.dist-info/RECORD,,