careamics 0.0.15__tar.gz → 0.0.17__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 (369) hide show
  1. {careamics-0.0.15 → careamics-0.0.17}/.github/dependabot.yml +1 -1
  2. careamics-0.0.17/.github/workflows/ci.yml +98 -0
  3. careamics-0.0.17/.github/workflows/ci_lvae.yml +45 -0
  4. careamics-0.0.17/.github/workflows/codecov.yml +43 -0
  5. {careamics-0.0.15 → careamics-0.0.17}/.pre-commit-config.yaml +5 -6
  6. {careamics-0.0.15 → careamics-0.0.17}/PKG-INFO +19 -22
  7. {careamics-0.0.15 → careamics-0.0.17}/pyproject.toml +32 -24
  8. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/careamist.py +11 -14
  9. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/conf.py +18 -3
  10. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/__init__.py +8 -0
  11. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/__init__.py +4 -0
  12. careamics-0.0.17/src/careamics/config/algorithms/hdn_algorithm_model.py +103 -0
  13. careamics-0.0.17/src/careamics/config/algorithms/microsplit_algorithm_model.py +103 -0
  14. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/n2v_algorithm_model.py +1 -2
  15. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/vae_algorithm_model.py +51 -16
  16. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/lvae_model.py +12 -8
  17. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/callback_model.py +7 -3
  18. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration.py +15 -63
  19. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration_factories.py +853 -29
  20. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/data_model.py +50 -11
  21. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/ng_data_model.py +168 -4
  22. careamics-0.0.17/src/careamics/config/data/patch_filter/__init__.py +15 -0
  23. careamics-0.0.17/src/careamics/config/data/patch_filter/filter_model.py +16 -0
  24. careamics-0.0.17/src/careamics/config/data/patch_filter/mask_filter_model.py +17 -0
  25. careamics-0.0.17/src/careamics/config/data/patch_filter/max_filter_model.py +15 -0
  26. careamics-0.0.17/src/careamics/config/data/patch_filter/meanstd_filter_model.py +18 -0
  27. careamics-0.0.17/src/careamics/config/data/patch_filter/shannon_filter_model.py +15 -0
  28. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/inference_model.py +1 -2
  29. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/likelihood_model.py +2 -2
  30. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/loss_model.py +6 -2
  31. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/nm_model.py +26 -1
  32. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/optimizer_models.py +1 -2
  33. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_algorithms.py +5 -3
  34. careamics-0.0.17/src/careamics/config/support/supported_filters.py +17 -0
  35. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_losses.py +5 -2
  36. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/training_model.py +6 -36
  37. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/normalize_model.py +1 -2
  38. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/dataset.py +57 -5
  39. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/factory.py +101 -18
  40. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/demo_custom_image_stack_loader.py +4 -4
  41. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/in_memory_image_stack.py +1 -2
  42. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/zarr_image_stack.py +33 -7
  43. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack_loader.py +2 -2
  44. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/__init__.py +20 -0
  45. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/coordinate_filter_protocol.py +27 -0
  46. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/filter_factory.py +94 -0
  47. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/mask_filter.py +95 -0
  48. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/max_filter.py +188 -0
  49. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/mean_std_filter.py +218 -0
  50. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/patch_filter_protocol.py +50 -0
  51. careamics-0.0.17/src/careamics/dataset_ng/patch_filter/shannon_filter.py +188 -0
  52. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/__init__.py +0 -1
  53. careamics-0.0.17/src/careamics/lightning/__init__.py +32 -0
  54. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/__init__.py +2 -0
  55. careamics-0.0.17/src/careamics/lightning/callbacks/data_stats_callback.py +33 -0
  56. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/data_module.py +79 -2
  57. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/lightning_module.py +162 -61
  58. careamics-0.0.17/src/careamics/lightning/microsplit_data_module.py +636 -0
  59. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/predict_data_module.py +8 -1
  60. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/train_data_module.py +19 -8
  61. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/__init__.py +7 -1
  62. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/loss_factory.py +9 -1
  63. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/losses.py +85 -0
  64. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/__init__.py +8 -8
  65. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/config.py +56 -44
  66. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/lc_dataset.py +18 -12
  67. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/ms_dataset_ref.py +5 -5
  68. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multich_dataset.py +24 -18
  69. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multifile_dataset.py +6 -6
  70. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/eval_utils.py +46 -24
  71. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bmz_io.py +9 -5
  72. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/likelihoods.py +31 -14
  73. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/lvae.py +2 -2
  74. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/noise_models.py +20 -14
  75. careamics-0.0.17/src/careamics/prediction_utils/__init__.py +16 -0
  76. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/prediction_outputs.py +49 -3
  77. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/stitch_prediction.py +83 -1
  78. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/xy_random_rotate90.py +1 -1
  79. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/version.py +4 -4
  80. careamics-0.0.17/tests/config/test_configuration_factories.py +1150 -0
  81. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_vae_algorithm_model.py +13 -0
  82. {careamics-0.0.15 → careamics-0.0.17}/tests/conftest.py +37 -3
  83. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/dataset/test_dataset.py +84 -0
  84. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_zarr_image_stack.py +4 -4
  85. careamics-0.0.17/tests/dataset_ng/patch_filter/test_mask_filter.py +33 -0
  86. careamics-0.0.17/tests/dataset_ng/patch_filter/test_max_filter.py +21 -0
  87. careamics-0.0.17/tests/dataset_ng/patch_filter/test_mean_std_patch_filter.py +28 -0
  88. careamics-0.0.17/tests/dataset_ng/patch_filter/test_shannon_entropy_filter.py +29 -0
  89. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_LVAE_lightning_module.py +276 -148
  90. careamics-0.0.17/tests/lightning/test_microsplit_train_datamodule.py +61 -0
  91. {careamics-0.0.15 → careamics-0.0.17}/tests/likelihood_modules/test_likelihoods.py +2 -1
  92. {careamics-0.0.15 → careamics-0.0.17}/tests/losses/test_lvae_losses.py +10 -5
  93. {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_lvae_architecture.py +1 -9
  94. {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_noise_model.py +3 -3
  95. careamics-0.0.17/tests/smoke_test.py +22 -0
  96. {careamics-0.0.15 → careamics-0.0.17}/tests/test_careamist.py +78 -27
  97. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_lightning_utils.py +5 -2
  98. careamics-0.0.17/uv.lock +4313 -0
  99. careamics-0.0.15/.github/TEST_FAIL_TEMPLATE.md +0 -12
  100. careamics-0.0.15/.github/workflows/ci.yml +0 -107
  101. careamics-0.0.15/.github/workflows/ci_macos.yml +0 -67
  102. careamics-0.0.15/.github/workflows/codecov.yml +0 -46
  103. careamics-0.0.15/.github/workflows/lvae.yml +0 -62
  104. careamics-0.0.15/src/careamics/dataset/zarr_dataset.py +0 -151
  105. careamics-0.0.15/src/careamics/file_io/read/zarr.py +0 -60
  106. careamics-0.0.15/src/careamics/lightning/__init__.py +0 -18
  107. careamics-0.0.15/src/careamics/prediction_utils/__init__.py +0 -10
  108. careamics-0.0.15/tests/config/test_configuration_factories.py +0 -481
  109. careamics-0.0.15/tests/config/test_training_model.py +0 -21
  110. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  111. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/example_report.md +0 -0
  112. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  113. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/interoperability_request.md +0 -0
  114. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/question.md +0 -0
  115. {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/refactoring_suggestion.md +0 -0
  116. {careamics-0.0.15 → careamics-0.0.17}/.github/pull_request_template.md +0 -0
  117. {careamics-0.0.15 → careamics-0.0.17}/.gitignore +0 -0
  118. {careamics-0.0.15 → careamics-0.0.17}/CODE_OF_CONDUCT.md +0 -0
  119. {careamics-0.0.15 → careamics-0.0.17}/LICENSE +0 -0
  120. {careamics-0.0.15 → careamics-0.0.17}/README.md +0 -0
  121. {careamics-0.0.15 → careamics-0.0.17}/codecov.yml +0 -0
  122. {careamics-0.0.15 → careamics-0.0.17}/mypy.ini +0 -0
  123. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/__init__.py +0 -0
  124. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/__init__.py +0 -0
  125. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/main.py +0 -0
  126. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/utils.py +0 -0
  127. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/care_algorithm_model.py +0 -0
  128. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/n2n_algorithm_model.py +0 -0
  129. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/unet_algorithm_model.py +0 -0
  130. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/__init__.py +0 -0
  131. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/architecture_model.py +0 -0
  132. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/unet_model.py +0 -0
  133. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration_io.py +0 -0
  134. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/__init__.py +0 -0
  135. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/__init__.py +0 -0
  136. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/_overlapping_patched_model.py +0 -0
  137. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/_patched_model.py +0 -0
  138. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/random_patching_model.py +0 -0
  139. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/sequential_patching_model.py +0 -0
  140. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/tiled_patching_model.py +0 -0
  141. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/whole_patching_model.py +0 -0
  142. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/__init__.py +0 -0
  143. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_activations.py +0 -0
  144. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_architectures.py +0 -0
  145. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_data.py +0 -0
  146. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_loggers.py +0 -0
  147. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_optimizers.py +0 -0
  148. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_patching_strategies.py +0 -0
  149. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_pixel_manipulations.py +0 -0
  150. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_struct_axis.py +0 -0
  151. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_transforms.py +0 -0
  152. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/tile_information.py +0 -0
  153. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/__init__.py +0 -0
  154. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/n2v_manipulate_model.py +0 -0
  155. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/transform_model.py +0 -0
  156. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/transform_unions.py +0 -0
  157. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/xy_flip_model.py +0 -0
  158. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/xy_random_rotate90_model.py +0 -0
  159. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/__init__.py +0 -0
  160. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/model_validators.py +0 -0
  161. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/validator_utils.py +0 -0
  162. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/conftest.py +0 -0
  163. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/__init__.py +0 -0
  164. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/__init__.py +0 -0
  165. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/dataset_utils.py +0 -0
  166. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/file_utils.py +0 -0
  167. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/iterate_over_files.py +0 -0
  168. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/running_stats.py +0 -0
  169. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_dataset.py +0 -0
  170. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_pred_dataset.py +0 -0
  171. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_tiled_pred_dataset.py +0 -0
  172. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_dataset.py +0 -0
  173. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_pred_dataset.py +0 -0
  174. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_tiled_pred_dataset.py +0 -0
  175. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/__init__.py +0 -0
  176. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/patching.py +0 -0
  177. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/random_patching.py +0 -0
  178. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/sequential_patching.py +0 -0
  179. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/validate_patch_dimension.py +0 -0
  180. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/__init__.py +0 -0
  181. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/collate_tiles.py +0 -0
  182. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/lvae_tiled_patching.py +0 -0
  183. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/tiled_patching.py +0 -0
  184. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/README.md +0 -0
  185. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/bsd68_demo.ipynb +0 -0
  186. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/care_U2OS_demo.ipynb +0 -0
  187. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_custom_image_stack.ipynb +0 -0
  188. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_datamodule.ipynb +0 -0
  189. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_dataset.ipynb +0 -0
  190. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_patch_extractor.py +0 -0
  191. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/mouse_nuclei_demo.ipynb +0 -0
  192. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/legacy_interoperability.py +0 -0
  193. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/__init__.py +0 -0
  194. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/__init__.py +0 -0
  195. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/czi_image_stack.py +0 -0
  196. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/image_stack_protocol.py +0 -0
  197. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/patch_extractor.py +0 -0
  198. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/patch_extractor_factory.py +0 -0
  199. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/__init__.py +0 -0
  200. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/patching_strategy_protocol.py +0 -0
  201. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/random_patching.py +0 -0
  202. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/sequential_patching.py +0 -0
  203. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/tiling_strategy.py +0 -0
  204. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/whole_sample.py +0 -0
  205. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/__init__.py +0 -0
  206. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/get_func.py +0 -0
  207. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/tiff.py +0 -0
  208. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/__init__.py +0 -0
  209. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/get_func.py +0 -0
  210. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/tiff.py +0 -0
  211. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/hyperparameters_callback.py +0 -0
  212. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/__init__.py +0 -0
  213. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +0 -0
  214. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +0 -0
  215. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +0 -0
  216. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +0 -0
  217. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/progress_bar_callback.py +0 -0
  218. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/__init__.py +0 -0
  219. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/__init__.py +0 -0
  220. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/care_module.py +0 -0
  221. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/n2v_module.py +0 -0
  222. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/unet_module.py +0 -0
  223. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/fcn/__init__.py +0 -0
  224. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/fcn/losses.py +0 -0
  225. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/__init__.py +0 -0
  226. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/loss_utils.py +0 -0
  227. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/__init__.py +0 -0
  228. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/calibration.py +0 -0
  229. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multicrop_dset.py +0 -0
  230. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/types.py +0 -0
  231. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/__init__.py +0 -0
  232. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/data_utils.py +0 -0
  233. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +0 -0
  234. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/index_manager.py +0 -0
  235. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/index_switcher.py +0 -0
  236. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/get_config.py +0 -0
  237. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/lightning_module.py +0 -0
  238. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/metrics.py +0 -0
  239. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/train_lvae.py +0 -0
  240. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/train_utils.py +0 -0
  241. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/__init__.py +0 -0
  242. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/__init__.py +0 -0
  243. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/_readme_factory.py +0 -0
  244. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/bioimage_utils.py +0 -0
  245. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/cover_factory.py +0 -0
  246. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/model_description.py +0 -0
  247. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/model_io_utils.py +0 -0
  248. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/__init__.py +0 -0
  249. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/activation.py +0 -0
  250. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/layers.py +0 -0
  251. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/__init__.py +0 -0
  252. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/layers.py +0 -0
  253. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/stochastic.py +0 -0
  254. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/utils.py +0 -0
  255. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/model_factory.py +0 -0
  256. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/unet.py +0 -0
  257. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/lvae_prediction.py +0 -0
  258. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/lvae_tiling_manager.py +0 -0
  259. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/py.typed +0 -0
  260. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/__init__.py +0 -0
  261. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/compose.py +0 -0
  262. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/n2v_manipulate.py +0 -0
  263. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/n2v_manipulate_torch.py +0 -0
  264. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/normalize.py +0 -0
  265. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/pixel_manipulation.py +0 -0
  266. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/pixel_manipulation_torch.py +0 -0
  267. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/struct_mask_parameters.py +0 -0
  268. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/transform.py +0 -0
  269. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/tta.py +0 -0
  270. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/xy_flip.py +0 -0
  271. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/__init__.py +0 -0
  272. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/autocorrelation.py +0 -0
  273. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/base_enum.py +0 -0
  274. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/context.py +0 -0
  275. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/lightning_utils.py +0 -0
  276. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/logging.py +0 -0
  277. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/metrics.py +0 -0
  278. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/path_utils.py +0 -0
  279. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/plotting.py +0 -0
  280. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/ram.py +0 -0
  281. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/receptive_field.py +0 -0
  282. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/serializers.py +0 -0
  283. {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/torch_utils.py +0 -0
  284. {careamics-0.0.15 → careamics-0.0.17}/tests/cli/__init__.py +0 -0
  285. {careamics-0.0.15 → careamics-0.0.17}/tests/cli/test_conf.py +0 -0
  286. {careamics-0.0.15 → careamics-0.0.17}/tests/cli/test_main.py +0 -0
  287. {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_care_algorithm_model.py +0 -0
  288. {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_n2n_algorithm_model.py +0 -0
  289. {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_n2v_algorithm_model.py +0 -0
  290. {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_architecture_model.py +0 -0
  291. {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_lvae_model.py +0 -0
  292. {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_unet_model.py +0 -0
  293. {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/patching_strategies/test_strategies.py +0 -0
  294. {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/test_data_model.py +0 -0
  295. {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/test_ng_data_model.py +0 -0
  296. {careamics-0.0.15 → careamics-0.0.17}/tests/config/support/test_supported_data.py +0 -0
  297. {careamics-0.0.15 → careamics-0.0.17}/tests/config/support/test_supported_optimizers.py +0 -0
  298. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_callback_models.py +0 -0
  299. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_configuration.py +0 -0
  300. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_configuration_io.py +0 -0
  301. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_inference_model.py +0 -0
  302. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_n2v_preprocessing.py +0 -0
  303. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_optimizers_model.py +0 -0
  304. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_tile_information.py +0 -0
  305. {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_unet_algorithm_model.py +0 -0
  306. {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_n2v_manipulate_model.py +0 -0
  307. {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_normalize_model.py +0 -0
  308. {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_xy_flip_model.py +0 -0
  309. {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_xy_random_rotate90_model.py +0 -0
  310. {careamics-0.0.15 → careamics-0.0.17}/tests/config/validators/test_model_validators.py +0 -0
  311. {careamics-0.0.15 → careamics-0.0.17}/tests/config/validators/test_validator_utils.py +0 -0
  312. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/dataset_utils/test_compute_normalization_stats.py +0 -0
  313. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/dataset_utils/test_list_files.py +0 -0
  314. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_patching_utils.py +0 -0
  315. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_random_patching.py +0 -0
  316. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_sequential_patching.py +0 -0
  317. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_dataset.py +0 -0
  318. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_pred_dataset.py +0 -0
  319. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_tiled_pred_dataset.py +0 -0
  320. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_dataset.py +0 -0
  321. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_pred_dataset.py +0 -0
  322. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_tiled_pred_dataset.py +0 -0
  323. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_collate_tiles.py +0 -0
  324. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_lvae_tiled_patching.py +0 -0
  325. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_tiled_patching.py +0 -0
  326. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_czi_image_stack.py +0 -0
  327. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_import_czi_image_stack.py +0 -0
  328. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_all_strategies.py +0 -0
  329. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_random_patching_ng.py +0 -0
  330. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_sequential_patching_ng.py +0 -0
  331. {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_tiling_strategy.py +0 -0
  332. {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/read/test_get_read_func.py +0 -0
  333. {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/read/test_read_tiff.py +0 -0
  334. {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/write/test_get_write_func.py +0 -0
  335. {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/write/test_write_tiff.py +0 -0
  336. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_cache_tiles_write_strategy.py +0 -0
  337. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_file_path_utils.py +0 -0
  338. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_prediction_writer_callback.py +0 -0
  339. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_write_image_write_strategy.py +0 -0
  340. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_write_strategy_factory.py +0 -0
  341. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_api.py +0 -0
  342. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_module.py +0 -0
  343. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_module_onnx_exportability.py +0 -0
  344. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_predict_data_module.py +0 -0
  345. {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_train_data_module.py +0 -0
  346. {careamics-0.0.15 → careamics-0.0.17}/tests/model_io/test_bmz_io.py +0 -0
  347. {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_utils.py +0 -0
  348. {careamics-0.0.15 → careamics-0.0.17}/tests/models/test_model_factory.py +0 -0
  349. {careamics-0.0.15 → careamics-0.0.17}/tests/models/test_unet.py +0 -0
  350. {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_lvae_prediction.py +0 -0
  351. {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_prediction_outputs.py +0 -0
  352. {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_stitch_prediction.py +0 -0
  353. {careamics-0.0.15 → careamics-0.0.17}/tests/test_conftest.py +0 -0
  354. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_compose.py +0 -0
  355. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_manipulate_n2v.py +0 -0
  356. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_normalize.py +0 -0
  357. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_pixel_manipulation.py +0 -0
  358. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_tta.py +0 -0
  359. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_xy_flip.py +0 -0
  360. {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_xy_random_rotate90.py +0 -0
  361. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_autocorrelation.py +0 -0
  362. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_base_enum.py +0 -0
  363. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_context.py +0 -0
  364. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_logging.py +0 -0
  365. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_metrics.py +0 -0
  366. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_serializers.py +0 -0
  367. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_torch_utils.py +0 -0
  368. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_version.py +0 -0
  369. {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_wandb.py +0 -0
@@ -7,5 +7,5 @@ updates:
7
7
  interval: "daily"
8
8
  time: "08:00"
9
9
  ignore:
10
- - dependency-name: "numpy"
11
10
  - dependency-name: "zarr"
11
+ - dependency-name: "torchmetrics"
@@ -0,0 +1,98 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - "v*"
9
+ pull_request:
10
+ workflow_dispatch:
11
+ schedule:
12
+ # run every week (for --pre release tests)
13
+ - cron: "0 0 * * 0"
14
+
15
+ jobs:
16
+ check-manifest:
17
+ # check-manifest is a tool that checks that all files in version control are
18
+ # included in the sdist (unless explicitly excluded)
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - run: pipx run check-manifest
23
+
24
+ test:
25
+ name: ${{ matrix.platform }} (${{ matrix.python-version }})
26
+ runs-on: ${{ matrix.platform }}
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ python-version: ["3.11", "3.12", "3.13"]
31
+ # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
32
+ platform: [ubuntu-latest, windows-latest, macos-latest ]
33
+
34
+ steps:
35
+ - name: 🛑 Cancel Previous Runs
36
+ uses: styfle/cancel-workflow-action@0.11.0
37
+ with:
38
+ access_token: ${{ github.token }}
39
+
40
+ - uses: actions/checkout@v5
41
+
42
+ - name: Install uv
43
+ uses: astral-sh/setup-uv@v6
44
+ with:
45
+ # Install a specific version of uv.
46
+ version: "0.9.0"
47
+ enable-cache: true
48
+ python-version: ${{ matrix.python-version }}
49
+
50
+ - name: Install the project
51
+ run: uv sync --all-extras --dev
52
+
53
+ - name: 🧪 Run tests
54
+ run: uv run pytest --color=yes -m "not lvae"
55
+
56
+
57
+ deploy:
58
+ name: Release
59
+ needs: test
60
+ if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
61
+ runs-on: ubuntu-latest
62
+
63
+ permissions:
64
+ # IMPORTANT: this permission is mandatory for trusted publishing
65
+ id-token: write
66
+
67
+ # This permission allows writing releases
68
+ contents: write
69
+
70
+ steps:
71
+ - uses: actions/checkout@v5
72
+ with:
73
+ fetch-depth: 0
74
+
75
+ - name: Install uv
76
+ uses: astral-sh/setup-uv@v6
77
+ with:
78
+ # Install a specific version of uv.
79
+ version: "0.9.0"
80
+ enable-cache: true
81
+ python-version: 3.12
82
+
83
+ - name: Build
84
+ run: uv build
85
+
86
+ # Check that basic features work and we didn't miss to include crucial files
87
+ - name: Smoke test (wheel)
88
+ run: uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
89
+
90
+ - name: Smoke test (source distribution)
91
+ run: uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
92
+
93
+ - name: Publish
94
+ run: uv publish
95
+
96
+ - uses: softprops/action-gh-release@v2
97
+ with:
98
+ generate_release_notes: true
@@ -0,0 +1,45 @@
1
+ name: CI-lvae-uv
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - "v*"
9
+ pull_request:
10
+ workflow_dispatch:
11
+ schedule:
12
+ # run every week (for --pre release tests)
13
+ - cron: "0 0 * * 0"
14
+
15
+ jobs:
16
+ test:
17
+ name: LVAE py3.12 (ubuntu-latest)
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ python-version: ["3.12"]
23
+
24
+ steps:
25
+ - name: 🛑 Cancel Previous Runs
26
+ uses: styfle/cancel-workflow-action@0.11.0
27
+ with:
28
+ access_token: ${{ github.token }}
29
+
30
+ - uses: actions/checkout@v5
31
+
32
+ - name: Install uv
33
+ uses: astral-sh/setup-uv@v6
34
+ with:
35
+ # Install a specific version of uv.
36
+ version: "0.9.0"
37
+ enable-cache: true
38
+ python-version: ${{ matrix.python-version }}
39
+
40
+ - name: Install the project
41
+ run: uv sync --all-extras --dev
42
+
43
+ - name: 🧪 Run tests
44
+ # does not run doctests
45
+ run: uv run pytest tests --color=yes -m lvae
@@ -0,0 +1,43 @@
1
+ name: codecov
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ codecov:
10
+ name: codecov update
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.12"]
16
+
17
+ steps:
18
+ - name: 🛑 Cancel Previous Runs
19
+ uses: styfle/cancel-workflow-action@0.11.0
20
+ with:
21
+ access_token: ${{ github.token }}
22
+
23
+ - name: Checkout code
24
+ uses: actions/checkout@v5
25
+
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v6
28
+ with:
29
+ # Install a specific version of uv.
30
+ version: "0.9.0"
31
+ enable-cache: true
32
+ python-version: ${{ matrix.python-version }}
33
+
34
+ - name: Install the project
35
+ run: uv sync --all-extras --dev
36
+
37
+ - name: 🧪 Run Tests
38
+ run: uv run pytest --color=yes --cov --cov-config=pyproject.toml --cov-report=xml --cov-report=term-missing
39
+
40
+ - name: Coverage
41
+ uses: codecov/codecov-action@v5
42
+ with:
43
+ version: v0.7.3
@@ -14,26 +14,25 @@ repos:
14
14
  - id: validate-pyproject
15
15
 
16
16
  - repo: https://github.com/astral-sh/ruff-pre-commit
17
- rev: v0.12.2
17
+ rev: v0.13.3
18
18
  hooks:
19
19
  - id: ruff
20
20
  exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^scripts/.*"
21
- args: [--fix, --target-version, py310]
22
21
 
23
- - repo: https://github.com/psf/black
24
- rev: 25.1.0
22
+ - repo: https://github.com/psf/black-pre-commit-mirror
23
+ rev: 25.9.0
25
24
  hooks:
26
25
  - id: black
27
26
 
28
27
  - repo: https://github.com/pre-commit/mirrors-mypy
29
- rev: v1.16.1
28
+ rev: v1.18.2
30
29
  hooks:
31
30
  - id: mypy
32
31
  files: "^src/"
33
32
  exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^src/careamics/config/likelihood_model.py|^src/careamics/losses/loss_factory.py|^src/careamics/losses/lvae/losses.py"
34
33
  args: ["--config-file", "mypy.ini"]
35
34
  additional_dependencies:
36
- - numpy<2.0.0
35
+ - numpy
37
36
  - pydantic
38
37
  - types-PyYAML
39
38
  - types-setuptools
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: careamics
3
- Version: 0.0.15
3
+ Version: 0.0.17
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
@@ -10,33 +10,30 @@ License-File: LICENSE
10
10
  Classifier: Development Status :: 3 - Alpha
11
11
  Classifier: License :: OSI Approved :: BSD License
12
12
  Classifier: Programming Language :: Python :: 3
13
- Classifier: Programming Language :: Python :: 3.10
14
13
  Classifier: Programming Language :: Python :: 3.11
15
14
  Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
16
  Classifier: Typing :: Typed
17
- Requires-Python: >=3.10
18
- Requires-Dist: bioimageio-core==0.9.0
19
- Requires-Dist: matplotlib<=3.10.3
20
- Requires-Dist: numpy<2.0.0
21
- Requires-Dist: pillow<=11.2.1
22
- Requires-Dist: psutil<=7.0.0
23
- Requires-Dist: pydantic<=2.12,>=2.11
24
- Requires-Dist: pytorch-lightning<=2.5.2,>=2.2
25
- Requires-Dist: pyyaml!=6.0.0,<=6.0.2
17
+ Requires-Python: >=3.11
18
+ Requires-Dist: bioimageio-core>=0.9.0
19
+ Requires-Dist: matplotlib<=3.10.7
20
+ Requires-Dist: numpy>=1.21
21
+ Requires-Dist: numpy>=2.1.0; python_version >= '3.13'
22
+ Requires-Dist: pillow<=11.3.0
23
+ Requires-Dist: psutil<=7.1.0
24
+ Requires-Dist: pydantic<=2.12.2,>=2.11
25
+ Requires-Dist: pytorch-lightning<=2.5.5,>=2.2
26
+ Requires-Dist: pyyaml!=6.0.0,<=6.0.3
26
27
  Requires-Dist: scikit-image<=0.25.2
27
- Requires-Dist: tifffile<=2025.5.10
28
- Requires-Dist: torch<=2.7.1,>=2.0
29
- Requires-Dist: torchvision<=0.22.1
30
- Requires-Dist: typer<=0.16.0,>=0.12.3
31
- Requires-Dist: zarr<3.0.0
28
+ Requires-Dist: tifffile<=2025.10.4
29
+ Requires-Dist: torch<=2.8.0,>=2.0
30
+ Requires-Dist: torchmetrics<1.5.0,>=0.11.0
31
+ Requires-Dist: torchvision<=0.23.0
32
+ Requires-Dist: typer<=0.19.2,>=0.12.3
33
+ Requires-Dist: validators<=0.35.0
34
+ Requires-Dist: zarr<4.0.0,>=3.0.0
32
35
  Provides-Extra: czi
33
36
  Requires-Dist: pylibczirw<6.0.0,>=4.1.2; extra == 'czi'
34
- Provides-Extra: dev
35
- Requires-Dist: onnx; extra == 'dev'
36
- Requires-Dist: pre-commit; extra == 'dev'
37
- Requires-Dist: pytest; extra == 'dev'
38
- Requires-Dist: pytest-cov; extra == 'dev'
39
- Requires-Dist: sybil; extra == 'dev'
40
37
  Provides-Extra: examples
41
38
  Requires-Dist: careamics-portfolio; extra == 'examples'
42
39
  Requires-Dist: jupyter; extra == 'examples'
@@ -20,7 +20,7 @@ name = "careamics"
20
20
  dynamic = ["version"]
21
21
  description = "Toolbox for running N2V and friends."
22
22
  readme = "README.md"
23
- requires-python = ">=3.10"
23
+ requires-python = ">=3.11"
24
24
  license = { text = "BSD-3-Clause" }
25
25
  authors = [
26
26
  { name = 'CAREamics team', email = 'rse@fht.org' },
@@ -34,27 +34,30 @@ authors = [
34
34
  classifiers = [
35
35
  "Development Status :: 3 - Alpha",
36
36
  "Programming Language :: Python :: 3",
37
- "Programming Language :: Python :: 3.10",
38
37
  "Programming Language :: Python :: 3.11",
39
38
  "Programming Language :: Python :: 3.12",
39
+ "Programming Language :: Python :: 3.13",
40
40
  "License :: OSI Approved :: BSD License",
41
41
  "Typing :: Typed",
42
42
  ]
43
43
  dependencies = [
44
- 'numpy<2.0.0',
45
- 'torch>=2.0,<=2.7.1',
46
- 'torchvision<=0.22.1',
47
- 'bioimageio.core==0.9.0',
48
- 'tifffile<=2025.5.10',
49
- 'psutil<=7.0.0',
50
- 'pydantic>=2.11,<=2.12',
51
- 'pytorch_lightning>=2.2,<=2.5.2',
52
- 'pyyaml<=6.0.2,!=6.0.0',
53
- 'typer>=0.12.3,<=0.16.0',
44
+ "numpy>=1.21",
45
+ "numpy>=2.1.0; python_version>='3.13'", # prevents ml_dtypes conflict in py313
46
+ 'torch>=2.0,<=2.8.0',
47
+ 'torchvision<=0.23.0',
48
+ 'bioimageio.core>=0.9.0',
49
+ 'tifffile<=2025.10.4',
50
+ 'psutil<=7.1.0',
51
+ 'pydantic>=2.11,<=2.12.2',
52
+ 'pytorch_lightning>=2.2,<=2.5.5',
53
+ 'pyyaml!=6.0.0,<=6.0.3',
54
+ 'typer>=0.12.3,<=0.19.2',
54
55
  'scikit-image<=0.25.2',
55
- 'zarr<3.0.0',
56
- 'pillow<=11.2.1',
57
- 'matplotlib<=3.10.3',
56
+ 'zarr>=3.0.0,<4.0.0',
57
+ 'pillow<=11.3.0',
58
+ 'matplotlib<=3.10.7',
59
+ 'validators<=0.35.0',
60
+ 'torchmetrics>=0.11.0,<1.5.0' # 1.5.0 causes `data_range` mandatory parameter issues
58
61
  ]
59
62
 
60
63
  [project.optional-dependencies]
@@ -62,21 +65,25 @@ dependencies = [
62
65
  # czi format
63
66
  czi = ['pylibCZIrw>=4.1.2,<6.0.0']
64
67
 
68
+ # notebooks
69
+ examples = ["jupyter", "careamics-portfolio"]
70
+
71
+ # loggers
72
+ wandb = ["wandb"]
73
+ tensorboard = ["tensorboard", "protobuf==5.29.1"]
74
+
75
+ [dependency-groups]
65
76
  # development dependencies and tooling
66
77
  dev = [
67
78
  "pre-commit",
68
79
  "pytest",
69
80
  "pytest-cov",
70
- "onnx",
71
81
  "sybil", # doctesting
72
- ]
73
82
 
74
- # notebooks
75
- examples = ["jupyter", "careamics-portfolio"]
76
-
77
- # loggers
78
- wandb = ["wandb"]
79
- tensorboard = ["tensorboard", "protobuf==5.29.1"]
83
+ # libraries used in some tests
84
+ "onnx",
85
+ "ml_dtypes>=0.5.0" # required by onnx, causes issues in gh runners with py313
86
+ ]
80
87
 
81
88
  [project.urls]
82
89
  homepage = "https://careamics.github.io/"
@@ -88,8 +95,9 @@ careamics = "careamics.cli.main:run"
88
95
 
89
96
  # https://beta.ruff.rs/docs
90
97
  [tool.ruff]
98
+ fix = true
91
99
  line-length = 88
92
- target-version = "py310"
100
+ target-version = "py311" # is this needed? see .pre-commit-config.yaml
93
101
  src = ["src"]
94
102
  lint.select = [
95
103
  "E", # style errors
@@ -41,6 +41,7 @@ logger = get_logger(__name__)
41
41
  LOGGER_TYPES = list[Union[TensorBoardLogger, WandbLogger, CSVLogger]]
42
42
 
43
43
 
44
+ # TODO type ignore have been added because of the czi data type in data configuration
44
45
  class CAREamist:
45
46
  """Main CAREamics class, allowing training and prediction using various algorithms.
46
47
 
@@ -208,17 +209,11 @@ class CAREamist:
208
209
 
209
210
  # instantiate trainer
210
211
  self.trainer = Trainer(
211
- max_epochs=self.cfg.training_config.num_epochs,
212
- precision=self.cfg.training_config.precision,
213
- max_steps=self.cfg.training_config.max_steps,
214
- check_val_every_n_epoch=self.cfg.training_config.check_val_every_n_epoch,
215
212
  enable_progress_bar=enable_progress_bar,
216
- accumulate_grad_batches=self.cfg.training_config.accumulate_grad_batches,
217
- gradient_clip_val=self.cfg.training_config.gradient_clip_val,
218
- gradient_clip_algorithm=self.cfg.training_config.gradient_clip_algorithm,
219
213
  callbacks=self.callbacks,
220
214
  default_root_dir=self.work_dir,
221
215
  logger=experiment_logger,
216
+ **self.cfg.training_config.lightning_trainer_config or {},
222
217
  )
223
218
 
224
219
  # place holder for the datamodules
@@ -264,7 +259,7 @@ class CAREamist:
264
259
  HyperParametersCallback(self.cfg),
265
260
  ModelCheckpoint(
266
261
  dirpath=self.work_dir / Path("checkpoints"),
267
- filename=self.cfg.experiment_name,
262
+ filename=f"{self.cfg.experiment_name}_{{epoch:02d}}_step_{{step}}",
268
263
  **self.cfg.training_config.checkpoint_callback.model_dump(),
269
264
  ),
270
265
  ]
@@ -680,7 +675,7 @@ class CAREamist:
680
675
  # create the prediction
681
676
  self.pred_datamodule = create_predict_datamodule(
682
677
  pred_data=source,
683
- data_type=data_type or self.cfg.data_config.data_type,
678
+ data_type=data_type or self.cfg.data_config.data_type, # type: ignore
684
679
  axes=axes or self.cfg.data_config.axes,
685
680
  image_means=self.cfg.data_config.image_means,
686
681
  image_stds=self.cfg.data_config.image_stds,
@@ -826,11 +821,13 @@ class CAREamist:
826
821
  source_data_type: Literal["array", "tiff", "custom"]
827
822
  if isinstance(source, PredictDataModule):
828
823
  source_path = source.pred_data
829
- source_data_type = source.data_type
824
+ source_data_type = source.data_type # type: ignore
830
825
  extension_filter = source.extension_filter
831
- elif isinstance(source, str | Path):
826
+ elif isinstance(source, (str | Path)):
832
827
  source_path = source
833
- source_data_type = data_type or self.cfg.data_config.data_type
828
+ source_data_type = (
829
+ data_type or self.cfg.data_config.data_type # type: ignore
830
+ )
834
831
  extension_filter = SupportedData.get_extension_pattern(
835
832
  SupportedData(source_data_type)
836
833
  )
@@ -841,7 +838,7 @@ class CAREamist:
841
838
  raise ValueError(
842
839
  "Predicting to disk is not supported for input type 'array'."
843
840
  )
844
- assert isinstance(source_path, str | Path) # because data_type != "array"
841
+ assert isinstance(source_path, (Path | str)) # because data_type != "array"
845
842
  source_path = Path(source_path)
846
843
 
847
844
  file_paths = list_files(source_path, source_data_type, extension_filter)
@@ -879,7 +876,7 @@ class CAREamist:
879
876
 
880
877
  def export_to_bmz(
881
878
  self,
882
- path_to_archive: Union[Path, str],
879
+ path_to_archive: Union[Path | str],
883
880
  friendly_model_name: str,
884
881
  input_array: NDArray,
885
882
  authors: list[dict],
@@ -116,7 +116,11 @@ def care( # numpydoc ignore=PR01
116
116
  ),
117
117
  ],
118
118
  batch_size: Annotated[int, typer.Option(help="Batch size.")],
119
- num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
119
+ num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
120
+ num_steps: Annotated[
121
+ int | None,
122
+ typer.Option(help="Number of batches per epoch (limit_train_batches)."),
123
+ ] = None,
120
124
  data_type: Annotated[
121
125
  click.Choice,
122
126
  typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
@@ -175,6 +179,7 @@ def care( # numpydoc ignore=PR01
175
179
  patch_size=patch_size,
176
180
  batch_size=batch_size,
177
181
  num_epochs=num_epochs,
182
+ num_steps=num_steps,
178
183
  # TODO: fix choosing augmentations
179
184
  augmentations=None if use_augmentations else [],
180
185
  independent_channels=independent_channels,
@@ -203,7 +208,11 @@ def n2n( # numpydoc ignore=PR01
203
208
  ),
204
209
  ],
205
210
  batch_size: Annotated[int, typer.Option(help="Batch size.")],
206
- num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
211
+ num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
212
+ num_steps: Annotated[
213
+ int | None,
214
+ typer.Option(help="Number of batches per epoch (limit_train_batches)."),
215
+ ] = None,
207
216
  data_type: Annotated[
208
217
  click.Choice,
209
218
  typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
@@ -259,6 +268,7 @@ def n2n( # numpydoc ignore=PR01
259
268
  patch_size=patch_size,
260
269
  batch_size=batch_size,
261
270
  num_epochs=num_epochs,
271
+ num_steps=num_steps,
262
272
  # TODO: fix choosing augmentations
263
273
  augmentations=None if use_augmentations else [],
264
274
  independent_channels=independent_channels,
@@ -287,7 +297,11 @@ def n2v( # numpydoc ignore=PR01
287
297
  ),
288
298
  ],
289
299
  batch_size: Annotated[int, typer.Option(help="Batch size.")],
290
- num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
300
+ num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
301
+ num_steps: Annotated[
302
+ int | None,
303
+ typer.Option(help="Number of batches per epoch (limit_train_batches)."),
304
+ ] = None,
291
305
  data_type: Annotated[
292
306
  click.Choice,
293
307
  typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
@@ -364,6 +378,7 @@ def n2v( # numpydoc ignore=PR01
364
378
  patch_size=patch_size,
365
379
  batch_size=batch_size,
366
380
  num_epochs=num_epochs,
381
+ num_steps=num_steps,
367
382
  # TODO: fix choosing augmentations
368
383
  augmentations=None if use_augmentations else [],
369
384
  independent_channels=independent_channels,
@@ -12,8 +12,10 @@ __all__ = [
12
12
  "Configuration",
13
13
  "DataConfig",
14
14
  "GaussianMixtureNMConfig",
15
+ "HDNAlgorithm",
15
16
  "InferenceConfig",
16
17
  "LVAELossConfig",
18
+ "MicroSplitAlgorithm",
17
19
  "MultiChannelNMConfig",
18
20
  "N2NAlgorithm",
19
21
  "N2VAlgorithm",
@@ -22,6 +24,8 @@ __all__ = [
22
24
  "VAEBasedAlgorithm",
23
25
  "algorithm_factory",
24
26
  "create_care_configuration",
27
+ "create_hdn_configuration",
28
+ "create_microsplit_configuration",
25
29
  "create_n2n_configuration",
26
30
  "create_n2v_configuration",
27
31
  "load_configuration",
@@ -30,6 +34,8 @@ __all__ = [
30
34
 
31
35
  from .algorithms import (
32
36
  CAREAlgorithm,
37
+ HDNAlgorithm,
38
+ MicroSplitAlgorithm,
33
39
  N2NAlgorithm,
34
40
  N2VAlgorithm,
35
41
  UNetBasedAlgorithm,
@@ -40,6 +46,8 @@ from .configuration import Configuration
40
46
  from .configuration_factories import (
41
47
  algorithm_factory,
42
48
  create_care_configuration,
49
+ create_hdn_configuration,
50
+ create_microsplit_configuration,
43
51
  create_n2n_configuration,
44
52
  create_n2v_configuration,
45
53
  )
@@ -2,6 +2,8 @@
2
2
 
3
3
  __all__ = [
4
4
  "CAREAlgorithm",
5
+ "HDNAlgorithm",
6
+ "MicroSplitAlgorithm",
5
7
  "N2NAlgorithm",
6
8
  "N2VAlgorithm",
7
9
  "UNetBasedAlgorithm",
@@ -9,6 +11,8 @@ __all__ = [
9
11
  ]
10
12
 
11
13
  from .care_algorithm_model import CAREAlgorithm
14
+ from .hdn_algorithm_model import HDNAlgorithm
15
+ from .microsplit_algorithm_model import MicroSplitAlgorithm
12
16
  from .n2n_algorithm_model import N2NAlgorithm
13
17
  from .n2v_algorithm_model import N2VAlgorithm
14
18
  from .unet_algorithm_model import UNetBasedAlgorithm
@@ -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_model import VAEBasedAlgorithm
9
+ from careamics.config.architectures import LVAEModel
10
+ from careamics.config.loss_model 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: LVAEModel # 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