careamics 0.1.0rc1__tar.gz → 0.1.0rc3__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 (236) hide show
  1. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/.github/ISSUE_TEMPLATE/bug_report.md +1 -0
  2. careamics-0.1.0rc3/.github/workflows/ci.yml +108 -0
  3. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/.gitignore +3 -0
  4. careamics-0.1.0rc3/.pre-commit-config.yaml +56 -0
  5. careamics-0.1.0rc3/PKG-INFO +122 -0
  6. careamics-0.1.0rc3/README.md +78 -0
  7. careamics-0.1.0rc3/examples/2D/n2n/example_SEM_careamist.ipynb +239 -0
  8. careamics-0.1.0rc3/examples/2D/n2n/n2n_2D_SEM.yml +60 -0
  9. careamics-0.1.0rc1/examples/2D/example_BSD68.ipynb → careamics-0.1.0rc3/examples/2D/n2v/example_BSD68_careamist.ipynb +43 -77
  10. careamics-0.1.0rc3/examples/2D/n2v/example_BSD68_lightning.ipynb +397 -0
  11. careamics-0.1.0rc1/examples/2D/example_SEM.ipynb → careamics-0.1.0rc3/examples/2D/n2v/example_SEM_lightning.ipynb +70 -30
  12. careamics-0.1.0rc3/examples/2D/n2v/n2v_2D_BSD.yml +60 -0
  13. careamics-0.1.0rc1/examples/2D/n2v_2D_SEM.yml → careamics-0.1.0rc3/examples/2D/pn2v/pN2V_Convallaria.yml +31 -23
  14. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/examples/3D/example_flywing_3D.ipynb +83 -36
  15. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/examples/3D/n2v_flywing_3D.yml +25 -26
  16. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/pyproject.toml +32 -46
  17. careamics-0.1.0rc3/src/careamics/__init__.py +24 -0
  18. careamics-0.1.0rc3/src/careamics/callbacks/__init__.py +6 -0
  19. careamics-0.1.0rc3/src/careamics/callbacks/hyperparameters_callback.py +42 -0
  20. careamics-0.1.0rc3/src/careamics/callbacks/progress_bar_callback.py +57 -0
  21. careamics-0.1.0rc3/src/careamics/careamist.py +761 -0
  22. careamics-0.1.0rc3/src/careamics/config/__init__.py +35 -0
  23. careamics-0.1.0rc3/src/careamics/config/algorithm_model.py +167 -0
  24. careamics-0.1.0rc3/src/careamics/config/architectures/__init__.py +17 -0
  25. careamics-0.1.0rc3/src/careamics/config/architectures/architecture_model.py +29 -0
  26. careamics-0.1.0rc3/src/careamics/config/architectures/custom_model.py +150 -0
  27. careamics-0.1.0rc3/src/careamics/config/architectures/register_model.py +101 -0
  28. careamics-0.1.0rc3/src/careamics/config/architectures/unet_model.py +96 -0
  29. careamics-0.1.0rc3/src/careamics/config/architectures/vae_model.py +39 -0
  30. careamics-0.1.0rc3/src/careamics/config/callback_model.py +92 -0
  31. careamics-0.1.0rc3/src/careamics/config/configuration_factory.py +460 -0
  32. careamics-0.1.0rc3/src/careamics/config/configuration_model.py +596 -0
  33. careamics-0.1.0rc3/src/careamics/config/data_model.py +555 -0
  34. careamics-0.1.0rc3/src/careamics/config/inference_model.py +283 -0
  35. careamics-0.1.0rc3/src/careamics/config/noise_models.py +162 -0
  36. careamics-0.1.0rc3/src/careamics/config/optimizer_models.py +181 -0
  37. careamics-0.1.0rc3/src/careamics/config/references/__init__.py +45 -0
  38. careamics-0.1.0rc3/src/careamics/config/references/algorithm_descriptions.py +131 -0
  39. careamics-0.1.0rc3/src/careamics/config/references/references.py +38 -0
  40. careamics-0.1.0rc3/src/careamics/config/support/__init__.py +33 -0
  41. careamics-0.1.0rc3/src/careamics/config/support/supported_activations.py +24 -0
  42. careamics-0.1.0rc3/src/careamics/config/support/supported_algorithms.py +18 -0
  43. careamics-0.1.0rc3/src/careamics/config/support/supported_architectures.py +18 -0
  44. careamics-0.1.0rc3/src/careamics/config/support/supported_data.py +82 -0
  45. careamics-0.1.0rc1/src/careamics/dataset/extraction_strategy.py → careamics-0.1.0rc3/src/careamics/config/support/supported_extraction_strategies.py +5 -2
  46. careamics-0.1.0rc3/src/careamics/config/support/supported_loggers.py +8 -0
  47. careamics-0.1.0rc3/src/careamics/config/support/supported_losses.py +25 -0
  48. careamics-0.1.0rc3/src/careamics/config/support/supported_optimizers.py +55 -0
  49. careamics-0.1.0rc3/src/careamics/config/support/supported_pixel_manipulations.py +15 -0
  50. careamics-0.1.0rc3/src/careamics/config/support/supported_struct_axis.py +19 -0
  51. careamics-0.1.0rc3/src/careamics/config/support/supported_transforms.py +23 -0
  52. careamics-0.1.0rc3/src/careamics/config/tile_information.py +104 -0
  53. careamics-0.1.0rc3/src/careamics/config/training_model.py +65 -0
  54. careamics-0.1.0rc3/src/careamics/config/transformations/__init__.py +14 -0
  55. careamics-0.1.0rc3/src/careamics/config/transformations/n2v_manipulate_model.py +63 -0
  56. careamics-0.1.0rc3/src/careamics/config/transformations/nd_flip_model.py +32 -0
  57. careamics-0.1.0rc3/src/careamics/config/transformations/normalize_model.py +31 -0
  58. careamics-0.1.0rc3/src/careamics/config/transformations/transform_model.py +44 -0
  59. careamics-0.1.0rc3/src/careamics/config/transformations/xy_random_rotate90_model.py +29 -0
  60. careamics-0.1.0rc3/src/careamics/config/validators/__init__.py +5 -0
  61. careamics-0.1.0rc3/src/careamics/config/validators/validator_utils.py +100 -0
  62. careamics-0.1.0rc3/src/careamics/conftest.py +26 -0
  63. careamics-0.1.0rc3/src/careamics/dataset/__init__.py +6 -0
  64. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/__init__.py +19 -0
  65. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/dataset_utils.py +100 -0
  66. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/file_utils.py +140 -0
  67. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/read_tiff.py +61 -0
  68. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/read_utils.py +25 -0
  69. careamics-0.1.0rc3/src/careamics/dataset/dataset_utils/read_zarr.py +56 -0
  70. careamics-0.1.0rc3/src/careamics/dataset/in_memory_dataset.py +391 -0
  71. careamics-0.1.0rc3/src/careamics/dataset/iterable_dataset.py +416 -0
  72. careamics-0.1.0rc3/src/careamics/dataset/patching/__init__.py +8 -0
  73. careamics-0.1.0rc3/src/careamics/dataset/patching/patch_transform.py +44 -0
  74. careamics-0.1.0rc3/src/careamics/dataset/patching/patching.py +212 -0
  75. careamics-0.1.0rc3/src/careamics/dataset/patching/random_patching.py +190 -0
  76. careamics-0.1.0rc3/src/careamics/dataset/patching/sequential_patching.py +206 -0
  77. careamics-0.1.0rc3/src/careamics/dataset/patching/tiled_patching.py +158 -0
  78. careamics-0.1.0rc3/src/careamics/dataset/patching/validate_patch_dimension.py +60 -0
  79. careamics-0.1.0rc3/src/careamics/dataset/zarr_dataset.py +149 -0
  80. careamics-0.1.0rc3/src/careamics/lightning_datamodule.py +665 -0
  81. careamics-0.1.0rc3/src/careamics/lightning_module.py +292 -0
  82. careamics-0.1.0rc3/src/careamics/lightning_prediction_datamodule.py +390 -0
  83. careamics-0.1.0rc3/src/careamics/lightning_prediction_loop.py +116 -0
  84. careamics-0.1.0rc3/src/careamics/losses/__init__.py +7 -0
  85. careamics-0.1.0rc3/src/careamics/losses/loss_factory.py +48 -0
  86. careamics-0.1.0rc3/src/careamics/losses/losses.py +94 -0
  87. careamics-0.1.0rc3/src/careamics/losses/noise_model_factory.py +40 -0
  88. careamics-0.1.0rc3/src/careamics/losses/noise_models.py +524 -0
  89. careamics-0.1.0rc3/src/careamics/model_io/__init__.py +8 -0
  90. careamics-0.1.0rc3/src/careamics/model_io/bioimage/__init__.py +11 -0
  91. careamics-0.1.0rc3/src/careamics/model_io/bioimage/_readme_factory.py +120 -0
  92. careamics-0.1.0rc3/src/careamics/model_io/bioimage/bioimage_utils.py +48 -0
  93. careamics-0.1.0rc3/src/careamics/model_io/bioimage/model_description.py +318 -0
  94. careamics-0.1.0rc3/src/careamics/model_io/bmz_io.py +231 -0
  95. careamics-0.1.0rc3/src/careamics/model_io/model_io_utils.py +80 -0
  96. careamics-0.1.0rc3/src/careamics/models/__init__.py +7 -0
  97. careamics-0.1.0rc3/src/careamics/models/activation.py +35 -0
  98. careamics-0.1.0rc3/src/careamics/models/layers.py +396 -0
  99. careamics-0.1.0rc3/src/careamics/models/model_factory.py +51 -0
  100. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/src/careamics/models/unet.py +46 -20
  101. careamics-0.1.0rc3/src/careamics/prediction/__init__.py +7 -0
  102. careamics-0.1.0rc3/src/careamics/prediction/stitch_prediction.py +73 -0
  103. careamics-0.1.0rc3/src/careamics/transforms/__init__.py +41 -0
  104. careamics-0.1.0rc3/src/careamics/transforms/n2v_manipulate.py +113 -0
  105. careamics-0.1.0rc3/src/careamics/transforms/nd_flip.py +93 -0
  106. careamics-0.1.0rc3/src/careamics/transforms/normalize.py +109 -0
  107. careamics-0.1.0rc3/src/careamics/transforms/pixel_manipulation.py +383 -0
  108. careamics-0.1.0rc3/src/careamics/transforms/struct_mask_parameters.py +18 -0
  109. careamics-0.1.0rc3/src/careamics/transforms/tta.py +74 -0
  110. careamics-0.1.0rc3/src/careamics/transforms/xy_random_rotate90.py +95 -0
  111. careamics-0.1.0rc3/src/careamics/utils/__init__.py +18 -0
  112. careamics-0.1.0rc3/src/careamics/utils/base_enum.py +32 -0
  113. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/src/careamics/utils/context.py +22 -2
  114. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/src/careamics/utils/metrics.py +0 -46
  115. careamics-0.1.0rc3/src/careamics/utils/path_utils.py +24 -0
  116. careamics-0.1.0rc3/src/careamics/utils/ram.py +13 -0
  117. careamics-0.1.0rc3/src/careamics/utils/receptive_field.py +102 -0
  118. careamics-0.1.0rc3/src/careamics/utils/running_stats.py +43 -0
  119. careamics-0.1.0rc3/src/careamics/utils/torch_utils.py +126 -0
  120. careamics-0.1.0rc3/tests/config/architectures/test_architecture_model.py +11 -0
  121. careamics-0.1.0rc3/tests/config/architectures/test_custom_model.py +100 -0
  122. careamics-0.1.0rc3/tests/config/architectures/test_register_model.py +45 -0
  123. careamics-0.1.0rc3/tests/config/architectures/test_unet_model.py +121 -0
  124. careamics-0.1.0rc3/tests/config/support/test_supported_data.py +76 -0
  125. careamics-0.1.0rc3/tests/config/support/test_supported_optimizers.py +18 -0
  126. careamics-0.1.0rc3/tests/config/test_algorithm_model.py +102 -0
  127. careamics-0.1.0rc3/tests/config/test_configuration_factory.py +222 -0
  128. careamics-0.1.0rc3/tests/config/test_configuration_model.py +191 -0
  129. careamics-0.1.0rc3/tests/config/test_data_model.py +382 -0
  130. careamics-0.1.0rc3/tests/config/test_inference_model.py +185 -0
  131. careamics-0.1.0rc3/tests/config/test_optimizers_model.py +146 -0
  132. careamics-0.1.0rc3/tests/config/test_tile_information.py +50 -0
  133. careamics-0.1.0rc3/tests/config/test_training_model.py +13 -0
  134. careamics-0.1.0rc3/tests/config/transformations/test_n2v_manipulate_model.py +26 -0
  135. careamics-0.1.0rc3/tests/config/transformations/test_normalize_model.py +13 -0
  136. careamics-0.1.0rc3/tests/config/validators/test_validator_utils.py +70 -0
  137. careamics-0.1.0rc3/tests/conftest.py +299 -0
  138. careamics-0.1.0rc3/tests/dataset/dataset_utils/test_list_files.py +232 -0
  139. careamics-0.1.0rc3/tests/dataset/dataset_utils/test_read_tiff.py +32 -0
  140. careamics-0.1.0rc3/tests/dataset/patching/test_patching_utils.py +44 -0
  141. careamics-0.1.0rc3/tests/dataset/patching/test_random_patching.py +105 -0
  142. careamics-0.1.0rc3/tests/dataset/patching/test_sequential_patching.py +138 -0
  143. careamics-0.1.0rc3/tests/dataset/patching/test_tiled_patching.py +120 -0
  144. careamics-0.1.0rc3/tests/dataset/test_in_memory_dataset.py +112 -0
  145. careamics-0.1.0rc3/tests/dataset/test_iterable_dataset.py +141 -0
  146. careamics-0.1.0rc3/tests/model_io/test_bmz_io.py +66 -0
  147. careamics-0.1.0rc3/tests/models/test_model_factory.py +63 -0
  148. careamics-0.1.0rc3/tests/models/test_unet.py +70 -0
  149. careamics-0.1.0rc3/tests/prediction/test_stitch_prediction.py +41 -0
  150. careamics-0.1.0rc3/tests/test_careamist.py +693 -0
  151. careamics-0.1.0rc3/tests/test_conftest.py +30 -0
  152. careamics-0.1.0rc3/tests/test_lightning_datamodule.py +140 -0
  153. careamics-0.1.0rc3/tests/test_lightning_module.py +267 -0
  154. careamics-0.1.0rc3/tests/transforms/test_manipulate_n2v.py +33 -0
  155. careamics-0.1.0rc3/tests/transforms/test_nd_flip.py +129 -0
  156. careamics-0.1.0rc3/tests/transforms/test_normalize.py +30 -0
  157. careamics-0.1.0rc3/tests/transforms/test_pixel_manipulation.py +268 -0
  158. careamics-0.1.0rc3/tests/transforms/test_supported_transforms.py +8 -0
  159. careamics-0.1.0rc3/tests/transforms/test_xy_random_rotate90.py +117 -0
  160. careamics-0.1.0rc3/tests/utils/test_base_enum.py +12 -0
  161. {careamics-0.1.0rc1/tests → careamics-0.1.0rc3/tests/utils}/test_metrics.py +0 -22
  162. careamics-0.1.0rc3/tests/utils/test_torch_utils.py +19 -0
  163. careamics-0.1.0rc3/tests/utils/test_wandb.py +19 -0
  164. careamics-0.1.0rc1/.github/TEST_FAIL_TEMPLATE.md +0 -12
  165. careamics-0.1.0rc1/.github/dependabot.yml +0 -11
  166. careamics-0.1.0rc1/.github/workflows/ci.yml +0 -109
  167. careamics-0.1.0rc1/.github/workflows/smoke_test.yml +0 -37
  168. careamics-0.1.0rc1/.pre-commit-config.yaml +0 -62
  169. careamics-0.1.0rc1/PKG-INFO +0 -80
  170. careamics-0.1.0rc1/README.md +0 -27
  171. careamics-0.1.0rc1/examples/2D/n2v_2D_BSD.yml +0 -77
  172. careamics-0.1.0rc1/examples/3D/n2v_3D.yml +0 -74
  173. careamics-0.1.0rc1/examples/n2v_full_reference.yml +0 -93
  174. careamics-0.1.0rc1/src/careamics/__init__.py +0 -14
  175. careamics-0.1.0rc1/src/careamics/bioimage/__init__.py +0 -15
  176. careamics-0.1.0rc1/src/careamics/bioimage/docs/Noise2Void.md +0 -5
  177. careamics-0.1.0rc1/src/careamics/bioimage/docs/__init__.py +0 -1
  178. careamics-0.1.0rc1/src/careamics/bioimage/io.py +0 -271
  179. careamics-0.1.0rc1/src/careamics/config/__init__.py +0 -11
  180. careamics-0.1.0rc1/src/careamics/config/algorithm.py +0 -231
  181. careamics-0.1.0rc1/src/careamics/config/config.py +0 -296
  182. careamics-0.1.0rc1/src/careamics/config/config_filter.py +0 -44
  183. careamics-0.1.0rc1/src/careamics/config/data.py +0 -194
  184. careamics-0.1.0rc1/src/careamics/config/torch_optim.py +0 -118
  185. careamics-0.1.0rc1/src/careamics/config/training.py +0 -534
  186. careamics-0.1.0rc1/src/careamics/dataset/__init__.py +0 -1
  187. careamics-0.1.0rc1/src/careamics/dataset/dataset_utils.py +0 -115
  188. careamics-0.1.0rc1/src/careamics/dataset/in_memory_dataset.py +0 -201
  189. careamics-0.1.0rc1/src/careamics/dataset/patching.py +0 -493
  190. careamics-0.1.0rc1/src/careamics/dataset/prepare_dataset.py +0 -174
  191. careamics-0.1.0rc1/src/careamics/dataset/tiff_dataset.py +0 -211
  192. careamics-0.1.0rc1/src/careamics/engine.py +0 -954
  193. careamics-0.1.0rc1/src/careamics/losses/__init__.py +0 -4
  194. careamics-0.1.0rc1/src/careamics/losses/loss_factory.py +0 -37
  195. careamics-0.1.0rc1/src/careamics/losses/losses.py +0 -34
  196. careamics-0.1.0rc1/src/careamics/manipulation/__init__.py +0 -4
  197. careamics-0.1.0rc1/src/careamics/manipulation/pixel_manipulation.py +0 -158
  198. careamics-0.1.0rc1/src/careamics/models/__init__.py +0 -4
  199. careamics-0.1.0rc1/src/careamics/models/layers.py +0 -152
  200. careamics-0.1.0rc1/src/careamics/models/model_factory.py +0 -232
  201. careamics-0.1.0rc1/src/careamics/prediction/__init__.py +0 -9
  202. careamics-0.1.0rc1/src/careamics/prediction/prediction_utils.py +0 -102
  203. careamics-0.1.0rc1/src/careamics/utils/__init__.py +0 -21
  204. careamics-0.1.0rc1/src/careamics/utils/ascii_logo.txt +0 -9
  205. careamics-0.1.0rc1/src/careamics/utils/augment.py +0 -65
  206. careamics-0.1.0rc1/src/careamics/utils/normalization.py +0 -55
  207. careamics-0.1.0rc1/src/careamics/utils/torch_utils.py +0 -93
  208. careamics-0.1.0rc1/src/careamics/utils/validators.py +0 -156
  209. careamics-0.1.0rc1/src/careamics/utils/wandb.py +0 -121
  210. careamics-0.1.0rc1/tests/__init__.py +0 -1
  211. careamics-0.1.0rc1/tests/bioimage/test_io.py +0 -160
  212. careamics-0.1.0rc1/tests/config/test_algorithm.py +0 -187
  213. careamics-0.1.0rc1/tests/config/test_config.py +0 -196
  214. careamics-0.1.0rc1/tests/config/test_config_filters.py +0 -42
  215. careamics-0.1.0rc1/tests/config/test_data.py +0 -142
  216. careamics-0.1.0rc1/tests/config/test_torch_optimizer.py +0 -38
  217. careamics-0.1.0rc1/tests/config/test_training.py +0 -468
  218. careamics-0.1.0rc1/tests/conftest.py +0 -228
  219. careamics-0.1.0rc1/tests/dataset/test_dataset_utils.py +0 -149
  220. careamics-0.1.0rc1/tests/dataset/test_patching.py +0 -198
  221. careamics-0.1.0rc1/tests/manipulation/test_pixel_manipulation.py +0 -81
  222. careamics-0.1.0rc1/tests/smoke_test.py +0 -53
  223. careamics-0.1.0rc1/tests/test_augment.py +0 -46
  224. careamics-0.1.0rc1/tests/test_engine.py +0 -64
  225. careamics-0.1.0rc1/tests/test_model.py +0 -26
  226. careamics-0.1.0rc1/tests/test_prediction_utils.py +0 -41
  227. careamics-0.1.0rc1/tests/utils/test_axes.py +0 -45
  228. careamics-0.1.0rc1/tests/utils/test_torch_utils.py +0 -23
  229. careamics-0.1.0rc1/tests/utils/test_wandb.py +0 -27
  230. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  231. /careamics-0.1.0rc1/.github/pull_request_template.md → /careamics-0.1.0rc3/.github/PR_TEMPLATE/pull_request.md +0 -0
  232. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/LICENSE +0 -0
  233. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/src/careamics/py.typed +0 -0
  234. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/src/careamics/utils/logging.py +0 -0
  235. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/tests/utils/test_context.py +0 -0
  236. {careamics-0.1.0rc1 → careamics-0.1.0rc3}/tests/utils/test_logging.py +0 -0
