careamics 0.0.12__tar.gz → 0.0.13__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 (339) hide show
  1. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. {careamics-0.0.12 → careamics-0.0.13}/.github/workflows/ci.yml +7 -5
  3. careamics-0.0.13/.github/workflows/ci_macos.yml +67 -0
  4. {careamics-0.0.12 → careamics-0.0.13}/.github/workflows/codecov.yml +1 -1
  5. {careamics-0.0.12 → careamics-0.0.13}/.github/workflows/lvae.yml +2 -2
  6. {careamics-0.0.12 → careamics-0.0.13}/.pre-commit-config.yaml +7 -6
  7. {careamics-0.0.12 → careamics-0.0.13}/PKG-INFO +10 -9
  8. {careamics-0.0.12 → careamics-0.0.13}/pyproject.toml +22 -10
  9. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/careamist.py +4 -3
  10. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/cli/utils.py +1 -1
  11. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/n2v_algorithm_model.py +1 -1
  12. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/architectures/unet_model.py +3 -0
  13. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/callback_model.py +23 -34
  14. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/configuration.py +47 -1
  15. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/configuration_factories.py +288 -23
  16. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/data/__init__.py +2 -0
  17. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/data/data_model.py +3 -3
  18. careamics-0.0.13/src/careamics/config/data/ng_data_model.py +381 -0
  19. careamics-0.0.13/src/careamics/config/data/patching_strategies/__init__.py +14 -0
  20. careamics-0.0.13/src/careamics/config/data/patching_strategies/_overlapping_patched_model.py +103 -0
  21. careamics-0.0.13/src/careamics/config/data/patching_strategies/_patched_model.py +56 -0
  22. careamics-0.0.13/src/careamics/config/data/patching_strategies/random_patching_model.py +21 -0
  23. careamics-0.0.13/src/careamics/config/data/patching_strategies/sequential_patching_model.py +25 -0
  24. careamics-0.0.13/src/careamics/config/data/patching_strategies/tiled_patching_model.py +40 -0
  25. careamics-0.0.13/src/careamics/config/data/patching_strategies/whole_patching_model.py +12 -0
  26. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/inference_model.py +6 -3
  27. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_data.py +7 -0
  28. careamics-0.0.13/src/careamics/config/support/supported_patching_strategies.py +22 -0
  29. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/validators/validator_utils.py +4 -3
  30. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/dataset_utils/iterate_over_files.py +2 -2
  31. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/in_memory_dataset.py +2 -1
  32. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/iterable_dataset.py +2 -2
  33. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/iterable_pred_dataset.py +2 -2
  34. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/iterable_tiled_pred_dataset.py +2 -2
  35. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/patching/patching.py +3 -2
  36. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/tiling/lvae_tiled_patching.py +16 -6
  37. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/tiling/tiled_patching.py +2 -1
  38. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/dataset.py +46 -50
  39. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/bsd68_demo.ipynb +28 -23
  40. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/care_U2OS_demo.ipynb +1 -1
  41. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/demo_custom_image_stack.ipynb +1 -1
  42. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/demo_datamodule.ipynb +50 -46
  43. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/demo_dataset.ipynb +32 -49
  44. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/factory.py +58 -15
  45. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/legacy_interoperability.py +3 -1
  46. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/demo_custom_image_stack_loader.py +1 -1
  47. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/image_stack/__init__.py +2 -0
  48. careamics-0.0.13/src/careamics/dataset_ng/patch_extractor/image_stack/czi_image_stack.py +360 -0
  49. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/image_stack/in_memory_image_stack.py +1 -1
  50. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/patch_extractor_factory.py +43 -1
  51. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/random_patching.py +3 -1
  52. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/sequential_patching.py +5 -5
  53. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/tiling_strategy.py +2 -1
  54. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/read/get_func.py +2 -1
  55. careamics-0.0.13/src/careamics/lightning/dataset_ng/__init__.py +1 -0
  56. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/dataset_ng/data_module.py +218 -28
  57. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/dataset_ng/lightning_modules/care_module.py +44 -5
  58. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/dataset_ng/lightning_modules/n2v_module.py +42 -3
  59. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/dataset_ng/lightning_modules/unet_module.py +73 -4
  60. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/lightning_module.py +2 -1
  61. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/predict_data_module.py +2 -1
  62. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/train_data_module.py +2 -1
  63. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/loss_factory.py +2 -1
  64. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/multicrop_dset.py +1 -1
  65. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bioimage/bioimage_utils.py +1 -1
  66. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bioimage/model_description.py +1 -1
  67. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bmz_io.py +1 -1
  68. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/model_io_utils.py +2 -2
  69. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/activation.py +2 -1
  70. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/prediction_utils/prediction_outputs.py +1 -1
  71. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/prediction_utils/stitch_prediction.py +1 -1
  72. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/n2v_manipulate_torch.py +15 -9
  73. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/pixel_manipulation_torch.py +59 -92
  74. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/lightning_utils.py +2 -2
  75. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/metrics.py +2 -1
  76. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/torch_utils.py +23 -0
  77. {careamics-0.0.12 → careamics-0.0.13}/tests/cli/test_main.py +3 -0
  78. careamics-0.0.13/tests/config/data/patching_strategies/test_strategies.py +35 -0
  79. careamics-0.0.13/tests/config/data/test_ng_data_model.py +70 -0
  80. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_configuration.py +12 -0
  81. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_configuration_factories.py +24 -0
  82. {careamics-0.0.12 → careamics-0.0.13}/tests/conftest.py +11 -2
  83. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/tiling/test_lvae_tiled_patching.py +1 -1
  84. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/dataset/test_dataset.py +26 -19
  85. careamics-0.0.13/tests/dataset_ng/patch_extractor/image_stack/test_czi_image_stack.py +176 -0
  86. careamics-0.0.13/tests/dataset_ng/patch_extractor/image_stack/test_import_czi_image_stack.py +13 -0
  87. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/patching_strategies/test_all_strategies.py +4 -3
  88. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/patching_strategies/test_sequential_patching_ng.py +3 -1
  89. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/patching_strategies/test_tiling_strategy.py +7 -3
  90. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/callbacks/prediction_writer_callback/test_prediction_writer_callback.py +2 -0
  91. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_LVAE_lightning_module.py +2 -1
  92. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_lightning_api.py +3 -0
  93. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_lightning_module.py +1 -0
  94. {careamics-0.0.12 → careamics-0.0.13}/tests/losses/test_lvae_losses.py +2 -1
  95. {careamics-0.0.12 → careamics-0.0.13}/tests/model_io/test_bmz_io.py +3 -0
  96. {careamics-0.0.12 → careamics-0.0.13}/tests/test_careamist.py +25 -0
  97. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_manipulate_n2v.py +1 -1
  98. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_pixel_manipulation.py +1 -1
  99. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_lightning_utils.py +2 -0
  100. careamics-0.0.12/scripts/export_bmz_readme.py +0 -29
  101. careamics-0.0.12/scripts/export_covers.py +0 -0
  102. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/example_report.md +0 -0
  103. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  104. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/interoperability_request.md +0 -0
  105. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/question.md +0 -0
  106. {careamics-0.0.12 → careamics-0.0.13}/.github/ISSUE_TEMPLATE/refactoring_suggestion.md +0 -0
  107. {careamics-0.0.12 → careamics-0.0.13}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  108. {careamics-0.0.12 → careamics-0.0.13}/.github/dependabot.yml +0 -0
  109. {careamics-0.0.12 → careamics-0.0.13}/.github/pull_request_template.md +0 -0
  110. {careamics-0.0.12 → careamics-0.0.13}/.gitignore +0 -0
  111. {careamics-0.0.12 → careamics-0.0.13}/CODE_OF_CONDUCT.md +0 -0
  112. {careamics-0.0.12 → careamics-0.0.13}/LICENSE +0 -0
  113. {careamics-0.0.12 → careamics-0.0.13}/README.md +0 -0
  114. {careamics-0.0.12 → careamics-0.0.13}/codecov.yml +0 -0
  115. {careamics-0.0.12 → careamics-0.0.13}/mypy.ini +0 -0
  116. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/__init__.py +0 -0
  117. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/cli/__init__.py +0 -0
  118. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/cli/conf.py +0 -0
  119. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/cli/main.py +0 -0
  120. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/__init__.py +0 -0
  121. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/__init__.py +0 -0
  122. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/care_algorithm_model.py +0 -0
  123. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/n2n_algorithm_model.py +0 -0
  124. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/unet_algorithm_model.py +0 -0
  125. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/algorithms/vae_algorithm_model.py +0 -0
  126. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/architectures/__init__.py +0 -0
  127. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/architectures/architecture_model.py +0 -0
  128. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/architectures/lvae_model.py +0 -0
  129. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/configuration_io.py +0 -0
  130. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/likelihood_model.py +0 -0
  131. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/loss_model.py +0 -0
  132. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/nm_model.py +0 -0
  133. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/optimizer_models.py +0 -0
  134. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/__init__.py +0 -0
  135. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_activations.py +0 -0
  136. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_algorithms.py +0 -0
  137. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_architectures.py +0 -0
  138. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_loggers.py +0 -0
  139. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_losses.py +0 -0
  140. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_optimizers.py +0 -0
  141. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_pixel_manipulations.py +0 -0
  142. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_struct_axis.py +0 -0
  143. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/support/supported_transforms.py +0 -0
  144. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/tile_information.py +0 -0
  145. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/training_model.py +0 -0
  146. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/__init__.py +0 -0
  147. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/n2v_manipulate_model.py +0 -0
  148. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/normalize_model.py +0 -0
  149. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/transform_model.py +0 -0
  150. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/transform_unions.py +0 -0
  151. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/xy_flip_model.py +0 -0
  152. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/transformations/xy_random_rotate90_model.py +0 -0
  153. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/validators/__init__.py +0 -0
  154. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/config/validators/model_validators.py +0 -0
  155. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/conftest.py +0 -0
  156. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/__init__.py +0 -0
  157. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/dataset_utils/__init__.py +0 -0
  158. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/dataset_utils/dataset_utils.py +0 -0
  159. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/dataset_utils/file_utils.py +0 -0
  160. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/dataset_utils/running_stats.py +0 -0
  161. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/in_memory_pred_dataset.py +0 -0
  162. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/in_memory_tiled_pred_dataset.py +0 -0
  163. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/patching/__init__.py +0 -0
  164. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/patching/random_patching.py +0 -0
  165. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/patching/sequential_patching.py +0 -0
  166. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/patching/validate_patch_dimension.py +0 -0
  167. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/tiling/__init__.py +0 -0
  168. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/tiling/collate_tiles.py +0 -0
  169. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset/zarr_dataset.py +0 -0
  170. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/README.md +0 -0
  171. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/demo_patch_extractor.py +0 -0
  172. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/demos/mouse_nuclei_demo.ipynb +0 -0
  173. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/__init__.py +0 -0
  174. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/image_stack/image_stack_protocol.py +0 -0
  175. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/image_stack/zarr_image_stack.py +0 -0
  176. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/image_stack_loader.py +0 -0
  177. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patch_extractor/patch_extractor.py +0 -0
  178. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/__init__.py +0 -0
  179. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/patching_strategy_protocol.py +0 -0
  180. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/dataset_ng/patching_strategies/whole_sample.py +0 -0
  181. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/__init__.py +0 -0
  182. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/read/__init__.py +0 -0
  183. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/read/tiff.py +0 -0
  184. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/read/zarr.py +0 -0
  185. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/write/__init__.py +0 -0
  186. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/write/get_func.py +0 -0
  187. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/file_io/write/tiff.py +0 -0
  188. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/__init__.py +0 -0
  189. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/__init__.py +0 -0
  190. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/hyperparameters_callback.py +0 -0
  191. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/prediction_writer_callback/__init__.py +0 -0
  192. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +0 -0
  193. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +0 -0
  194. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +0 -0
  195. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +0 -0
  196. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/callbacks/progress_bar_callback.py +0 -0
  197. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lightning/dataset_ng/lightning_modules/__init__.py +0 -0
  198. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/__init__.py +0 -0
  199. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/fcn/__init__.py +0 -0
  200. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/fcn/losses.py +0 -0
  201. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/lvae/__init__.py +0 -0
  202. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/lvae/loss_utils.py +0 -0
  203. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/losses/lvae/losses.py +0 -0
  204. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/__init__.py +0 -0
  205. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/calibration.py +0 -0
  206. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/__init__.py +0 -0
  207. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/config.py +0 -0
  208. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/lc_dataset.py +0 -0
  209. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/ms_dataset_ref.py +0 -0
  210. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/multich_dataset.py +0 -0
  211. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/multifile_dataset.py +0 -0
  212. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/types.py +0 -0
  213. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/utils/__init__.py +0 -0
  214. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/utils/data_utils.py +0 -0
  215. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +0 -0
  216. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/utils/index_manager.py +0 -0
  217. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/dataset/utils/index_switcher.py +0 -0
  218. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/eval_utils.py +0 -0
  219. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/get_config.py +0 -0
  220. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/lightning_module.py +0 -0
  221. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/metrics.py +0 -0
  222. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/train_lvae.py +0 -0
  223. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/lvae_training/train_utils.py +0 -0
  224. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/__init__.py +0 -0
  225. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bioimage/__init__.py +0 -0
  226. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bioimage/_readme_factory.py +0 -0
  227. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/model_io/bioimage/cover_factory.py +0 -0
  228. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/__init__.py +0 -0
  229. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/layers.py +0 -0
  230. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/__init__.py +0 -0
  231. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/layers.py +0 -0
  232. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/likelihoods.py +0 -0
  233. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/lvae.py +0 -0
  234. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/noise_models.py +0 -0
  235. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/stochastic.py +0 -0
  236. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/lvae/utils.py +0 -0
  237. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/model_factory.py +0 -0
  238. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/models/unet.py +0 -0
  239. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/prediction_utils/__init__.py +0 -0
  240. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/prediction_utils/lvae_prediction.py +0 -0
  241. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/prediction_utils/lvae_tiling_manager.py +0 -0
  242. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/py.typed +0 -0
  243. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/__init__.py +0 -0
  244. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/compose.py +0 -0
  245. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/n2v_manipulate.py +0 -0
  246. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/normalize.py +0 -0
  247. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/pixel_manipulation.py +0 -0
  248. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/struct_mask_parameters.py +0 -0
  249. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/transform.py +0 -0
  250. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/tta.py +0 -0
  251. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/xy_flip.py +0 -0
  252. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/transforms/xy_random_rotate90.py +0 -0
  253. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/__init__.py +0 -0
  254. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/autocorrelation.py +0 -0
  255. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/base_enum.py +0 -0
  256. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/context.py +0 -0
  257. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/logging.py +0 -0
  258. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/path_utils.py +0 -0
  259. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/plotting.py +0 -0
  260. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/ram.py +0 -0
  261. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/receptive_field.py +0 -0
  262. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/serializers.py +0 -0
  263. {careamics-0.0.12 → careamics-0.0.13}/src/careamics/utils/version.py +0 -0
  264. {careamics-0.0.12 → careamics-0.0.13}/tests/cli/__init__.py +0 -0
  265. {careamics-0.0.12 → careamics-0.0.13}/tests/cli/test_conf.py +0 -0
  266. {careamics-0.0.12 → careamics-0.0.13}/tests/config/algorithms/test_care_algorithm_model.py +0 -0
  267. {careamics-0.0.12 → careamics-0.0.13}/tests/config/algorithms/test_n2n_algorithm_model.py +0 -0
  268. {careamics-0.0.12 → careamics-0.0.13}/tests/config/algorithms/test_n2v_algorithm_model.py +0 -0
  269. {careamics-0.0.12 → careamics-0.0.13}/tests/config/architectures/test_architecture_model.py +0 -0
  270. {careamics-0.0.12 → careamics-0.0.13}/tests/config/architectures/test_lvae_model.py +0 -0
  271. {careamics-0.0.12 → careamics-0.0.13}/tests/config/architectures/test_unet_model.py +0 -0
  272. {careamics-0.0.12 → careamics-0.0.13}/tests/config/data/test_data_model.py +0 -0
  273. {careamics-0.0.12 → careamics-0.0.13}/tests/config/support/test_supported_data.py +0 -0
  274. {careamics-0.0.12 → careamics-0.0.13}/tests/config/support/test_supported_optimizers.py +0 -0
  275. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_callback_models.py +0 -0
  276. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_configuration_io.py +0 -0
  277. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_inference_model.py +0 -0
  278. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_n2v_preprocessing.py +0 -0
  279. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_optimizers_model.py +0 -0
  280. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_tile_information.py +0 -0
  281. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_training_model.py +0 -0
  282. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_unet_algorithm_model.py +0 -0
  283. {careamics-0.0.12 → careamics-0.0.13}/tests/config/test_vae_algorithm_model.py +0 -0
  284. {careamics-0.0.12 → careamics-0.0.13}/tests/config/transformations/test_n2v_manipulate_model.py +0 -0
  285. {careamics-0.0.12 → careamics-0.0.13}/tests/config/transformations/test_normalize_model.py +0 -0
  286. {careamics-0.0.12 → careamics-0.0.13}/tests/config/transformations/test_xy_flip_model.py +0 -0
  287. {careamics-0.0.12 → careamics-0.0.13}/tests/config/transformations/test_xy_random_rotate90_model.py +0 -0
  288. {careamics-0.0.12 → careamics-0.0.13}/tests/config/validators/test_model_validators.py +0 -0
  289. {careamics-0.0.12 → careamics-0.0.13}/tests/config/validators/test_validator_utils.py +0 -0
  290. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/dataset_utils/test_compute_normalization_stats.py +0 -0
  291. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/dataset_utils/test_list_files.py +0 -0
  292. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/patching/test_patching_utils.py +0 -0
  293. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/patching/test_random_patching.py +0 -0
  294. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/patching/test_sequential_patching.py +0 -0
  295. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_in_memory_dataset.py +0 -0
  296. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_in_memory_pred_dataset.py +0 -0
  297. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_in_memory_tiled_pred_dataset.py +0 -0
  298. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_iterable_dataset.py +0 -0
  299. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_iterable_pred_dataset.py +0 -0
  300. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/test_iterable_tiled_pred_dataset.py +0 -0
  301. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/tiling/test_collate_tiles.py +0 -0
  302. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset/tiling/test_tiled_patching.py +0 -0
  303. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/patch_extractor/image_stack/test_zarr_image_stack.py +0 -0
  304. {careamics-0.0.12 → careamics-0.0.13}/tests/dataset_ng/patching_strategies/test_random_patching_ng.py +0 -0
  305. {careamics-0.0.12 → careamics-0.0.13}/tests/file_io/read/test_get_read_func.py +0 -0
  306. {careamics-0.0.12 → careamics-0.0.13}/tests/file_io/read/test_read_tiff.py +0 -0
  307. {careamics-0.0.12 → careamics-0.0.13}/tests/file_io/write/test_get_write_func.py +0 -0
  308. {careamics-0.0.12 → careamics-0.0.13}/tests/file_io/write/test_write_tiff.py +0 -0
  309. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/callbacks/prediction_writer_callback/test_cache_tiles_write_strategy.py +0 -0
  310. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/callbacks/prediction_writer_callback/test_file_path_utils.py +0 -0
  311. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/callbacks/prediction_writer_callback/test_write_image_write_strategy.py +0 -0
  312. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/callbacks/prediction_writer_callback/test_write_strategy_factory.py +0 -0
  313. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_lightning_module_onnx_exportability.py +0 -0
  314. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_predict_data_module.py +0 -0
  315. {careamics-0.0.12 → careamics-0.0.13}/tests/lightning/test_train_data_module.py +0 -0
  316. {careamics-0.0.12 → careamics-0.0.13}/tests/likelihood_modules/test_likelihoods.py +0 -0
  317. {careamics-0.0.12 → careamics-0.0.13}/tests/models/lvae/test_lvae_architecture.py +0 -0
  318. {careamics-0.0.12 → careamics-0.0.13}/tests/models/lvae/test_noise_model.py +0 -0
  319. {careamics-0.0.12 → careamics-0.0.13}/tests/models/lvae/test_utils.py +0 -0
  320. {careamics-0.0.12 → careamics-0.0.13}/tests/models/test_model_factory.py +0 -0
  321. {careamics-0.0.12 → careamics-0.0.13}/tests/models/test_unet.py +0 -0
  322. {careamics-0.0.12 → careamics-0.0.13}/tests/prediction_utils/test_lvae_prediction.py +0 -0
  323. {careamics-0.0.12 → careamics-0.0.13}/tests/prediction_utils/test_prediction_outputs.py +0 -0
  324. {careamics-0.0.12 → careamics-0.0.13}/tests/prediction_utils/test_stitch_prediction.py +0 -0
  325. {careamics-0.0.12 → careamics-0.0.13}/tests/test_conftest.py +0 -0
  326. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_compose.py +0 -0
  327. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_normalize.py +0 -0
  328. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_tta.py +0 -0
  329. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_xy_flip.py +0 -0
  330. {careamics-0.0.12 → careamics-0.0.13}/tests/transforms/test_xy_random_rotate90.py +0 -0
  331. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_autocorrelation.py +0 -0
  332. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_base_enum.py +0 -0
  333. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_context.py +0 -0
  334. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_logging.py +0 -0
  335. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_metrics.py +0 -0
  336. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_serializers.py +0 -0
  337. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_torch_utils.py +0 -0
  338. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_version.py +0 -0
  339. {careamics-0.0.12 → careamics-0.0.13}/tests/utils/test_wandb.py +0 -0
