careamics 0.0.9__tar.gz → 0.0.10__tar.gz

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 (317) hide show
  1. {careamics-0.0.9 → careamics-0.0.10}/.pre-commit-config.yaml +1 -1
  2. {careamics-0.0.9 → careamics-0.0.10}/PKG-INFO +7 -8
  3. {careamics-0.0.9 → careamics-0.0.10}/pyproject.toml +9 -7
  4. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/__init__.py +0 -4
  5. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/careamist.py +0 -1
  6. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/__init__.py +1 -13
  7. careamics-0.0.9/src/careamics/config/care_configuration.py → careamics-0.0.10/src/careamics/config/algorithms/care_algorithm_model.py +33 -11
  8. careamics-0.0.9/src/careamics/config/n2n_configuration.py → careamics-0.0.10/src/careamics/config/algorithms/n2n_algorithm_model.py +25 -11
  9. careamics-0.0.9/src/careamics/config/n2v_configuration.py → careamics-0.0.10/src/careamics/config/algorithms/n2v_algorithm_model.py +68 -37
  10. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/configuration.py +21 -13
  11. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/configuration_factories.py +179 -187
  12. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/configuration_io.py +2 -2
  13. careamics-0.0.10/src/careamics/config/data/__init__.py +7 -0
  14. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/data/data_model.py +46 -62
  15. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/__init__.py +0 -2
  16. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/n2v_manipulate_model.py +15 -0
  17. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/transform_unions.py +0 -13
  18. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/dataset_utils/iterate_over_files.py +2 -2
  19. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/in_memory_dataset.py +3 -10
  20. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/in_memory_pred_dataset.py +3 -5
  21. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/in_memory_tiled_pred_dataset.py +2 -2
  22. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/iterable_dataset.py +2 -2
  23. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/iterable_pred_dataset.py +3 -5
  24. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/iterable_tiled_pred_dataset.py +3 -3
  25. careamics-0.0.10/src/careamics/dataset_ng/dataset/__init__.py +3 -0
  26. careamics-0.0.10/src/careamics/dataset_ng/dataset/dataset.py +184 -0
  27. careamics-0.0.10/src/careamics/dataset_ng/demo_dataset.ipynb +271 -0
  28. careamics-0.0.10/src/careamics/dataset_ng/demo_patch_extractor.py +53 -0
  29. careamics-0.0.10/src/careamics/dataset_ng/demo_patch_extractor_factory.py +37 -0
  30. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/__init__.py +10 -0
  31. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/demo_custom_image_stack_loader.py +111 -0
  32. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/image_stack/__init__.py +9 -0
  33. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/image_stack/image_stack_protocol.py +53 -0
  34. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/image_stack/in_memory_image_stack.py +55 -0
  35. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/image_stack/zarr_image_stack.py +163 -0
  36. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/image_stack_loader.py +140 -0
  37. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/patch_extractor.py +29 -0
  38. careamics-0.0.10/src/careamics/dataset_ng/patch_extractor/patch_extractor_factory.py +208 -0
  39. careamics-0.0.10/src/careamics/dataset_ng/patching_strategies/__init__.py +11 -0
  40. careamics-0.0.10/src/careamics/dataset_ng/patching_strategies/patching_strategy_protocol.py +82 -0
  41. careamics-0.0.10/src/careamics/dataset_ng/patching_strategies/random_patching.py +338 -0
  42. careamics-0.0.10/src/careamics/dataset_ng/patching_strategies/sequential_patching.py +75 -0
  43. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/lightning_module.py +78 -27
  44. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/train_data_module.py +8 -39
  45. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/fcn/losses.py +17 -10
  46. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bioimage/bioimage_utils.py +5 -3
  47. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bioimage/model_description.py +3 -3
  48. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bmz_io.py +2 -2
  49. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/model_io_utils.py +2 -2
  50. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/__init__.py +2 -1
  51. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/compose.py +5 -15
  52. careamics-0.0.10/src/careamics/transforms/n2v_manipulate_torch.py +143 -0
  53. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/pixel_manipulation.py +1 -0
  54. careamics-0.0.10/src/careamics/transforms/pixel_manipulation_torch.py +418 -0
  55. careamics-0.0.10/src/careamics/utils/version.py +38 -0
  56. {careamics-0.0.9 → careamics-0.0.10}/tests/cli/test_main.py +5 -5
  57. {careamics-0.0.9 → careamics-0.0.10}/tests/config/algorithms/test_n2v_algorithm_model.py +21 -0
  58. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_configuration_factories.py +54 -119
  59. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_configuration_io.py +3 -3
  60. careamics-0.0.10/tests/config/test_n2v_preprocessing.py +75 -0
  61. {careamics-0.0.9 → careamics-0.0.10}/tests/conftest.py +4 -25
  62. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_in_memory_pred_dataset.py +1 -1
  63. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_in_memory_tiled_pred_dataset.py +1 -1
  64. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_iterable_pred_dataset.py +1 -1
  65. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_iterable_tiled_pred_dataset.py +1 -1
  66. careamics-0.0.10/tests/dataset_ng/dataset/test_dataset.py +162 -0
  67. careamics-0.0.10/tests/dataset_ng/patch_extractor/image_stack/test_zarr_image_stack.py +86 -0
  68. careamics-0.0.10/tests/dataset_ng/patching_strategies/test_all_strategies.py +123 -0
  69. careamics-0.0.10/tests/dataset_ng/patching_strategies/test_random_patching_ng.py +87 -0
  70. careamics-0.0.10/tests/dataset_ng/patching_strategies/test_sequential_patching_ng.py +58 -0
  71. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/callbacks/prediction_writer_callback/test_prediction_writer_callback.py +3 -3
  72. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_lightning_api.py +3 -3
  73. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_lightning_module.py +2 -2
  74. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_predict_data_module.py +10 -7
  75. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_train_data_module.py +11 -81
  76. {careamics-0.0.9 → careamics-0.0.10}/tests/test_careamist.py +43 -27
  77. {careamics-0.0.9 → careamics-0.0.10}/tests/test_conftest.py +3 -8
  78. {careamics-0.0.9 → careamics-0.0.10}/tests/transforms/test_compose.py +1 -42
  79. careamics-0.0.10/tests/transforms/test_manipulate_n2v.py +59 -0
  80. careamics-0.0.10/tests/transforms/test_pixel_manipulation.py +567 -0
  81. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_lightning_utils.py +2 -2
  82. careamics-0.0.10/tests/utils/test_version.py +10 -0
  83. careamics-0.0.9/src/careamics/config/algorithms/care_algorithm_model.py +0 -38
  84. careamics-0.0.9/src/careamics/config/algorithms/n2n_algorithm_model.py +0 -30
  85. careamics-0.0.9/src/careamics/config/algorithms/n2v_algorithm_model.py +0 -29
  86. careamics-0.0.9/src/careamics/config/data/__init__.py +0 -10
  87. careamics-0.0.9/src/careamics/config/data/n2v_data_model.py +0 -193
  88. careamics-0.0.9/tests/config/data/test_n2v_data_model.py +0 -128
  89. careamics-0.0.9/tests/config/test_n2v_configuration.py +0 -101
  90. careamics-0.0.9/tests/transforms/test_manipulate_n2v.py +0 -29
  91. careamics-0.0.9/tests/transforms/test_pixel_manipulation.py +0 -280
  92. careamics-0.0.9/tests/transforms/test_supported_transforms.py +0 -8
  93. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  94. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/example_report.md +0 -0
  95. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  96. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/interoperability_request.md +0 -0
  97. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/question.md +0 -0
  98. {careamics-0.0.9 → careamics-0.0.10}/.github/ISSUE_TEMPLATE/refactoring_suggestion.md +0 -0
  99. {careamics-0.0.9 → careamics-0.0.10}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  100. {careamics-0.0.9 → careamics-0.0.10}/.github/dependabot.yml +0 -0
  101. {careamics-0.0.9 → careamics-0.0.10}/.github/pull_request_template.md +0 -0
  102. {careamics-0.0.9 → careamics-0.0.10}/.github/workflows/ci.yml +0 -0
  103. {careamics-0.0.9 → careamics-0.0.10}/.github/workflows/codecov.yml +0 -0
  104. {careamics-0.0.9 → careamics-0.0.10}/.github/workflows/lvae.yml +0 -0
  105. {careamics-0.0.9 → careamics-0.0.10}/.gitignore +0 -0
  106. {careamics-0.0.9 → careamics-0.0.10}/CODE_OF_CONDUCT.md +0 -0
  107. {careamics-0.0.9 → careamics-0.0.10}/LICENSE +0 -0
  108. {careamics-0.0.9 → careamics-0.0.10}/README.md +0 -0
  109. {careamics-0.0.9 → careamics-0.0.10}/codecov.yml +0 -0
  110. {careamics-0.0.9 → careamics-0.0.10}/mypy.ini +0 -0
  111. {careamics-0.0.9 → careamics-0.0.10}/scripts/export_bmz_readme.py +0 -0
  112. {careamics-0.0.9 → careamics-0.0.10}/scripts/export_covers.py +0 -0
  113. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/cli/__init__.py +0 -0
  114. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/cli/conf.py +0 -0
  115. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/cli/main.py +0 -0
  116. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/cli/utils.py +0 -0
  117. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/algorithms/__init__.py +0 -0
  118. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/algorithms/unet_algorithm_model.py +0 -0
  119. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/algorithms/vae_algorithm_model.py +0 -0
  120. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/architectures/__init__.py +0 -0
  121. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/architectures/architecture_model.py +0 -0
  122. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/architectures/lvae_model.py +0 -0
  123. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/architectures/unet_model.py +0 -0
  124. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/callback_model.py +0 -0
  125. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/inference_model.py +0 -0
  126. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/likelihood_model.py +0 -0
  127. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/loss_model.py +0 -0
  128. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/nm_model.py +0 -0
  129. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/optimizer_models.py +0 -0
  130. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/__init__.py +0 -0
  131. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_activations.py +0 -0
  132. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_algorithms.py +0 -0
  133. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_architectures.py +0 -0
  134. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_data.py +0 -0
  135. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_loggers.py +0 -0
  136. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_losses.py +0 -0
  137. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_optimizers.py +0 -0
  138. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_pixel_manipulations.py +0 -0
  139. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_struct_axis.py +0 -0
  140. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/support/supported_transforms.py +1 -1
  141. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/tile_information.py +0 -0
  142. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/training_model.py +0 -0
  143. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/normalize_model.py +0 -0
  144. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/transform_model.py +0 -0
  145. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/xy_flip_model.py +0 -0
  146. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/transformations/xy_random_rotate90_model.py +0 -0
  147. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/validators/__init__.py +0 -0
  148. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/validators/model_validators.py +0 -0
  149. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/config/validators/validator_utils.py +0 -0
  150. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/conftest.py +0 -0
  151. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/__init__.py +0 -0
  152. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/dataset_utils/__init__.py +0 -0
  153. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/dataset_utils/dataset_utils.py +0 -0
  154. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/dataset_utils/file_utils.py +0 -0
  155. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/dataset_utils/running_stats.py +0 -0
  156. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/patching/__init__.py +0 -0
  157. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/patching/patching.py +0 -0
  158. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/patching/random_patching.py +0 -0
  159. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/patching/sequential_patching.py +0 -0
  160. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/patching/validate_patch_dimension.py +0 -0
  161. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/tiling/__init__.py +0 -0
  162. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/tiling/collate_tiles.py +0 -0
  163. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/tiling/lvae_tiled_patching.py +0 -0
  164. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/tiling/tiled_patching.py +0 -0
  165. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/dataset/zarr_dataset.py +0 -0
  166. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/__init__.py +0 -0
  167. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/read/__init__.py +0 -0
  168. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/read/get_func.py +0 -0
  169. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/read/tiff.py +0 -0
  170. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/read/zarr.py +0 -0
  171. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/write/__init__.py +0 -0
  172. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/write/get_func.py +0 -0
  173. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/file_io/write/tiff.py +0 -0
  174. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/__init__.py +0 -0
  175. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/__init__.py +0 -0
  176. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/hyperparameters_callback.py +0 -0
  177. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/prediction_writer_callback/__init__.py +0 -0
  178. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +0 -0
  179. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +0 -0
  180. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +0 -0
  181. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +0 -0
  182. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/callbacks/progress_bar_callback.py +0 -0
  183. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lightning/predict_data_module.py +0 -0
  184. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/__init__.py +0 -0
  185. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/fcn/__init__.py +0 -0
  186. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/loss_factory.py +0 -0
  187. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/lvae/__init__.py +0 -0
  188. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/lvae/loss_utils.py +0 -0
  189. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/losses/lvae/losses.py +0 -0
  190. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/__init__.py +0 -0
  191. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/calibration.py +0 -0
  192. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/__init__.py +0 -0
  193. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/config.py +0 -0
  194. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/lc_dataset.py +0 -0
  195. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/multich_dataset.py +0 -0
  196. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/multifile_dataset.py +0 -0
  197. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/types.py +0 -0
  198. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/utils/__init__.py +0 -0
  199. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/utils/data_utils.py +0 -0
  200. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +0 -0
  201. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/utils/index_manager.py +0 -0
  202. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/dataset/utils/index_switcher.py +0 -0
  203. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/eval_utils.py +0 -0
  204. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/get_config.py +0 -0
  205. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/lightning_module.py +0 -0
  206. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/metrics.py +0 -0
  207. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/train_lvae.py +0 -0
  208. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/lvae_training/train_utils.py +0 -0
  209. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/__init__.py +0 -0
  210. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bioimage/__init__.py +0 -0
  211. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bioimage/_readme_factory.py +0 -0
  212. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/model_io/bioimage/cover_factory.py +0 -0
  213. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/__init__.py +0 -0
  214. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/activation.py +0 -0
  215. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/layers.py +0 -0
  216. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/__init__.py +0 -0
  217. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/layers.py +0 -0
  218. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/likelihoods.py +0 -0
  219. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/lvae.py +0 -0
  220. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/noise_models.py +0 -0
  221. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/stochastic.py +0 -0
  222. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/lvae/utils.py +0 -0
  223. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/model_factory.py +0 -0
  224. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/models/unet.py +0 -0
  225. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/prediction_utils/__init__.py +0 -0
  226. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/prediction_utils/lvae_prediction.py +0 -0
  227. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/prediction_utils/lvae_tiling_manager.py +0 -0
  228. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/prediction_utils/prediction_outputs.py +0 -0
  229. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/prediction_utils/stitch_prediction.py +0 -0
  230. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/py.typed +0 -0
  231. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/n2v_manipulate.py +0 -0
  232. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/normalize.py +0 -0
  233. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/struct_mask_parameters.py +0 -0
  234. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/transform.py +0 -0
  235. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/tta.py +0 -0
  236. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/xy_flip.py +0 -0
  237. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/transforms/xy_random_rotate90.py +0 -0
  238. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/__init__.py +0 -0
  239. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/autocorrelation.py +0 -0
  240. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/base_enum.py +0 -0
  241. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/context.py +0 -0
  242. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/lightning_utils.py +0 -0
  243. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/logging.py +0 -0
  244. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/metrics.py +0 -0
  245. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/path_utils.py +0 -0
  246. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/plotting.py +0 -0
  247. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/ram.py +0 -0
  248. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/receptive_field.py +0 -0
  249. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/serializers.py +0 -0
  250. {careamics-0.0.9 → careamics-0.0.10}/src/careamics/utils/torch_utils.py +0 -0
  251. {careamics-0.0.9 → careamics-0.0.10}/tests/cli/__init__.py +0 -0
  252. {careamics-0.0.9 → careamics-0.0.10}/tests/cli/test_conf.py +0 -0
  253. {careamics-0.0.9 → careamics-0.0.10}/tests/config/algorithms/test_care_algorithm_model.py +0 -0
  254. {careamics-0.0.9 → careamics-0.0.10}/tests/config/algorithms/test_n2n_algorithm_model.py +0 -0
  255. {careamics-0.0.9 → careamics-0.0.10}/tests/config/architectures/test_architecture_model.py +0 -0
  256. {careamics-0.0.9 → careamics-0.0.10}/tests/config/architectures/test_lvae_model.py +0 -0
  257. {careamics-0.0.9 → careamics-0.0.10}/tests/config/architectures/test_unet_model.py +0 -0
  258. {careamics-0.0.9 → careamics-0.0.10}/tests/config/data/test_data_model.py +0 -0
  259. {careamics-0.0.9 → careamics-0.0.10}/tests/config/support/test_supported_data.py +0 -0
  260. {careamics-0.0.9 → careamics-0.0.10}/tests/config/support/test_supported_optimizers.py +0 -0
  261. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_callback_models.py +0 -0
  262. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_configuration.py +0 -0
  263. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_inference_model.py +0 -0
  264. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_optimizers_model.py +0 -0
  265. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_tile_information.py +0 -0
  266. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_training_model.py +0 -0
  267. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_unet_algorithm_model.py +0 -0
  268. {careamics-0.0.9 → careamics-0.0.10}/tests/config/test_vae_algorithm_model.py +0 -0
  269. {careamics-0.0.9 → careamics-0.0.10}/tests/config/transformations/test_n2v_manipulate_model.py +0 -0
  270. {careamics-0.0.9 → careamics-0.0.10}/tests/config/transformations/test_normalize_model.py +0 -0
  271. {careamics-0.0.9 → careamics-0.0.10}/tests/config/transformations/test_xy_flip_model.py +0 -0
  272. {careamics-0.0.9 → careamics-0.0.10}/tests/config/transformations/test_xy_random_rotate90_model.py +0 -0
  273. {careamics-0.0.9 → careamics-0.0.10}/tests/config/validators/test_model_validators.py +0 -0
  274. {careamics-0.0.9 → careamics-0.0.10}/tests/config/validators/test_validator_utils.py +0 -0
  275. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/dataset_utils/test_compute_normalization_stats.py +0 -0
  276. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/dataset_utils/test_list_files.py +0 -0
  277. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/patching/test_patching_utils.py +0 -0
  278. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/patching/test_random_patching.py +0 -0
  279. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/patching/test_sequential_patching.py +0 -0
  280. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_in_memory_dataset.py +0 -0
  281. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/test_iterable_dataset.py +0 -0
  282. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/tiling/test_collate_tiles.py +0 -0
  283. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/tiling/test_lvae_tiled_patching.py +0 -0
  284. {careamics-0.0.9 → careamics-0.0.10}/tests/dataset/tiling/test_tiled_patching.py +0 -0
  285. {careamics-0.0.9 → careamics-0.0.10}/tests/file_io/read/test_get_read_func.py +0 -0
  286. {careamics-0.0.9 → careamics-0.0.10}/tests/file_io/read/test_read_tiff.py +0 -0
  287. {careamics-0.0.9 → careamics-0.0.10}/tests/file_io/write/test_get_write_func.py +0 -0
  288. {careamics-0.0.9 → careamics-0.0.10}/tests/file_io/write/test_write_tiff.py +0 -0
  289. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/callbacks/prediction_writer_callback/test_cache_tiles_write_strategy.py +0 -0
  290. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/callbacks/prediction_writer_callback/test_file_path_utils.py +0 -0
  291. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/callbacks/prediction_writer_callback/test_write_image_write_strategy.py +0 -0
  292. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/callbacks/prediction_writer_callback/test_write_strategy_factory.py +0 -0
  293. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_LVAE_lightning_module.py +0 -0
  294. {careamics-0.0.9 → careamics-0.0.10}/tests/lightning/test_lightning_module_onnx_exportability.py +0 -0
  295. {careamics-0.0.9 → careamics-0.0.10}/tests/likelihood_modules/test_likelihoods.py +0 -0
  296. {careamics-0.0.9 → careamics-0.0.10}/tests/losses/test_lvae_losses.py +0 -0
  297. {careamics-0.0.9 → careamics-0.0.10}/tests/model_io/test_bmz_io.py +0 -0
  298. {careamics-0.0.9 → careamics-0.0.10}/tests/models/lvae/test_lvae_architecture.py +0 -0
  299. {careamics-0.0.9 → careamics-0.0.10}/tests/models/lvae/test_noise_model.py +0 -0
  300. {careamics-0.0.9 → careamics-0.0.10}/tests/models/lvae/test_utils.py +0 -0
  301. {careamics-0.0.9 → careamics-0.0.10}/tests/models/test_model_factory.py +0 -0
  302. {careamics-0.0.9 → careamics-0.0.10}/tests/models/test_unet.py +0 -0
  303. {careamics-0.0.9 → careamics-0.0.10}/tests/prediction_utils/test_lvae_prediction.py +0 -0
  304. {careamics-0.0.9 → careamics-0.0.10}/tests/prediction_utils/test_prediction_outputs.py +0 -0
  305. {careamics-0.0.9 → careamics-0.0.10}/tests/prediction_utils/test_stitch_prediction.py +0 -0
  306. {careamics-0.0.9 → careamics-0.0.10}/tests/transforms/test_normalize.py +0 -0
  307. {careamics-0.0.9 → careamics-0.0.10}/tests/transforms/test_tta.py +0 -0
  308. {careamics-0.0.9 → careamics-0.0.10}/tests/transforms/test_xy_flip.py +0 -0
  309. {careamics-0.0.9 → careamics-0.0.10}/tests/transforms/test_xy_random_rotate90.py +0 -0
  310. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_autocorrelation.py +0 -0
  311. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_base_enum.py +0 -0
  312. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_context.py +0 -0
  313. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_logging.py +0 -0
  314. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_metrics.py +0 -0
  315. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_serializers.py +0 -0
  316. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_torch_utils.py +0 -0
  317. {careamics-0.0.9 → careamics-0.0.10}/tests/utils/test_wandb.py +0 -0