@@ -25,6 +25,7 @@ If applicable, add screenshots to help explain your problem.
25
25
  **Desktop (please complete the following information):**
26
26
  - OS: [e.g. iOS]
27
27
  - Version [e.g. 22]
28
+ - microscopy-portfolio version [e.g. 0.0.5]
28
29
 
29
30
  **Environment:**
30
31
  Please add here the content of your conda environment with versions.
@@ -0,0 +1,108 @@
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.8", "3.9", "3.10", "3.11"]
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]
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@v3
41
+
42
+ - name: 🐍 Set up Python ${{ matrix.python-version }}
43
+ uses: actions/setup-python@v4
44
+ with:
45
+ python-version: ${{ matrix.python-version }}
46
+ cache-dependency-path: "pyproject.toml"
47
+ cache: "pip"
48
+
49
+ - name: Install Dependencies
50
+ run: |
51
+ python -m pip install -U pip
52
+ # 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' || '' }}
54
+
55
+ - name: 🧪 Run Tests
56
+ run: pytest --color=yes --cov --cov-report=xml --cov-report=term-missing -m "not gpu"
57
+
58
+ # If something goes wrong with --pre tests, we can open an issue in the repo
59
+ - name: 📝 Report --pre Failures
60
+ if: failure() && github.event_name == 'schedule'
61
+ uses: JasonEtco/create-an-issue@v2
62
+ env:
63
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
64
+ PLATFORM: ${{ matrix.platform }}
65
+ PYTHON: ${{ matrix.python-version }}
66
+ RUN_ID: ${{ github.run_id }}
67
+ TITLE: "[test-bot] pip install --pre is failing"
68
+ with:
69
+ filename: .github/TEST_FAIL_TEMPLATE.md
70
+ update_existing: true
71
+
72
+ - name: Coverage
73
+ uses: codecov/codecov-action@v3
74
+
75
+ deploy:
76
+ name: Release
77
+ needs: test
78
+ if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
79
+ runs-on: ubuntu-latest
80
+
81
+ permissions:
82
+ # IMPORTANT: this permission is mandatory for trusted publishing
83
+ id-token: write
84
+
85
+ # This permission allows writing releases
86
+ contents: write
87
+
88
+ steps:
89
+ - uses: actions/checkout@v4
90
+ with:
91
+ fetch-depth: 0
92
+
93
+ - name: Set up Python
94
+ uses: actions/setup-python@v5
95
+ with:
96
+ python-version: "3.9"
97
+
98
+ - name: Build
99
+ run: |
100
+ python -m pip install build
101
+ python -m build
102
+
103
+ - name: Publish to PyPI
104
+ uses: pypa/gh-action-pypi-publish@release/v1
105
+
106
+ - uses: softprops/action-gh-release@v2
107
+ with:
108
+ generate_release_notes: true
@@ -3,3 +3,6 @@
3
3
  .pytest*