@@ -30,7 +30,7 @@ Error message:
30
30
  <!-- Please fill in the following information, you can check the package versions using `conda list` -->
31
31
  > [!IMPORTANT]
32
32
  > - OS: [e.g. iOS]
33
- > - Python version [e.g. 3.9]
33
+ > - Python version [e.g. 3.12]
34
34
  > - PyTorch version [e.g. 2.3]
35
35
  > - PyTorch lightning version [e.g. 2.4]
36
36
  > - CAREamics version [e.g. 0.0.4]
@@ -27,9 +27,9 @@ jobs:
27
27
  strategy:
28
28
  fail-fast: false
29
29
  matrix:
30
- python-version: ["3.9", "3.10", "3.11", "3.12"]
30
+ python-version: ["3.10", "3.11", "3.12"]
31
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, macos-13, windows-latest]
32
+ platform: [ubuntu-latest, windows-latest] # macos-latest
33
33
 
34
34
  steps:
35
35
  - name: 🛑 Cancel Previous Runs
@@ -40,17 +40,19 @@ jobs:
40
40
  - uses: actions/checkout@v3
41
41
 
42
42
  - name: 🐍 Set up Python ${{ matrix.python-version }}
43
- uses: actions/setup-python@v4
43
+ uses: actions/setup-python@v5
44
44
  with:
