careamics 0.0.19__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.
Files changed (279) hide show
  1. careamics/__init__.py +24 -0
  2. careamics/careamist.py +961 -0
  3. careamics/cli/__init__.py +5 -0
  4. careamics/cli/conf.py +394 -0
  5. careamics/cli/main.py +234 -0
  6. careamics/cli/utils.py +27 -0
  7. careamics/config/__init__.py +66 -0
  8. careamics/config/algorithms/__init__.py +21 -0
  9. careamics/config/algorithms/care_algorithm_config.py +122 -0
  10. careamics/config/algorithms/hdn_algorithm_config.py +103 -0
  11. careamics/config/algorithms/microsplit_algorithm_config.py +103 -0
  12. careamics/config/algorithms/n2n_algorithm_config.py +115 -0
  13. careamics/config/algorithms/n2v_algorithm_config.py +296 -0
  14. careamics/config/algorithms/pn2v_algorithm_config.py +301 -0
  15. careamics/config/algorithms/unet_algorithm_config.py +91 -0
  16. careamics/config/algorithms/vae_algorithm_config.py +178 -0
  17. careamics/config/architectures/__init__.py +7 -0
  18. careamics/config/architectures/architecture_config.py +37 -0
  19. careamics/config/architectures/lvae_config.py +262 -0
  20. careamics/config/architectures/unet_config.py +125 -0
  21. careamics/config/configuration.py +367 -0
  22. careamics/config/configuration_factories.py +2400 -0
  23. careamics/config/data/__init__.py +27 -0
  24. careamics/config/data/data_config.py +472 -0
  25. careamics/config/data/inference_config.py +237 -0
  26. careamics/config/data/ng_data_config.py +1038 -0
  27. careamics/config/data/patch_filter/__init__.py +15 -0
  28. careamics/config/data/patch_filter/filter_config.py +16 -0
  29. careamics/config/data/patch_filter/mask_filter_config.py +17 -0
  30. careamics/config/data/patch_filter/max_filter_config.py +15 -0
  31. careamics/config/data/patch_filter/meanstd_filter_config.py +18 -0
  32. careamics/config/data/patch_filter/shannon_filter_config.py +15 -0
  33. careamics/config/data/patching_strategies/__init__.py +15 -0
  34. careamics/config/data/patching_strategies/_overlapping_patched_config.py +102 -0
  35. careamics/config/data/patching_strategies/_patched_config.py +56 -0
  36. careamics/config/data/patching_strategies/random_patching_config.py +45 -0
  37. careamics/config/data/patching_strategies/sequential_patching_config.py +25 -0
  38. careamics/config/data/patching_strategies/tiled_patching_config.py +40 -0
  39. careamics/config/data/patching_strategies/whole_patching_config.py +12 -0
  40. careamics/config/data/tile_information.py +65 -0
  41. careamics/config/lightning/__init__.py +15 -0
  42. careamics/config/lightning/callbacks/__init__.py +8 -0
  43. careamics/config/lightning/callbacks/callback_config.py +116 -0
  44. careamics/config/lightning/optimizer_configs.py +186 -0
  45. careamics/config/lightning/training_config.py +70 -0
  46. careamics/config/losses/__init__.py +8 -0
  47. careamics/config/losses/loss_config.py +60 -0
  48. careamics/config/ng_configs/__init__.py +5 -0
  49. careamics/config/ng_configs/n2v_configuration.py +64 -0
  50. careamics/config/ng_configs/ng_configuration.py +256 -0
  51. careamics/config/ng_factories/__init__.py +9 -0
  52. careamics/config/ng_factories/algorithm_factory.py +120 -0
  53. careamics/config/ng_factories/data_factory.py +154 -0
  54. careamics/config/ng_factories/n2v_factory.py +256 -0
  55. careamics/config/ng_factories/training_factory.py +69 -0
  56. careamics/config/noise_model/__init__.py +12 -0
  57. careamics/config/noise_model/likelihood_config.py +60 -0
  58. careamics/config/noise_model/noise_model_config.py +149 -0
  59. careamics/config/support/__init__.py +31 -0
  60. careamics/config/support/supported_activations.py +27 -0
  61. careamics/config/support/supported_algorithms.py +40 -0
  62. careamics/config/support/supported_architectures.py +13 -0
  63. careamics/config/support/supported_data.py +122 -0
  64. careamics/config/support/supported_filters.py +17 -0
  65. careamics/config/support/supported_loggers.py +10 -0
  66. careamics/config/support/supported_losses.py +32 -0
  67. careamics/config/support/supported_optimizers.py +57 -0
  68. careamics/config/support/supported_patching_strategies.py +22 -0
  69. careamics/config/support/supported_pixel_manipulations.py +15 -0
  70. careamics/config/support/supported_struct_axis.py +21 -0
  71. careamics/config/support/supported_transforms.py +12 -0
  72. careamics/config/transformations/__init__.py +22 -0
  73. careamics/config/transformations/n2v_manipulate_config.py +79 -0
  74. careamics/config/transformations/normalize_config.py +59 -0
  75. careamics/config/transformations/transform_config.py +45 -0
  76. careamics/config/transformations/transform_unions.py +29 -0
  77. careamics/config/transformations/xy_flip_config.py +43 -0
  78. careamics/config/transformations/xy_random_rotate90_config.py +35 -0
  79. careamics/config/utils/__init__.py +8 -0
  80. careamics/config/utils/configuration_io.py +85 -0
  81. careamics/config/validators/__init__.py +18 -0
  82. careamics/config/validators/axes_validators.py +90 -0
  83. careamics/config/validators/model_validators.py +84 -0
  84. careamics/config/validators/patch_validators.py +55 -0
  85. careamics/conftest.py +39 -0
  86. careamics/dataset/__init__.py +17 -0
  87. careamics/dataset/dataset_utils/__init__.py +19 -0
  88. careamics/dataset/dataset_utils/dataset_utils.py +118 -0
  89. careamics/dataset/dataset_utils/file_utils.py +141 -0
  90. careamics/dataset/dataset_utils/iterate_over_files.py +84 -0
  91. careamics/dataset/dataset_utils/running_stats.py +189 -0
  92. careamics/dataset/in_memory_dataset.py +303 -0
  93. careamics/dataset/in_memory_pred_dataset.py +88 -0
  94. careamics/dataset/in_memory_tiled_pred_dataset.py +131 -0
  95. careamics/dataset/iterable_dataset.py +294 -0
  96. careamics/dataset/iterable_pred_dataset.py +121 -0
  97. careamics/dataset/iterable_tiled_pred_dataset.py +141 -0
  98. careamics/dataset/patching/__init__.py +1 -0
  99. careamics/dataset/patching/patching.py +300 -0
  100. careamics/dataset/patching/random_patching.py +110 -0
  101. careamics/dataset/patching/sequential_patching.py +212 -0
  102. careamics/dataset/patching/validate_patch_dimension.py +64 -0
  103. careamics/dataset/tiling/__init__.py +10 -0
  104. careamics/dataset/tiling/collate_tiles.py +33 -0
  105. careamics/dataset/tiling/lvae_tiled_patching.py +375 -0
  106. careamics/dataset/tiling/tiled_patching.py +166 -0
  107. careamics/dataset_ng/README.md +212 -0
  108. careamics/dataset_ng/__init__.py +0 -0
  109. careamics/dataset_ng/dataset.py +365 -0
  110. careamics/dataset_ng/demos/bsd68_demo.ipynb +361 -0
  111. careamics/dataset_ng/demos/bsd68_zarr_demo.ipynb +453 -0
  112. careamics/dataset_ng/demos/care_U2OS_demo.ipynb +330 -0
  113. careamics/dataset_ng/demos/demo_custom_image_stack.ipynb +736 -0
  114. careamics/dataset_ng/demos/demo_datamodule.ipynb +447 -0
  115. careamics/dataset_ng/demos/demo_dataset.ipynb +278 -0
  116. careamics/dataset_ng/demos/demo_patch_extractor.py +51 -0
  117. careamics/dataset_ng/demos/mouse_nuclei_demo.ipynb +293 -0
  118. careamics/dataset_ng/factory.py +180 -0
  119. careamics/dataset_ng/grouped_index_sampler.py +73 -0
  120. careamics/dataset_ng/image_stack/__init__.py +14 -0
  121. careamics/dataset_ng/image_stack/czi_image_stack.py +396 -0
  122. careamics/dataset_ng/image_stack/file_image_stack.py +140 -0
  123. careamics/dataset_ng/image_stack/image_stack_protocol.py +93 -0
  124. careamics/dataset_ng/image_stack/image_utils/__init__.py +6 -0
  125. careamics/dataset_ng/image_stack/image_utils/image_stack_utils.py +125 -0
  126. careamics/dataset_ng/image_stack/in_memory_image_stack.py +93 -0
  127. careamics/dataset_ng/image_stack/zarr_image_stack.py +170 -0
  128. careamics/dataset_ng/image_stack_loader/__init__.py +19 -0
  129. careamics/dataset_ng/image_stack_loader/image_stack_loader_protocol.py +70 -0
  130. careamics/dataset_ng/image_stack_loader/image_stack_loaders.py +273 -0
  131. careamics/dataset_ng/image_stack_loader/zarr_utils.py +130 -0
  132. careamics/dataset_ng/legacy_interoperability.py +175 -0
  133. careamics/dataset_ng/microsplit_input_synth.py +377 -0
  134. careamics/dataset_ng/patch_extractor/__init__.py +7 -0
  135. careamics/dataset_ng/patch_extractor/limit_file_extractor.py +50 -0
  136. careamics/dataset_ng/patch_extractor/patch_construction.py +151 -0
  137. careamics/dataset_ng/patch_extractor/patch_extractor.py +117 -0
  138. careamics/dataset_ng/patch_filter/__init__.py +20 -0
  139. careamics/dataset_ng/patch_filter/coordinate_filter_protocol.py +27 -0
  140. careamics/dataset_ng/patch_filter/filter_factory.py +95 -0
  141. careamics/dataset_ng/patch_filter/mask_filter.py +96 -0
  142. careamics/dataset_ng/patch_filter/max_filter.py +188 -0
  143. careamics/dataset_ng/patch_filter/mean_std_filter.py +218 -0
  144. careamics/dataset_ng/patch_filter/patch_filter_protocol.py +50 -0
  145. careamics/dataset_ng/patch_filter/shannon_filter.py +188 -0
  146. careamics/dataset_ng/patching_strategies/__init__.py +26 -0
  147. careamics/dataset_ng/patching_strategies/patching_strategy_factory.py +50 -0
  148. careamics/dataset_ng/patching_strategies/patching_strategy_protocol.py +161 -0
  149. careamics/dataset_ng/patching_strategies/random_patching.py +393 -0
  150. careamics/dataset_ng/patching_strategies/sequential_patching.py +99 -0
  151. careamics/dataset_ng/patching_strategies/tiling_strategy.py +207 -0
  152. careamics/dataset_ng/patching_strategies/whole_sample.py +61 -0
  153. careamics/file_io/__init__.py +15 -0
  154. careamics/file_io/read/__init__.py +11 -0
  155. careamics/file_io/read/get_func.py +57 -0
  156. careamics/file_io/read/tiff.py +58 -0
  157. careamics/file_io/write/__init__.py +15 -0
  158. careamics/file_io/write/get_func.py +63 -0
  159. careamics/file_io/write/tiff.py +40 -0
  160. careamics/lightning/__init__.py +32 -0
  161. careamics/lightning/callbacks/__init__.py +13 -0
  162. careamics/lightning/callbacks/data_stats_callback.py +33 -0
  163. careamics/lightning/callbacks/hyperparameters_callback.py +49 -0
  164. careamics/lightning/callbacks/prediction_writer_callback/__init__.py +20 -0
  165. careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +56 -0
  166. careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +234 -0
  167. careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +399 -0
  168. careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +215 -0
  169. careamics/lightning/callbacks/progress_bar_callback.py +90 -0
  170. careamics/lightning/dataset_ng/__init__.py +1 -0
  171. careamics/lightning/dataset_ng/callbacks/__init__.py +1 -0
  172. careamics/lightning/dataset_ng/callbacks/prediction_writer/__init__.py +29 -0
  173. careamics/lightning/dataset_ng/callbacks/prediction_writer/cached_tiles_strategy.py +164 -0
  174. careamics/lightning/dataset_ng/callbacks/prediction_writer/file_path_utils.py +33 -0
  175. careamics/lightning/dataset_ng/callbacks/prediction_writer/prediction_writer_callback.py +219 -0
  176. careamics/lightning/dataset_ng/callbacks/prediction_writer/write_image_strategy.py +91 -0
  177. careamics/lightning/dataset_ng/callbacks/prediction_writer/write_strategy.py +27 -0
  178. careamics/lightning/dataset_ng/callbacks/prediction_writer/write_strategy_factory.py +214 -0
  179. careamics/lightning/dataset_ng/callbacks/prediction_writer/write_tiles_zarr_strategy.py +375 -0
  180. careamics/lightning/dataset_ng/data_module.py +529 -0
  181. careamics/lightning/dataset_ng/data_module_utils.py +395 -0
  182. careamics/lightning/dataset_ng/lightning_modules/__init__.py +9 -0
  183. careamics/lightning/dataset_ng/lightning_modules/care_module.py +97 -0
  184. careamics/lightning/dataset_ng/lightning_modules/n2v_module.py +106 -0
  185. careamics/lightning/dataset_ng/lightning_modules/unet_module.py +221 -0
  186. careamics/lightning/dataset_ng/prediction/__init__.py +16 -0
  187. careamics/lightning/dataset_ng/prediction/convert_prediction.py +198 -0
  188. careamics/lightning/dataset_ng/prediction/stitch_prediction.py +171 -0
  189. careamics/lightning/lightning_module.py +914 -0
  190. careamics/lightning/microsplit_data_module.py +632 -0
  191. careamics/lightning/predict_data_module.py +341 -0
  192. careamics/lightning/train_data_module.py +666 -0
  193. careamics/losses/__init__.py +21 -0
  194. careamics/losses/fcn/__init__.py +1 -0
  195. careamics/losses/fcn/losses.py +125 -0
  196. careamics/losses/loss_factory.py +80 -0
  197. careamics/losses/lvae/__init__.py +1 -0
  198. careamics/losses/lvae/loss_utils.py +83 -0
  199. careamics/losses/lvae/losses.py +589 -0
  200. careamics/lvae_training/__init__.py +0 -0
  201. careamics/lvae_training/calibration.py +191 -0
  202. careamics/lvae_training/dataset/__init__.py +20 -0
  203. careamics/lvae_training/dataset/config.py +135 -0
  204. careamics/lvae_training/dataset/lc_dataset.py +274 -0
  205. careamics/lvae_training/dataset/ms_dataset_ref.py +1067 -0
  206. careamics/lvae_training/dataset/multich_dataset.py +1121 -0
  207. careamics/lvae_training/dataset/multicrop_dset.py +196 -0
  208. careamics/lvae_training/dataset/multifile_dataset.py +335 -0
  209. careamics/lvae_training/dataset/types.py +32 -0
  210. careamics/lvae_training/dataset/utils/__init__.py +0 -0
  211. careamics/lvae_training/dataset/utils/data_utils.py +114 -0
  212. careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +65 -0
  213. careamics/lvae_training/dataset/utils/index_manager.py +491 -0
  214. careamics/lvae_training/dataset/utils/index_switcher.py +165 -0
  215. careamics/lvae_training/eval_utils.py +987 -0
  216. careamics/lvae_training/get_config.py +84 -0
  217. careamics/lvae_training/lightning_module.py +701 -0
  218. careamics/lvae_training/metrics.py +214 -0
  219. careamics/lvae_training/train_lvae.py +342 -0
  220. careamics/lvae_training/train_utils.py +121 -0
  221. careamics/model_io/__init__.py +7 -0
  222. careamics/model_io/bioimage/__init__.py +11 -0
  223. careamics/model_io/bioimage/_readme_factory.py +113 -0
  224. careamics/model_io/bioimage/bioimage_utils.py +56 -0
  225. careamics/model_io/bioimage/cover_factory.py +171 -0
  226. careamics/model_io/bioimage/model_description.py +341 -0
  227. careamics/model_io/bmz_io.py +251 -0
  228. careamics/model_io/model_io_utils.py +95 -0
  229. careamics/models/__init__.py +5 -0
  230. careamics/models/activation.py +40 -0
  231. careamics/models/layers.py +495 -0
  232. careamics/models/lvae/__init__.py +3 -0
  233. careamics/models/lvae/layers.py +1371 -0
  234. careamics/models/lvae/likelihoods.py +394 -0
  235. careamics/models/lvae/lvae.py +848 -0
  236. careamics/models/lvae/noise_models.py +738 -0
  237. careamics/models/lvae/stochastic.py +394 -0
  238. careamics/models/lvae/utils.py +404 -0
  239. careamics/models/model_factory.py +54 -0
  240. careamics/models/unet.py +449 -0
  241. careamics/nm_training_placeholder.py +203 -0
  242. careamics/prediction_utils/__init__.py +21 -0
  243. careamics/prediction_utils/lvae_prediction.py +158 -0
  244. careamics/prediction_utils/lvae_tiling_manager.py +362 -0
  245. careamics/prediction_utils/prediction_outputs.py +238 -0
  246. careamics/prediction_utils/stitch_prediction.py +193 -0
  247. careamics/py.typed +5 -0
  248. careamics/transforms/__init__.py +22 -0
  249. careamics/transforms/compose.py +173 -0
  250. careamics/transforms/n2v_manipulate.py +150 -0
  251. careamics/transforms/n2v_manipulate_torch.py +149 -0
  252. careamics/transforms/normalize.py +374 -0
  253. careamics/transforms/pixel_manipulation.py +406 -0
  254. careamics/transforms/pixel_manipulation_torch.py +388 -0
  255. careamics/transforms/struct_mask_parameters.py +20 -0
  256. careamics/transforms/transform.py +24 -0
  257. careamics/transforms/tta.py +88 -0
  258. careamics/transforms/xy_flip.py +131 -0
  259. careamics/transforms/xy_random_rotate90.py +108 -0
  260. careamics/utils/__init__.py +19 -0
  261. careamics/utils/autocorrelation.py +40 -0
  262. careamics/utils/base_enum.py +60 -0
  263. careamics/utils/context.py +67 -0
  264. careamics/utils/deprecation.py +63 -0
  265. careamics/utils/lightning_utils.py +71 -0
  266. careamics/utils/logging.py +323 -0
  267. careamics/utils/metrics.py +394 -0
  268. careamics/utils/path_utils.py +26 -0
  269. careamics/utils/plotting.py +76 -0
  270. careamics/utils/ram.py +15 -0
  271. careamics/utils/receptive_field.py +108 -0
  272. careamics/utils/serializers.py +62 -0
  273. careamics/utils/torch_utils.py +150 -0
  274. careamics/utils/version.py +38 -0
  275. careamics-0.0.19.dist-info/METADATA +80 -0
  276. careamics-0.0.19.dist-info/RECORD +279 -0
  277. careamics-0.0.19.dist-info/WHEEL +4 -0
  278. careamics-0.0.19.dist-info/entry_points.txt +2 -0
  279. careamics-0.0.19.dist-info/licenses/LICENSE +28 -0
