careamics 0.0.1__py3-none-any.whl → 0.0.2__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 (141) hide show
  1. careamics/__init__.py +6 -1
  2. careamics/careamist.py +726 -0
  3. careamics/config/__init__.py +35 -0
  4. careamics/config/algorithm_model.py +162 -0
  5. careamics/config/architectures/__init__.py +17 -0
  6. careamics/config/architectures/architecture_model.py +37 -0
  7. careamics/config/architectures/custom_model.py +159 -0
  8. careamics/config/architectures/register_model.py +103 -0
  9. careamics/config/architectures/unet_model.py +118 -0
  10. careamics/config/architectures/vae_model.py +42 -0
  11. careamics/config/callback_model.py +123 -0
  12. careamics/config/configuration_factory.py +575 -0
  13. careamics/config/configuration_model.py +600 -0
  14. careamics/config/data_model.py +502 -0
  15. careamics/config/inference_model.py +239 -0
  16. careamics/config/optimizer_models.py +187 -0
  17. careamics/config/references/__init__.py +45 -0
  18. careamics/config/references/algorithm_descriptions.py +132 -0
  19. careamics/config/references/references.py +39 -0
  20. careamics/config/support/__init__.py +31 -0
  21. careamics/config/support/supported_activations.py +26 -0
  22. careamics/config/support/supported_algorithms.py +20 -0
  23. careamics/config/support/supported_architectures.py +20 -0
  24. careamics/config/support/supported_data.py +109 -0
  25. careamics/config/support/supported_loggers.py +10 -0
  26. careamics/config/support/supported_losses.py +27 -0
  27. careamics/config/support/supported_optimizers.py +57 -0
  28. careamics/config/support/supported_pixel_manipulations.py +15 -0
  29. careamics/config/support/supported_struct_axis.py +21 -0
  30. careamics/config/support/supported_transforms.py +11 -0
  31. careamics/config/tile_information.py +65 -0
  32. careamics/config/training_model.py +72 -0
  33. careamics/config/transformations/__init__.py +15 -0
  34. careamics/config/transformations/n2v_manipulate_model.py +64 -0
  35. careamics/config/transformations/normalize_model.py +60 -0
  36. careamics/config/transformations/transform_model.py +45 -0
  37. careamics/config/transformations/xy_flip_model.py +43 -0
  38. careamics/config/transformations/xy_random_rotate90_model.py +35 -0
  39. careamics/config/validators/__init__.py +5 -0
  40. careamics/config/validators/validator_utils.py +101 -0
  41. careamics/conftest.py +39 -0
  42. careamics/dataset/__init__.py +17 -0
  43. careamics/dataset/dataset_utils/__init__.py +19 -0
  44. careamics/dataset/dataset_utils/dataset_utils.py +101 -0
  45. careamics/dataset/dataset_utils/file_utils.py +141 -0
  46. careamics/dataset/dataset_utils/iterate_over_files.py +83 -0
  47. careamics/dataset/dataset_utils/running_stats.py +186 -0
  48. careamics/dataset/in_memory_dataset.py +310 -0
  49. careamics/dataset/in_memory_pred_dataset.py +88 -0
  50. careamics/dataset/in_memory_tiled_pred_dataset.py +129 -0
  51. careamics/dataset/iterable_dataset.py +295 -0
  52. careamics/dataset/iterable_pred_dataset.py +122 -0
  53. careamics/dataset/iterable_tiled_pred_dataset.py +140 -0
  54. careamics/dataset/patching/__init__.py +1 -0
  55. careamics/dataset/patching/patching.py +299 -0
  56. careamics/dataset/patching/random_patching.py +201 -0
  57. careamics/dataset/patching/sequential_patching.py +212 -0
  58. careamics/dataset/patching/validate_patch_dimension.py +64 -0
  59. careamics/dataset/tiling/__init__.py +10 -0
  60. careamics/dataset/tiling/collate_tiles.py +33 -0
  61. careamics/dataset/tiling/tiled_patching.py +164 -0
  62. careamics/dataset/zarr_dataset.py +151 -0
  63. careamics/file_io/__init__.py +15 -0
  64. careamics/file_io/read/__init__.py +12 -0
  65. careamics/file_io/read/get_func.py +56 -0
  66. careamics/file_io/read/tiff.py +58 -0
  67. careamics/file_io/read/zarr.py +60 -0
  68. careamics/file_io/write/__init__.py +15 -0
  69. careamics/file_io/write/get_func.py +63 -0
  70. careamics/file_io/write/tiff.py +40 -0
  71. careamics/lightning/__init__.py +17 -0
  72. careamics/lightning/callbacks/__init__.py +11 -0
  73. careamics/lightning/callbacks/hyperparameters_callback.py +49 -0
  74. careamics/lightning/callbacks/prediction_writer_callback/__init__.py +20 -0
  75. careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +56 -0
  76. careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +233 -0
  77. careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +398 -0
  78. careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +215 -0
  79. careamics/lightning/callbacks/progress_bar_callback.py +90 -0
  80. careamics/lightning/lightning_module.py +276 -0
  81. careamics/lightning/predict_data_module.py +333 -0
  82. careamics/lightning/train_data_module.py +680 -0
  83. careamics/losses/__init__.py +5 -0
  84. careamics/losses/loss_factory.py +49 -0
  85. careamics/losses/losses.py +98 -0
  86. careamics/lvae_training/__init__.py +0 -0
  87. careamics/lvae_training/data_modules.py +1220 -0
  88. careamics/lvae_training/data_utils.py +618 -0
  89. careamics/lvae_training/eval_utils.py +905 -0
  90. careamics/lvae_training/get_config.py +84 -0
  91. careamics/lvae_training/lightning_module.py +701 -0
  92. careamics/lvae_training/metrics.py +214 -0
  93. careamics/lvae_training/train_lvae.py +339 -0
  94. careamics/lvae_training/train_utils.py +121 -0
  95. careamics/model_io/__init__.py +7 -0
  96. careamics/model_io/bioimage/__init__.py +11 -0
  97. careamics/model_io/bioimage/_readme_factory.py +121 -0
  98. careamics/model_io/bioimage/bioimage_utils.py +52 -0
  99. careamics/model_io/bioimage/model_description.py +327 -0
  100. careamics/model_io/bmz_io.py +233 -0
  101. careamics/model_io/model_io_utils.py +83 -0
  102. careamics/models/__init__.py +7 -0
  103. careamics/models/activation.py +37 -0
  104. careamics/models/layers.py +493 -0
  105. careamics/models/lvae/__init__.py +0 -0
  106. careamics/models/lvae/layers.py +1998 -0
  107. careamics/models/lvae/likelihoods.py +312 -0
  108. careamics/models/lvae/lvae.py +985 -0
  109. careamics/models/lvae/noise_models.py +409 -0
  110. careamics/models/lvae/utils.py +395 -0
  111. careamics/models/model_factory.py +52 -0
  112. careamics/models/unet.py +443 -0
  113. careamics/prediction_utils/__init__.py +10 -0
  114. careamics/prediction_utils/prediction_outputs.py +135 -0
  115. careamics/prediction_utils/stitch_prediction.py +98 -0
  116. careamics/transforms/__init__.py +20 -0
  117. careamics/transforms/compose.py +107 -0
  118. careamics/transforms/n2v_manipulate.py +146 -0
  119. careamics/transforms/normalize.py +243 -0
  120. careamics/transforms/pixel_manipulation.py +407 -0
  121. careamics/transforms/struct_mask_parameters.py +20 -0
  122. careamics/transforms/transform.py +24 -0
  123. careamics/transforms/tta.py +88 -0
  124. careamics/transforms/xy_flip.py +123 -0
  125. careamics/transforms/xy_random_rotate90.py +101 -0
  126. careamics/utils/__init__.py +19 -0
  127. careamics/utils/autocorrelation.py +40 -0
  128. careamics/utils/base_enum.py +60 -0
  129. careamics/utils/context.py +66 -0
  130. careamics/utils/logging.py +322 -0
  131. careamics/utils/metrics.py +115 -0
  132. careamics/utils/path_utils.py +26 -0
  133. careamics/utils/ram.py +15 -0
  134. careamics/utils/receptive_field.py +108 -0
  135. careamics/utils/torch_utils.py +127 -0
  136. careamics-0.0.2.dist-info/METADATA +78 -0
  137. careamics-0.0.2.dist-info/RECORD +140 -0
  138. {careamics-0.0.1.dist-info → careamics-0.0.2.dist-info}/WHEEL +1 -1
  139. {careamics-0.0.1.dist-info → careamics-0.0.2.dist-info}/licenses/LICENSE +1 -1
  140. careamics-0.0.1.dist-info/METADATA +0 -46
  141. careamics-0.0.1.dist-info/RECORD +0 -6