45
45
  python-version: ${{ matrix.python-version }}
46
+ # architecture: ${{ matrix.platform == 'macos-latest' && 'arm64' || 'x64' }}
46
47
  cache-dependency-path: "pyproject.toml"
47
48
  cache: "pip"
48
49
 
49
50
  - name: Install Dependencies
50
51
  run: |
51
52
  python -m pip install -U pip
53
+
52
54
  # if running a cron job, we add the --pre flag to test against pre-releases
53
- python -m pip install .[dev] ${{ github.event_name == 'schedule' && '--pre' || '' }}
55
+ python -m pip install .[dev,czi] ${{ github.event_name == 'schedule' && '--pre' || '' }}
54
56
 
55
57
  - name: 🧪 Run Tests
56
58
  run: pytest --color=yes -m "not lvae"
@@ -90,7 +92,7 @@ jobs:
90
92
  - name: Set up Python
91
93
  uses: actions/setup-python@v5
92
94
  with:
93
- python-version: "3.9"
95
+ python-version: "3.12"
94
96
 
95
97
  - name: Build
96
98
  run: |
@@ -0,0 +1,67 @@
1
+ # This CI runs the tests that do not fail on gh macos-latest runner due to the MPS
2
+ # backend. Once the MPS backend is fixed on gh side, this workflow can be removed
3
+ # and merged back once again with the main CI workflow.
4
+ name: CI-macOS
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - main
10
+ tags:
11
+ - "v*"
12
+ pull_request:
13
+ workflow_dispatch:
14
+ schedule:
15
+ # run every week (for --pre release tests)
16
+ - cron: "0 0 * * 0"
17
+
18
+ jobs:
19
+ test:
20
+ name: ${{ matrix.platform }} (${{ matrix.python-version }})
21
+ runs-on: ${{ matrix.platform }}
22
+ strategy:
23
+ fail-fast: false
24
+ matrix:
25
+ python-version: ["3.10", "3.11", "3.12"]
26
+ # 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
27
+ platform: [macos-latest]
28
+
29
+ steps:
30
+ - name: 🛑 Cancel Previous Runs
31
+ uses: styfle/cancel-workflow-action@0.11.0
32
+ with:
33
+ access_token: ${{ github.token }}
34
+
35
+ - uses: actions/checkout@v3
36
+
37
+ - name: 🐍 Set up Python ${{ matrix.python-version }}
38
+ uses: actions/setup-python@v5
39
+ with:
40
+ python-version: ${{ matrix.python-version }}
41
+ architecture: ${{ matrix.platform == 'macos-latest' && 'arm64' || 'x64' }} # force arm64 architecture
42
+ cache-dependency-path: "pyproject.toml"
43
+ cache: "pip"
44
+
45
+ - name: Install Dependencies
46
+ run: |
47
+ python -m pip install -U pip
48
+
49
+ # if running a cron job, we add the --pre flag to test against pre-releases
50
+ python -m pip install .[dev] ${{ github.event_name == 'schedule' && '--pre' || '' }}
51
+
52
+ - name: 🧪 Run Tests
53
+ run: pytest --color=yes -m "not lvae and not mps_gh_fail"
54
+
55
+ # If something goes wrong with --pre tests, we can open an issue in the repo
56
+ - name: 📝 Report --pre Failures
57
+ if: failure() && github.event_name == 'schedule'
58
+ uses: JasonEtco/create-an-issue@v2
59
+ env:
60
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61
+ PLATFORM: ${{ matrix.platform }}
62
+ PYTHON: ${{ matrix.python-version }}
63
+ RUN_ID: ${{ github.run_id }}
64
+ TITLE: "[test-bot] pip install --pre is failing"
65
+ with:
66
+ filename: .github/TEST_FAIL_TEMPLATE.md
67
+ update_existing: true
@@ -16,7 +16,7 @@ jobs:
16
16
  strategy:
