careamics 0.0.3__py3-none-any.whl → 0.0.4.1__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 (56) hide show
  1. careamics/careamist.py +25 -17
  2. careamics/cli/__init__.py +5 -0
  3. careamics/cli/conf.py +391 -0
  4. careamics/cli/main.py +134 -0
  5. careamics/config/architectures/lvae_model.py +0 -4
  6. careamics/config/configuration_factory.py +480 -177
  7. careamics/config/configuration_model.py +1 -2
  8. careamics/config/data_model.py +1 -15
  9. careamics/config/fcn_algorithm_model.py +14 -9
  10. careamics/config/likelihood_model.py +21 -4
  11. careamics/config/nm_model.py +31 -5
  12. careamics/config/optimizer_models.py +3 -1
  13. careamics/config/support/supported_optimizers.py +1 -1
  14. careamics/config/support/supported_transforms.py +1 -0
  15. careamics/config/training_model.py +35 -6
  16. careamics/config/transformations/__init__.py +4 -1
  17. careamics/config/transformations/transform_union.py +20 -0
  18. careamics/config/vae_algorithm_model.py +2 -36
  19. careamics/dataset/tiling/lvae_tiled_patching.py +90 -8
  20. careamics/lightning/lightning_module.py +10 -8
  21. careamics/lightning/train_data_module.py +2 -2
  22. careamics/losses/loss_factory.py +3 -3
  23. careamics/losses/lvae/losses.py +2 -2
  24. careamics/lvae_training/dataset/__init__.py +15 -0
  25. careamics/lvae_training/dataset/{vae_data_config.py → config.py} +25 -81
  26. careamics/lvae_training/dataset/lc_dataset.py +28 -20
  27. careamics/lvae_training/dataset/{vae_dataset.py → multich_dataset.py} +91 -51
  28. careamics/lvae_training/dataset/multifile_dataset.py +334 -0
  29. careamics/lvae_training/dataset/types.py +43 -0
  30. careamics/lvae_training/dataset/utils/__init__.py +0 -0
  31. careamics/lvae_training/dataset/utils/data_utils.py +114 -0
  32. careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +65 -0
  33. careamics/lvae_training/dataset/utils/index_manager.py +232 -0
  34. careamics/lvae_training/dataset/utils/index_switcher.py +165 -0
  35. careamics/lvae_training/eval_utils.py +109 -64
  36. careamics/lvae_training/get_config.py +1 -1
  37. careamics/lvae_training/train_lvae.py +1 -1
  38. careamics/model_io/bioimage/bioimage_utils.py +4 -2
  39. careamics/model_io/bmz_io.py +6 -5
  40. careamics/models/lvae/likelihoods.py +18 -9
  41. careamics/models/lvae/lvae.py +12 -16
  42. careamics/models/lvae/noise_models.py +1 -1
  43. careamics/transforms/compose.py +90 -15
  44. careamics/transforms/n2v_manipulate.py +6 -2
  45. careamics/transforms/normalize.py +14 -3
  46. careamics/transforms/xy_flip.py +16 -6
  47. careamics/transforms/xy_random_rotate90.py +16 -7
  48. careamics/utils/metrics.py +204 -24
  49. careamics/utils/serializers.py +60 -0
  50. {careamics-0.0.3.dist-info → careamics-0.0.4.1.dist-info}/METADATA +4 -3
  51. {careamics-0.0.3.dist-info → careamics-0.0.4.1.dist-info}/RECORD +54 -43
  52. careamics-0.0.4.1.dist-info/entry_points.txt +2 -0
  53. careamics/lvae_training/dataset/data_utils.py +0 -701
  54. careamics/lvae_training/dataset/lc_dataset_config.py +0 -13
  55. {careamics-0.0.3.dist-info → careamics-0.0.4.1.dist-info}/WHEEL +0 -0
  56. {careamics-0.0.3.dist-info → careamics-0.0.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -4,88 +4,98 @@ Metrics submodule.
4
4
  This module contains various metrics and a metrics tracking class.
5
5
  """
6
6
 
7
- from typing import Optional, Union
7
+ from typing import Callable, Optional, Union
8
8
 
9
9
  import numpy as np
10
10
  import torch
11
- from skimage.metrics import peak_signal_noise_ratio
11
+ from skimage.metrics import peak_signal_noise_ratio, structural_similarity
12
+ from torchmetrics.image import MultiScaleStructuralSimilarityIndexMeasure
12
13
 
14
+ # TODO: does this add additional dependency?
13
15
 
14
- def psnr(gt: np.ndarray, pred: np.ndarray, range: float = 255.0) -> float:
16
+
17
+ def psnr(gt: np.ndarray, pred: np.ndarray, data_range: float) -> float:
15
18
  """
16
19
  Peak Signal to Noise Ratio.
17
20
 
18
21
  This method calls skimage.metrics.peak_signal_noise_ratio. See:
19
22
  https://scikit-image.org/docs/dev/api/skimage.metrics.html.
20
23
 
24
+ NOTE: to avoid unwanted behaviors (e.g., data_range inferred from array dtype),
25
+ the data_range parameter is mandatory.
26
+
21
27
  Parameters
22
28
  ----------
23
- gt : NumPy array
24
- Ground truth image.
25
- pred : NumPy array
26
- Predicted image.
27
- range : float, optional
28
- The images pixel range, by default 255.0.
29
+ gt : np.ndarray
30
+ Ground truth array.
31
+ pred : np.ndarray
32
+ Predicted array.
33
+ data_range : float
34
+ The images pixel range.
29
35
 
30
36
  Returns
31
37
  -------
32
38
  float
33
39
  PSNR value.
34
40
  """
35
- return peak_signal_noise_ratio(gt, pred, data_range=range)
41
+ return peak_signal_noise_ratio(gt, pred, data_range=data_range)
36
42
 
37
43
 
38
- def _zero_mean(x: np.ndarray) -> np.ndarray:
44
+ def _zero_mean(x: Union[np.ndarray, torch.Tensor]) -> Union[np.ndarray, torch.Tensor]:
39
45
  """
40
46
  Zero the mean of an array.
41
47
 
42
48
  Parameters
43
49
  ----------
44
- x : NumPy array
50
+ x : numpy.ndarray or torch.Tensor
45
51
  Input array.
46
52
 
47
53
  Returns
48
54
  -------
49
- NumPy array
55
+ numpy.ndarray or torch.Tensor
50
56
  Zero-mean array.
51
57
  """
52
- return x - np.mean(x)
58
+ return x - x.mean()
53
59
 
54
60
 
55
- def _fix_range(gt: np.ndarray, x: np.ndarray) -> np.ndarray:
61
+ def _fix_range(
62
+ gt: Union[np.ndarray, torch.Tensor], x: Union[np.ndarray, torch.Tensor]
63
+ ) -> Union[np.ndarray, torch.Tensor]:
56
64
  """
57
65
  Adjust the range of an array based on a reference ground-truth array.
58
66
 
59
67
  Parameters
60
68
  ----------
61
- gt : np.ndarray
62
- Ground truth image.
63
- x : np.ndarray
69
+ gt : Union[np.ndarray, torch.Tensor]
70
+ Ground truth array.
71
+ x : Union[np.ndarray, torch.Tensor]
64
72
  Input array.
65
73
 
66
74
  Returns
67
75
  -------
68
- np.ndarray
76
+ Union[np.ndarray, torch.Tensor]
69
77
  Range-adjusted array.
70
78
  """
71
- a = np.sum(gt * x) / (np.sum(x * x))
79
+ a = (gt * x).sum() / (x * x).sum()
72
80
  return x * a
73
81
 
74
82
 
75
- def _fix(gt: np.ndarray, x: np.ndarray) -> np.ndarray:
83
+ def _fix(
84
+ gt: Union[np.ndarray, torch.Tensor], x: Union[np.ndarray, torch.Tensor]
85
+ ) -> Union[np.ndarray, torch.Tensor]:
76
86
  """
77
87
  Zero mean a groud truth array and adjust the range of the array.
78
88
 
79
89
  Parameters
80
90
  ----------
81
- gt : np.ndarray
91
+ gt : Union[np.ndarray, torch.Tensor]
82
92
  Ground truth image.
83
- x : np.ndarray
93
+ x : Union[np.ndarray, torch.Tensor]
84
94
  Input array.
85
95
 
86
96
  Returns
87
97
  -------
88
- np.ndarray
98
+ Union[np.ndarray, torch.Tensor]
89
99
  Zero-mean and range-adjusted array.
90
100
  """
91
101
  gt_ = _zero_mean(gt)
@@ -186,3 +196,173 @@ class RunningPSNR:
186
196
  return None
187
197
  rmse = torch.sqrt(self.mse_sum / self.N)
188
198
  return 20 * torch.log10((self.max - self.min) / rmse)
199
+
200
+
201
+ def _range_invariant_multiscale_ssim(
202
+ gt_: Union[np.ndarray, torch.Tensor], pred_: Union[np.ndarray, torch.Tensor]
203
+ ) -> float:
204
+ """Compute range invariant multiscale SSIM for a single channel.
205
+
206
+ The advantage of this metric in comparison to commonly used SSIM is that
207
+ it is invariant to scalar multiplications in the prediction.
208
+ # TODO: Add reference to the paper.
209
+
210
+ NOTE: images fed to this function should have channels dimension as the last one.
211
+
212
+ Parameters
213
+ ----------
214
+ gt_ : Union[np.ndarray, torch.Tensor]
215
+ Ground truth image with shape (N, H, W).
216
+ pred_ : Union[np.ndarray, torch.Tensor]
217
+ Predicted image with shape (N, H, W).
218
+
219
+ Returns
220
+ -------
221
+ float
222
+ Range invariant multiscale SSIM value.
223
+ """
224
+ shape = gt_.shape
225
+ gt_ = torch.Tensor(gt_.reshape((shape[0], -1)))
226
+ pred_ = torch.Tensor(pred_.reshape((shape[0], -1)))
227
+ gt_ = _zero_mean(gt_)
228
+ pred_ = _zero_mean(pred_)
229
+ pred_ = _fix(gt_, pred_)
230
+ pred_ = pred_.reshape(shape)
231
+ gt_ = gt_.reshape(shape)
232
+
233
+ ms_ssim = MultiScaleStructuralSimilarityIndexMeasure(
234
+ data_range=gt_.max() - gt_.min()
235
+ )
236
+ return ms_ssim(torch.Tensor(pred_[:, None]), torch.Tensor(gt_[:, None])).item()
237
+
238
+
239
+ def multiscale_ssim(
240
+ gt_: Union[np.ndarray, torch.Tensor],
241
+ pred_: Union[np.ndarray, torch.Tensor],
242
+ range_invariant: bool = True,
243
+ ) -> list[Union[float, None]]:
244
+ """Compute channel-wise multiscale SSIM for each channel.
245
+
246
+ It allows to use either standard multiscale SSIM or its range-invariant version.
247
+
248
+ NOTE: images fed to this function should have channels dimension as the last one.
249
+ # TODO: do we want to allow this behavior? or we want the usual (N, C, H, W)?
250
+
251
+ Parameters
252
+ ----------
253
+ gt_ : Union[np.ndarray, torch.Tensor]
254
+ Ground truth image with shape (N, H, W, C).
255
+ pred_ : Union[np.ndarray, torch.Tensor]
256
+ Predicted image with shape (N, H, W, C).
257
+ range_invariant : bool
258
+ Whether to use standard or range invariant multiscale SSIM.
259
+
260
+ Returns
261
+ -------
262
+ list[float]
263
+ List of SSIM values for each channel.
264
+ """
265
+ ms_ssim_values = {}
266
+ for ch_idx in range(gt_.shape[-1]):
267
+ tar_tmp = gt_[..., ch_idx]
268
+ pred_tmp = pred_[..., ch_idx]
269
+ if range_invariant:
270
+ ms_ssim_values[ch_idx] = _range_invariant_multiscale_ssim(
271
+ gt_=tar_tmp, pred_=pred_tmp
272
+ )
273
+ else:
274
+ ms_ssim = MultiScaleStructuralSimilarityIndexMeasure(
275
+ data_range=tar_tmp.max() - tar_tmp.min()
276
+ )
277
+ ms_ssim_values[ch_idx] = ms_ssim(
278
+ torch.Tensor(pred_tmp[:, None]), torch.Tensor(tar_tmp[:, None])
279
+ ).item()
280
+
281
+ return [ms_ssim_values[i] for i in range(gt_.shape[-1])] # type: ignore
282
+
283
+
284
+ def _avg_psnr(target: np.ndarray, prediction: np.ndarray, psnr_fn: Callable) -> float:
285
+ """Compute the average PSNR over a batch of images.
286
+
287
+ Parameters
288
+ ----------
289
+ target : np.ndarray
290
+ Array of ground truth images, shape is (N, C, H, W).
291
+ prediction : np.ndarray
292
+ Array of predicted images, shape is (N, C, H, W).
293
+ psnr_fn : Callable
294
+ PSNR function to use.
295
+
296
+ Returns
297
+ -------
298
+ float
299
+ Average PSNR value over the batch.
300
+ """
301
+ return np.mean(
302
+ [
303
+ psnr_fn(target[i : i + 1], prediction[i : i + 1]).item()
304
+ for i in range(len(prediction))
305
+ ]
306
+ )
307
+
308
+
309
+ def avg_range_inv_psnr(target: np.ndarray, prediction: np.ndarray) -> float:
310
+ """Compute the average range-invariant PSNR over a batch of images.
311
+
312
+ Parameters
313
+ ----------
314
+ target : np.ndarray
315
+ Array of ground truth images, shape is (N, C, H, W).
316
+ prediction : np.ndarray
317
+ Array of predicted images, shape is (N, C, H, W).
318
+
319
+ Returns
320
+ -------
321
+ float
322
+ Average range-invariant PSNR value over the batch.
323
+ """
324
+ return _avg_psnr(target, prediction, scale_invariant_psnr)
325
+
326
+
327
+ def avg_psnr(target: np.ndarray, prediction: np.ndarray) -> float:
328
+ """Compute the average PSNR over a batch of images.
329
+
330
+ Parameters
331
+ ----------
332
+ target : np.ndarray
333
+ Array of ground truth images, shape is (N, C, H, W).
334
+ prediction : np.ndarray
335
+ Array of predicted images, shape is (N, C, H, W).
336
+
337
+ Returns
338
+ -------
339
+ float
340
+ Average PSNR value over the batch.
341
+ """
342
+ return _avg_psnr(target, prediction, psnr)
343
+
344
+
345
+ def avg_ssim(
346
+ target: Union[np.ndarray, torch.Tensor], prediction: Union[np.ndarray, torch.Tensor]
347
+ ) -> tuple[float, float]:
348
+ """Compute the average Structural Similarity (SSIM) over a batch of images.
349
+
350
+ Parameters
351
+ ----------
352
+ target : np.ndarray
353
+ Array of ground truth images, shape is (N, C, H, W).
354
+ prediction : np.ndarray
355
+ Array of predicted images, shape is (N, C, H, W).
356
+
357
+ Returns
358
+ -------
359
+ tuple[float, float]
360
+ Mean and standard deviation of SSIM values over the batch.
361
+ """
362
+ ssim = [
363
+ structural_similarity(
364
+ target[i], prediction[i], data_range=(target[i].max() - target[i].min())
365
+ )
366
+ for i in range(len(target))
367
+ ]
368
+ return np.mean(ssim), np.std(ssim)
@@ -0,0 +1,60 @@
1
+ """A script for serializers in the careamics package."""
2
+
3
+ import ast
4
+ import json
5
+ from typing import Union
6
+
7
+ import numpy as np
8
+ import torch
9
+
10
+
11
+ def _array_to_json(arr: Union[np.ndarray, torch.Tensor]) -> str:
12
+ """Convert an array to a list and then to a JSON string.
13
+
14
+ Parameters
15
+ ----------
16
+ arr : Union[np.ndarray, torch.Tensor]
17
+ Array to be serialized.
18
+
19
+ Returns
20
+ -------
21
+ str
22
+ JSON string representing the array.
23
+ """
24
+ return json.dumps(arr.tolist())
25
+
26
+
27
+ def _to_numpy(lst: Union[str, list]) -> np.ndarray:
28
+ """Deserialize a list or string representing a list into `np.ndarray`.
29
+
30
+ Parameters
31
+ ----------
32
+ lst : list
33
+ List or string representing a list with the array content to be deserialized.
34
+
35
+ Returns
36
+ -------
37
+ np.ndarray
38
+ The deserialized array.
39
+ """
40
+ if isinstance(lst, str):
41
+ lst = ast.literal_eval(lst)
42
+ return np.asarray(lst)
43
+
44
+
45
+ def _to_torch(lst: Union[str, list]) -> torch.Tensor:
46
+ """Deserialize list or string representing a list into `torch.Tensor`.
47
+
48
+ Parameters
49
+ ----------
50
+ lst : Union[str, list]
51
+ List or string representing a list swith the array content to be deserialized.
52
+
53
+ Returns
54
+ -------
55
+ torch.Tensor
56
+ The deserialized tensor.
57
+ """
58
+ if isinstance(lst, str):
59
+ lst = ast.literal_eval(lst)
60
+ return torch.tensor(lst)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: careamics
3
- Version: 0.0.3
3
+ Version: 0.0.4.1
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,16 +16,17 @@ Classifier: Programming Language :: Python :: 3.11
16
16
  Classifier: Programming Language :: Python :: 3.12
17
17
  Classifier: Typing :: Typed
18
18
  Requires-Python: >=3.9
19
- Requires-Dist: bioimageio-core>=0.6.0
19
+ Requires-Dist: bioimageio-core>=0.6.9
20
20
  Requires-Dist: numpy<2.0.0
21
21
  Requires-Dist: psutil
22
- Requires-Dist: pydantic>=2.5
22
+ Requires-Dist: pydantic<2.9,>=2.5
23
23
  Requires-Dist: pytorch-lightning>=2.2.0
24
24
  Requires-Dist: pyyaml
25
25
  Requires-Dist: scikit-image<=0.23.2
26
26
  Requires-Dist: tifffile
27
27
  Requires-Dist: torch>=2.0.0
28
28
  Requires-Dist: torchvision
29
+ Requires-Dist: typer==0.12.3
29
30
  Requires-Dist: zarr<3.0.0
30
31
  Provides-Extra: dev
31
32
  Requires-Dist: pre-commit; extra == 'dev'
@@ -1,24 +1,27 @@
1
1
  careamics/__init__.py,sha256=xBCerWN66hv3T7dRGiUYLflmbJtJt1HqbSg9JCWp8pY,391
2
- careamics/careamist.py,sha256=wZxIf5E2Sebbcsd1IbTi6-VrPkI71M-kI9-bFHGmh-M,27867
2
+ careamics/careamist.py,sha256=eZttleBmhu649kkVj7spfBw7DLUuGjx58S2fTPem7g4,28351
3
3
  careamics/conftest.py,sha256=Od4WcaaP0UP-XUMrFr_oo4e6c2hi_RvNbuaRTopwlmI,911
4
4
  careamics/py.typed,sha256=esB4cHc6c07uVkGtqf8at7ttEnprwRxwk8obY8Qumq4,187
5
+ careamics/cli/__init__.py,sha256=LbM9bVtU1dy-khmdiIDXwvKy2v8wPBCEUuWqV_8rosA,106
6
+ careamics/cli/conf.py,sha256=1MRSzKcIL--IbYiNixW2aA58GC0ptQHWbBtp7b5eRwQ,13370
7
+ careamics/cli/main.py,sha256=EAWBQoCxcNv-4t3h8_YLCXNjWWU08cOzFj5DYam5e6g,3441
5
8
  careamics/config/__init__.py,sha256=M_Y0sGIVr1lQF4IpDeVkWkspbUNlbdH-iDjapMSGOoc,1127
6
9
  careamics/config/callback_model.py,sha256=EeYHqpMIPQwyNxLRzzX32Uncl5mZuB1bJO76RHpNymg,4555
7
- careamics/config/configuration_factory.py,sha256=TcB15HD81P-e-A2w8EfCdJLoYw3537tQ6NAAwKrSU6g,18799
8
- careamics/config/configuration_model.py,sha256=efUHSlYonO_m6eUPQLRb4NlsTADCL5lGCrwXlOGIHFU,18893
9
- careamics/config/data_model.py,sha256=zcVx8wN8IW-hMLXZ2jB7AWSQ1C2gSt87UtkoEtsClJA,15776
10
- careamics/config/fcn_algorithm_model.py,sha256=rwABUX1XwMMenv5Ff4z-ZTneFIhW_qIjMAbb57RV150,5082
10
+ careamics/config/configuration_factory.py,sha256=vHwRuYasELdZQv0KpX3fxPPUBbJfguBOOtPgqQJ3oks,30193
11
+ careamics/config/configuration_model.py,sha256=pvANQOkWpA-bB60bzI40z_tTnk1zt1l8pfXg7KsDsRs,18843
12
+ careamics/config/data_model.py,sha256=MOXnX6dmI-08b4H_43xOrnSlwdbCtO1UuI9YqOT8djA,15370
13
+ careamics/config/fcn_algorithm_model.py,sha256=eBBjkoyavhvDJFTrjJDkNrWSP_-YaK0cy7qo0lCdBQ0,5105
11
14
  careamics/config/inference_model.py,sha256=UE_-ZmCX6LFCbDBOwyGnvuAboF_JNX2m2LcF0WiwgCI,6961
12
- careamics/config/likelihood_model.py,sha256=f8EmLi5MtOWXO_ZBrjSa27b7vThy579pY-cecstJQEw,1413
13
- careamics/config/nm_model.py,sha256=g1WR7uBtOcZuhfTWaO1Ma0-5Pu4YmRLchVj9eU1_GoY,3897
14
- careamics/config/optimizer_models.py,sha256=p6gDYtO-jFtL7zVX0-Id-rGJWkkyhbU3EBrWD_4TxZE,5726
15
+ careamics/config/likelihood_model.py,sha256=CZtkaMqwGZLW5PWModv-tDDjjLxqGhhTkWpk27V3ERU,2274
16
+ careamics/config/nm_model.py,sha256=lscJb31g3w2H_AY-PL2nL06KuknbaLAftZsVNYNDmxA,4742
17
+ careamics/config/optimizer_models.py,sha256=OWpTydRBBR8wt_af1mZHNNwvL_RtnRFopAOdgjzLo30,5750
15
18
  careamics/config/tile_information.py,sha256=c-_xrVPOgcnjiEzQ-9A_GhNPamObkMANbeHaRP29R-4,2059
16
- careamics/config/training_model.py,sha256=9dfCcEcdPsGDW1Q0OIR_PmKjkWbZjeOmGIKuIyRd-0E,1875
17
- careamics/config/vae_algorithm_model.py,sha256=TkGyOPf_-vwfEFVRmst0q9Cnyz_Xa_U68Sy7VVKw4zE,6123
19
+ careamics/config/training_model.py,sha256=67_ipo_-LxhT4-WqAs40Sg8PjU--my43Qn3BhjvlXxM,3212
20
+ careamics/config/vae_algorithm_model.py,sha256=p4OSLCDokw2ADYKP6LvUy9eAHfapqKpcO5LE2RMkiT4,4678
18
21
  careamics/config/architectures/__init__.py,sha256=VyuBIopbqpR0KPq6cAeX3qPCrlbY8ZB_rGXwa2ApNvc,447
19
22
  careamics/config/architectures/architecture_model.py,sha256=qqPpmkNLwTBC3nwOmXpl33UAvpDFsAxFRBw9MIsQgws,921
20
23
  careamics/config/architectures/custom_model.py,sha256=-ROcKn_Ai7SZqzQLoEUc2BLAalgjyvoOnyDKUiY_cp0,4876
21
- careamics/config/architectures/lvae_model.py,sha256=JqcRYH6809GsiGb1Mta_rx-Uc9MmWjnS7IIeplg_UFk,4710
24
+ careamics/config/architectures/lvae_model.py,sha256=erySFyLStHX-jUXPLYAEZ2q9bPhWzsMRdU6VFLZobpE,4585
22
25
  careamics/config/architectures/register_model.py,sha256=lHH0aUPmXtI3Bq_76zkhg07_Yb_nOJZkZJLCC_G-rZM,2434
23
26
  careamics/config/architectures/unet_model.py,sha256=8F2KosNkrXUP2bxlm-D1mowS9x3GOjyXjsEo1Kf-05k,3497
24
27
  careamics/config/references/__init__.py,sha256=rZAQzmrciX5cNICcXaBH6sbE6N6L7_qYQUkasNy9y-c,763
@@ -31,14 +34,15 @@ careamics/config/support/supported_architectures.py,sha256=f93cRyeBOu5rYzvYrvWPV
31
34
  careamics/config/support/supported_data.py,sha256=T_mDiWLFMVji_EpjBABUObAJcnv-XBnqp9XUZP37Tdk,2902
32
35
  careamics/config/support/supported_loggers.py,sha256=ubSOkGoYabGbm_jmyc1R3eFcvcP-sHmuyiBi_d3_wLg,197
33
36
  careamics/config/support/supported_losses.py,sha256=2x5sZuxRbWJzodoL35I1mMYUUDMzk8UFiFdbyPwbJ4E,583
34
- careamics/config/support/supported_optimizers.py,sha256=xxbJsyohJTlHeUz2I4eRwcE3BeACs-6PH8cpX6w2wX8,1394
37
+ careamics/config/support/supported_optimizers.py,sha256=_2XmwzYENB6xpTedyWHUdWuGcDzdlfEAJjzm_qI3yRM,1392
35
38
  careamics/config/support/supported_pixel_manipulations.py,sha256=rFiktUlvoFU7s1NAKEMqsXOzLw5eaw9GtCKUznvq6xc,432
36
39
  careamics/config/support/supported_struct_axis.py,sha256=alZMA5Y-BpDymLPUEd1zqVY0xMkgl9Rv1d4ujED6sco,424
37
- careamics/config/support/supported_transforms.py,sha256=4uob-bnZ5aqpN5aEI67-aa7bsmVCrKxEknzf2BAZ3W4,283
38
- careamics/config/transformations/__init__.py,sha256=oqwBAL2XXbPRZZ5iOzNqalX6SyJ1M-S0lkfbDGZOzyE,378
40
+ careamics/config/support/supported_transforms.py,sha256=ODvmoTywvJWG_5-SJJZu-X1FNtKGhkNWQc-t26IFZWI,311
41
+ careamics/config/transformations/__init__.py,sha256=lW9DcsCfemnlcmECyw5Id28nIuwg1YPKWhGgdfzcv5s,493
39
42
  careamics/config/transformations/n2v_manipulate_model.py,sha256=Mdxc4J3vxe_dM2CIhmTwwGOIirQvrQXLoa2vRsTzoYI,1855
40
43
  careamics/config/transformations/normalize_model.py,sha256=1Rkk6IkF-7ytGU6HSzP-TpOi4RRWiQJ6fOd8zammXcg,1936
41
44
  careamics/config/transformations/transform_model.py,sha256=i7KAtSv4nah2H7uyJFKqg7RdKF68OHIPMNNvDo0HxGY,1000
45
+ careamics/config/transformations/transform_union.py,sha256=3PnzsWlD2ymIgRPrUDZzPT9vMOVLVDtUcEorZTYx_-I,574
42
46
  careamics/config/transformations/xy_flip_model.py,sha256=zU-uZ1b1zNZWckbho3onN-B7BHKhN7jbgbNZyRQhv2s,1025
43
47
  careamics/config/transformations/xy_random_rotate90_model.py,sha256=6sYKmtCLvz0SV1qZgBSHUTH-CUjwvHnohq1HyPntbyE,894
44
48
  careamics/config/validators/__init__.py,sha256=iv0nVI0W7j9DxFPwh0DjRCzM9P8oLQn4Gwi5rfuFrrI,180
@@ -63,7 +67,7 @@ careamics/dataset/patching/sequential_patching.py,sha256=_l3Q2uYIhjMJMaxDdSbHC9_
63
67
  careamics/dataset/patching/validate_patch_dimension.py,sha256=sQQ0-4b4uu60MNKkoWv95KxQ80J7Ku0CEk0-kAXlKeI,2134
64
68
  careamics/dataset/tiling/__init__.py,sha256=XynyAz85hVfkLtrG0lrMr_aBQm_YEwfu5uFcXMGHlOA,190
65
69
  careamics/dataset/tiling/collate_tiles.py,sha256=OrPZ-n-V3uGOc_7CcPnyEJqdbEVDlTfJfWmZnyBZ-HA,978
66
- careamics/dataset/tiling/lvae_tiled_patching.py,sha256=MIdwy_tNOlkErHbiykHJNLTdDEc3sdjKX5DnMvgDILo,10157
70
+ careamics/dataset/tiling/lvae_tiled_patching.py,sha256=AOS_1m1q74YhfLgWeUx1xkRNvgw1dq6Vi7yJhmMR-A0,12992
67
71
  careamics/dataset/tiling/tiled_patching.py,sha256=ouxUWvttzmTY310CuiR25IGNVWgksVQAXoN4IXSi_G0,5942
68
72
  careamics/file_io/__init__.py,sha256=vdIx5JV3JwoyOeWnY_0tY6aekwPFy_8hBqe0Yj-aOH8,334
69
73
  careamics/file_io/read/__init__.py,sha256=I2Ios3fOoe_7f1nYT88qt2hcl0107aJCvA8yPfdpVIA,259
@@ -74,9 +78,9 @@ careamics/file_io/write/__init__.py,sha256=syy-e55OKPqa2Fn7G6szJrAmmJ4JUJyr4Y4ZS
74
78
  careamics/file_io/write/get_func.py,sha256=hyGHe1RX-lfa9QFAnwRCz_gS0NRiRnXEtg4Bdeh2Esc,1627
75
79
  careamics/file_io/write/tiff.py,sha256=tBGIgl-I1sMyBivgx-dOTBykXBODkgwPH8MT3_4KAE8,1050
76
80
  careamics/lightning/__init__.py,sha256=iS9dYpYrkjyeZfodcohc25rBTPzxj9l50iTb5Jv0j0o,588
77
- careamics/lightning/lightning_module.py,sha256=daUVIJei8bICfmZvshFBz0-6gS4m4MA2Xx9vVTbj0xI,21522
81
+ careamics/lightning/lightning_module.py,sha256=afQVpEqVeug_hyy28yljPGajtTLLSOZbQB4UkgJQDT8,21846
78
82
  careamics/lightning/predict_data_module.py,sha256=JNwujK6QwObSx6P25ghpGl2f2gGT3KVgYMTlonZzH20,12745
79
- careamics/lightning/train_data_module.py,sha256=rwhui0Oh2EyBMQsXADOrI-IXPTG_YePpM0KcDw15H8s,27895
83
+ careamics/lightning/train_data_module.py,sha256=x532RUaB6lN8ojUevE0Kgv-MYCVRwkaLZaq-M6wnA6E,27896
80
84
  careamics/lightning/callbacks/__init__.py,sha256=neTWqF6EbBRVf0FqtBkPHeGIR3j1yTk0OASraEVN0Pg,312
81
85
  careamics/lightning/callbacks/hyperparameters_callback.py,sha256=u45knOZHwoVHz6yYfrnERQuozT_SfZ1OrKP0QjeU4EM,1495
82
86
  careamics/lightning/callbacks/progress_bar_callback.py,sha256=8HvNSWZldixd6pjz0dLDo0apIbzTovv5smKmZ6tZQ8U,2444
@@ -86,31 +90,36 @@ careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callb
86
90
  careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py,sha256=aqc6DDewD4n3tbLfqS4y-FfNKV9zy3-CZ0K2Mu16Mms,12567
87
91
  careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py,sha256=F1IpbNNgkv5eK8Xpqp7wqv2lsqEdP1wMRlBL7RBn93U,7114
88
92
  careamics/losses/__init__.py,sha256=4s73OlMCGJdNCVfOteJPyaPwflgIiu_fj3zpKLx7j6o,351
89
- careamics/losses/loss_factory.py,sha256=L68kC1Q13Yacr1PJ9IL6dhGjAsZSfhpfKeaptwLUpgE,4379
93
+ careamics/losses/loss_factory.py,sha256=MlhcU5KI9sXWuYUBBmIZtXj4TLi7r6hgiqZQQ3jg5_E,4378
90
94
  careamics/losses/fcn/__init__.py,sha256=kf92MKFGHr6upiztZVgWwtGPf734DZyub92Rn8uEq8o,18
91
95
  careamics/losses/fcn/losses.py,sha256=NdOz29hzJ7D26p13q-g0NWoYwNauIWrP2xWww6YPbB8,2360
92
96
  careamics/losses/lvae/__init__.py,sha256=0FNtMLHrOMfagtWkaBdz1NTjyf2y0QLgysxJv5jq5uw,19
93
97
  careamics/losses/lvae/loss_utils.py,sha256=QxzA2N1TglR4H0X0uyTWWytDagE1lA9IB_TK1lms3ao,2720
94
- careamics/losses/lvae/losses.py,sha256=CotmiPlBBxWZwZ4reLG4SZBUKGu_jRfPukA4u1sn5Xw,16100
98
+ careamics/losses/lvae/losses.py,sha256=lLwfuxGPqgkKj25jCONx0Mkx6iBrHSFavgCSazmyRUo,16076
95
99
  careamics/lvae_training/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- careamics/lvae_training/eval_utils.py,sha256=_AlXNXk4uGS2AGsF4PHJZpJoWBgq32kvQLEh7awOIvc,32405
97
- careamics/lvae_training/get_config.py,sha256=1PeqVo0iMDeKfGftUEypEBKGed9iepxgQmLkZQrWpyg,3062
100
+ careamics/lvae_training/eval_utils.py,sha256=_YxERlXdvITFkCa3P6jkzMDGkUaKn95KrAofmwomG9o,34486
101
+ careamics/lvae_training/get_config.py,sha256=dwVfaQS7nzjQss0E1gGLUpQpjPcOWwLgIhbu3Z0I1rg,3068
98
102
  careamics/lvae_training/lightning_module.py,sha256=ryr7iHqCMzCl5esi6_gEcnKFDQkMrw0EXK9Zfgv1Nek,27186
99
103
  careamics/lvae_training/metrics.py,sha256=KTDAKhe3vh-YxzGibjtkIG2nnUyujbnwqX4xGwaRXwE,6718
100
- careamics/lvae_training/train_lvae.py,sha256=uuLhBSbekLClg-I5hp7XTTlQhXO_j8hliIlpRvzKOI0,11074
104
+ careamics/lvae_training/train_lvae.py,sha256=lJEBlBGdISVkZBcEnPNRYgJ7VbapYzZHRaFOrZ0xYGE,11080
101
105
  careamics/lvae_training/train_utils.py,sha256=e-d4QsF-li8MmAPkAmB1daHpkuU16nBTnQFZYqpTjn4,3567
102
- careamics/lvae_training/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- careamics/lvae_training/dataset/data_utils.py,sha256=LNKpPEnk97oELj1F9Yo8fO4zXGrJXBRkENYL50kAB8M,27117
104
- careamics/lvae_training/dataset/lc_dataset.py,sha256=EvCM2YeiXeSn5GXvqTvZPRriYzKf5Hz3JVmy5a6w44k,10460
105
- careamics/lvae_training/dataset/lc_dataset_config.py,sha256=vgsjNZaotH0MqrauIUZcwPQd9Fpfj4ZVASnhTTB2OKE,398
106
- careamics/lvae_training/dataset/vae_data_config.py,sha256=EzGrjqGNGrlBbYWEoIwgdoL7MNguLGVKn89yp1WIfv8,5981
107
- careamics/lvae_training/dataset/vae_dataset.py,sha256=wYT0s0LuECDQCXCrN91p2vUyo-tzagIFJyRD8FPTXa0,39947
106
+ careamics/lvae_training/dataset/__init__.py,sha256=dvdHHaRA9ZfOt_uOnXkYyra2_b0Wsxs8qmrze6zxJAE,377
107
+ careamics/lvae_training/dataset/config.py,sha256=SeCHjyxwqP2Oa9oE1rQxThBs6I4PxY40zXhRp7oPE08,4294
108
+ careamics/lvae_training/dataset/lc_dataset.py,sha256=xErygllUu6Q-PfPZ24sHf5_NP7YGHD2NVyzmDZgDd2U,10697
109
+ careamics/lvae_training/dataset/multich_dataset.py,sha256=iNkCv9ohahhp8A0c5m6auVrvubbAGbyRBC_VxCNyeYM,41707
110
+ careamics/lvae_training/dataset/multifile_dataset.py,sha256=bbEyAZ8_ODDANXsJWn7tTr59VovEnbjGSSUI_PlwrQM,10246
111
+ careamics/lvae_training/dataset/types.py,sha256=ww89Fj9w85CVGxPkLhuWiBV7ZXaVeCb0lanZSJ__PvQ,821
112
+ careamics/lvae_training/dataset/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
+ careamics/lvae_training/dataset/utils/data_utils.py,sha256=8PvRPqSbYHPCl87cycZHxXIFOT_EoBV-8XCt3ZLh36s,3125
114
+ careamics/lvae_training/dataset/utils/empty_patch_fetcher.py,sha256=OFjeqhZ6vFULJsF5tnoByhEhE8aLHujFToU_yyqMCP4,2266
115
+ careamics/lvae_training/dataset/utils/index_manager.py,sha256=mmj1p-Ez5Qeiu99WdsFq8aCr6WaVUgn_bQ2INqNpuI4,9978
116
+ careamics/lvae_training/dataset/utils/index_switcher.py,sha256=ZoMi8LsaIkm8MFqIFaxN4oQGyzCcwOlCom8SYNus15E,6716
108
117
  careamics/model_io/__init__.py,sha256=HITzjiuZQwo-rQ2_Ma3bz9l7PDANv1_S489E-tffV9s,155
109
- careamics/model_io/bmz_io.py,sha256=YugFDqEHXqGnXrOkEBp_6utWUkTxJSNXUce7B5iCKOo,7575
118
+ careamics/model_io/bmz_io.py,sha256=tt21GHO2UD_jV7fGSnKhMSNK6iRRyCON5w9SPcxqW3I,7646
110
119
  careamics/model_io/model_io_utils.py,sha256=Dc_0YmcUfS3HuEVgN7KFfbDH8SGywT_eUCIJDVpEUHc,2755
111
120
  careamics/model_io/bioimage/__init__.py,sha256=r94nu8WDAvj0Fbu4C-iJXdOhfSQXeZBvN3UKsLG0RNI,298
112
121
  careamics/model_io/bioimage/_readme_factory.py,sha256=LZAuEiWNBTPaD8KrLPMq16yJuOPKDZiGQuTMHKLvoT4,3514
113
- careamics/model_io/bioimage/bioimage_utils.py,sha256=Md6y0-85q772A_G_lyhR8WKk17QTl1-0fqsEh5tAGyk,1157
122
+ careamics/model_io/bioimage/bioimage_utils.py,sha256=YVr75SDfafOiuYGonPbcsO-xVS0wI1WkmWQQZx6DXYQ,1246
114
123
  careamics/model_io/bioimage/model_description.py,sha256=au8NtLwYVtjRI0BW2hEAlDen5ZGt25KAcy7_ZnAoQO4,9640
115
124
  careamics/models/__init__.py,sha256=Xui2BLJd1I2r_E3Sj24fJALFTi2FGtfNscUWj_0c9Hk,93
116
125
  careamics/models/activation.py,sha256=nu3sDgd7Lsyw8rvmUwxNN-7SM09cEMfxZ9DRDzdSKns,1049
@@ -119,9 +128,9 @@ careamics/models/model_factory.py,sha256=hqhV8sDq1JBLKt_7Vrw4wJSugKmBt2FIWyO7ePn
119
128
  careamics/models/unet.py,sha256=3pXpiCIw7WUaDV0Jmczkxi99C5-Zu3NpQpWxgRkeGL8,14321
120
129
  careamics/models/lvae/__init__.py,sha256=6dT6uqgT__V08EjoTGxXguTbTkySZmByS9J2Bj6WWLM,53
121
130
  careamics/models/lvae/layers.py,sha256=zRHlIHaFp4nMZwTKdzhKNKGPdarefaITTqNWO8YrkMM,85022
122
- careamics/models/lvae/likelihoods.py,sha256=aMzmofJCzrRPGKNhIxO_mZQGoSuXxeu3OKt-BKTWfdo,11625
123
- careamics/models/lvae/lvae.py,sha256=MVj8rMFMuY896H0UYR4f85qcmdI5sU01fmilGbazBP8,36391
124
- careamics/models/lvae/noise_models.py,sha256=ITapvSDjqfO91uZxrDDfnrbKpgS0yAk_Yo2ESoZDvb0,19707
131
+ careamics/models/lvae/likelihoods.py,sha256=yTlIjhMpGPNJrdgbsvTLEKmtfjboiG_DsUcyBaqDgDs,11940
132
+ careamics/models/lvae/lvae.py,sha256=YCC_te_s-l-GV0iwuYSv8OYb2PJmc-39p6Jop5kp4Zc,36335
133
+ careamics/models/lvae/noise_models.py,sha256=RxIv_QdmBR2cMzGlhNZWY23ZAAeRc3C3-8MHYk2Rh6A,19709
125
134
  careamics/models/lvae/utils.py,sha256=4b6VKB8brg3yjv2mMb6I2KnT6HxnD5ZrfGcxGYKauHQ,11542
126
135
  careamics/prediction_utils/__init__.py,sha256=uYKzirlF-unFL9GbDPxFnYgOwSjGAtik9fonU7DfuEY,270
127
136
  careamics/prediction_utils/lvae_prediction.py,sha256=ZwPFCSeUGsULIMoMQWRYKHfLFaDm7UKyGaUMVfSUqfs,6210
@@ -129,26 +138,28 @@ careamics/prediction_utils/lvae_tiling_manager.py,sha256=SI-JaJvLrKWBSHdm-FjcqWd
129
138
  careamics/prediction_utils/prediction_outputs.py,sha256=p3Nbw9wRLU_M5uixPbzj_DmfxcSL7Y8rAQ_aTx70KQI,4082
130
139
  careamics/prediction_utils/stitch_prediction.py,sha256=HlfkJDirzbmil6Db-kFzlmhUREmGEZ2Ag8g-URbdIb0,3899
131
140
  careamics/transforms/__init__.py,sha256=VIHIsC8sMAh1TCm67ifB816Zp-LRo6rAONPuT2Qs3bs,483
132
- careamics/transforms/compose.py,sha256=dUHH-_ryZtnHuDZrbypf9B1oFsQv0_nYwS2ZbpGiaXw,2959
133
- careamics/transforms/n2v_manipulate.py,sha256=Gty7Jtu-RiFb1EnlrOi652qAOGKU5ZHvidRvykWqJxg,5438
134
- careamics/transforms/normalize.py,sha256=dfGWCGPyNwyEqg5wUCAA8cGdT1MvNkpKUEpw8Cw8DfA,7274
141
+ careamics/transforms/compose.py,sha256=EOEsga7oGNZZW8zerOz7TgirbLpGyaLf1WEnTXlRjoo,5677
142
+ careamics/transforms/n2v_manipulate.py,sha256=op-BT3LJaHgHULuqRRqTI6e45FtvvUZ0y-Smzbrh2WU,5693
143
+ careamics/transforms/normalize.py,sha256=fxs813ydCWrIzrxFzkbk1gW8OGSr0esQSrNUFSJuGL0,7715
135
144
  careamics/transforms/pixel_manipulation.py,sha256=sMR3A1GrgL5AactzZYzvvtz7L13sA34ckVEoNTBmDqM,13362
136
145
  careamics/transforms/struct_mask_parameters.py,sha256=jE29Li9sx3olaRnqYfJsSlKi2t0WQzJmCm9aCbIQEsA,421
137
146
  careamics/transforms/transform.py,sha256=cEqc4ci8na70i-HIGYC7udRfVa8D_8OjdRVrr3txLvQ,464
138
147
  careamics/transforms/tta.py,sha256=78S7Df9rLHmEVSQSI1qDcRrRJGauyG3oaIrXkckCkmw,2335
139
- careamics/transforms/xy_flip.py,sha256=Q1kKTa2kE3W1P3dlpT4GAVSSHM3TebnrvIyWh75Fnko,3443
140
- careamics/transforms/xy_random_rotate90.py,sha256=zWdBROLLjgxTMSQEQesJr17j84BmZhKWCMVVONHU8mw,2781
148
+ careamics/transforms/xy_flip.py,sha256=64BDo8bmAEwO1TNhbIYcUJPzzVmY5ZyNaSNmmGLkn0U,3842
149
+ careamics/transforms/xy_random_rotate90.py,sha256=0SsCTPGlpt-VCJvmr55KRULp3dwFMBN8fTDboJcEbWg,3192
141
150
  careamics/utils/__init__.py,sha256=rG_dnqX7rdyNTFWlDkIdNtDwwMQBpg_ym14ZFeYrWfs,402
142
151
  careamics/utils/autocorrelation.py,sha256=M_WYzrEOQngc5iSXWar4S3-EOnK6DfYHPC2vVMeu_Bs,945
143
152
  careamics/utils/base_enum.py,sha256=bz1D8mDx5V5hdnJ3WAzJXWHJTbgwAky5FprUt9F5cMA,1387
144
153
  careamics/utils/context.py,sha256=Ljf70OR1FcYpsVpxb5Sr2fzmPVIZgDS1uZob_3BcELg,1409
145
154
  careamics/utils/logging.py,sha256=coIscjkDYpqcsGnsONuYOdIYd6_gHxdnYIZ-e9Y2Ybg,10322
146
- careamics/utils/metrics.py,sha256=qx4QhOW9ACOgCjTUpYv631RrZ5YsdR0QQA1BY0YoRM8,4532
155
+ careamics/utils/metrics.py,sha256=yAoCvrZ1kQx-kT9xdTBYz-oh0I52ef6uBnw8qgzpwn8,10318
147
156
  careamics/utils/path_utils.py,sha256=8AugiG5DOmzgSnTCJI8vypXaPE0XhnR-9pzeiFUZ-0I,554
148
157
  careamics/utils/ram.py,sha256=tksyn8dVX_iJXmrDZDGub32hFZWIaNxnMheO5G1p43I,244
149
158
  careamics/utils/receptive_field.py,sha256=Y2h4c8S6glX3qcx5KHDmO17Kkuyey9voxfoXyqcAfiM,3296
159
+ careamics/utils/serializers.py,sha256=tovAjYoYjM26FbwjKuMD4xiyiISgqROs7aiCPa_rbVs,1379
150
160
  careamics/utils/torch_utils.py,sha256=g1zxdlM7_BA7mMLcCzmrxZX4LmH__KXlJibC95muVaA,3014
151
- careamics-0.0.3.dist-info/METADATA,sha256=MjZrNQfB-fS45U5SMjx2S6jOaFIbKPYSOBI30ZtqPmw,3626
152
- careamics-0.0.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
153
- careamics-0.0.3.dist-info/licenses/LICENSE,sha256=6zdNW-k_xHRKYWUf9tDI_ZplUciFHyj0g16DYuZ2udw,1509
154
- careamics-0.0.3.dist-info/RECORD,,
161
+ careamics-0.0.4.1.dist-info/METADATA,sha256=YemNt_kHIk852-I426HXUdc-gMN-18xR9Vs4WaP8NZ0,3662
162
+ careamics-0.0.4.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
163
+ careamics-0.0.4.1.dist-info/entry_points.txt,sha256=2fSNVXJWDJgFLATVj7MkjFNvpl53amG8tUzC3jf7G1s,53
164
+ careamics-0.0.4.1.dist-info/licenses/LICENSE,sha256=6zdNW-k_xHRKYWUf9tDI_ZplUciFHyj0g16DYuZ2udw,1509
165
+ careamics-0.0.4.1.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ careamics = careamics.cli.main:run