careamics 0.0.4.2__py3-none-any.whl → 0.0.6__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 (118) hide show
  1. careamics/__init__.py +17 -2
  2. careamics/careamist.py +239 -28
  3. careamics/cli/conf.py +19 -31
  4. careamics/cli/main.py +112 -12
  5. careamics/cli/utils.py +29 -0
  6. careamics/config/__init__.py +48 -24
  7. careamics/config/algorithms/__init__.py +15 -0
  8. careamics/config/algorithms/care_algorithm_model.py +50 -0
  9. careamics/config/algorithms/n2n_algorithm_model.py +42 -0
  10. careamics/config/algorithms/n2v_algorithm_model.py +35 -0
  11. careamics/config/algorithms/unet_algorithm_model.py +88 -0
  12. careamics/config/{vae_algorithm_model.py → algorithms/vae_algorithm_model.py} +26 -23
  13. careamics/config/architectures/__init__.py +1 -11
  14. careamics/config/architectures/architecture_model.py +3 -3
  15. careamics/config/architectures/lvae_model.py +109 -21
  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} +152 -81
  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} +58 -198
  23. careamics/config/data/n2v_data_model.py +193 -0
  24. careamics/config/likelihood_model.py +8 -8
  25. careamics/config/loss_model.py +56 -0
  26. careamics/config/n2n_configuration.py +101 -0
  27. careamics/config/n2v_configuration.py +266 -0
  28. careamics/config/nm_model.py +24 -25
  29. careamics/config/support/__init__.py +7 -7
  30. careamics/config/support/supported_algorithms.py +0 -3
  31. careamics/config/support/supported_architectures.py +0 -4
  32. careamics/config/transformations/__init__.py +10 -4
  33. careamics/config/transformations/transform_model.py +3 -3
  34. careamics/config/transformations/transform_unions.py +42 -0
  35. careamics/config/validators/validator_utils.py +3 -3
  36. careamics/dataset/__init__.py +2 -2
  37. careamics/dataset/dataset_utils/__init__.py +3 -3
  38. careamics/dataset/dataset_utils/dataset_utils.py +4 -6
  39. careamics/dataset/dataset_utils/file_utils.py +9 -9
  40. careamics/dataset/dataset_utils/iterate_over_files.py +4 -3
  41. careamics/dataset/dataset_utils/running_stats.py +22 -23
  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 +2 -2
  63. careamics/lightning/lightning_module.py +69 -34
  64. careamics/lightning/train_data_module.py +41 -27
  65. careamics/losses/__init__.py +3 -3
  66. careamics/losses/loss_factory.py +1 -85
  67. careamics/losses/lvae/losses.py +223 -164
  68. careamics/lvae_training/calibration.py +184 -0
  69. careamics/lvae_training/dataset/config.py +2 -2
  70. careamics/lvae_training/dataset/multich_dataset.py +11 -19
  71. careamics/lvae_training/dataset/multifile_dataset.py +3 -2
  72. careamics/lvae_training/dataset/types.py +15 -26
  73. careamics/lvae_training/dataset/utils/index_manager.py +4 -4
  74. careamics/lvae_training/eval_utils.py +125 -213
  75. careamics/model_io/__init__.py +1 -1
  76. careamics/model_io/bioimage/__init__.py +1 -1
  77. careamics/model_io/bioimage/_readme_factory.py +26 -34
  78. careamics/model_io/bioimage/cover_factory.py +171 -0
  79. careamics/model_io/bioimage/model_description.py +56 -34
  80. careamics/model_io/bmz_io.py +42 -42
  81. careamics/model_io/model_io_utils.py +9 -9
  82. careamics/models/layers.py +22 -20
  83. careamics/models/lvae/layers.py +348 -975
  84. careamics/models/lvae/likelihoods.py +10 -8
  85. careamics/models/lvae/lvae.py +214 -275
  86. careamics/models/lvae/noise_models.py +179 -112
  87. careamics/models/lvae/stochastic.py +393 -0
  88. careamics/models/lvae/utils.py +82 -73
  89. careamics/models/model_factory.py +2 -15
  90. careamics/models/unet.py +8 -8
  91. careamics/prediction_utils/__init__.py +1 -1
  92. careamics/prediction_utils/prediction_outputs.py +15 -15
  93. careamics/prediction_utils/stitch_prediction.py +6 -6
  94. careamics/transforms/__init__.py +5 -5
  95. careamics/transforms/compose.py +13 -13
  96. careamics/transforms/n2v_manipulate.py +3 -3
  97. careamics/transforms/pixel_manipulation.py +9 -9
  98. careamics/transforms/xy_random_rotate90.py +4 -4
  99. careamics/utils/__init__.py +5 -5
  100. careamics/utils/context.py +2 -1
  101. careamics/utils/lightning_utils.py +57 -0
  102. careamics/utils/logging.py +11 -10
  103. careamics/utils/serializers.py +2 -0
  104. careamics/utils/torch_utils.py +8 -8
  105. {careamics-0.0.4.2.dist-info → careamics-0.0.6.dist-info}/METADATA +16 -13
  106. careamics-0.0.6.dist-info/RECORD +176 -0
  107. {careamics-0.0.4.2.dist-info → careamics-0.0.6.dist-info}/WHEEL +1 -1
  108. careamics/config/architectures/custom_model.py +0 -162
  109. careamics/config/architectures/register_model.py +0 -103
  110. careamics/config/configuration_model.py +0 -603
  111. careamics/config/fcn_algorithm_model.py +0 -152
  112. careamics/config/references/__init__.py +0 -45
  113. careamics/config/references/algorithm_descriptions.py +0 -132
  114. careamics/config/references/references.py +0 -39
  115. careamics/config/transformations/transform_union.py +0 -20
  116. careamics-0.0.4.2.dist-info/RECORD +0 -165
  117. {careamics-0.0.4.2.dist-info → careamics-0.0.6.dist-info}/entry_points.txt +0 -0
  118. {careamics-0.0.4.2.dist-info → careamics-0.0.6.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.
@@ -459,7 +459,8 @@ class MaxBlurPool(nn.Module):
459
459
  self.stride = stride
460
460
  self.max_pool_size = max_pool_size
461
461
  self.ceil_mode = ceil_mode
462
- self.kernel = _get_pascal_kernel_nd(kernel_size, norm=True, dim=self.dim)
462
+ kernel = _get_pascal_kernel_nd(kernel_size, norm=True, dim=self.dim)
463
+ self.register_buffer("kernel", kernel, persistent=False)
463
464
 
464
465
  def forward(self, x: torch.Tensor) -> torch.Tensor:
465
466
  """Forward pass of the function.
@@ -474,11 +475,12 @@ class MaxBlurPool(nn.Module):
474
475
  torch.Tensor
475
476
  Output tensor.
476
477
  """
477
- self.kernel = torch.as_tensor(self.kernel, device=x.device, dtype=x.dtype)
478
+ kernel = self.kernel.to(dtype=x.dtype)
479
+ num_channels = int(x.size(1))
478
480
  if self.dim == 2:
479
481
  return _max_blur_pool_by_kernel2d(
480
482
  x,
481
- self.kernel.repeat((x.size(1), 1, 1, 1)),
483
+ kernel.repeat((num_channels, 1, 1, 1)),
482
484
  self.stride,
483
485
  self.max_pool_size,
484
486
  self.ceil_mode,
@@ -486,7 +488,7 @@ class MaxBlurPool(nn.Module):
486
488
  else:
487
489
  return _max_blur_pool_by_kernel3d(
488
490
  x,
489
- self.kernel.repeat((x.size(1), 1, 1, 1, 1)),
491
+ kernel.repeat((num_channels, 1, 1, 1, 1)),
490
492
  self.stride,
491
493
  self.max_pool_size,
492
494
  self.ceil_mode,