@@ -43,7 +43,7 @@ repos:
43
43
  rev: v1.8.0
44
44
  hooks:
45
45
  - id: numpydoc-validation
46
- exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^src/careamics/losses/lvae/.*|^scripts/.*"
46
+ exclude: "^src/careamics/dataset_ng/.*|^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^src/careamics/losses/lvae/.*|^scripts/.*"
47
47
 
48
48
  # # jupyter linting and formatting
49
49
  # - repo: https://github.com/nbQA-dev/nbQA
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: careamics
3
- Version: 0.0.9
3
+ Version: 0.0.10
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
@@ -17,19 +17,19 @@ Classifier: Programming Language :: Python :: 3.12
17
17
  Classifier: Typing :: Typed
18
18
  Requires-Python: >=3.9
19
19
  Requires-Dist: bioimageio-core==0.7
20
- Requires-Dist: matplotlib<=3.10.0
20
+ Requires-Dist: matplotlib<=3.10.1
21
21
  Requires-Dist: numpy<2.0.0
22
22
  Requires-Dist: pillow<=11.1.0
23
- Requires-Dist: psutil<=6.1.1
23
+ Requires-Dist: psutil<=7.0.0
24
24
  Requires-Dist: pydantic<2.11,>=2.5
25
25
  Requires-Dist: pytorch-lightning<=2.5.0.post0,>=2.2