17
17
  fail-fast: false
18
18
  matrix:
19
- python-version: ["3.9"]
19
+ python-version: ["3.12"]
20
20
  platform: [ubuntu-latest]
21
21
 
22
22
  steps:
@@ -19,8 +19,8 @@ jobs:
19
19
  strategy:
20
20
  fail-fast: false
21
21
  matrix:
22
- python-version: ["3.9"]
23
- platform: [ubuntu-latest, windows-latest]
22
+ python-version: ["3.12"]
23
+ platform: [ubuntu-latest]
24
24
 
25
25
  steps:
26
26
  - name: 🛑 Cancel Previous Runs
@@ -9,24 +9,24 @@ ci:
9
9
 
10
10
  repos:
11
11
  - repo: https://github.com/abravalheri/validate-pyproject
12
- rev: v0.23
12
+ rev: v0.24.1
13
13
  hooks:
14
14
  - id: validate-pyproject
15
15
 
16
16
  - repo: https://github.com/astral-sh/ruff-pre-commit
17
- rev: v0.8.6
17
+ rev: v0.11.12
18
18
  hooks:
19
19
  - id: ruff
20
20
  exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^scripts/.*"
21
- args: [--fix, --target-version, py39]
21
+ args: [--fix, --target-version, py310]
22
22
 