@@ -0,0 +1,115 @@
1
+ """
2
+ Metrics submodule.
3
+
4
+ This module contains various metrics and a metrics tracking class.
5
+ """
6
+
7
+ from typing import Union
8
+
9
+ import numpy as np
10
+ import torch
11
+ from skimage.metrics import peak_signal_noise_ratio
12
+
13
+
14
+ def psnr(gt: np.ndarray, pred: np.ndarray, range: float = 255.0) -> float:
15
+ """
16
+ Peak Signal to Noise Ratio.
17
+
18
+ This method calls skimage.metrics.peak_signal_noise_ratio. See:
19
+ https://scikit-image.org/docs/dev/api/skimage.metrics.html.
20
+
21
+ Parameters
22
+ ----------
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
+
30
+ Returns
31
+ -------
32
+ float
33
+ PSNR value.
34
+ """
35
+ return peak_signal_noise_ratio(gt, pred, data_range=range)
36
+
37
+
38
+ def _zero_mean(x: np.ndarray) -> np.ndarray:
39
+ """
40
+ Zero the mean of an array.
41
+
42
+ Parameters
43
+ ----------
44
+ x : NumPy array
45
+ Input array.
46
+
47
+ Returns
48
+ -------
49
+ NumPy array
50
+ Zero-mean array.
51
+ """
52
+ return x - np.mean(x)
53
+
54
+
55
+ def _fix_range(gt: np.ndarray, x: np.ndarray) -> np.ndarray:
56
+ """
57
+ Adjust the range of an array based on a reference ground-truth array.
58
+
59
+ Parameters
60
+ ----------
61
+ gt : np.ndarray
62
+ Ground truth image.
63
+ x : np.ndarray
64
+ Input array.
65
+
66
+ Returns
67
+ -------
68
+ np.ndarray
69
+ Range-adjusted array.
70
+ """
71
+ a = np.sum(gt * x) / (np.sum(x * x))
72
+ return x * a
73
+
74
+
75
+ def _fix(gt: np.ndarray, x: np.ndarray) -> np.ndarray:
76
+ """
77
+ Zero mean a groud truth array and adjust the range of the array.
78
+
79
+ Parameters
80
+ ----------
81
+ gt : np.ndarray
82
+ Ground truth image.
83
+ x : np.ndarray
84
+ Input array.
85
+
86
+ Returns
87
+ -------
88
+ np.ndarray
89
+ Zero-mean and range-adjusted array.
90
+ """
91
+ gt_ = _zero_mean(gt)
92
+ return _fix_range(gt_, _zero_mean(x))
93
+
94
+
95
+ def scale_invariant_psnr(
96
+ gt: np.ndarray, pred: np.ndarray
97
+ ) -> Union[float, torch.tensor]:
98
+ """
99
+ Scale invariant PSNR.
100
+
101
+ Parameters
102
+ ----------
103
+ gt : np.ndarray
104
+ Ground truth image.
105
+ pred : np.ndarray
106
+ Predicted image.
107
+
108
+ Returns
109
+ -------
110
+ Union[float, torch.tensor]
111
+ Scale invariant PSNR value.
112
+ """
113
+ range_parameter = (np.max(gt) - np.min(gt)) / np.std(gt)
114
+ gt_ = _zero_mean(gt) / np.std(gt)
115
+ return psnr(_zero_mean(gt_), _fix(gt_, pred), range_parameter)
@@ -0,0 +1,26 @@
1
+ """Utility functions for paths."""
2
+
3
+ from pathlib import Path
4
+ from typing import Union
5
+
6
+
7
+ def check_path_exists(path: Union[str, Path]) -> Path:
8
+ """Check if a path exists. If not, raise an error.
9
+
10
+ Note that it returns `path` as a Path object.
11
+
12
+ Parameters
13
+ ----------
14
+ path : Union[str, Path]
15
+ Path to check.
16
+
17
+ Returns
18
+ -------
19
+ Path
20
+ Path as a Path object.
21
+ """
22
+ path = Path(path)
23
+ if not path.exists():
24
+ raise FileNotFoundError(f"Data path {path} is incorrect or does not exist.")
25
+
26
+ return path
careamics/utils/ram.py ADDED
@@ -0,0 +1,15 @@
1
+ """Utility function to get RAM size."""
2
+
3
+ import psutil
4
+
5
+
6
+ def get_ram_size() -> int:
7
+ """
8
+ Get RAM size in mbytes.
9
+
10
+ Returns
11
+ -------
12
+ int
13
+ RAM size in mbytes.
14
+ """
15
+ return psutil.virtual_memory().available / 1024**2
@@ -0,0 +1,108 @@
1
+ """Receptive field calculation for computing the tile overlap."""
2
+
3
+ # TODO better docstring and function names
4
+ # Adapted from: https://github.com/frgfm/torch-scan
5
+
6
+ # import math
7
+ # import warnings
8
+ # from typing import Tuple, Union
9
+
10
+ # from torch import Tensor, nn
11
+ # from torch.nn import Module
12
+ # from torch.nn.modules.batchnorm import _BatchNorm
13
+ # from torch.nn.modules.conv import _ConvNd, _ConvTransposeNd
14
+ # from torch.nn.modules.pooling import (
15
+ # _AdaptiveAvgPoolNd,
16
+ # _AdaptiveMaxPoolNd,
17
+ # _AvgPoolNd,
18
+ # _MaxPoolNd,
19
+ # )
20
+
21
+
22
+ # def module_rf(module: Module, inp: Tensor, out: Tensor) -> Tuple[float, float, float]:
23
+ # """Estimate the spatial receptive field of the module.
24
+
25
+ # Parameters
26
+ # ----------
27
+ # module : Module
28
+ # Module to estimate the receptive field.
29
+ # inp : Tensor
30
+ # Input tensor.
31
+ # out : Tensor
32
+ # Output tensor.
33
+
34
+ # Returns
35
+ # -------
36
+ # Tuple[float, float, float]
37
+ # Receptive field, effective stride and padding.
38
+ # """
39
+ # if isinstance(
40
+ # module,
41
+ # (
42
+ # nn.Identity,
43
+ # nn.Flatten,
44
+ # nn.ReLU,
45
+ # nn.ELU,
46
+ # nn.LeakyReLU,
47
+ # nn.ReLU6,
48
+ # nn.Tanh,
49
+ # nn.Sigmoid,
50
+ # _BatchNorm,
51
+ # nn.Dropout,
52
+ # nn.Linear,
53
+ # ),
54
+ # ):
55
+ # return 1.0, 1.0, 0.0
56
+ # elif isinstance(module, _ConvTransposeNd):
57
+ # return rf_convtransposend(module, inp, out)
58
+ # elif isinstance(module, (_ConvNd, _MaxPoolNd, _AvgPoolNd)):
59
+ # return rf_aggregnd(module, inp, out)
60
+ # elif isinstance(module, (_AdaptiveMaxPoolNd, _AdaptiveAvgPoolNd)):
61
+ # return rf_adaptive_poolnd(module, inp, out)
62
+ # else:
63
+ # warnings.warn(
64
+ # f"Module type not supported: {module.__class__.__name__}", stacklevel=1
65
+ # )
66
+ # return 1.0, 1.0, 0.0
67
+
68
+
69
+ # def rf_convtransposend(
70
+ # module: _ConvTransposeNd, _: Tensor, __: Tensor
71
+ # ) -> Tuple[float, float, float]:
72
+ # k = (
73
+ # module.kernel_size[0]
74
+ # if isinstance(module.kernel_size, tuple)
75
+ # else module.kernel_size
76
+ # )
77
+ # s = module.stride[0] if isinstance(module.stride, tuple) else module.stride
78
+ # return -k, 1.0 / s, 0.0
79
+
80
+
81
+ # def rf_aggregnd(
82
+ # module: Union[_ConvNd, _MaxPoolNd, _AvgPoolNd], _: Tensor, __: Tensor
83
+ # ) -> Tuple[float, float, float]:
84
+ # k = (
85
+ # module.kernel_size[0]
86
+ # if isinstance(module.kernel_size, tuple)
87
+ # else module.kernel_size
88
+ # )
89
+ # if hasattr(module, "dilation"):
90
+ # d = (
91
+ # module.dilation[0]
92
+ # if isinstance(module.dilation, tuple)
93
+ # else module.dilation
94
+ # )
95
+ # k = d * (k - 1) + 1
96
+ # s = module.stride[0] if isinstance(module.stride, tuple) else module.stride
97
+ # p = module.padding[0] if isinstance(module.padding, tuple) else module.padding
98
+ # return k, s, p # type: ignore[return-value]
99
+
100
+
101
+ # def rf_adaptive_poolnd(
102
+ # _: Union[_AdaptiveMaxPoolNd, _AdaptiveAvgPoolNd], inp: Tensor, out: Tensor
103
+ # ) -> Tuple[int, int, float]:
104
+ # stride = math.ceil(inp.shape[-1] / out.shape[-1])
105
+ # kernel_size = stride
106
+ # padding = (inp.shape[-1] - kernel_size * stride) / 2
107
+
108
+ # return kernel_size, stride, padding
@@ -0,0 +1,127 @@
1
+ """
2
+ Convenience functions using torch.
3
+
4
+ These functions are used to control certain aspects and behaviours of PyTorch.
5
+ """
6
+
7
+ import inspect
8
+ from typing import Dict, Union
9
+
10
+ import torch
11
+
12
+ from careamics.config.support import SupportedOptimizer, SupportedScheduler
13
+
14
+ from ..utils.logging import get_logger
15
+
16
+ logger = get_logger(__name__) # TODO are logger still needed?
17
+
18
+
19
+ def filter_parameters(
20
+ func: type,
21
+ user_params: dict,
22
+ ) -> dict:
23
+ """
24
+ Filter parameters according to the function signature.
25
+
26
+ Parameters
27
+ ----------
28
+ func : type
29
+ Class object.
30
+ user_params : Dict
31
+ User provided parameters.
32
+
33
+ Returns
34
+ -------
35
+ Dict
36
+ Parameters matching `func`'s signature.
37
+ """
38
+ # Get the list of all default parameters
39
+ default_params = list(inspect.signature(func).parameters.keys())
40
+
41
+ # Filter matching parameters
42
+ params_to_be_used = set(user_params.keys()) & set(default_params)
43
+
44
+ return {key: user_params[key] for key in params_to_be_used}
45
+
46
+
47
+ def get_optimizer(name: str) -> torch.optim.Optimizer:
48
+ """
49
+ Return the optimizer class given its name.
50
+
51
+ Parameters
52
+ ----------
53
+ name : str
54
+ Optimizer name.
55
+
56
+ Returns
57
+ -------
58
+ torch.nn.Optimizer
59
+ Optimizer class.
60
+ """
61
+ if name not in SupportedOptimizer:
62
+ raise NotImplementedError(f"Optimizer {name} is not yet supported.")
63
+
64
+ return getattr(torch.optim, name)
65
+
66
+
67
+ def get_optimizers() -> Dict[str, str]:
68
+ """
69
+ Return the list of all optimizers available in torch.optim.
70
+
71
+ Returns
72
+ -------
73
+ Dict
74
+ Optimizers available in torch.optim.
75
+ """
76
+ optims = {}
77
+ for name, obj in inspect.getmembers(torch.optim):
78
+ if inspect.isclass(obj) and issubclass(obj, torch.optim.Optimizer):
79
+ if name != "Optimizer":
80
+ optims[name] = name
81
+ return optims
82
+
83
+
84
+ def get_scheduler(
85
+ name: str,
86
+ ) -> Union[
87
+ torch.optim.lr_scheduler.LRScheduler,
88
+ torch.optim.lr_scheduler.ReduceLROnPlateau,
89
+ ]:
90
+ """
91
+ Return the scheduler class given its name.
92
+
93
+ Parameters
94
+ ----------
95
+ name : str
96
+ Scheduler name.
97
+
98
+ Returns
99
+ -------
100
+ Union
101
+ Scheduler class.
102
+ """
103
+ if name not in SupportedScheduler:
104
+ raise NotImplementedError(f"Scheduler {name} is not yet supported.")
105
+
106
+ return getattr(torch.optim.lr_scheduler, name)
107
+
108
+
109
+ def get_schedulers() -> Dict[str, str]:
110
+ """
111
+ Return the list of all schedulers available in torch.optim.lr_scheduler.
112
+
113
+ Returns
114
+ -------
115
+ Dict
116
+ Schedulers available in torch.optim.lr_scheduler.
117
+ """
118
+ schedulers = {}
119
+ for name, obj in inspect.getmembers(torch.optim.lr_scheduler):
120
+ if inspect.isclass(obj) and issubclass(
121
+ obj, torch.optim.lr_scheduler.LRScheduler
122
+ ):
123
+ if "LRScheduler" not in name:
124
+ schedulers[name] = name
125
+ elif name == "ReduceLROnPlateau": # somewhat not a subclass of LRScheduler
126
+ schedulers[name] = name
127
+ return schedulers
@@ -0,0 +1,78 @@
1
+ Metadata-Version: 2.3
2
+ Name: careamics
3
+ Version: 0.0.2
4
+ Summary: Toolbox for running N2V and friends.
5
+ Project-URL: homepage, https://careamics.github.io/
6
+ Project-URL: repository, https://github.com/CAREamics/careamics
7
+ Author-email: Melisande Croft <melisande.croft@fht.org>, Joran Deschamps <joran.deschamps@fht.org>, Igor Zubarev <igor.zubarev@fht.org>
8
+ License: BSD-3-Clause
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: License :: OSI Approved :: BSD License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Typing :: Typed
18
+ Requires-Python: >=3.9
19
+ Requires-Dist: bioimageio-core>=0.6.0
20
+ Requires-Dist: numpy<2.0.0
21
+ Requires-Dist: psutil
22
+ Requires-Dist: pydantic>=2.5
23
+ Requires-Dist: pytorch-lightning>=2.2.0
24
+ Requires-Dist: pyyaml
25
+ Requires-Dist: scikit-image<=0.23.2
26
+ Requires-Dist: tifffile
27
+ Requires-Dist: torch>=2.0.0
28
+ Requires-Dist: torchvision
29
+ Requires-Dist: zarr<3.0.0
30
+ Provides-Extra: dev
31
+ Requires-Dist: pre-commit; extra == 'dev'
32
+ Requires-Dist: pytest; extra == 'dev'
33
+ Requires-Dist: pytest-cov; extra == 'dev'
34
+ Requires-Dist: sybil; extra == 'dev'
35
+ Provides-Extra: examples
36
+ Requires-Dist: careamics-portfolio; extra == 'examples'
37
+ Requires-Dist: jupyter; extra == 'examples'
38
+ Requires-Dist: matplotlib; extra == 'examples'
39
+ Provides-Extra: tensorboard
40
+ Requires-Dist: protobuf==3.20.3; extra == 'tensorboard'
41
+ Requires-Dist: tensorboard; extra == 'tensorboard'
42
+ Provides-Extra: wandb
43
+ Requires-Dist: wandb; extra == 'wandb'
44
+ Description-Content-Type: text/markdown
45
+
46
+ <p align="center">
47
+ <a href="https://careamics.github.io/">
48
+ <img src="https://raw.githubusercontent.com/CAREamics/.github/main/profile/images/banner_careamics.png">
49
+ </a>
50
+ </p>
51
+
52
+ # CAREamics
53
+
54
+ [![License](https://img.shields.io/pypi/l/careamics.svg?color=green)](https://github.com/CAREamics/careamics/blob/main/LICENSE)
55
+ [![PyPI](https://img.shields.io/pypi/v/careamics.svg?color=green)](https://pypi.org/project/careamics)
56
+ [![Python Version](https://img.shields.io/pypi/pyversions/careamics.svg?color=green)](https://python.org)
57
+ [![CI](https://github.com/CAREamics/careamics/actions/workflows/ci.yml/badge.svg)](https://github.com/CAREamics/careamics/actions/workflows/ci.yml)
58
+ [![codecov](https://codecov.io/gh/CAREamics/careamics/branch/main/graph/badge.svg)](https://codecov.io/gh/CAREamics/careamics)
59
+
60
+
61
+ CAREamics is a PyTorch library aimed at simplifying the use of Noise2Void and its many
62
+ variants and cousins (CARE, Noise2Noise, N2V2, P(P)N2V, HDN, muSplit etc.).
63
+
64
+ ## Why CAREamics?
65
+
66
+ Noise2Void is a widely used denoising algorithm, and is readily available from the `n2v`
67
+ python package. However, `n2v` is based on TensorFlow, while more recent methods
68
+ denoising methods (PPN2V, DivNoising, HDN) are all implemented in PyTorch, but are
69
+ lacking the extra features that would make them usable by the community.
70
+
71
+ The aim of CAREamics is to provide a PyTorch library reuniting all the latest methods
72
+ in one package, while providing a simple and consistent API. The library relies on
73
+ PyTorch Lightning as a back-end. In addition, we will provide extensive documentation and
74
+ tutorials on how to best apply these methods in a scientific context.
75
+
76
+ ## Installation and use
77
+
78
+ Check out the [documentation](https://careamics.github.io/) for installation instructions and guides!
@@ -0,0 +1,140 @@
1
+ careamics/__init__.py,sha256=xBCerWN66hv3T7dRGiUYLflmbJtJt1HqbSg9JCWp8pY,391
2
+ careamics/careamist.py,sha256=Mi6a4aUAUPH0YCQm2kObQepG5OFpjlHT0qm6GxAiq58,27496
3
+ careamics/conftest.py,sha256=Od4WcaaP0UP-XUMrFr_oo4e6c2hi_RvNbuaRTopwlmI,911
4
+ careamics/py.typed,sha256=esB4cHc6c07uVkGtqf8at7ttEnprwRxwk8obY8Qumq4,187
5
+ careamics/config/__init__.py,sha256=qaR98bVRFnEHYGG5EgGBIa9P9AtMRmKzpXuc1exdteo,913
6
+ careamics/config/algorithm_model.py,sha256=-Nx4E6M2EyBDozSTkXeYaj9b0KcIli0Gy6DE3P1WVfE,5443
7
+ careamics/config/callback_model.py,sha256=EeYHqpMIPQwyNxLRzzX32Uncl5mZuB1bJO76RHpNymg,4555
8
+ careamics/config/configuration_factory.py,sha256=Ckkv4ber2WSaa-BaoDNuyvpVMd02Q-9T27yziXJ-1Ak,18538
9
+ careamics/config/configuration_model.py,sha256=4LbAt3zUtx05mfTRrXBqD57iQn2s0Y93f81M8Gce4zo,18698
10
+ careamics/config/data_model.py,sha256=dpRthXU8lINT3laJygqka-fmUDT7U34QUHZYBX95oY8,15070
11
+ careamics/config/inference_model.py,sha256=UE_-ZmCX6LFCbDBOwyGnvuAboF_JNX2m2LcF0WiwgCI,6961
12
+ careamics/config/optimizer_models.py,sha256=p6gDYtO-jFtL7zVX0-Id-rGJWkkyhbU3EBrWD_4TxZE,5726
13
+ careamics/config/tile_information.py,sha256=c-_xrVPOgcnjiEzQ-9A_GhNPamObkMANbeHaRP29R-4,2059
14
+ careamics/config/training_model.py,sha256=9dfCcEcdPsGDW1Q0OIR_PmKjkWbZjeOmGIKuIyRd-0E,1875
15
+ careamics/config/architectures/__init__.py,sha256=CdnViydyTdQixus3uWHBIgbgxmu9t1_ADehqpjN_57U,444
16
+ careamics/config/architectures/architecture_model.py,sha256=4WvQQJGz5DLFjOUryZx0fqPuEMlF2RhtlV5XudJTIbc,922
17
+ careamics/config/architectures/custom_model.py,sha256=IRaequRi5BXMPL14gLr1B_27_XWPeWxQwgHF9_EJMaU,4664
18
+ careamics/config/architectures/register_model.py,sha256=lHH0aUPmXtI3Bq_76zkhg07_Yb_nOJZkZJLCC_G-rZM,2434
19
+ careamics/config/architectures/unet_model.py,sha256=8F2KosNkrXUP2bxlm-D1mowS9x3GOjyXjsEo1Kf-05k,3497
20
+ careamics/config/architectures/vae_model.py,sha256=iLPwjI4B_Ivv_qQNUJc4-Gwm4z8UA3P5BsKQucRFEMI,962
21
+ careamics/config/references/__init__.py,sha256=rZAQzmrciX5cNICcXaBH6sbE6N6L7_qYQUkasNy9y-c,763
22
+ careamics/config/references/algorithm_descriptions.py,sha256=wR3hIoeg5eiUEPbwTxMpQYLTKQyRl_5naSDbBZOZESU,3541
23
+ careamics/config/references/references.py,sha256=AXx08FJQxHb7SYOluCr_eQn_mbOris5dXqhKrCnhBTE,1573
24
+ careamics/config/support/__init__.py,sha256=pKqk76kyBraiSC1SQos-cyiQwsfOLLkLuWj6Hw60LZ4,1041
25
+ careamics/config/support/supported_activations.py,sha256=O27_dGDgw2P-DslKJsXGVAyS2NUQM6Ta4jeo2uTQlW0,519
26
+ careamics/config/support/supported_algorithms.py,sha256=GCkauFDlmb2hJwFSdoIpGmpLjPeYFHOGy2NweKdw8T4,358
27
+ careamics/config/support/supported_architectures.py,sha256=LLD6hyje9Q0BcvA7p2E8WW_cY5yEgMI_NAP4HBi27UU,540
28
+ careamics/config/support/supported_data.py,sha256=T_mDiWLFMVji_EpjBABUObAJcnv-XBnqp9XUZP37Tdk,2902
29
+ careamics/config/support/supported_loggers.py,sha256=ubSOkGoYabGbm_jmyc1R3eFcvcP-sHmuyiBi_d3_wLg,197
30
+ careamics/config/support/supported_losses.py,sha256=TPsMCuDdgb64TRyDwonnwHb1R-rkn3OzhtHimyVtrOY,540
31
+ careamics/config/support/supported_optimizers.py,sha256=xxbJsyohJTlHeUz2I4eRwcE3BeACs-6PH8cpX6w2wX8,1394
32
+ careamics/config/support/supported_pixel_manipulations.py,sha256=rFiktUlvoFU7s1NAKEMqsXOzLw5eaw9GtCKUznvq6xc,432
33
+ careamics/config/support/supported_struct_axis.py,sha256=alZMA5Y-BpDymLPUEd1zqVY0xMkgl9Rv1d4ujED6sco,424
34
+ careamics/config/support/supported_transforms.py,sha256=4uob-bnZ5aqpN5aEI67-aa7bsmVCrKxEknzf2BAZ3W4,283
35
+ careamics/config/transformations/__init__.py,sha256=oqwBAL2XXbPRZZ5iOzNqalX6SyJ1M-S0lkfbDGZOzyE,378
36
+ careamics/config/transformations/n2v_manipulate_model.py,sha256=UTyfpm1mmMvYg_HoMzXilZhJGx_muiV-lLQ4UThCFJ0,1854
37
+ careamics/config/transformations/normalize_model.py,sha256=1Rkk6IkF-7ytGU6HSzP-TpOi4RRWiQJ6fOd8zammXcg,1936
38
+ careamics/config/transformations/transform_model.py,sha256=i7KAtSv4nah2H7uyJFKqg7RdKF68OHIPMNNvDo0HxGY,1000
39
+ careamics/config/transformations/xy_flip_model.py,sha256=zU-uZ1b1zNZWckbho3onN-B7BHKhN7jbgbNZyRQhv2s,1025
40
+ careamics/config/transformations/xy_random_rotate90_model.py,sha256=6sYKmtCLvz0SV1qZgBSHUTH-CUjwvHnohq1HyPntbyE,894
41
+ careamics/config/validators/__init__.py,sha256=iv0nVI0W7j9DxFPwh0DjRCzM9P8oLQn4Gwi5rfuFrrI,180
42
+ careamics/config/validators/validator_utils.py,sha256=aNFzpBVbef3BZIt6MiNMVc2kW6MJDWqQgdYkFM8Gjig,2621
43
+ careamics/dataset/__init__.py,sha256=NQSWdpQu6BhqGGHUYuOt1hXJrGUN1LPNCP1A8duMY84,547
44
+ careamics/dataset/in_memory_dataset.py,sha256=7YRpbKg6nqrECDhaA88HNlstyTObQxTN9jPcNlE_aWE,9906
45
+ careamics/dataset/in_memory_pred_dataset.py,sha256=VvwW5D8TjgO_kR8eZinP-9qepSiI6ZsUN7FZ0Rvc8Bs,2161
46
+ careamics/dataset/in_memory_tiled_pred_dataset.py,sha256=DANmlnlV1ysXKdwGvmJoOYKcjlgoMhnSGSDRpeK79ZA,3552
47
+ careamics/dataset/iterable_dataset.py,sha256=vHwkzoQs-CvbGHcGtvYMF52dO6zLau89A13xDOWSGUU,9770
48
+ careamics/dataset/iterable_pred_dataset.py,sha256=2KC9C2hpZmhWSmo6w9Fhz0wjmbcsBlRy8QsYfO4dN2w,3740
49
+ careamics/dataset/iterable_tiled_pred_dataset.py,sha256=uNpc_13vo9REvGYOLu7lBNDh813b_UqZ9x5c4Q_udDE,4533
50
+ careamics/dataset/zarr_dataset.py,sha256=lojnK5bhiF1vyjuPtWXBrZ9sy5fT_rBvZJbbbnE-H_I,5665
51
+ careamics/dataset/dataset_utils/__init__.py,sha256=b9r_2BcrXoHNq9chXfZvgINGwZRpWfUZ_p6vikB_Kxw,507
52
+ careamics/dataset/dataset_utils/dataset_utils.py,sha256=zYNglet5lYKxIhTeOGG2K24oujC-m5zyYlwJcQcleVA,2662
53
+ careamics/dataset/dataset_utils/file_utils.py,sha256=4Aq92wz9M7esrujDbOxw1WNoYLlEjBRa4sOzf2Aw61c,4070
54
+ careamics/dataset/dataset_utils/iterate_over_files.py,sha256=TcX24NRt2cdM9gmmQV2f5ziwXxRne2-zePzz3DDFSMA,2871
55
+ careamics/dataset/dataset_utils/running_stats.py,sha256=0uOLaXpNwmY4lIElsHg4Ezf1YRbHy9An8GHXGYOaYmg,5565
56
+ careamics/dataset/patching/__init__.py,sha256=7-s12oUAZNlMOwSkxSwbD7vojQINWYFzn_4qIJ87WBg,37
57
+ careamics/dataset/patching/patching.py,sha256=deAxY34Iz-mguBlHQ-5EO4vRhPpR9I3LQ9onV1K_KqA,8858
58
+ careamics/dataset/patching/random_patching.py,sha256=61sLxA4eJN5TIWBVIDZdJahS_CkclpM7Kc_VdPj91dU,6486
59
+ careamics/dataset/patching/sequential_patching.py,sha256=_l3Q2uYIhjMJMaxDdSbHC9_2kRF9eLz-Xs3r9i7j3Nc,5903
60
+ careamics/dataset/patching/validate_patch_dimension.py,sha256=sQQ0-4b4uu60MNKkoWv95KxQ80J7Ku0CEk0-kAXlKeI,2134
61
+ careamics/dataset/tiling/__init__.py,sha256=XynyAz85hVfkLtrG0lrMr_aBQm_YEwfu5uFcXMGHlOA,190
62
+ careamics/dataset/tiling/collate_tiles.py,sha256=OrPZ-n-V3uGOc_7CcPnyEJqdbEVDlTfJfWmZnyBZ-HA,978
63
+ careamics/dataset/tiling/tiled_patching.py,sha256=ouxUWvttzmTY310CuiR25IGNVWgksVQAXoN4IXSi_G0,5942
64
+ careamics/file_io/__init__.py,sha256=vdIx5JV3JwoyOeWnY_0tY6aekwPFy_8hBqe0Yj-aOH8,334
65
+ careamics/file_io/read/__init__.py,sha256=I2Ios3fOoe_7f1nYT88qt2hcl0107aJCvA8yPfdpVIA,259
66
+ careamics/file_io/read/get_func.py,sha256=yGXD0rTFD7u70FR0axrQtWies0aYW3iQ6f0Wfcd8z-8,1394
67
+ careamics/file_io/read/tiff.py,sha256=_WVqUycI4NMk2GzDBEOWcGuSr1293673A1vs7WvZbS4,1358
68
+ careamics/file_io/read/zarr.py,sha256=2jzREAnJDQSv0qmsL-v00BxmiZ_sp0ijq667LZSQ_hY,1685
69
+ careamics/file_io/write/__init__.py,sha256=syy-e55OKPqa2Fn7G6szJrAmmJ4JUJyr4Y4ZSnKK0zg,283
70
+ careamics/file_io/write/get_func.py,sha256=hyGHe1RX-lfa9QFAnwRCz_gS0NRiRnXEtg4Bdeh2Esc,1627
71
+ careamics/file_io/write/tiff.py,sha256=tBGIgl-I1sMyBivgx-dOTBykXBODkgwPH8MT3_4KAE8,1050
72
+ careamics/lightning/__init__.py,sha256=IAhfuveylgTdwIqynRqmGNOGrBlNmsXNgK3TuPDqU-o,572
73
+ careamics/lightning/lightning_module.py,sha256=n8aQmHmjnztUTm5eob_MwcDw4W6pHMiUra1WNsvcVug,8951
74
+ careamics/lightning/predict_data_module.py,sha256=rgHhS5fKoa5wscWyvmPP_FHHdVnDnLbF4sG7y_C7ZOM,12747
75
+ careamics/lightning/train_data_module.py,sha256=XVLeFTfB5IQFdh9LnuvDNOMqqloRMH-miQxk8cVybjU,27897
76
+ careamics/lightning/callbacks/__init__.py,sha256=neTWqF6EbBRVf0FqtBkPHeGIR3j1yTk0OASraEVN0Pg,312
77
+ careamics/lightning/callbacks/hyperparameters_callback.py,sha256=ODJpwwdgc1-Py8yEUpXLar8_IOAcfR7lF3--6LfSiGc,1496
78
+ careamics/lightning/callbacks/progress_bar_callback.py,sha256=8HvNSWZldixd6pjz0dLDo0apIbzTovv5smKmZ6tZQ8U,2444
79
+ careamics/lightning/callbacks/prediction_writer_callback/__init__.py,sha256=tATV4kFZ8h4ZpN866URsf2vbEfY9HlHN4VALJcDySCY,548
80
+ careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py,sha256=i4vGGiVLslafi-5iuvkAKzBgZ0BpwTTxSTo31oViFz4,1480
81
+ careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py,sha256=HGDyYLSak9puGEs42cI_08peAuOMaFyZaRkcpv_n0iY,8183
82
+ careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py,sha256=aqc6DDewD4n3tbLfqS4y-FfNKV9zy3-CZ0K2Mu16Mms,12567
83
+ careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py,sha256=yki7H3_11nGOpCmjVqI5KY_kItHkQj3JQhLsnledT2A,7115
84
+ careamics/losses/__init__.py,sha256=kVEwfZ2xXfd8x0n-VHGKm6qvzbto5pIIJYP_jN-bCtw,89
85
+ careamics/losses/loss_factory.py,sha256=vaMlxH5oescWTKlK1adWwbeD9tW4Ti-p7qKmc1iHCi0,1005
86
+ careamics/losses/losses.py,sha256=DKwHZ9ifVe6wMd3tBOiswLC-saU1bj1RCcXGOkREmKU,2328
87
+ careamics/lvae_training/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
+ careamics/lvae_training/data_modules.py,sha256=A5Uoo4qtPdX99QSi-Zl22LzO0I1DszJbQuXMGUXGQEE,46665
89
+ careamics/lvae_training/data_utils.py,sha256=tRk0k0TkBLPocqlUlkwQN_dm5jzw5z74YNs2DsCuy9Y,21670
90
+ careamics/lvae_training/eval_utils.py,sha256=_AlXNXk4uGS2AGsF4PHJZpJoWBgq32kvQLEh7awOIvc,32405
91
+ careamics/lvae_training/get_config.py,sha256=-CWVxlPo71_huUSmXnmYvOmgvcvrZiv0wIpXnR32l6E,3054
92
+ careamics/lvae_training/lightning_module.py,sha256=ryr7iHqCMzCl5esi6_gEcnKFDQkMrw0EXK9Zfgv1Nek,27186
93
+ careamics/lvae_training/metrics.py,sha256=KTDAKhe3vh-YxzGibjtkIG2nnUyujbnwqX4xGwaRXwE,6718
94
+ careamics/lvae_training/train_lvae.py,sha256=Eu--3-RHSfhQVsJ-CTDXhUeoM1fzf_H9IGtBaNPOsHI,11044
95
+ careamics/lvae_training/train_utils.py,sha256=e-d4QsF-li8MmAPkAmB1daHpkuU16nBTnQFZYqpTjn4,3567
96
+ careamics/model_io/__init__.py,sha256=HITzjiuZQwo-rQ2_Ma3bz9l7PDANv1_S489E-tffV9s,155
97
+ careamics/model_io/bmz_io.py,sha256=eKyqt-z6Y3Fv0F4EZGzeE1hUzxh9rQNcqkYmYopDoF4,7128
98
+ careamics/model_io/model_io_utils.py,sha256=EebZL3t6oIHY0kuTKacmAEriTQ4B77KuAQ84UHG7XW4,2357
99
+ careamics/model_io/bioimage/__init__.py,sha256=r94nu8WDAvj0Fbu4C-iJXdOhfSQXeZBvN3UKsLG0RNI,298
100
+ careamics/model_io/bioimage/_readme_factory.py,sha256=LZAuEiWNBTPaD8KrLPMq16yJuOPKDZiGQuTMHKLvoT4,3514
101
+ careamics/model_io/bioimage/bioimage_utils.py,sha256=xsrzTy40LVkMmLh2qbjvz7rcs6GnQWMMlCYgwcIlb1E,1157
102
+ careamics/model_io/bioimage/model_description.py,sha256=3jw4wkJDefLEW-2BbEfAml3AwyteZszL-v8JYpJRcOo,9635
103
+ careamics/models/__init__.py,sha256=Wty5hwQb_As33pQOZqY5j-DpDOdh5ArBH4BhQDSuXTQ,133
104
+ careamics/models/activation.py,sha256=xdqz4-yKV7oElG_dDrYuibS8HOiYvKdV_r9FwWPvaDE,977
105
+ careamics/models/layers.py,sha256=oWzpq8OdHFEJqPWC9X8IRPNe0XqAnesSqwoT6V3t1Mw,13712
106
+ careamics/models/model_factory.py,sha256=5YRwRRUemxb-pTRL3VWn8N61tCGyhrurqPgcFaNETb0,1360
107
+ careamics/models/unet.py,sha256=3pXpiCIw7WUaDV0Jmczkxi99C5-Zu3NpQpWxgRkeGL8,14321
108
+ careamics/models/lvae/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
+ careamics/models/lvae/layers.py,sha256=wFuQgmtJtB7YNuNi2dVoOEWq1ndR6ku4iGvC2u0TJlM,84991
110
+ careamics/models/lvae/likelihoods.py,sha256=FRFTh34FaBLGxn9OXFzqFyHhhJMSKYhgqxwG65VbGh8,10489
111
+ careamics/models/lvae/lvae.py,sha256=5RlK4-h55dGz9UMCh8JCbLsaaIQ5S2IKGeI9d4nD5dA,40167
112
+ careamics/models/lvae/noise_models.py,sha256=yotY5gkPAowbI7esOmHlzBWcSsZlH2G3U7uYIWghGwY,15703
113
+ careamics/models/lvae/utils.py,sha256=muy4nLHmnB3BPAI0tQbJK_vVtBZOLBvhrJigHIOx5V4,11542
114
+ careamics/prediction_utils/__init__.py,sha256=uYKzirlF-unFL9GbDPxFnYgOwSjGAtik9fonU7DfuEY,270
115
+ careamics/prediction_utils/prediction_outputs.py,sha256=p3Nbw9wRLU_M5uixPbzj_DmfxcSL7Y8rAQ_aTx70KQI,4082
116
+ careamics/prediction_utils/stitch_prediction.py,sha256=aA4rktZBgk776Iw10ABXmusuvm2vqvMwoeEPCCC0nw4,3150
117
+ careamics/transforms/__init__.py,sha256=VIHIsC8sMAh1TCm67ifB816Zp-LRo6rAONPuT2Qs3bs,483
118
+ careamics/transforms/compose.py,sha256=dUHH-_ryZtnHuDZrbypf9B1oFsQv0_nYwS2ZbpGiaXw,2959
119
+ careamics/transforms/n2v_manipulate.py,sha256=Gty7Jtu-RiFb1EnlrOi652qAOGKU5ZHvidRvykWqJxg,5438
120
+ careamics/transforms/normalize.py,sha256=dfGWCGPyNwyEqg5wUCAA8cGdT1MvNkpKUEpw8Cw8DfA,7274
121
+ careamics/transforms/pixel_manipulation.py,sha256=lNA19Vlo_3GHzRnT_4AFuv6eWQaxbie2PTYGalCY4YQ,13346
122
+ careamics/transforms/struct_mask_parameters.py,sha256=jE29Li9sx3olaRnqYfJsSlKi2t0WQzJmCm9aCbIQEsA,421
123
+ careamics/transforms/transform.py,sha256=cEqc4ci8na70i-HIGYC7udRfVa8D_8OjdRVrr3txLvQ,464
124
+ careamics/transforms/tta.py,sha256=78S7Df9rLHmEVSQSI1qDcRrRJGauyG3oaIrXkckCkmw,2335
125
+ careamics/transforms/xy_flip.py,sha256=Q1kKTa2kE3W1P3dlpT4GAVSSHM3TebnrvIyWh75Fnko,3443
126
+ careamics/transforms/xy_random_rotate90.py,sha256=zWdBROLLjgxTMSQEQesJr17j84BmZhKWCMVVONHU8mw,2781
127
+ careamics/utils/__init__.py,sha256=rG_dnqX7rdyNTFWlDkIdNtDwwMQBpg_ym14ZFeYrWfs,402
128
+ careamics/utils/autocorrelation.py,sha256=M_WYzrEOQngc5iSXWar4S3-EOnK6DfYHPC2vVMeu_Bs,945
129
+ careamics/utils/base_enum.py,sha256=bz1D8mDx5V5hdnJ3WAzJXWHJTbgwAky5FprUt9F5cMA,1387
130
+ careamics/utils/context.py,sha256=Ljf70OR1FcYpsVpxb5Sr2fzmPVIZgDS1uZob_3BcELg,1409
131
+ careamics/utils/logging.py,sha256=coIscjkDYpqcsGnsONuYOdIYd6_gHxdnYIZ-e9Y2Ybg,10322
132
+ careamics/utils/metrics.py,sha256=9YQe5Aj2Pv2h9jnRFeRbDQ_3qXAW0QHpucSqiUtwDcA,2382
133
+ careamics/utils/path_utils.py,sha256=8AugiG5DOmzgSnTCJI8vypXaPE0XhnR-9pzeiFUZ-0I,554
134
+ careamics/utils/ram.py,sha256=tksyn8dVX_iJXmrDZDGub32hFZWIaNxnMheO5G1p43I,244
135
+ careamics/utils/receptive_field.py,sha256=Y2h4c8S6glX3qcx5KHDmO17Kkuyey9voxfoXyqcAfiM,3296
136
+ careamics/utils/torch_utils.py,sha256=g1zxdlM7_BA7mMLcCzmrxZX4LmH__KXlJibC95muVaA,3014
137
+ careamics-0.0.2.dist-info/METADATA,sha256=Ss5EYkycsQMCKUrO2DxtmKWaCzsCU2RdSTWHZPOvAZg,3480
138
+ careamics-0.0.2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
139
+ careamics-0.0.2.dist-info/licenses/LICENSE,sha256=6zdNW-k_xHRKYWUf9tDI_ZplUciFHyj0g16DYuZ2udw,1509
140
+ careamics-0.0.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.17.0
2
+ Generator: hatchling 1.25.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,6 +1,6 @@
1
1
  BSD 3-Clause License
2
2
 
3
- Copyright (c) 2023, Jug lab
3
+ Copyright (c) 2023, CAREamics contributors
4
4
 
5
5
  Redistribution and use in source and binary forms, with or without
6
6
  modification, are permitted provided that the following conditions are met:
@@ -1,46 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: careamics
3
- Version: 0.0.1
4
- Summary: CAREamics
5
- Project-URL: homepage, https://careamics.github.io/
6
- Project-URL: repository, https://github.com/CAREamics/careamics
7
- Author-email: Igor Zubarev <igor.zubarev@fht.org>, Joran Deschamps <joran.deschamps@fht.org>
8
- License: BSD-3-Clause
9
- License-File: LICENSE
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: Programming Language :: Python :: 3.9
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Requires-Python: >=3.8
17
- Provides-Extra: dev
18
- Requires-Dist: black; extra == 'dev'
19
- Requires-Dist: ipython; extra == 'dev'
20
- Requires-Dist: mypy; extra == 'dev'
21
- Requires-Dist: pdbpp; extra == 'dev'
22
- Requires-Dist: rich; extra == 'dev'
23
- Requires-Dist: ruff; extra == 'dev'
24
- Provides-Extra: test
25
- Requires-Dist: pytest; extra == 'test'
26
- Requires-Dist: pytest-cov; extra == 'test'
27
- Description-Content-Type: text/markdown
28
-
29
- <p align="center">
30
- <a href="https://careamics.github.io/">
31
- <img src="https://github.com/CAREamics/.github/blob/main/profile/images/banner_careamics.png">
32
- </a>
33
- </p>
34
-
35
-
36
- [![License](https://img.shields.io/pypi/l/careamics.svg?color=green)](https://github.com/CAREamics/careamics/raw/main/LICENSE)
37
- [![PyPI](https://img.shields.io/pypi/v/careamics.svg?color=green)](https://pypi.org/project/careamics)
38
- [![Python Version](https://img.shields.io/pypi/pyversions/careamics.svg?color=green)](https://python.org)
39
- [![CI](https://github.com/CAREamics/careamics/actions/workflows/ci.yml/badge.svg)](https://github.com/CAREamics/careamics/actions/workflows/ci.yml)
40
- [![codecov](https://codecov.io/gh/CAREamics/careamics/branch/main/graph/badge.svg)](https://codecov.io/gh/CAREamics/careamics)
41
-
42
-
43
- Stay tuned for DL goodies with CAREamics!
44
-
45
- Currently, this version is a place-holder, next version will contain the
46
- first usable algorithms, as well as examples.