26
26
  Requires-Dist: pyyaml!=6.0.0,<=6.0.2
27
- Requires-Dist: scikit-image<=0.25.1
28
- Requires-Dist: tifffile<=2025.1.10
27
+ Requires-Dist: scikit-image<=0.25.2
28
+ Requires-Dist: tifffile<=2025.3.13
29
29
  Requires-Dist: torch<=2.6.0,>=2.0
30
- Requires-Dist: torchvision<=0.20.1
31
30
  Requires-Dist: torchvision<=0.21.0
32
- Requires-Dist: typer<=0.15.1,>=0.12.3
31
+ Requires-Dist: typer<=0.15.2,>=0.12.3
32
+ Requires-Dist: xarray<2025.3.0
33
33
  Requires-Dist: zarr<3.0.0
34
34
  Provides-Extra: dev
35
35
  Requires-Dist: onnx; extra == 'dev'
@@ -40,7 +40,6 @@ Requires-Dist: sybil; extra == 'dev'
40
40
  Provides-Extra: examples
41
41
  Requires-Dist: careamics-portfolio; extra == 'examples'
42
42
  Requires-Dist: jupyter; extra == 'examples'
43
- Requires-Dist: matplotlib; extra == 'examples'
44
43
  Provides-Extra: tensorboard