@@ -0,0 +1,66 @@
1
+ """CAREamics Pydantic configurations."""
2
+
3
+ __all__ = [
4
+ "CAREAlgorithm",
5
+ "CheckpointConfig",
6
+ "Configuration",
7
+ "DataConfig",
8
+ "GaussianMixtureNMConfig",
9
+ "HDNAlgorithm",
10
+ "InferenceConfig",
11
+ "LVAEConfig",
12
+ "LVAELossConfig",
13
+ "MicroSplitAlgorithm",
14
+ "MultiChannelNMConfig",
15
+ "N2NAlgorithm",
16
+ "N2VAlgorithm",
17
+ "NGDataConfig",
18
+ "PN2VAlgorithm",
19
+ "TrainingConfig",
20
+ "UNetBasedAlgorithm",
21
+ "UNetConfig",
22
+ "VAEBasedAlgorithm",
23
+ "algorithm_factory",
24
+ "create_care_configuration",
25
+ "create_hdn_configuration",
26
+ "create_microsplit_configuration",
27
+ "create_n2n_configuration",
28
+ "create_n2v_configuration",
29
+ "create_ng_data_configuration",
30
+ "create_pn2v_configuration",
31
+ "load_configuration",
32
+ "save_configuration",
33
+ ]
34
+
35
+ from .algorithms import (
36
+ CAREAlgorithm,
37
+ HDNAlgorithm,
38
+ MicroSplitAlgorithm,
39
+ N2NAlgorithm,
40
+ N2VAlgorithm,
41
+ PN2VAlgorithm,
42
+ UNetBasedAlgorithm,
43
+ VAEBasedAlgorithm,
44
+ )
45
+ from .architectures import LVAEConfig, UNetConfig
46
+ from .configuration import Configuration
47
+ from .configuration_factories import (
48
+ algorithm_factory,
49
+ create_care_configuration,
50
+ create_hdn_configuration,
51
+ create_microsplit_configuration,
52
+ create_n2n_configuration,
53
+ create_n2v_configuration,
54
+ create_pn2v_configuration,
55
+ )
56
+ from .data import DataConfig, NGDataConfig
57
+ from .data.inference_config import InferenceConfig
58
+ from .lightning.callbacks import CheckpointConfig
59
+ from .lightning.training_config import TrainingConfig
60
+ from .losses.loss_config import LVAELossConfig
61
+ from .ng_factories.data_factory import create_ng_data_configuration
62
+ from .noise_model import (
63
+ GaussianMixtureNMConfig,
64
+ MultiChannelNMConfig,
65
+ )
66
+ from .utils.configuration_io import load_configuration, save_configuration
@@ -0,0 +1,21 @@
1
+ """Algorithm configurations."""
2
+
3
+ __all__ = [
4
+ "CAREAlgorithm",
5
+ "HDNAlgorithm",
6
+ "MicroSplitAlgorithm",
7
+ "N2NAlgorithm",
8
+ "N2VAlgorithm",
9
+ "PN2VAlgorithm",
10
+ "UNetBasedAlgorithm",
11
+ "VAEBasedAlgorithm",
12
+ ]
13
+
14
+ from .care_algorithm_config import CAREAlgorithm
15
+ from .hdn_algorithm_config import HDNAlgorithm
16
+ from .microsplit_algorithm_config import MicroSplitAlgorithm
17
+ from .n2n_algorithm_config import N2NAlgorithm
18
+ from .n2v_algorithm_config import N2VAlgorithm
19
+ from .pn2v_algorithm_config import PN2VAlgorithm
20
+ from .unet_algorithm_config import UNetBasedAlgorithm
21
+ from .vae_algorithm_config import VAEBasedAlgorithm
@@ -0,0 +1,122 @@
1
+ """CARE algorithm configuration."""
2
+
3
+ from typing import Annotated, Literal
4
+
5
+ from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import AfterValidator
7
+
8
+ from careamics.config.architectures import UNetConfig
9
+ from careamics.config.validators import (
10
+ model_without_final_activation,
11
+ model_without_n2v2,
12
+ )
13
+
14
+ from .unet_algorithm_config import UNetBasedAlgorithm
15
+
16
+ CARE = "CARE"
17
+
18
+ CARE_DESCRIPTION = (
19
+ "Content-aware image restoration (CARE) is a deep-learning-based "
20
+ "algorithm that uses a U-Net architecture to restore images. CARE "
21
+ "is a supervised algorithm that requires pairs of noisy and "
22
+ "clean images to train the network. The algorithm learns to "
23
+ "predict the clean image from the noisy image. CARE is "
24
+ "particularly useful for denoising images acquired in low-light "
25
+ "conditions, such as fluorescence microscopy images."
26
+ )
27
+ CARE_REF = CiteEntry(
28
+ text='Weigert, Martin, et al. "Content-aware image restoration: pushing the '
29
+ 'limits of fluorescence microscopy." Nature methods 15.12 (2018): 1090-1097.',
30
+ doi="10.1038/s41592-018-0216-7",
31
+ )
32
+
33
+
34
+ class CAREAlgorithm(UNetBasedAlgorithm):
35
+ """CARE algorithm configuration.
36
+
37
+ Attributes
38
+ ----------
39
+ algorithm : "care"
40
+ CARE Algorithm name.
41
+ loss : {"mae", "mse"}
42
+ CARE-compatible loss function.
43
+ """
44
+
45
+ algorithm: Literal["care"] = "care"
46
+ """CARE Algorithm name."""
47
+
48
+ loss: Literal["mae", "mse"] = "mae"
49
+ """CARE-compatible loss function."""
50
+
51
+ model: Annotated[
52
+ UNetConfig,
53
+ AfterValidator(model_without_n2v2),
54
+ AfterValidator(model_without_final_activation),
55
+ ]
56
+ """UNet without a final activation function and without the `n2v2` modifications."""
57
+
58
+ def get_algorithm_friendly_name(self) -> str:
59
+ """
60
+ Get the algorithm friendly name.
61
+
62
+ Returns
63
+ -------
64
+ str
65
+ Friendly name of the algorithm.
66
+ """
67
+ return CARE
68
+
69
+ def get_algorithm_keywords(self) -> list[str]:
70
+ """
71
+ Get algorithm keywords.
72
+
73
+ Returns
74
+ -------
75
+ list[str]
76
+ List of keywords.
77
+ """
78
+ return [
79
+ "restoration",
80
+ "UNet",
81
+ "3D" if self.model.is_3D() else "2D",
82
+ "CAREamics",
83
+ "pytorch",
84
+ CARE,
85
+ ]
86
+
87
+ def get_algorithm_references(self) -> str:
88
+ """
89
+ Get the algorithm references.
90
+
91
+ This is used to generate the README of the BioImage Model Zoo export.
92
+
93
+ Returns
94
+ -------
95
+ str
96
+ Algorithm references.
97
+ """
98
+ return CARE_REF.text + " doi: " + CARE_REF.doi
99
+
100
+ def get_algorithm_citations(self) -> list[CiteEntry]:
101
+ """
102
+ Return a list of citation entries of the current algorithm.
103
+
104
+ This is used to generate the model description for the BioImage Model Zoo.
105
+
106
+ Returns
107
+ -------
108
+ List[CiteEntry]
109
+ List of citation entries.
110
+ """
111
+ return [CARE_REF]
112
+
113
+ def get_algorithm_description(self) -> str:
114
+ """
115
+ Get the algorithm description.
116
+
117
+ Returns
118
+ -------
119
+ str
120
+ Algorithm description.
121
+ """
122
+ return CARE_DESCRIPTION
@@ -0,0 +1,103 @@
1
+ """HDN algorithm configuration."""
2
+
3
+ from typing import Literal
4
+
5
+ from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import ConfigDict
7
+
8
+ from careamics.config.algorithms.vae_algorithm_config import VAEBasedAlgorithm
9
+ from careamics.config.architectures import LVAEConfig
10
+ from careamics.config.losses.loss_config import LVAELossConfig
11
+
12
+ HDN = "Hierarchical DivNoising"
13
+
14
+ HDN_DESCRIPTION = (
15
+ "HDN leverages a hierarchical VAE to perform image "
16
+ "restoration. It is designed to be interpretable and unsupervised, "
17
+ "making it suitable for a wide range of microscopy images."
18
+ )
19
+ HDN_REF = CiteEntry(
20
+ text='Prakash, M., Delbracio, M., Milanfar, P., Jug, F. 2022. "Interpretable '
21
+ 'Unsupervised Diversity Denoising and Artefact Removal." The International '
22
+ "Conference on Learning Representations (ICLR).",
23
+ doi="10.1561/2200000056",
24
+ )
25
+
26
+
27
+ class HDNAlgorithm(VAEBasedAlgorithm):
28
+ """HDN algorithm configuration."""
29
+
30
+ model_config = ConfigDict(validate_assignment=True)
31
+
32
+ algorithm: Literal["hdn"] = "hdn"
33
+
34
+ loss: LVAELossConfig
35
+
36
+ model: LVAEConfig # TODO add validators
37
+
38
+ is_supervised: bool = False
39
+
40
+ def get_algorithm_friendly_name(self) -> str:
41
+ """
42
+ Get the algorithm friendly name.
43
+
44
+ Returns
45
+ -------
46
+ str
47
+ Friendly name of the algorithm.
48
+ """
49
+ return HDN
50
+
51
+ def get_algorithm_keywords(self) -> list[str]:
52
+ """
53
+ Get algorithm keywords.
54
+
55
+ Returns
56
+ -------
57
+ list[str]
58
+ List of keywords.
59
+ """
60
+ return [
61
+ "restoration",
62
+ "VAE",
63
+ "3D" if self.model.is_3D() else "2D",
64
+ "CAREamics",
65
+ "pytorch",
66
+ ]
67
+
68
+ def get_algorithm_references(self) -> str:
69
+ """
70
+ Get the algorithm references.
71
+
72
+ This is used to generate the README of the BioImage Model Zoo export.
73
+
74
+ Returns
75
+ -------
76
+ str
77
+ Algorithm references.
78
+ """
79
+ return HDN_REF.text + " doi: " + HDN_REF.doi
80
+
81
+ def get_algorithm_citations(self) -> list[CiteEntry]:
82
+ """
83
+ Return a list of citation entries of the current algorithm.
84
+
85
+ This is used to generate the model description for the BioImage Model Zoo.
86
+
87
+ Returns
88
+ -------
89
+ List[CiteEntry]
90
+ List of citation entries.
91
+ """
92
+ return [HDN_REF]
93
+
94
+ def get_algorithm_description(self) -> str:
95
+ """
96
+ Get the algorithm description.
97
+
98
+ Returns
99
+ -------
100
+ str
101
+ Algorithm description.
102
+ """
103
+ return HDN_DESCRIPTION
@@ -0,0 +1,103 @@
1
+ """MicroSplit algorithm configuration."""
2
+
3
+ from typing import Literal
4
+
5
+ from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import ConfigDict
7
+
8
+ from careamics.config.algorithms.vae_algorithm_config import VAEBasedAlgorithm
9
+ from careamics.config.architectures import LVAEConfig
10
+ from careamics.config.losses.loss_config import LVAELossConfig
11
+
12
+ MICROSPLIT = "MicroSplit"
13
+
14
+ MICROSPLIT_DESCRIPTION = """MicroSplit is a self-supervised deep learning method for
15
+ microscopy image splitting that combines the strengths of both denoising and
16
+ representation learning approaches."""
17
+
18
+ MICROSPLIT_REF = CiteEntry(
19
+ text='Prakash, M., Delbracio, M., Milanfar, P., Jug, F. 2022. "Interpretable '
20
+ 'Unsupervised Diversity Denoising and Artefact Removal." The International '
21
+ "Conference on Learning Representations (ICLR).",
22
+ doi="10.1561/2200000056",
23
+ )
24
+
25
+
26
+ class MicroSplitAlgorithm(VAEBasedAlgorithm):
27
+ """MicroSplit algorithm configuration."""
28
+
29
+ model_config = ConfigDict(validate_assignment=True)
30
+
31
+ algorithm: Literal["microsplit"] = "microsplit"
32
+
33
+ loss: LVAELossConfig
34
+
35
+ model: LVAEConfig # TODO add validators
36
+
37
+ is_supervised: bool = True
38
+
39
+ def get_algorithm_friendly_name(self) -> str:
40
+ """
41
+ Get the algorithm friendly name.
42
+
43
+ Returns
44
+ -------
45
+ str
46
+ Friendly name of the algorithm.
47
+ """
48
+ return MICROSPLIT
49
+
50
+ def get_algorithm_keywords(self) -> list[str]:
51
+ """
52
+ Get algorithm keywords.
53
+
54
+ Returns
55
+ -------
56
+ list[str]
57
+ List of keywords.
58
+ """
59
+ return [
60
+ "restoration",
61
+ "VAE",
62
+ "self-supervised",
63
+ "3D" if self.model.is_3D() else "2D",
64
+ "CAREamics",
65
+ "pytorch",
66
+ ]
67
+
68
+ def get_algorithm_references(self) -> str:
69
+ """
70
+ Get the algorithm references.
71
+
72
+ This is used to generate the README of the BioImage Model Zoo export.
73
+
74
+ Returns
75
+ -------
76
+ str
77
+ Algorithm references.
78
+ """
79
+ return MICROSPLIT_REF.text + " doi: " + MICROSPLIT_REF.doi
80
+
81
+ def get_algorithm_citations(self) -> list[CiteEntry]:
82
+ """
83
+ Return a list of citation entries of the current algorithm.
84
+
85
+ This is used to generate the model description for the BioImage Model Zoo.
86
+
87
+ Returns
88
+ -------
89
+ List[CiteEntry]
90
+ List of citation entries.
91
+ """
92
+ return [MICROSPLIT_REF]
93
+
94
+ def get_algorithm_description(self) -> str:
95
+ """
96
+ Get the algorithm description.
97
+
98
+ Returns
99
+ -------
100
+ str
101
+ Algorithm description.
102
+ """
103
+ return MICROSPLIT_DESCRIPTION
@@ -0,0 +1,115 @@
1
+ """N2N Algorithm configuration."""
2
+
3
+ from typing import Annotated, Literal
4
+
5
+ from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import AfterValidator
7
+
8
+ from careamics.config.architectures import UNetConfig
9
+ from careamics.config.validators import (
10
+ model_without_final_activation,
11
+ model_without_n2v2,
12
+ )
13
+
14
+ from .unet_algorithm_config import UNetBasedAlgorithm
15
+
16
+ N2N = "Noise2Noise"
17
+
18
+ N2N_DESCRIPTION = (
19
+ "Noise2Noise is a deep-learning-based algorithm that uses a U-Net "
20
+ "architecture to restore images. Noise2Noise is a self-supervised "
21
+ "algorithm that requires only noisy images to train the network. "
22
+ "The algorithm learns to predict the clean image from the noisy "
23
+ "image. Noise2Noise is particularly useful when clean images are "
24
+ "not available for training."
25
+ )
26
+
27
+ N2N_REF = CiteEntry(
28
+ text="Lehtinen, J., Munkberg, J., Hasselgren, J., Laine, S., Karras, T., "
29
+ 'Aittala, M. and Aila, T., 2018. "Noise2Noise: Learning image restoration '
30
+ 'without clean data". arXiv preprint arXiv:1803.04189.',
31
+ doi="10.48550/arXiv.1803.04189",
32
+ )
33
+
34
+
35
+ class N2NAlgorithm(UNetBasedAlgorithm):
36
+ """Noise2Noise Algorithm configuration."""
37
+
38
+ algorithm: Literal["n2n"] = "n2n"
39
+ """N2N Algorithm name."""
40
+
41
+ loss: Literal["mae", "mse"] = "mae"
42
+ """N2N-compatible loss function."""
43
+
44
+ model: Annotated[
45
+ UNetConfig,
46
+ AfterValidator(model_without_n2v2),
47
+ AfterValidator(model_without_final_activation),
48
+ ]
49
+ """UNet without a final activation function and without the `n2v2` modifications."""
50
+
51
+ def get_algorithm_friendly_name(self) -> str:
52
+ """
53
+ Get the algorithm friendly name.
54
+
55
+ Returns
56
+ -------
57
+ str
58
+ Friendly name of the algorithm.
59
+ """
60
+ return N2N
61
+
62
+ def get_algorithm_keywords(self) -> list[str]:
63
+ """
64
+ Get algorithm keywords.
65
+
66
+ Returns
67
+ -------
68
+ list[str]
69
+ List of keywords.
70
+ """
71
+ return [
72
+ "restoration",
73
+ "UNet",
74
+ "3D" if self.model.is_3D() else "2D",
75
+ "CAREamics",
76
+ "pytorch",
77
+ N2N,
78
+ ]
79
+
80
+ def get_algorithm_references(self) -> str:
81
+ """
82
+ Get the algorithm references.
83
+
84
+ This is used to generate the README of the BioImage Model Zoo export.
85
+
86
+ Returns
87
+ -------
88
+ str
89
+ Algorithm references.
90
+ """
91
+ return N2N_REF.text + " doi: " + N2N_REF.doi
92
+
93
+ def get_algorithm_citations(self) -> list[CiteEntry]:
94
+ """
95
+ Return a list of citation entries of the current algorithm.
96
+
97
+ This is used to generate the model description for the BioImage Model Zoo.
98
+
99
+ Returns
100
+ -------
101
+ List[CiteEntry]
102
+ List of citation entries.
103
+ """
104
+ return [N2N_REF]
105
+
106
+ def get_algorithm_description(self) -> str:
107
+ """
108
+ Get the algorithm description.
109
+
110
+ Returns
111
+ -------
112
+ str
113
+ Algorithm description.
114
+ """
115
+ return N2N_DESCRIPTION