careamics 0.0.5__py3-none-any.whl → 0.0.7__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 (111) hide show
  1. careamics/__init__.py +17 -2
  2. careamics/careamist.py +4 -3
  3. careamics/cli/conf.py +1 -2
  4. careamics/cli/main.py +1 -2
  5. careamics/cli/utils.py +3 -3
  6. careamics/config/__init__.py +47 -25
  7. careamics/config/algorithms/__init__.py +15 -0
  8. careamics/config/algorithms/care_algorithm_model.py +38 -0
  9. careamics/config/algorithms/n2n_algorithm_model.py +30 -0
  10. careamics/config/algorithms/n2v_algorithm_model.py +29 -0
  11. careamics/config/algorithms/unet_algorithm_model.py +88 -0
  12. careamics/config/{vae_algorithm_model.py → algorithms/vae_algorithm_model.py} +14 -12
  13. careamics/config/architectures/__init__.py +1 -11
  14. careamics/config/architectures/architecture_model.py +3 -3
  15. careamics/config/architectures/lvae_model.py +6 -1
  16. careamics/config/architectures/unet_model.py +1 -0
  17. careamics/config/care_configuration.py +100 -0
  18. careamics/config/configuration.py +354 -0
  19. careamics/config/{configuration_factory.py → configuration_factories.py} +185 -57
  20. careamics/config/configuration_io.py +85 -0
  21. careamics/config/data/__init__.py +10 -0
  22. careamics/config/{data_model.py → data/data_model.py} +91 -186
  23. careamics/config/data/n2v_data_model.py +193 -0
  24. careamics/config/likelihood_model.py +1 -2
  25. careamics/config/n2n_configuration.py +101 -0
  26. careamics/config/n2v_configuration.py +266 -0
  27. careamics/config/nm_model.py +1 -2
  28. careamics/config/support/__init__.py +7 -7
  29. careamics/config/support/supported_algorithms.py +5 -4
  30. careamics/config/support/supported_architectures.py +0 -4
  31. careamics/config/transformations/__init__.py +10 -4
  32. careamics/config/transformations/transform_model.py +3 -3
  33. careamics/config/transformations/transform_unions.py +42 -0
  34. careamics/config/validators/__init__.py +12 -1
  35. careamics/config/validators/model_validators.py +84 -0
  36. careamics/config/validators/validator_utils.py +3 -3
  37. careamics/dataset/__init__.py +2 -2
  38. careamics/dataset/dataset_utils/__init__.py +3 -3
  39. careamics/dataset/dataset_utils/dataset_utils.py +4 -6
  40. careamics/dataset/dataset_utils/file_utils.py +9 -9
  41. careamics/dataset/dataset_utils/iterate_over_files.py +4 -3
  42. careamics/dataset/in_memory_dataset.py +11 -12
  43. careamics/dataset/iterable_dataset.py +4 -4
  44. careamics/dataset/iterable_pred_dataset.py +2 -1
  45. careamics/dataset/iterable_tiled_pred_dataset.py +2 -1
  46. careamics/dataset/patching/random_patching.py +11 -10
  47. careamics/dataset/patching/sequential_patching.py +26 -26
  48. careamics/dataset/patching/validate_patch_dimension.py +3 -3
  49. careamics/dataset/tiling/__init__.py +2 -2
  50. careamics/dataset/tiling/collate_tiles.py +3 -3
  51. careamics/dataset/tiling/lvae_tiled_patching.py +2 -1
  52. careamics/dataset/tiling/tiled_patching.py +11 -10
  53. careamics/file_io/__init__.py +5 -5
  54. careamics/file_io/read/__init__.py +1 -1
  55. careamics/file_io/read/get_func.py +2 -2
  56. careamics/file_io/write/__init__.py +2 -2
  57. careamics/lightning/__init__.py +5 -5
  58. careamics/lightning/callbacks/__init__.py +1 -1
  59. careamics/lightning/callbacks/prediction_writer_callback/__init__.py +3 -3
  60. careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +2 -1
  61. careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +2 -1
  62. careamics/lightning/callbacks/progress_bar_callback.py +3 -3
  63. careamics/lightning/lightning_module.py +11 -7
  64. careamics/lightning/train_data_module.py +36 -45
  65. careamics/losses/__init__.py +3 -3
  66. careamics/lvae_training/calibration.py +64 -57
  67. careamics/lvae_training/dataset/lc_dataset.py +2 -1
  68. careamics/lvae_training/dataset/multich_dataset.py +2 -2
  69. careamics/lvae_training/dataset/types.py +1 -1
  70. careamics/lvae_training/eval_utils.py +123 -128
  71. careamics/model_io/__init__.py +1 -1
  72. careamics/model_io/bioimage/__init__.py +1 -1
  73. careamics/model_io/bioimage/_readme_factory.py +1 -1
  74. careamics/model_io/bioimage/model_description.py +17 -17
  75. careamics/model_io/bmz_io.py +6 -17
  76. careamics/model_io/model_io_utils.py +9 -9
  77. careamics/models/layers.py +16 -16
  78. careamics/models/lvae/likelihoods.py +2 -0
  79. careamics/models/lvae/lvae.py +13 -4
  80. careamics/models/lvae/noise_models.py +280 -217
  81. careamics/models/lvae/stochastic.py +1 -0
  82. careamics/models/model_factory.py +2 -15
  83. careamics/models/unet.py +8 -8
  84. careamics/prediction_utils/__init__.py +1 -1
  85. careamics/prediction_utils/prediction_outputs.py +15 -15
  86. careamics/prediction_utils/stitch_prediction.py +6 -6
  87. careamics/transforms/__init__.py +5 -5
  88. careamics/transforms/compose.py +13 -13
  89. careamics/transforms/n2v_manipulate.py +3 -3
  90. careamics/transforms/pixel_manipulation.py +9 -9
  91. careamics/transforms/xy_random_rotate90.py +4 -4
  92. careamics/utils/__init__.py +5 -5
  93. careamics/utils/context.py +2 -1
  94. careamics/utils/logging.py +11 -10
  95. careamics/utils/metrics.py +25 -0
  96. careamics/utils/plotting.py +78 -0
  97. careamics/utils/torch_utils.py +7 -7
  98. {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/METADATA +13 -11
  99. careamics-0.0.7.dist-info/RECORD +178 -0
  100. careamics/config/architectures/custom_model.py +0 -162
  101. careamics/config/architectures/register_model.py +0 -103
  102. careamics/config/configuration_model.py +0 -603
  103. careamics/config/fcn_algorithm_model.py +0 -152
  104. careamics/config/references/__init__.py +0 -45
  105. careamics/config/references/algorithm_descriptions.py +0 -132
  106. careamics/config/references/references.py +0 -39
  107. careamics/config/transformations/transform_union.py +0 -20
  108. careamics-0.0.5.dist-info/RECORD +0 -171
  109. {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/WHEEL +0 -0
  110. {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/entry_points.txt +0 -0
  111. {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/licenses/LICENSE +0 -0
@@ -4,7 +4,7 @@ Layer module.
4
4
  This submodule contains layers used in the CAREamics models.
5
5
  """
6
6
 
7
- from typing import List, Optional, Tuple, Union
7
+ from typing import Optional, Union
8
8
 
9
9
  import torch
10
10
  import torch.nn as nn
@@ -157,22 +157,22 @@ class Conv_Block(nn.Module):
157
157
 
158
158
 
159
159
  def _unpack_kernel_size(
160
- kernel_size: Union[Tuple[int, ...], int], dim: int
161
- ) -> Tuple[int, ...]:
160
+ kernel_size: Union[tuple[int, ...], int], dim: int
161
+ ) -> tuple[int, ...]:
162
162
  """Unpack kernel_size to a tuple of ints.
163
163
 
164
164
  Inspired by Kornia implementation. TODO: link
165
165
 
166
166
  Parameters
167
167
  ----------
168
- kernel_size : Union[Tuple[int, ...], int]
168
+ kernel_size : Union[tuple[int, ...], int]
169
169
  Kernel size.
170
170
  dim : int
171
171
  Number of dimensions.
172
172
 
173
173
  Returns
174
174
  -------
175
- Tuple[int, ...]
175
+ tuple[int, ...]
176
176
  Kernel size tuple.
177
177
  """
178
178
  if isinstance(kernel_size, int):
@@ -183,20 +183,20 @@ def _unpack_kernel_size(
183
183
 
184
184
 
185
185
  def _compute_zero_padding(
186
- kernel_size: Union[Tuple[int, ...], int], dim: int
187
- ) -> Tuple[int, ...]:
186
+ kernel_size: Union[tuple[int, ...], int], dim: int
187
+ ) -> tuple[int, ...]:
188
188
  """Utility function that computes zero padding tuple.
189
189
 
190
190
  Parameters
191
191
  ----------
192
- kernel_size : Union[Tuple[int, ...], int]
192
+ kernel_size : Union[tuple[int, ...], int]
193
193
  Kernel size.
194
194
  dim : int
195
195
  Number of dimensions.
196
196
 
197
197
  Returns
198
198
  -------
199
- Tuple[int, ...]
199
+ tuple[int, ...]
200
200
  Zero padding tuple.
201
201
  """
202
202
  kernel_dims = _unpack_kernel_size(kernel_size, dim)
@@ -245,8 +245,8 @@ def get_pascal_kernel_1d(
245
245
  >>> get_pascal_kernel_1d(6)
246
246
  tensor([ 1., 5., 10., 10., 5., 1.])
247
247
  """
248
- pre: List[float] = []
249
- cur: List[float] = []
248
+ pre: list[float] = []
249
+ cur: list[float] = []
250
250
  for i in range(kernel_size):
251
251
  cur = [1.0] * (i + 1)
252
252
 
@@ -266,7 +266,7 @@ def get_pascal_kernel_1d(
266
266
 
267
267
 
268
268
  def _get_pascal_kernel_nd(
269
- kernel_size: Union[Tuple[int, int], int],
269
+ kernel_size: Union[tuple[int, int], int],
270
270
  norm: bool = True,
271
271
  dim: int = 2,
272
272
  *,
@@ -282,7 +282,7 @@ def _get_pascal_kernel_nd(
282
282
 
283
283
  Parameters
284
284
  ----------
285
- kernel_size : Union[Tuple[int, int], int]
285
+ kernel_size : Union[tuple[int, int], int]
286
286
  Kernel size for the pascal kernel.
287
287
  norm : bool
288
288
  Normalize the kernel, by default True.
@@ -420,7 +420,7 @@ class MaxBlurPool(nn.Module):
420
420
  ----------
421
421
  dim : int
422
422
  Toggles between 2D and 3D.
423
- kernel_size : Union[Tuple[int, int], int]
423
+ kernel_size : Union[tuple[int, int], int]
424
424
  Kernel size for max pooling.
425
425
  stride : int
426
426
  Stride for pooling.
@@ -433,7 +433,7 @@ class MaxBlurPool(nn.Module):
433
433
  def __init__(
434
434
  self,
435
435
  dim: int,
436
- kernel_size: Union[Tuple[int, int], int],
436
+ kernel_size: Union[tuple[int, int], int],
437
437
  stride: int = 2,
438
438
  max_pool_size: int = 2,
439
439
  ceil_mode: bool = False,
@@ -444,7 +444,7 @@ class MaxBlurPool(nn.Module):
444
444
  ----------
445
445
  dim : int
446
446
  Dimension of the convolution.
447
- kernel_size : Union[Tuple[int, int], int]
447
+ kernel_size : Union[tuple[int, int], int]
448
448
  Kernel size for max pooling.
449
449
  stride : int, optional
450
450
  Stride, by default 2.
@@ -324,6 +324,8 @@ class NoiseModelLikelihood(LikelihoodModule):
324
324
  if self.data_mean.device != correct_device_tensor.device:
325
325
  self.data_mean = self.data_mean.to(correct_device_tensor.device)
326
326
  self.data_std = self.data_std.to(correct_device_tensor.device)
327
+ if correct_device_tensor.device != self.noiseModel.device:
328
+ self.noiseModel.to_device(correct_device_tensor.device)
327
329
 
328
330
  def get_mean_lv(self, x: torch.Tensor) -> tuple[torch.Tensor, None]:
329
331
  return x, None
@@ -6,14 +6,12 @@ and Artefact Removal, Prakash et al."
6
6
  """
7
7
 
8
8
  from collections.abc import Iterable
9
- from typing import Union
9
+ from typing import Optional, Union
10
10
 
11
11
  import numpy as np
12
12
  import torch
13
13
  import torch.nn as nn
14
14
 
15
- from careamics.config.architectures import register_model
16
-
17
15
  from ..activation import get_activation
18
16
  from .layers import (
19
17
  BottomUpDeterministicResBlock,
@@ -25,7 +23,6 @@ from .layers import (
25
23
  from .utils import Interpolate, ModelType, crop_img_tensor
26
24
 
27
25
 
28
- @register_model("LVAE")
29
26
  class LadderVAE(nn.Module):
30
27
  """
31
28
  Constructor.
@@ -837,3 +834,15 @@ class LadderVAE(nn.Module):
837
834
  # TODO check if model_3D_depth is needed ?
838
835
  top_layer_shape = (n_imgs, mu_logvar, self._model_3D_depth, h, w)
839
836
  return top_layer_shape
837
+
838
+ def reset_for_inference(self, tile_size: Optional[tuple[int, int]] = None):
839
+ """Should be called if we want to predict for a different input/output size."""
840
+ self.mode_pred = True
841
+ if tile_size is None:
842
+ tile_size = self.image_size
843
+ self.image_size = tile_size
844
+ for i in range(self.n_layers):
845
+ self.bottom_up_layers[i].output_expected_shape = (
846
+ ts // 2 ** (i + 1) for ts in tile_size
847
+ )
848
+ self.top_down_layers[i].latent_shape = tile_size