45
44
  Requires-Dist: protobuf==5.29.1; extra == 'tensorboard'
46
45
  Requires-Dist: tensorboard; extra == 'tensorboard'
@@ -45,18 +45,18 @@ dependencies = [
45
45
  'numpy<2.0.0',
46
46
  'torch>=2.0,<=2.6.0',
47
47
  'torchvision<=0.21.0',
48
- 'torchvision<=0.20.1',
49
48
  'bioimageio.core==0.7',
50
- 'tifffile<=2025.1.10',
51
- 'psutil<=6.1.1',
49
+ 'tifffile<=2025.3.13',
50
+ 'psutil<=7.0.0',
52
51
  'pydantic>=2.5,<2.11',
53
52
  'pytorch_lightning>=2.2,<=2.5.0.post0',
54
53
  'pyyaml<=6.0.2,!=6.0.0',
55
- 'typer>=0.12.3,<=0.15.1',
56
- 'scikit-image<=0.25.1',
54
+ 'typer>=0.12.3,<=0.15.2',
55
+ 'scikit-image<=0.25.2',
57
56
  'zarr<3.0.0',
58
57
  'pillow<=11.1.0',
59
- 'matplotlib<=3.10.0'
58
+ 'matplotlib<=3.10.1',
59
+ 'xarray<2025.3.0'
60
60
  ]