23
23
  - repo: https://github.com/psf/black
24
- rev: 24.10.0
24
+ rev: 25.1.0
25
25
  hooks:
26
26
  - id: black
27
27
 
28
28
  - repo: https://github.com/pre-commit/mirrors-mypy
29
- rev: v1.14.1
29
+ rev: v1.16.0
30
30
  hooks:
31
31
  - id: mypy
32
32
  files: "^src/"
@@ -43,7 +43,8 @@ repos:
43
43
  rev: v1.8.0
44
44
  hooks:
45
45
  - id: numpydoc-validation
46
- exclude: "^src/careamics/dataset_ng/.*|^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/.*|^src/careamics/lightning/dataset_ng/data_module.py|^scripts/.*"
47
+ # regarding src/careamics/lightning/dataset_ng/data_module.py: https://github.com/numpy/numpydoc/issues/559
47
48
 
48
49
  # # jupyter linting and formatting
49
50
  # - 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.12
3
+ Version: 0.0.13
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,27 +10,28 @@ 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.9
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
16
15
  Classifier: Programming Language :: Python :: 3.12
17
16
  Classifier: Typing :: Typed
18
- Requires-Python: >=3.9
17
+ Requires-Python: >=3.10
19
18
  Requires-Dist: bioimageio-core==0.7
