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.
- careamics/__init__.py +17 -2
- careamics/careamist.py +4 -3
- careamics/cli/conf.py +1 -2
- careamics/cli/main.py +1 -2
- careamics/cli/utils.py +3 -3
- careamics/config/__init__.py +47 -25
- careamics/config/algorithms/__init__.py +15 -0
- careamics/config/algorithms/care_algorithm_model.py +38 -0
- careamics/config/algorithms/n2n_algorithm_model.py +30 -0
- careamics/config/algorithms/n2v_algorithm_model.py +29 -0
- careamics/config/algorithms/unet_algorithm_model.py +88 -0
- careamics/config/{vae_algorithm_model.py → algorithms/vae_algorithm_model.py} +14 -12
- careamics/config/architectures/__init__.py +1 -11
- careamics/config/architectures/architecture_model.py +3 -3
- careamics/config/architectures/lvae_model.py +6 -1
- careamics/config/architectures/unet_model.py +1 -0
- careamics/config/care_configuration.py +100 -0
- careamics/config/configuration.py +354 -0
- careamics/config/{configuration_factory.py → configuration_factories.py} +185 -57
- careamics/config/configuration_io.py +85 -0
- careamics/config/data/__init__.py +10 -0
- careamics/config/{data_model.py → data/data_model.py} +91 -186
- careamics/config/data/n2v_data_model.py +193 -0
- careamics/config/likelihood_model.py +1 -2
- careamics/config/n2n_configuration.py +101 -0
- careamics/config/n2v_configuration.py +266 -0
- careamics/config/nm_model.py +1 -2
- careamics/config/support/__init__.py +7 -7
- careamics/config/support/supported_algorithms.py +5 -4
- careamics/config/support/supported_architectures.py +0 -4
- careamics/config/transformations/__init__.py +10 -4
- careamics/config/transformations/transform_model.py +3 -3
- careamics/config/transformations/transform_unions.py +42 -0
- careamics/config/validators/__init__.py +12 -1
- careamics/config/validators/model_validators.py +84 -0
- careamics/config/validators/validator_utils.py +3 -3
- careamics/dataset/__init__.py +2 -2
- careamics/dataset/dataset_utils/__init__.py +3 -3
- careamics/dataset/dataset_utils/dataset_utils.py +4 -6
- careamics/dataset/dataset_utils/file_utils.py +9 -9
- careamics/dataset/dataset_utils/iterate_over_files.py +4 -3
- careamics/dataset/in_memory_dataset.py +11 -12
- careamics/dataset/iterable_dataset.py +4 -4
- careamics/dataset/iterable_pred_dataset.py +2 -1
- careamics/dataset/iterable_tiled_pred_dataset.py +2 -1
- careamics/dataset/patching/random_patching.py +11 -10
- careamics/dataset/patching/sequential_patching.py +26 -26
- careamics/dataset/patching/validate_patch_dimension.py +3 -3
- careamics/dataset/tiling/__init__.py +2 -2
- careamics/dataset/tiling/collate_tiles.py +3 -3
- careamics/dataset/tiling/lvae_tiled_patching.py +2 -1
- careamics/dataset/tiling/tiled_patching.py +11 -10
- careamics/file_io/__init__.py +5 -5
- careamics/file_io/read/__init__.py +1 -1
- careamics/file_io/read/get_func.py +2 -2
- careamics/file_io/write/__init__.py +2 -2
- careamics/lightning/__init__.py +5 -5
- careamics/lightning/callbacks/__init__.py +1 -1
- careamics/lightning/callbacks/prediction_writer_callback/__init__.py +3 -3
- careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +2 -1
- careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +2 -1
- careamics/lightning/callbacks/progress_bar_callback.py +3 -3
- careamics/lightning/lightning_module.py +11 -7
- careamics/lightning/train_data_module.py +36 -45
- careamics/losses/__init__.py +3 -3
- careamics/lvae_training/calibration.py +64 -57
- careamics/lvae_training/dataset/lc_dataset.py +2 -1
- careamics/lvae_training/dataset/multich_dataset.py +2 -2
- careamics/lvae_training/dataset/types.py +1 -1
- careamics/lvae_training/eval_utils.py +123 -128
- careamics/model_io/__init__.py +1 -1
- careamics/model_io/bioimage/__init__.py +1 -1
- careamics/model_io/bioimage/_readme_factory.py +1 -1
- careamics/model_io/bioimage/model_description.py +17 -17
- careamics/model_io/bmz_io.py +6 -17
- careamics/model_io/model_io_utils.py +9 -9
- careamics/models/layers.py +16 -16
- careamics/models/lvae/likelihoods.py +2 -0
- careamics/models/lvae/lvae.py +13 -4
- careamics/models/lvae/noise_models.py +280 -217
- careamics/models/lvae/stochastic.py +1 -0
- careamics/models/model_factory.py +2 -15
- careamics/models/unet.py +8 -8
- careamics/prediction_utils/__init__.py +1 -1
- careamics/prediction_utils/prediction_outputs.py +15 -15
- careamics/prediction_utils/stitch_prediction.py +6 -6
- careamics/transforms/__init__.py +5 -5
- careamics/transforms/compose.py +13 -13
- careamics/transforms/n2v_manipulate.py +3 -3
- careamics/transforms/pixel_manipulation.py +9 -9
- careamics/transforms/xy_random_rotate90.py +4 -4
- careamics/utils/__init__.py +5 -5
- careamics/utils/context.py +2 -1
- careamics/utils/logging.py +11 -10
- careamics/utils/metrics.py +25 -0
- careamics/utils/plotting.py +78 -0
- careamics/utils/torch_utils.py +7 -7
- {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/METADATA +13 -11
- careamics-0.0.7.dist-info/RECORD +178 -0
- careamics/config/architectures/custom_model.py +0 -162
- careamics/config/architectures/register_model.py +0 -103
- careamics/config/configuration_model.py +0 -603
- careamics/config/fcn_algorithm_model.py +0 -152
- careamics/config/references/__init__.py +0 -45
- careamics/config/references/algorithm_descriptions.py +0 -132
- careamics/config/references/references.py +0 -39
- careamics/config/transformations/transform_union.py +0 -20
- careamics-0.0.5.dist-info/RECORD +0 -171
- {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/WHEEL +0 -0
- {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/entry_points.txt +0 -0
- {careamics-0.0.5.dist-info → careamics-0.0.7.dist-info}/licenses/LICENSE +0 -0
careamics/models/layers.py
CHANGED
|
@@ -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
|
|
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[
|
|
161
|
-
) ->
|
|
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[
|
|
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
|
-
|
|
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[
|
|
187
|
-
) ->
|
|
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[
|
|
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
|
-
|
|
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:
|
|
249
|
-
cur:
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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
|
careamics/models/lvae/lvae.py
CHANGED
|
@@ -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
|