61
61
 
62
62
  [project.optional-dependencies]
@@ -70,7 +70,7 @@ dev = [
70
70
  ]
71
71
 
72
72
  # notebooks
73
- examples = ["jupyter", "careamics-portfolio", "matplotlib"]
73
+ examples = ["jupyter", "careamics-portfolio"]
74
74
 
75
75
  # loggers
76
76
  wandb = ["wandb"]
@@ -126,6 +126,8 @@ convention = "numpy"
126
126
  [tool.ruff.lint.per-file-ignores]
127
127
  "tests/*.py" = ["D", "S"]
128
128
  "setup.py" = ["D"]
129
+ # temporarily ignore docstrings in next generation dataset development
130
+ "src/careamics/dataset_ng/*" = ["D"]
129
131
 
130
132
  [tool.black]
131
133
  line-length = 88
@@ -11,8 +11,6 @@ __all__ = [
11
11
  "CAREamist",
12
12
  "Configuration",
13
13
  "algorithm_factory",
14
- "configuration_factory",
15
- "data_factory",
16
14
  "load_configuration",
17
15
  "save_configuration",
18
16
  ]
@@ -21,8 +19,6 @@ from .careamist import CAREamist
21
19
  from .config import (
22
20
  Configuration,
23
21
  algorithm_factory,
24
- configuration_factory,
25
- data_factory,
26
22
  load_configuration,
27
23
  save_configuration,
28
24
  )
@@ -157,7 +157,6 @@ class CAREamist:
157
157
  self.cfg = load_configuration(source)
158
158
 
159
159
  # instantiate model
160
- # TODO call model factory here
161
160
  if isinstance(self.cfg.algorithm_config, UNetBasedAlgorithm):