20
- Requires-Dist: matplotlib<=3.10.1
19
+ Requires-Dist: matplotlib<=3.10.3
21
20
  Requires-Dist: numpy<2.0.0
22
21
  Requires-Dist: pillow<=11.2.1
23
22
  Requires-Dist: psutil<=7.0.0
24
23
  Requires-Dist: pydantic<=2.12,>=2.11
25
- Requires-Dist: pytorch-lightning<=2.5.0.post0,>=2.2
24
+ Requires-Dist: pytorch-lightning<=2.5.2,>=2.2
26
25
  Requires-Dist: pyyaml!=6.0.0,<=6.0.2
27
26
  Requires-Dist: scikit-image<=0.25.2
28
- Requires-Dist: tifffile<=2025.3.13
29
- Requires-Dist: torch<=2.6.0,>=2.0
30
- Requires-Dist: torchvision<=0.21.0
31
- Requires-Dist: typer<=0.15.2,>=0.12.3
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
32
31
  Requires-Dist: xarray<2025.3.0
33
32
  Requires-Dist: zarr<3.0.0
33
+ Provides-Extra: czi
34
+ Requires-Dist: pylibczirw<6.0.0,>=4.1.2; extra == 'czi'
34
35
  Provides-Extra: dev
35
36
  Requires-Dist: onnx; extra == 'dev'
36
37
  Requires-Dist: pre-commit; extra == 'dev'
@@ -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.9"
23
+ requires-python = ">=3.10"
24
24
  license = { text = "BSD-3-Clause" }