4
4
  *.DS_Store*
5
5
  **/.ipynb_checkpoints
6
+ .coverage
7
+ coverage.xml
8
+ lightning_logs
@@ -0,0 +1,56 @@
1
+ # enable pre-commit.ci at https://pre-commit.ci/
2
+ # it adds:
3
+ # 1. auto fixing pull requests
4
+ # 2. auto updating the pre-commit configuration
5
+ ci:
6
+ autoupdate_schedule: monthly
7
+ autofix_commit_msg: "style(pre-commit.ci): auto fixes [...]"
8
+ autoupdate_commit_msg: "ci(pre-commit.ci): autoupdate"
9
+
10
+ repos:
11
+ - repo: https://github.com/abravalheri/validate-pyproject
12
+ rev: v0.14
13
+ hooks:
14
+ - id: validate-pyproject
15
+
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.0.292
18
+ hooks:
19
+ - id: ruff
20
+ args: [--fix, --target-version, py38]
21
+
22
+ - repo: https://github.com/psf/black
23
+ rev: 23.9.1
24
+ hooks:
25
+ - id: black
26
+
27
+ - repo: https://github.com/pre-commit/mirrors-mypy
28
+ rev: v1.5.1
29
+ hooks:
30
+ - id: mypy
31
+ files: "^src/"
32
+ additional_dependencies:
33
+ - numpy
34
+ - types-PyYAML
35
+ - types-setuptools
36
+
37
+ # check docstrings
38
+ - repo: https://github.com/numpy/numpydoc
39
+ rev: v1.6.0
40
+ hooks:
41
+ - id: numpydoc-validation
42
+
43
+ # jupyter linting and formatting
44
+ - repo: https://github.com/nbQA-dev/nbQA
45
+ rev: 1.7.0
46
+ hooks:
47
+ - id: nbqa-ruff
48
+ args: [--fix]
49
+ - id: nbqa-black
50
+ #- id: nbqa-mypy
51
+
52
+ # strip out jupyter notebooks
53
+ - repo: https://github.com/kynan/nbstripout
54
+ rev: 0.6.1
55
+ hooks:
56
+ - id: nbstripout
@@ -0,0 +1,122 @@
1
+ Metadata-Version: 2.3
2
+ Name: careamics
3
+ Version: 0.1.0rc3
4
+ Summary: Toolbox for running N2V and friends.
5
+ Project-URL: homepage, https://careamics.github.io/
6
+ Project-URL: repository, https://github.com/CAREamics/careamics
7
+ Author-email: Igor Zubarev <igor.zubarev@fht.org>, Joran Deschamps <joran.deschamps@fht.org>
8
+ License: BSD-3-Clause
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: License :: OSI Approved :: BSD License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Typing :: Typed
18
+ Requires-Python: >=3.8
19
+ Requires-Dist: albumentations
20
+ Requires-Dist: bioimageio-core>=0.6.0
21
+ Requires-Dist: psutil
22
+ Requires-Dist: pydantic>=2.5
23
+ Requires-Dist: pytorch-lightning>=2.2.0
24
+ Requires-Dist: pyyaml
25
+ Requires-Dist: scikit-image
26
+ Requires-Dist: tifffile
27
+ Requires-Dist: torch>=2.0.0
28
+ Requires-Dist: zarr
29
+ Provides-Extra: dev
30
+ Requires-Dist: pre-commit; extra == 'dev'
31
+ Requires-Dist: pytest; extra == 'dev'
32
+ Requires-Dist: pytest-cov; extra == 'dev'
33
+ Requires-Dist: sybil; extra == 'dev'
34
+ Provides-Extra: examples
35
+ Requires-Dist: careamics-portfolio; extra == 'examples'
36
+ Requires-Dist: jupyter; extra == 'examples'
37
+ Requires-Dist: matplotlib; extra == 'examples'
38
+ Provides-Extra: tensorboard
39
+ Requires-Dist: protobuf==3.20.3; extra == 'tensorboard'
40
+ Requires-Dist: tensorboard; extra == 'tensorboard'
41
+ Provides-Extra: wandb
42
+ Requires-Dist: wandb; extra == 'wandb'
43
+ Description-Content-Type: text/markdown
44
+
45
+ <p align="center">
46
+ <a href="https://careamics.github.io/">
47
+ <img src="https://raw.githubusercontent.com/CAREamics/.github/main/profile/images/banner_careamics.png">
48
+ </a>
49
+ </p>
50
+
51
+ # CAREamics Restoration
52
+
53
+ [![License](https://img.shields.io/pypi/l/careamics.svg?color=green)](https://github.com/CAREamics/careamics/blob/main/LICENSE)
54
+ [![PyPI](https://img.shields.io/pypi/v/careamics.svg?color=green)](https://pypi.org/project/careamics)
55
+ [![Python Version](https://img.shields.io/pypi/pyversions/careamics.svg?color=green)](https://python.org)
56
+ [![CI](https://github.com/CAREamics/careamics/actions/workflows/ci.yml/badge.svg)](https://github.com/CAREamics/careamics/actions/workflows/ci.yml)
57
+ [![codecov](https://codecov.io/gh/CAREamics/careamics/branch/main/graph/badge.svg)](https://codecov.io/gh/CAREamics/careamics)
58
+
59
+ ## Installation
60
+
61
+ ``` bash
62
+ pip install careamics
63
+ ```
64
+ For more details on the options please follow the installation [guide](https://careamics.github.io/careamics/).
65
+
66
+ ## Usage
67
+
68
+ CAREamics uses the Engine object to construct the pipeline for both training and prediction. First we import the Engine.
69
+ ```python
70
+ from careamics_restoration.engine import Engine
71
+ ```
72
+ The Engine could be initialized in 2 ways:
73
+ 1. Using the [yaml config](examples/n2v_2D_reference.yml) file
74
+
75
+ Specify the mandatory parameters in the config file
76
+ ```yaml
77
+ experiment_name: Name of the experiment
78
+ working_directory: Path to the working directory, where all the outputs will be stored
79
+
80
+ algorithm:
81
+ loss: type of loss function, e.g. n2v for Noise2Void
82
+ model: model architecture, e.g. UNet
83
+ is_3D: True if 3D data, False if 2D data
84
+
85
+ training:
86
+ num_epochs: Number of training epochs
87
+ patch_size: Size of the patches, List of 2 or 3 elements
88
+ batch_size: Batch size for training
89
+
90
+ extraction_strategy: Controls how the patches are extracted from the data
91
+
92
+ data:
93
+ data_format: File extension, e.g. tif
94
+ axes: Defines the shape of the input data
95
+ ```
96
+ Full description of the configuration parameters is in the [documentation](https://careamics.github.io/careamics/).
97
+
98
+
99
+ ```python
100
+ engine = Engine(config_path="config.yml")
101
+
102
+ ```
103
+ 2. Using the path to the pretrained model
104
+ It's also possible to initialize the Engine using the model checkpoint, saved during the training or downloaded from the [BioImage Model Zoo](https://bioimage.io/#/).
105
+ Checkpoint must contain model_state_dict.
106
+ Read more abount saving and loading models in the [documentation](https://careamics.github.io/careamics/).
107
+
108
+ Once Engine is initialized, we can start training, providing the relative paths to train and validation data
109
+
110
+ ```python
111
+ engine.train(train_path=train_path, val_path=val_path)
112
+ ```
113
+ Training will run for the specified number of epochs and save the model checkpoint in the working directory.
114
+
115
+ Prediction could be done directly after the training or by loading the pretrained model checkpoint.
116
+
117
+ ```python
118
+ predictions = engine.predict(pred_path=predict_path)
119
+ ```
120
+
121
+ For more examples please take a look at the [notebooks](examples).
122
+
@@ -0,0 +1,78 @@
1
+ <p align="center">
2
+ <a href="https://careamics.github.io/">
3
+ <img src="https://raw.githubusercontent.com/CAREamics/.github/main/profile/images/banner_careamics.png">
4
+ </a>
5
+ </p>
6
+
7
+ # CAREamics Restoration
8
+
9
+ [![License](https://img.shields.io/pypi/l/careamics.svg?color=green)](https://github.com/CAREamics/careamics/blob/main/LICENSE)
10
+ [![PyPI](https://img.shields.io/pypi/v/careamics.svg?color=green)](https://pypi.org/project/careamics)
11
+ [![Python Version](https://img.shields.io/pypi/pyversions/careamics.svg?color=green)](https://python.org)
12
+ [![CI](https://github.com/CAREamics/careamics/actions/workflows/ci.yml/badge.svg)](https://github.com/CAREamics/careamics/actions/workflows/ci.yml)
13
+ [![codecov](https://codecov.io/gh/CAREamics/careamics/branch/main/graph/badge.svg)](https://codecov.io/gh/CAREamics/careamics)
14
+
15
+ ## Installation
16
+
17
+ ``` bash
18
+ pip install careamics
19
+ ```
20
+ For more details on the options please follow the installation [guide](https://careamics.github.io/careamics/).
21
+
22
+ ## Usage
23
+
24
+ CAREamics uses the Engine object to construct the pipeline for both training and prediction. First we import the Engine.
25
+ ```python
26
+ from careamics_restoration.engine import Engine
27
+ ```
28
+ The Engine could be initialized in 2 ways:
29
+ 1. Using the [yaml config](examples/n2v_2D_reference.yml) file
30
+
31
+ Specify the mandatory parameters in the config file
32
+ ```yaml
33
+ experiment_name: Name of the experiment
34
+ working_directory: Path to the working directory, where all the outputs will be stored
35
+
36
+ algorithm:
37
+ loss: type of loss function, e.g. n2v for Noise2Void
38
+ model: model architecture, e.g. UNet
39
+ is_3D: True if 3D data, False if 2D data
40
+
41
+ training:
42
+ num_epochs: Number of training epochs
43
+ patch_size: Size of the patches, List of 2 or 3 elements
44
+ batch_size: Batch size for training
45
+
46
+ extraction_strategy: Controls how the patches are extracted from the data
47
+
48
+ data:
49
+ data_format: File extension, e.g. tif
50
+ axes: Defines the shape of the input data
51
+ ```
52
+ Full description of the configuration parameters is in the [documentation](https://careamics.github.io/careamics/).
53
+
54
+
55
+ ```python
56
+ engine = Engine(config_path="config.yml")
57
+
58
+ ```
59
+ 2. Using the path to the pretrained model
60
+ It's also possible to initialize the Engine using the model checkpoint, saved during the training or downloaded from the [BioImage Model Zoo](https://bioimage.io/#/).
61
+ Checkpoint must contain model_state_dict.
62
+ Read more abount saving and loading models in the [documentation](https://careamics.github.io/careamics/).
63
+
64
+ Once Engine is initialized, we can start training, providing the relative paths to train and validation data
65
+
66
+ ```python
67
+ engine.train(train_path=train_path, val_path=val_path)
68
+ ```
69
+ Training will run for the specified number of epochs and save the model checkpoint in the working directory.
70
+
71
+ Prediction could be done directly after the training or by loading the pretrained model checkpoint.
72
+
73
+ ```python
74
+ predictions = engine.predict(pred_path=predict_path)
75
+ ```
76
+
77
+ For more examples please take a look at the [notebooks](examples).
78
+
@@ -0,0 +1,239 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import shutil\n",
10
+ "from pathlib import Path\n",
11
+ "\n",
12
+ "import matplotlib.pyplot as plt\n",
13
+ "import numpy as np\n",
14
+ "import tifffile\n",
15
+ "from careamics_portfolio import PortfolioManager\n",
16
+ "\n",
17
+ "from careamics import CAREamist"
18
+ ]
19
+ },
20
+ {
21
+ "attachments": {},
22
+ "cell_type": "markdown",
23
+ "metadata": {},
24
+ "source": [
25
+ "### Import Dataset Portfolio"
26
+ ]
27
+ },
28
+ {
29
+ "cell_type": "code",
30
+ "execution_count": null,
31
+ "metadata": {},
32
+ "outputs": [],
33
+ "source": [
34
+ "# Explore portfolio\n",
35
+ "portfolio = PortfolioManager()\n",
36
+ "print(portfolio.denoising)"
37
+ ]
38
+ },
39
+ {
40
+ "cell_type": "code",
41
+ "execution_count": null,
42
+ "metadata": {},
43
+ "outputs": [],
44
+ "source": [
45
+ "# Download files\n",
46
+ "root_path = Path(\"./data\")\n",
47
+ "files = portfolio.denoising.N2N_SEM.download(root_path)\n",
48
+ "print(f\"List of downloaded files: {files}\")"
49
+ ]
50
+ },
51
+ {
52
+ "attachments": {},
53
+ "cell_type": "markdown",
54
+ "metadata": {},
55
+ "source": [
56
+ "### Visualize training data"
57
+ ]
58
+ },
59
+ {
60
+ "cell_type": "code",
61
+ "execution_count": null,
62
+ "metadata": {},
63
+ "outputs": [],
64
+ "source": [
65
+ "# Load images\n",
66
+ "train_image = tifffile.imread(files[0])\n",
67
+ "print(f\"Train image shape: {train_image.shape}\")\n",
68
+ "\n",
69
+ "# Display images\n",
70
+ "side = int(np.ceil(np.sqrt(train_image.shape[0])))\n",
71
+ "fig, ax = plt.subplots(side, side, figsize=(15, 15))\n",
72
+ "\n",
73
+ "for i in range(train_image.shape[0]):\n",
74
+ " ax.flat[i].imshow(train_image[i], cmap=\"gray\")\n",
75
+ " ax.flat[i].axis(\"off\")"
76
+ ]
77
+ },
78
+ {
79
+ "attachments": {},
80
+ "cell_type": "markdown",
81
+ "metadata": {},
82
+ "source": [
83
+ "### Visualize validation data"
84
+ ]
85
+ },
86
+ {
87
+ "cell_type": "code",
88
+ "execution_count": null,
89
+ "metadata": {},
90
+ "outputs": [],
91
+ "source": [
92
+ "val_image = tifffile.imread(files[2])\n",
93
+ "print(f\"Validation image shape: {val_image.shape}\")\n",
94
+ "\n",
95
+ "# Display images\n",
96
+ "side = int(np.ceil(np.sqrt(val_image.shape[0])))\n",
97
+ "fig, ax = plt.subplots(side, side, figsize=(15, 15))\n",
98
+ "for i in range(val_image.shape[0]):\n",
99
+ " ax.flat[i].imshow(val_image[i], cmap=\"gray\")\n",
100
+ " ax.flat[i].axis(\"off\")"
101
+ ]
102
+ },
103
+ {
104
+ "cell_type": "code",
105
+ "execution_count": null,
106
+ "metadata": {},
107
+ "outputs": [],
108
+ "source": [
109
+ "# Set paths\n",
110
+ "\n",
111
+ "data_path = Path(root_path / \"n2n_sem\")\n",
112
+ "train_path = data_path / \"train\"\n",
113
+ "test_path = data_path / \"val\"\n",
114
+ "\n",
115
+ "train_path.mkdir(parents=True, exist_ok=True)\n",
116
+ "test_path.mkdir(parents=True, exist_ok=True)\n",
117
+ "\n",
118
+ "shutil.copy(root_path / files[0], train_path / \"train_image.tif\")\n",
119
+ "shutil.copy(root_path / files[1], test_path / \"test_image.tif\")"
120
+ ]
121
+ },
122
+ {
123
+ "attachments": {},
124
+ "cell_type": "markdown",
125
+ "metadata": {},
126
+ "source": [
127
+ "#### Initialize the Model\n",
128
+ "\n",
129
+ "Create a Pytorch Lightning module\n",
130
+ "\n",
131
+ "Please take as look at the [documentation](https://careamics.github.io) to see the full list of parameters and configuration options"
132
+ ]
133
+ },
134
+ {
135
+ "cell_type": "code",
136
+ "execution_count": null,
137
+ "metadata": {},
138
+ "outputs": [],
139
+ "source": [
140
+ "engine = CAREamist(source=\"n2n_2D_SEM.yml\")"
141
+ ]
142
+ },
143
+ {
144
+ "attachments": {},
145
+ "cell_type": "markdown",
146
+ "metadata": {},
147
+ "source": [
148
+ "### Part 3. Run training \n",
149
+ "\n",
150
+ "We need to specify the paths to training and validation data"
151
+ ]
152
+ },
153
+ {
154
+ "cell_type": "code",
155
+ "execution_count": null,
156
+ "metadata": {},
157
+ "outputs": [],
158
+ "source": [
159
+ "engine.train(\n",
160
+ " train_source=train_image[0],\n",
161
+ " val_source=train_image[1],\n",
162
+ " train_target=train_image[2],\n",
163
+ " val_target=train_image[3],\n",
164
+ ")"
165
+ ]
166
+ },
167
+ {
168
+ "attachments": {},
169
+ "cell_type": "markdown",
170
+ "metadata": {},
171
+ "source": [
172
+ "### Run prediction\n"
173
+ ]
174
+ },
175
+ {
176
+ "cell_type": "code",
177
+ "execution_count": null,
178
+ "metadata": {},
179
+ "outputs": [],
180
+ "source": [
181
+ "preds = engine.predict(source=val_image[0], tile_size=(256, 256))"
182
+ ]
183
+ },
184
+ {
185
+ "attachments": {},
186
+ "cell_type": "markdown",
187
+ "metadata": {},
188
+ "source": [
189
+ "### Visualize the prediction"
190
+ ]
191
+ },
192
+ {
193
+ "cell_type": "code",
194
+ "execution_count": null,
195
+ "metadata": {},
196
+ "outputs": [],
197
+ "source": [
198
+ "fi, ax = plt.subplots(1, 2, figsize=(15, 15))\n",
199
+ "ax[0].imshow(preds[0].squeeze(), cmap=\"gray\")\n",
200
+ "ax[0].set_title(\"Prediction\")\n",
201
+ "ax[1].imshow(val_image[0].squeeze(), cmap=\"gray\")\n",
202
+ "ax[1].set_title(\"Ground Truth\")"
203
+ ]
204
+ },
205
+ {
206
+ "cell_type": "code",
207
+ "execution_count": null,
208
+ "metadata": {},
209
+ "outputs": [],
210
+ "source": []
211
+ }
212
+ ],
213
+ "metadata": {
214
+ "kernelspec": {
215
+ "display_name": "Python 3.9.13 ('HDNn')",
216
+ "language": "python",
217
+ "name": "python3"
218
+ },
219
+ "language_info": {
220
+ "codemirror_mode": {
221
+ "name": "ipython",
222
+ "version": 3
223
+ },
224
+ "file_extension": ".py",
225
+ "mimetype": "text/x-python",
226
+ "name": "python",
227
+ "nbconvert_exporter": "python",
228
+ "pygments_lexer": "ipython3",
229
+ "version": "3.9.18"
230
+ },
231
+ "vscode": {
232
+ "interpreter": {
233
+ "hash": "faf8b084d52efbff00ddf863c4fb0ca7a3b023f9f18590a5b65c31dc02d793e2"
234
+ }
235
+ }
236
+ },
237
+ "nbformat": 4,
238
+ "nbformat_minor": 2
239
+ }
@@ -0,0 +1,60 @@
1
+ # Name, composed of letters, numbers, spaces, dashes and underscores
2
+ experiment_name: N2V_SEM_N2N
3
+
4
+ algorithm:
5
+ algorithm: n2n
6
+ loss: mae
7
+ model:
8
+ architecture: UNet
9
+ n2v2: False
10
+ optimizer_parameters:
11
+ lr: 1e-3
12
+ lr_scheduler_parameters:
13
+ factor: 0.5
14
+ patience: 10
15
+
16
+ training:
17
+ # Number of epochs, greater or equal than 1
18
+ num_epochs: 1
19
+
20
+ # Batch size, greater or equal than 1
21
+ batch_size: 128
22
+
23
+ # Optional, use WandB (True or False), must be installed in your conda environment
24
+ use_wandb: False
25
+
26
+ callbacks:
27
+ # Optional, any parameter for Pytorch lightning callbacks
28
+
29
+ # Optional, any parameter for Pytorch lightning ModelCheckpoint
30
+ checkpoint:
31
+ # Optional, monitor the validation loss (val_loss) or the validation accuracy (val_acc)
32
+ # parameters:
33
+ # dirpath: 'checkpoints'
34
+ # monitor : val_loss
35
+ save_last: True
36
+ save_top_k: 3
37
+ # TODO should it be here or in predict ?
38
+ # Optional, path to the checkpoint to load the model
39
+ # load_path: ''
40
+
41
+ # Optional, automatic mixed precision
42
+ amp:
43
+ # Use (True or False)
44
+ use: True
45
+
46
+ data:
47
+ # Extension of the data
48
+ data_type: array
49
+
50
+ patch_size: [64, 64]
51
+
52
+ # Axes, among STCZYX with constraints on order
53
+ axes: YX
54
+
55
+ tta_transforms: True
56
+
57
+ batch_size: 128
58
+
59
+ # Optional, number of workers for data loading, greater or equal than 0
60
+ num_workers: 0