162
161
  self.model = FCNModule(
163
162
  algorithm_config=self.cfg.algorithm_config,
@@ -8,29 +8,22 @@ while `*_configuration` is reserved for the main configuration models, including
8
8
 
9
9
  __all__ = [
10
10
  "CAREAlgorithm",
11
- "CAREConfiguration",
12
11
  "CheckpointModel",
13
12
  "Configuration",
14
13
  "DataConfig",
15
14
  "GaussianMixtureNMConfig",
16
- "GeneralDataConfig",
17
15
  "InferenceConfig",
18
16
  "LVAELossConfig",
19
17
  "MultiChannelNMConfig",
20
18
  "N2NAlgorithm",
21
- "N2NConfiguration",
22
19
  "N2VAlgorithm",
23
- "N2VConfiguration",
24
- "N2VDataConfig",
25
20
  "TrainingConfig",
26
21
  "UNetBasedAlgorithm",
27
22
  "VAEBasedAlgorithm",
28
23
  "algorithm_factory",
29
- "configuration_factory",
30
24
  "create_care_configuration",
31
25
  "create_n2n_configuration",
32
26
  "create_n2v_configuration",
33
- "data_factory",
34
27
  "load_configuration",
35
28
  "save_configuration",
36
29
  ]
@@ -43,21 +36,16 @@ from .algorithms import (
43
36
  VAEBasedAlgorithm,
44
37
  )
45
38
  from .callback_model import CheckpointModel
46
- from .care_configuration import CAREConfiguration
47
39
  from .configuration import Configuration
48
40
  from .configuration_factories import (
49
41
  algorithm_factory,
50
- configuration_factory,
51
42
  create_care_configuration,
52
43
  create_n2n_configuration,
53
44
  create_n2v_configuration,
54
- data_factory,
55
45
  )
56
46
  from .configuration_io import load_configuration, save_configuration
57
- from .data import DataConfig, GeneralDataConfig, N2VDataConfig
47
+ from .data import DataConfig
58
48
  from .inference_model import InferenceConfig
59
49
  from .loss_model import LVAELossConfig
60
- from .n2n_configuration import N2NConfiguration
61
- from .n2v_configuration import N2VConfiguration
62
50
  from .nm_model import GaussianMixtureNMConfig, MultiChannelNMConfig
63
51
  from .training_model import TrainingConfig
@@ -1,10 +1,17 @@
1
- """CARE Pydantic configuration."""
1
+ """CARE algorithm configuration."""
2
+
3
+ from typing import Annotated, Literal
2
4
 
3
5
  from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import AfterValidator
7
+
8
+ from careamics.config.architectures import UNetModel
9
+ from careamics.config.validators import (
10
+ model_without_final_activation,
11
+ model_without_n2v2,
12
+ )
4
13
 
5
- from careamics.config.algorithms.care_algorithm_model import CAREAlgorithm
6
- from careamics.config.configuration import Configuration
7
- from careamics.config.data import DataConfig
14
+ from .unet_algorithm_model import UNetBasedAlgorithm
8
15
 
9
16
  CARE = "CARE"
10
17
 
@@ -24,14 +31,29 @@ CARE_REF = CiteEntry(
24
31
  )
25
32
 
26
33
 
27
- class CAREConfiguration(Configuration):
28
- """CARE configuration."""
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."""
29
47
 
30
- algorithm_config: CAREAlgorithm
31
- """Algorithm configuration."""
48
+ loss: Literal["mae", "mse"] = "mae"
49
+ """CARE-compatible loss function."""
32
50
 
33
- data_config: DataConfig
34
- """Data configuration."""
51
+ model: Annotated[
52
+ UNetModel,
53
+ AfterValidator(model_without_n2v2),
54
+ AfterValidator(model_without_final_activation),
55
+ ]
56
+ """UNet without a final activation function and without the `n2v2` modifications."""
35
57
 
36
58
  def get_algorithm_friendly_name(self) -> str:
37
59
  """
@@ -56,7 +78,7 @@ class CAREConfiguration(Configuration):
56
78
  return [
57
79
  "restoration",
58
80
  "UNet",
59
- "3D" if "Z" in self.data_config.axes else "2D",
81
+ "3D" if self.model.is_3D() else "2D",
60
82
  "CAREamics",
61
83
  "pytorch",
62
84
  CARE,
@@ -1,10 +1,17 @@
1
- """N2N configuration."""
1
+ """N2N Algorithm configuration."""
2
+
3
+ from typing import Annotated, Literal
2
4
 
3
5
  from bioimageio.spec.generic.v0_3 import CiteEntry
6
+ from pydantic import AfterValidator
7
+
8
+ from careamics.config.architectures import UNetModel
9
+ from careamics.config.validators import (
10
+ model_without_final_activation,
11
+ model_without_n2v2,
12
+ )
4
13
 
5
- from careamics.config.algorithms import N2NAlgorithm
6
- from careamics.config.configuration import Configuration
7
- from careamics.config.data import DataConfig
14
+ from .unet_algorithm_model import UNetBasedAlgorithm
8
15
 
9
16
  N2N = "Noise2Noise"
10
17
 
@@ -25,14 +32,21 @@ N2N_REF = CiteEntry(
25
32
  )
26
33
 
27
34
 
28
- class N2NConfiguration(Configuration):
29
- """Noise2Noise configuration."""
35
+ class N2NAlgorithm(UNetBasedAlgorithm):
36
+ """Noise2Noise Algorithm configuration."""
37
+
38
+ algorithm: Literal["n2n"] = "n2n"
39
+ """N2N Algorithm name."""
30
40
 
31
- algorithm_config: N2NAlgorithm
32
- """Algorithm configuration."""
41
+ loss: Literal["mae", "mse"] = "mae"
42
+ """N2N-compatible loss function."""
33
43
 
34
- data_config: DataConfig
35
- """Data configuration."""
44
+ model: Annotated[
45
+ UNetModel,
46
+ AfterValidator(model_without_n2v2),
47
+ AfterValidator(model_without_final_activation),
48
+ ]
49
+ """UNet without a final activation function and without the `n2v2` modifications."""
36
50
 
37
51
  def get_algorithm_friendly_name(self) -> str:
38
52
  """
@@ -57,7 +71,7 @@ class N2NConfiguration(Configuration):
57
71
  return [
58
72
  "restoration",
59
73
  "UNet",
60
- "3D" if "Z" in self.data_config.axes else "2D",
74
+ "3D" if self.model.is_3D() else "2D",
61
75
  "CAREamics",
62
76
  "pytorch",
63
77
  N2N,
@@ -1,13 +1,20 @@
1
- """N2V configuration."""
1
+ """"N2V Algorithm configuration."""
2
+
3
+ from typing import Annotated, Literal
2
4
 
3
5
  from bioimageio.spec.generic.v0_3 import CiteEntry
4
- from pydantic import model_validator
6
+ from pydantic import AfterValidator, ConfigDict, model_validator
5
7
  from typing_extensions import Self
6
8
 
7
- from careamics.config.algorithms import N2VAlgorithm
8
- from careamics.config.configuration import Configuration
9
- from careamics.config.data.n2v_data_model import N2VDataConfig
10
- from careamics.config.support import SupportedPixelManipulation
9
+ from careamics.config.architectures import UNetModel
10
+ from careamics.config.support import SupportedPixelManipulation, SupportedStructAxis
11
+ from careamics.config.transformations import N2VManipulateModel
12
+ from careamics.config.validators import (
13
+ model_matching_in_out_channels,
14
+ model_without_final_activation,
15
+ )
16
+
17
+ from .unet_algorithm_model import UNetBasedAlgorithm
11
18
 
12
19
  N2V = "Noise2Void"
13
20
  N2V2 = "N2V2"
@@ -80,12 +87,24 @@ STR_N2V2_DESCRIPTION = (
80
87
  )
81
88
 
82
89
 
83
- class N2VConfiguration(Configuration):
84
- """N2V configuration."""
90
+ class N2VAlgorithm(UNetBasedAlgorithm):
91
+ """N2V Algorithm configuration."""
92
+
93
+ model_config = ConfigDict(validate_assignment=True)
85
94
 
86
- algorithm_config: N2VAlgorithm
95
+ algorithm: Literal["n2v"] = "n2v"
96
+ """N2V Algorithm name."""
87
97
 
88
- data_config: N2VDataConfig
98
+ loss: Literal["n2v"] = "n2v"
99
+ """N2V loss function."""
100
+
101
+ n2v_config: N2VManipulateModel = N2VManipulateModel()
102
+
103
+ model: Annotated[
104
+ UNetModel,
105
+ AfterValidator(model_matching_in_out_channels),
106
+ AfterValidator(model_without_final_activation),
107
+ ]
89
108
 
90
109
  @model_validator(mode="after")
91
110
  def validate_n2v2(self) -> Self:
@@ -96,31 +115,26 @@ class N2VConfiguration(Configuration):
96
115
  Self
97
116
  The validateed configuration.
98
117
 
99
-
100
118
  Raises
101
119
  ------
102
120
  ValueError
103
121
  If N2V2 is used with the wrong pixel manipulation strategy.
104
122
  """
105
- if self.algorithm_config.model.n2v2:
106
- if (
107
- self.data_config.get_masking_strategy()
108
- != SupportedPixelManipulation.MEDIAN.value
109
- ):
123
+ if self.model.n2v2:
124
+ if self.n2v_config.strategy != SupportedPixelManipulation.MEDIAN.value:
110
125
  raise ValueError(
111
126
  f"N2V2 can only be used with the "
112
- f"{SupportedPixelManipulation.MEDIAN} pixel manipulation strategy"
113
- f". Change the N2VManipulate transform strategy."
127
+ f"{SupportedPixelManipulation.MEDIAN} pixel manipulation strategy. "
128
+ f"Change the `strategy` parameters in `n2v_config` to "
129
+ f"{SupportedPixelManipulation.MEDIAN}."
114
130
  )
115
131
  else:
116
- if (
117
- self.data_config.get_masking_strategy()
118
- != SupportedPixelManipulation.UNIFORM.value
119
- ):
132
+ if self.n2v_config.strategy != SupportedPixelManipulation.UNIFORM.value:
120
133
  raise ValueError(
121
134
  f"N2V can only be used with the "
122
- f"{SupportedPixelManipulation.UNIFORM} pixel manipulation strategy"
123
- f". Change the N2VManipulate transform strategy."
135
+ f"{SupportedPixelManipulation.UNIFORM} pixel manipulation strategy."
136
+ f" Change the `strategy` parameters in `n2v_config` to "
137
+ f"{SupportedPixelManipulation.UNIFORM}."
124
138
  )
125
139
  return self
126
140
 
@@ -128,13 +142,30 @@ class N2VConfiguration(Configuration):
128
142
  """
129
143
  Set the configuration to use N2V2 or the vanilla Noise2Void.
130
144
 
145
+ This method ensures that N2V2 is set correctly and remain coherent, as opposed
146
+ to setting the different parameters individually.
147
+
131
148
  Parameters
132
149
  ----------
133
150
  use_n2v2 : bool
134
151
  Whether to use N2V2.
135
152
  """
136
- self.data_config.set_n2v2(use_n2v2)
137
- self.algorithm_config.model.n2v2 = use_n2v2
153
+ if use_n2v2:
154
+ self.n2v_config.strategy = SupportedPixelManipulation.MEDIAN.value
155
+ self.model.n2v2 = True
156
+ else:
157
+ self.n2v_config.strategy = SupportedPixelManipulation.UNIFORM.value
158
+ self.model.n2v2 = False
159
+
160
+ def is_struct_n2v(self) -> bool:
161
+ """Check if the configuration is using structN2V.
162
+
163
+ Returns
164
+ -------
165
+ bool
166
+ Whether the configuration is using structN2V.
167
+ """
168
+ return self.n2v_config.struct_mask_axis != SupportedStructAxis.NONE.value
138
169
 
139
170
  def get_algorithm_friendly_name(self) -> str:
140
171
  """
@@ -145,8 +176,8 @@ class N2VConfiguration(Configuration):
145
176
  str
146
177
  Friendly name.
147
178
  """
148
- use_n2v2 = self.algorithm_config.model.n2v2
149
- use_structN2V = self.data_config.is_using_struct_n2v()
179
+ use_n2v2 = self.model.n2v2
180
+ use_structN2V = self.is_struct_n2v()
150
181
 
151
182
  if use_n2v2 and use_structN2V:
152
183
  return STRUCT_N2V2
@@ -166,14 +197,14 @@ class N2VConfiguration(Configuration):
166
197
  list[str]
167
198
  List of keywords.
168
199
  """
169
- use_n2v2 = self.algorithm_config.model.n2v2
170
- use_structN2V = self.data_config.is_using_struct_n2v()
200
+ use_n2v2 = self.model.n2v2
201
+ use_structN2V = self.is_struct_n2v()
171
202
 
172
203
  keywords = [
173
204
  "denoising",
174
205
  "restoration",
175
206
  "UNet",
176
- "3D" if "Z" in self.data_config.axes else "2D",
207
+ "3D" if self.model.is_3D() else "2D",
177
208
  "CAREamics",
178
209
  "pytorch",
179
210
  N2V,
@@ -197,8 +228,8 @@ class N2VConfiguration(Configuration):
197
228
  str
198
229
  Algorithm references.
199
230
  """
200
- use_n2v2 = self.algorithm_config.model.n2v2
201
- use_structN2V = self.data_config.is_using_struct_n2v()
231
+ use_n2v2 = self.model.n2v2
232
+ use_structN2V = self.is_struct_n2v()
202
233
 
203
234
  references = [
204
235
  N2V_REF.text + " doi: " + N2V_REF.doi,
@@ -229,8 +260,8 @@ class N2VConfiguration(Configuration):
229
260
  List[CiteEntry]
230
261
  List of citation entries.
231
262
  """
232
- use_n2v2 = self.algorithm_config.model.n2v2
233
- use_structN2V = self.data_config.is_using_struct_n2v()
263
+ use_n2v2 = self.model.n2v2
264
+ use_structN2V = self.is_struct_n2v()
234
265
 
235
266
  references = [N2V_REF]
236
267
 
@@ -253,8 +284,8 @@ class N2VConfiguration(Configuration):
253
284
  str
254
285
  Description of the algorithm.
255
286
  """
256
- use_n2v2 = self.algorithm_config.model.n2v2
257
- use_structN2V = self.data_config.is_using_struct_n2v()
287
+ use_n2v2 = self.model.n2v2
288
+ use_structN2V = self.is_struct_n2v()
258
289
 
259
290
  if use_n2v2 and use_structN2V:
260
291
  return STR_N2V2_DESCRIPTION
@@ -10,10 +10,20 @@ from bioimageio.spec.generic.v0_3 import CiteEntry
10
10
  from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
11
11
  from typing_extensions import Self
12
12
 
13
- from careamics.config.algorithms import UNetBasedAlgorithm, VAEBasedAlgorithm
14
- from careamics.config.data import GeneralDataConfig
13
+ from careamics.config.algorithms import (
14
+ CAREAlgorithm,
15
+ N2NAlgorithm,
16
+ N2VAlgorithm,
17
+ )
18
+ from careamics.config.data import DataConfig
15
19
  from careamics.config.training_model import TrainingConfig
16
20
 
21
+ ALGORITHMS = Union[
22
+ CAREAlgorithm,
23
+ N2NAlgorithm,
24
+ N2VAlgorithm,
25
+ ]
26
+
17
27
 
18
28
  class Configuration(BaseModel):
19
29
  """
@@ -87,7 +97,7 @@ class Configuration(BaseModel):
87
97
  Examples
88
98
  --------
89
99
  Minimum example:
90
- >>> from careamics import configuration_factory
100
+ >>> from careamics import Configuration
91
101
  >>> config_dict = {
92
102
  ... "experiment_name": "N2V_experiment",
93
103
  ... "algorithm_config": {
@@ -106,7 +116,7 @@ class Configuration(BaseModel):
106
116
  ... "axes": "SYX",
107
117
  ... },
108
118
  ... }
109
- >>> config = configuration_factory(config_dict)
119
+ >>> config = Configuration(**config_dict)
110
120
  """
111
121
 
112
122
  model_config = ConfigDict(
@@ -123,13 +133,11 @@ class Configuration(BaseModel):
123
133
  """Name of the experiment, used to name logs and checkpoints."""
124
134
 
125
135
  # Sub-configurations
126
- algorithm_config: Union[UNetBasedAlgorithm, VAEBasedAlgorithm] = Field(
127
- discriminator="algorithm"
128
- )
136
+ algorithm_config: ALGORITHMS = Field(discriminator="algorithm")
129
137
  """Algorithm configuration, holding all parameters required to configure the
130
138
  model."""
131
139
 
132
- data_config: GeneralDataConfig
140
+ data_config: DataConfig
133
141
  """Data configuration, holding all parameters required to configure the training
134
142
  data loader."""
135
143
 
@@ -233,7 +241,7 @@ class Configuration(BaseModel):
233
241
  str
234
242
  Algorithm name.
235
243
  """
236
- raise ValueError("Unknown algorithm.")
244
+ return self.algorithm_config.get_algorithm_friendly_name()
237
245
 
238
246
  def get_algorithm_description(self) -> str:
239
247
  """
@@ -246,7 +254,7 @@ class Configuration(BaseModel):
246
254
  str
247
255
  Description of the algorithm.
248
256
  """
249
- raise ValueError("No algorithm description available.")
257
+ return self.algorithm_config.get_algorithm_description()
250
258
 
251
259
  def get_algorithm_citations(self) -> list[CiteEntry]:
252
260
  """
@@ -259,7 +267,7 @@ class Configuration(BaseModel):
259
267
  List[CiteEntry]
260
268
  List of citation entries.
261
269
  """
262
- raise ValueError("No algorithm citations available.")
270
+ return self.algorithm_config.get_algorithm_citations()
263
271
 
264
272
  def get_algorithm_references(self) -> str:
265
273
  """
@@ -272,7 +280,7 @@ class Configuration(BaseModel):
272
280
  str
273
281
  Algorithm references.
274
282
  """
275
- raise ValueError("No algorithm references available.")
283
+ return self.algorithm_config.get_algorithm_references()
276
284
 
277
285
  def get_algorithm_keywords(self) -> list[str]:
278
286
  """
@@ -283,7 +291,7 @@ class Configuration(BaseModel):
283
291
  list[str]
284
292
  List of keywords.
285
293
  """
286
- return ["CAREamics"]
294
+ return self.algorithm_config.get_algorithm_keywords()
287
295
 
288
296
  def model_dump(
289
297
  self,