25
25
  authors = [
26
26
  { name = 'CAREamics team', email = 'rse@fht.org' },
@@ -34,7 +34,6 @@ authors = [
34
34
  classifiers = [
35
35
  "Development Status :: 3 - Alpha",
36
36
  "Programming Language :: Python :: 3",
37
- "Programming Language :: Python :: 3.9",
38
37
  "Programming Language :: Python :: 3.10",
39
38
  "Programming Language :: Python :: 3.11",
40
39
  "Programming Language :: Python :: 3.12",
@@ -43,23 +42,27 @@ classifiers = [
43
42
  ]
44
43
  dependencies = [
45
44
  'numpy<2.0.0',
46
- 'torch>=2.0,<=2.6.0',
47
- 'torchvision<=0.21.0',
45
+ 'torch>=2.0,<=2.7.1',
46
+ 'torchvision<=0.22.1',
48
47
  'bioimageio.core==0.7',
49
- 'tifffile<=2025.3.13',
48
+ 'tifffile<=2025.5.10',
50
49
  'psutil<=7.0.0',
51
50
  'pydantic>=2.11,<=2.12',
52
- 'pytorch_lightning>=2.2,<=2.5.0.post0',
51
+ 'pytorch_lightning>=2.2,<=2.5.2',
53
52
  'pyyaml<=6.0.2,!=6.0.0',
54
- 'typer>=0.12.3,<=0.15.2',
53
+ 'typer>=0.12.3,<=0.16.0',
55
54
  'scikit-image<=0.25.2',
56
55
  'zarr<3.0.0',
57
56
  'pillow<=11.2.1',
58
- 'matplotlib<=3.10.1',
59
- 'xarray<2025.3.0'
57
+ 'matplotlib<=3.10.3',
58
+ 'xarray<2025.3.0',
60
59
  ]
61
60
 
62
61
  [project.optional-dependencies]
62
+
63
+ # czi format
64
+ czi = ['pylibCZIrw>=4.1.2,<6.0.0']
65
+
63
66
  # development dependencies and tooling
64
67
  dev = [
65
68
  "pre-commit",
@@ -87,7 +90,7 @@ careamics = "careamics.cli.main:run"
87
90
  # https://beta.ruff.rs/docs
88
91
  [tool.ruff]
89
92
  line-length = 88
90
- target-version = "py39"
93
+ target-version = "py310"
91
94
  src = ["src"]
92
95
  lint.select = [
93
96
  "E", # style errors
@@ -134,6 +137,7 @@ line-length = 88
134
137
 
135
138
  # https://mypy.readthedocs.io/en/stable/config_file.html
136
139
  [tool.mypy]
140
+ # plugins = ["pydantic.mypy"]
137
141
  files = "src/**/"
138
142
  strict = false
139
143
  # allow_untyped_defs = false
@@ -141,6 +145,12 @@ strict = false
141
145
  # disallow_any_generics = false
142
146
  # ignore_missing_imports = false
143
147
 
148
+ # https://docs.pydantic.dev/latest/integrations/mypy/
149
+ # [tool.pydantic-mypy]
150
+ # init_forbid_extra = true
151
+ # init_typed = true
152
+ # warn_required_dynamic_aliases = true
153
+
144
154
 
145
155
  # https://docs.pytest.org/en/6.2.x/customize.html
146
156
  [tool.pytest.ini_options]
@@ -155,6 +165,8 @@ addopts = "-p no:doctest"
155
165
  markers = [
156
166
  # "gpu: marks tests as requiring gpu",
157
167
  "lvae: marks tests as testing lvae",
168
+ "mps_gh_fail: marks tests as failing on Github macos-latest runner",
169
+ "czi: marks tests using czi files",
158
170
  ]
159
171
 
160
172
  # https://coverage.readthedocs.io/en/6.4/config.html
@@ -1,7 +1,8 @@
1
1
  """A class to train, predict and export models in CAREamics."""
2
2
 
3
+ from collections.abc import Callable
3
4
  from pathlib import Path
4
- from typing import Any, Callable, Literal, Optional, Union, overload
5
+ from typing import Any, Literal, Optional, Union, overload
5
6
 
6
7
  import numpy as np
7
8
  from numpy.typing import NDArray
@@ -827,7 +828,7 @@ class CAREamist:
827
828
  source_path = source.pred_data
828
829
  source_data_type = source.data_type
829
830
  extension_filter = source.extension_filter
830
- elif isinstance(source, (str, Path)):
831
+ elif isinstance(source, str | Path):
831
832
  source_path = source
832
833
  source_data_type = data_type or self.cfg.data_config.data_type
833
834
  extension_filter = SupportedData.get_extension_pattern(
@@ -840,7 +841,7 @@ class CAREamist:
840
841
  raise ValueError(
841
842
  "Predicting to disk is not supported for input type 'array'."
842
843
  )
843
- assert isinstance(source_path, (Path, str)) # because data_type != "array"
844
+ assert isinstance(source_path, str | Path) # because data_type != "array"
844
845
  source_path = Path(source_path)
845
846
 
846
847
  file_paths = list_files(source_path, source_data_type, extension_filter)
@@ -4,7 +4,7 @@ from typing import Optional
4
4
 
5
5
 
6
6
  def handle_2D_3D_callback(
7
- value: Optional[tuple[int, int, int]]
7
+ value: Optional[tuple[int, int, int]],
8
8
  ) -> Optional[tuple[int, ...]]:
9
9
  """
10
10
  Callback for options that require 2D or 3D inputs.
@@ -1,4 +1,4 @@
1
- """"N2V Algorithm configuration."""
1
+ """N2V Algorithm configuration."""
2
2
 
3
3
  from typing import Annotated, Literal
4
4
 
@@ -63,6 +63,9 @@ class UNetModel(ArchitectureModel):
63
63
  """Whether information is processed independently in each channel, used to train
64
64
  channels independently."""
65
65
 
66
+ use_batch_norm: bool = Field(default=True, validate_default=True)
67
+ """Whether to use batch normalization in the model."""
68
+
66
69
  @field_validator("num_channels_init")
67
70
  @classmethod
68
71
  def validate_num_channels_init(cls, num_channels_init: int) -> int:
@@ -22,52 +22,42 @@ class CheckpointModel(BaseModel):
22
22
  https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.callbacks.ModelCheckpoint.html#modelcheckpoint
23
23
  """
24
24
 
25
- model_config = ConfigDict(
26
- validate_assignment=True,
27
- )
25
+ model_config = ConfigDict(validate_assignment=True, validate_default=True)
28
26
 
29
- monitor: Literal["val_loss"] = Field(default="val_loss", validate_default=True)
30
- """Quantity to monitor."""
27
+ monitor: Literal["val_loss"] = Field(default="val_loss")
28
+ """Quantity to monitor, currently only `val_loss`."""
31
29
 
32
- verbose: bool = Field(default=False, validate_default=True)
30
+ verbose: bool = Field(default=False)
33
31
  """Verbosity mode."""
34
32
 
35
- save_weights_only: bool = Field(default=False, validate_default=True)
33
+ save_weights_only: bool = Field(default=False)
36
34
  """When `True`, only the model's weights will be saved (model.save_weights)."""
37
35
 
38
- save_last: Optional[Literal[True, False, "link"]] = Field(
39
- default=True, validate_default=True
40
- )
36
+ save_last: Optional[Literal[True, False, "link"]] = Field(default=True)
41
37
  """When `True`, saves a last.ckpt copy whenever a checkpoint file gets saved."""
42
38
 
43
- save_top_k: int = Field(default=3, ge=1, le=10, validate_default=True)
39
+ save_top_k: int = Field(default=3, ge=-1, le=100)
44
40
  """If `save_top_k == kz, the best k models according to the quantity monitored
45
41
  will be saved. If `save_top_k == 0`, no models are saved. if `save_top_k == -1`,
46
42
  all models are saved."""
47
43
 
48
- mode: Literal["min", "max"] = Field(default="min", validate_default=True)
44
+ mode: Literal["min", "max"] = Field(default="min")
49
45
  """One of {min, max}. If `save_top_k != 0`, the decision to overwrite the current
50
46
  save file is made based on either the maximization or the minimization of the
51
47
  monitored quantity. For 'val_acc', this should be 'max', for 'val_loss' this should
52
48
  be 'min', etc.
53
49
  """
54
50
 
55
- auto_insert_metric_name: bool = Field(default=False, validate_default=True)
51
+ auto_insert_metric_name: bool = Field(default=False)
56
52
  """When `True`, the checkpoints filenames will contain the metric name."""
57
53
 
58
- every_n_train_steps: Optional[int] = Field(
59
- default=None, ge=1, le=10, validate_default=True
60
- )
54
+ every_n_train_steps: Optional[int] = Field(default=None, ge=1, le=1000)
61
55
  """Number of training steps between checkpoints."""
62
56
 
63
- train_time_interval: Optional[timedelta] = Field(
64
- default=None, validate_default=True
65
- )
57
+ train_time_interval: Optional[timedelta] = Field(default=None)
66
58
  """Checkpoints are monitored at the specified time interval."""
67
59
 
68
- every_n_epochs: Optional[int] = Field(
69
- default=None, ge=1, le=10, validate_default=True
70
- )
60
+ every_n_epochs: Optional[int] = Field(default=None, ge=1, le=100)
71
61
  """Number of epochs between checkpoints."""
72
62
 
73
63
 
@@ -83,41 +73,40 @@ class EarlyStoppingModel(BaseModel):
83
73
 
84
74
  model_config = ConfigDict(
85
75
  validate_assignment=True,
76
+ validate_default=True,
86
77
  )
87
78
 
88
- monitor: Literal["val_loss"] = Field(default="val_loss", validate_default=True)
79
+ monitor: Literal["val_loss"] = Field(default="val_loss")
89
80
  """Quantity to monitor."""
90
81
 
91
- min_delta: float = Field(default=0.0, ge=0.0, le=1.0, validate_default=True)
82
+ min_delta: float = Field(default=0.0, ge=0.0, le=1.0)
92
83
  """Minimum change in the monitored quantity to qualify as an improvement, i.e. an
93
84
  absolute change of less than or equal to min_delta, will count as no improvement."""
94
85
 
95
- patience: int = Field(default=3, ge=1, le=10, validate_default=True)
86
+ patience: int = Field(default=3, ge=1, le=10)
96
87
  """Number of checks with no improvement after which training will be stopped."""
97
88
 
98
- verbose: bool = Field(default=False, validate_default=True)
89
+ verbose: bool = Field(default=False)
99
90
  """Verbosity mode."""
100
91
 
101
- mode: Literal["min", "max", "auto"] = Field(default="min", validate_default=True)
92
+ mode: Literal["min", "max", "auto"] = Field(default="min")
102
93
  """One of {min, max, auto}."""
103
94
 
104
- check_finite: bool = Field(default=True, validate_default=True)
95
+ check_finite: bool = Field(default=True)
105
96
  """When `True`, stops training when the monitored quantity becomes `NaN` or
106
97
  `inf`."""
107
98
 
108
- stopping_threshold: Optional[float] = Field(default=None, validate_default=True)
99
+ stopping_threshold: Optional[float] = Field(default=None)
109
100
  """Stop training immediately once the monitored quantity reaches this threshold."""
110
101
 
111
- divergence_threshold: Optional[float] = Field(default=None, validate_default=True)
102
+ divergence_threshold: Optional[float] = Field(default=None)
112
103
  """Stop training as soon as the monitored quantity becomes worse than this
113
104
  threshold."""
114
105
 
115
- check_on_train_epoch_end: Optional[bool] = Field(
116
- default=False, validate_default=True
117
- )
106
+ check_on_train_epoch_end: Optional[bool] = Field(default=False)
118
107
  """Whether to run early stopping at the end of the training epoch. If this is
119
108
  `False`, then the check runs at the end of the validation."""
120
109
 
121
- log_rank_zero_only: bool = Field(default=False, validate_default=True)
110
+ log_rank_zero_only: bool = Field(default=False)
122
111
  """When set `True`, logs the status of the early stopping callback only for rank 0
123
112
  process."""
@@ -3,9 +3,11 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
+ from collections.abc import Callable
6
7
  from pprint import pformat
7
- from typing import Any, Callable, Literal, Union
8
+ from typing import Any, Literal, Union
8
9
 
10
+ import numpy as np
9
11
  from bioimageio.spec.generic.v0_3 import CiteEntry
10
12
  from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
11
13
  from pydantic.main import IncEx
@@ -183,6 +185,50 @@ class Configuration(BaseModel):
183
185
 
184
186
  return name
185
187
 
188
+ @model_validator(mode="after")
189
+ def validate_n2v_mask_pixel_perc(self: Self) -> Self:
190
+ """
191
+ Validate that there will always be at least one blind-spot pixel in every patch.
192
+
193
+ The probability of creating a blind-spot pixel is a function of the chosen
194
+ masked pixel percentage and patch size.
195
+
196
+ Returns
197
+ -------
198
+ Self
199
+ Validated configuration.
200
+
201
+ Raises
202
+ ------
203
+ ValueError
204
+ If the probability of masking a pixel within a patch is less than 1 for the
205
+ chosen masked pixel percentage and patch size.
206
+ """
207
+ # No validation needed for non n2v algorithms
208
+ if not isinstance(self.algorithm_config, N2VAlgorithm):
209
+ return self
210
+
211
+ mask_pixel_perc = self.algorithm_config.n2v_config.masked_pixel_percentage
212
+ patch_size = self.data_config.patch_size
213
+ expected_area_per_pixel = 1 / (mask_pixel_perc / 100)
214
+
215
+ n_dims = 3 if self.algorithm_config.model.is_3D() else 2
216
+ patch_size_lower_bound = int(np.ceil(expected_area_per_pixel ** (1 / n_dims)))
217
+ required_patch_size = tuple(
218
+ 2 ** int(np.ceil(np.log2(patch_size_lower_bound))) for _ in range(n_dims)
219
+ )
220
+ required_mask_pixel_perc = (1 / np.prod(patch_size)) * 100
221
+ if expected_area_per_pixel > np.prod(patch_size):
222
+ raise ValueError(
223
+ "The probability of creating a blind-spot pixel within a patch is "
224
+ f"below 1, for a patch size of {patch_size} with a masked pixel "
225
+ f"percentage of {mask_pixel_perc}%. Either increase the patch size to "
226
+ f"{required_patch_size} or increase the masked pixel percentage to "
227
+ f"at least {required_mask_pixel_perc}%."
228
+ )
229
+
230
+ return self
231
+
186
232
  @model_validator(mode="after")
187
233
  def validate_3D(self: Self) -> Self:
188
234
  """