careamics 0.0.15__tar.gz → 0.0.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of careamics might be problematic. Click here for more details.
- {careamics-0.0.15 → careamics-0.0.17}/.github/dependabot.yml +1 -1
- careamics-0.0.17/.github/workflows/ci.yml +98 -0
- careamics-0.0.17/.github/workflows/ci_lvae.yml +45 -0
- careamics-0.0.17/.github/workflows/codecov.yml +43 -0
- {careamics-0.0.15 → careamics-0.0.17}/.pre-commit-config.yaml +5 -6
- {careamics-0.0.15 → careamics-0.0.17}/PKG-INFO +19 -22
- {careamics-0.0.15 → careamics-0.0.17}/pyproject.toml +32 -24
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/careamist.py +11 -14
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/conf.py +18 -3
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/__init__.py +8 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/__init__.py +4 -0
- careamics-0.0.17/src/careamics/config/algorithms/hdn_algorithm_model.py +103 -0
- careamics-0.0.17/src/careamics/config/algorithms/microsplit_algorithm_model.py +103 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/n2v_algorithm_model.py +1 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/vae_algorithm_model.py +51 -16
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/lvae_model.py +12 -8
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/callback_model.py +7 -3
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration.py +15 -63
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration_factories.py +853 -29
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/data_model.py +50 -11
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/ng_data_model.py +168 -4
- careamics-0.0.17/src/careamics/config/data/patch_filter/__init__.py +15 -0
- careamics-0.0.17/src/careamics/config/data/patch_filter/filter_model.py +16 -0
- careamics-0.0.17/src/careamics/config/data/patch_filter/mask_filter_model.py +17 -0
- careamics-0.0.17/src/careamics/config/data/patch_filter/max_filter_model.py +15 -0
- careamics-0.0.17/src/careamics/config/data/patch_filter/meanstd_filter_model.py +18 -0
- careamics-0.0.17/src/careamics/config/data/patch_filter/shannon_filter_model.py +15 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/inference_model.py +1 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/likelihood_model.py +2 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/loss_model.py +6 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/nm_model.py +26 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/optimizer_models.py +1 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_algorithms.py +5 -3
- careamics-0.0.17/src/careamics/config/support/supported_filters.py +17 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_losses.py +5 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/training_model.py +6 -36
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/normalize_model.py +1 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/dataset.py +57 -5
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/factory.py +101 -18
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/demo_custom_image_stack_loader.py +4 -4
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/in_memory_image_stack.py +1 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/zarr_image_stack.py +33 -7
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack_loader.py +2 -2
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/__init__.py +20 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/coordinate_filter_protocol.py +27 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/filter_factory.py +94 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/mask_filter.py +95 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/max_filter.py +188 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/mean_std_filter.py +218 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/patch_filter_protocol.py +50 -0
- careamics-0.0.17/src/careamics/dataset_ng/patch_filter/shannon_filter.py +188 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/__init__.py +0 -1
- careamics-0.0.17/src/careamics/lightning/__init__.py +32 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/__init__.py +2 -0
- careamics-0.0.17/src/careamics/lightning/callbacks/data_stats_callback.py +33 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/data_module.py +79 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/lightning_module.py +162 -61
- careamics-0.0.17/src/careamics/lightning/microsplit_data_module.py +636 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/predict_data_module.py +8 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/train_data_module.py +19 -8
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/__init__.py +7 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/loss_factory.py +9 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/losses.py +85 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/__init__.py +8 -8
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/config.py +56 -44
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/lc_dataset.py +18 -12
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/ms_dataset_ref.py +5 -5
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multich_dataset.py +24 -18
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multifile_dataset.py +6 -6
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/eval_utils.py +46 -24
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bmz_io.py +9 -5
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/likelihoods.py +31 -14
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/lvae.py +2 -2
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/noise_models.py +20 -14
- careamics-0.0.17/src/careamics/prediction_utils/__init__.py +16 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/prediction_outputs.py +49 -3
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/stitch_prediction.py +83 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/xy_random_rotate90.py +1 -1
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/version.py +4 -4
- careamics-0.0.17/tests/config/test_configuration_factories.py +1150 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_vae_algorithm_model.py +13 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/conftest.py +37 -3
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/dataset/test_dataset.py +84 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_zarr_image_stack.py +4 -4
- careamics-0.0.17/tests/dataset_ng/patch_filter/test_mask_filter.py +33 -0
- careamics-0.0.17/tests/dataset_ng/patch_filter/test_max_filter.py +21 -0
- careamics-0.0.17/tests/dataset_ng/patch_filter/test_mean_std_patch_filter.py +28 -0
- careamics-0.0.17/tests/dataset_ng/patch_filter/test_shannon_entropy_filter.py +29 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_LVAE_lightning_module.py +276 -148
- careamics-0.0.17/tests/lightning/test_microsplit_train_datamodule.py +61 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/likelihood_modules/test_likelihoods.py +2 -1
- {careamics-0.0.15 → careamics-0.0.17}/tests/losses/test_lvae_losses.py +10 -5
- {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_lvae_architecture.py +1 -9
- {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_noise_model.py +3 -3
- careamics-0.0.17/tests/smoke_test.py +22 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/test_careamist.py +78 -27
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_lightning_utils.py +5 -2
- careamics-0.0.17/uv.lock +4313 -0
- careamics-0.0.15/.github/TEST_FAIL_TEMPLATE.md +0 -12
- careamics-0.0.15/.github/workflows/ci.yml +0 -107
- careamics-0.0.15/.github/workflows/ci_macos.yml +0 -67
- careamics-0.0.15/.github/workflows/codecov.yml +0 -46
- careamics-0.0.15/.github/workflows/lvae.yml +0 -62
- careamics-0.0.15/src/careamics/dataset/zarr_dataset.py +0 -151
- careamics-0.0.15/src/careamics/file_io/read/zarr.py +0 -60
- careamics-0.0.15/src/careamics/lightning/__init__.py +0 -18
- careamics-0.0.15/src/careamics/prediction_utils/__init__.py +0 -10
- careamics-0.0.15/tests/config/test_configuration_factories.py +0 -481
- careamics-0.0.15/tests/config/test_training_model.py +0 -21
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/example_report.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/interoperability_request.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/ISSUE_TEMPLATE/refactoring_suggestion.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.github/pull_request_template.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/.gitignore +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/CODE_OF_CONDUCT.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/LICENSE +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/README.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/codecov.yml +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/mypy.ini +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/main.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/cli/utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/care_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/n2n_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/algorithms/unet_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/architecture_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/architectures/unet_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/configuration_io.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/_overlapping_patched_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/_patched_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/random_patching_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/sequential_patching_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/tiled_patching_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/data/patching_strategies/whole_patching_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_activations.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_architectures.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_data.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_loggers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_optimizers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_patching_strategies.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_pixel_manipulations.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_struct_axis.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/support/supported_transforms.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/tile_information.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/n2v_manipulate_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/transform_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/transform_unions.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/xy_flip_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/transformations/xy_random_rotate90_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/model_validators.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/config/validators/validator_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/conftest.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/dataset_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/file_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/iterate_over_files.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/dataset_utils/running_stats.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/in_memory_tiled_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/iterable_tiled_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/random_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/sequential_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/patching/validate_patch_dimension.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/collate_tiles.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/lvae_tiled_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset/tiling/tiled_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/README.md +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/bsd68_demo.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/care_U2OS_demo.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_custom_image_stack.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_datamodule.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_dataset.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/demo_patch_extractor.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/demos/mouse_nuclei_demo.ipynb +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/legacy_interoperability.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/czi_image_stack.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/image_stack/image_stack_protocol.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/patch_extractor.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patch_extractor/patch_extractor_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/patching_strategy_protocol.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/random_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/sequential_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/tiling_strategy.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/dataset_ng/patching_strategies/whole_sample.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/get_func.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/read/tiff.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/get_func.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/file_io/write/tiff.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/hyperparameters_callback.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/file_path_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/prediction_writer_callback.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/prediction_writer_callback/write_strategy_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/callbacks/progress_bar_callback.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/care_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/n2v_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lightning/dataset_ng/lightning_modules/unet_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/fcn/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/fcn/losses.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/losses/lvae/loss_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/calibration.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/multicrop_dset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/types.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/data_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/empty_patch_fetcher.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/index_manager.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/dataset/utils/index_switcher.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/get_config.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/lightning_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/metrics.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/train_lvae.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/lvae_training/train_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/_readme_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/bioimage_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/cover_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/bioimage/model_description.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/model_io/model_io_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/activation.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/layers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/layers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/stochastic.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/lvae/utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/model_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/models/unet.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/lvae_prediction.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/prediction_utils/lvae_tiling_manager.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/py.typed +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/compose.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/n2v_manipulate.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/n2v_manipulate_torch.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/normalize.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/pixel_manipulation.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/pixel_manipulation_torch.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/struct_mask_parameters.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/transform.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/tta.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/transforms/xy_flip.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/autocorrelation.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/base_enum.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/context.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/lightning_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/logging.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/metrics.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/path_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/plotting.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/ram.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/receptive_field.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/serializers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/src/careamics/utils/torch_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/cli/__init__.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/cli/test_conf.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/cli/test_main.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_care_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_n2n_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/algorithms/test_n2v_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_architecture_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_lvae_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/architectures/test_unet_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/patching_strategies/test_strategies.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/test_data_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/data/test_ng_data_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/support/test_supported_data.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/support/test_supported_optimizers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_callback_models.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_configuration.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_configuration_io.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_inference_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_n2v_preprocessing.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_optimizers_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_tile_information.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/test_unet_algorithm_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_n2v_manipulate_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_normalize_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_xy_flip_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/transformations/test_xy_random_rotate90_model.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/validators/test_model_validators.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/config/validators/test_validator_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/dataset_utils/test_compute_normalization_stats.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/dataset_utils/test_list_files.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_patching_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_random_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/patching/test_sequential_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_in_memory_tiled_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/test_iterable_tiled_pred_dataset.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_collate_tiles.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_lvae_tiled_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset/tiling/test_tiled_patching.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_czi_image_stack.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patch_extractor/image_stack/test_import_czi_image_stack.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_all_strategies.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_random_patching_ng.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_sequential_patching_ng.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/dataset_ng/patching_strategies/test_tiling_strategy.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/read/test_get_read_func.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/read/test_read_tiff.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/write/test_get_write_func.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/file_io/write/test_write_tiff.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_cache_tiles_write_strategy.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_file_path_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_prediction_writer_callback.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_write_image_write_strategy.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/callbacks/prediction_writer_callback/test_write_strategy_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_api.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_lightning_module_onnx_exportability.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_predict_data_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/lightning/test_train_data_module.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/model_io/test_bmz_io.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/models/lvae/test_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/models/test_model_factory.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/models/test_unet.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_lvae_prediction.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_prediction_outputs.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/prediction_utils/test_stitch_prediction.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/test_conftest.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_compose.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_manipulate_n2v.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_normalize.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_pixel_manipulation.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_tta.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_xy_flip.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/transforms/test_xy_random_rotate90.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_autocorrelation.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_base_enum.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_context.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_logging.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_metrics.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_serializers.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_torch_utils.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_version.py +0 -0
- {careamics-0.0.15 → careamics-0.0.17}/tests/utils/test_wandb.py +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
tags:
|
|
8
|
+
- "v*"
|
|
9
|
+
pull_request:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
schedule:
|
|
12
|
+
# run every week (for --pre release tests)
|
|
13
|
+
- cron: "0 0 * * 0"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
check-manifest:
|
|
17
|
+
# check-manifest is a tool that checks that all files in version control are
|
|
18
|
+
# included in the sdist (unless explicitly excluded)
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v3
|
|
22
|
+
- run: pipx run check-manifest
|
|
23
|
+
|
|
24
|
+
test:
|
|
25
|
+
name: ${{ matrix.platform }} (${{ matrix.python-version }})
|
|
26
|
+
runs-on: ${{ matrix.platform }}
|
|
27
|
+
strategy:
|
|
28
|
+
fail-fast: false
|
|
29
|
+
matrix:
|
|
30
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
31
|
+
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
|
|
32
|
+
platform: [ubuntu-latest, windows-latest, macos-latest ]
|
|
33
|
+
|
|
34
|
+
steps:
|
|
35
|
+
- name: 🛑 Cancel Previous Runs
|
|
36
|
+
uses: styfle/cancel-workflow-action@0.11.0
|
|
37
|
+
with:
|
|
38
|
+
access_token: ${{ github.token }}
|
|
39
|
+
|
|
40
|
+
- uses: actions/checkout@v5
|
|
41
|
+
|
|
42
|
+
- name: Install uv
|
|
43
|
+
uses: astral-sh/setup-uv@v6
|
|
44
|
+
with:
|
|
45
|
+
# Install a specific version of uv.
|
|
46
|
+
version: "0.9.0"
|
|
47
|
+
enable-cache: true
|
|
48
|
+
python-version: ${{ matrix.python-version }}
|
|
49
|
+
|
|
50
|
+
- name: Install the project
|
|
51
|
+
run: uv sync --all-extras --dev
|
|
52
|
+
|
|
53
|
+
- name: 🧪 Run tests
|
|
54
|
+
run: uv run pytest --color=yes -m "not lvae"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
deploy:
|
|
58
|
+
name: Release
|
|
59
|
+
needs: test
|
|
60
|
+
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
|
|
63
|
+
permissions:
|
|
64
|
+
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
65
|
+
id-token: write
|
|
66
|
+
|
|
67
|
+
# This permission allows writing releases
|
|
68
|
+
contents: write
|
|
69
|
+
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v5
|
|
72
|
+
with:
|
|
73
|
+
fetch-depth: 0
|
|
74
|
+
|
|
75
|
+
- name: Install uv
|
|
76
|
+
uses: astral-sh/setup-uv@v6
|
|
77
|
+
with:
|
|
78
|
+
# Install a specific version of uv.
|
|
79
|
+
version: "0.9.0"
|
|
80
|
+
enable-cache: true
|
|
81
|
+
python-version: 3.12
|
|
82
|
+
|
|
83
|
+
- name: Build
|
|
84
|
+
run: uv build
|
|
85
|
+
|
|
86
|
+
# Check that basic features work and we didn't miss to include crucial files
|
|
87
|
+
- name: Smoke test (wheel)
|
|
88
|
+
run: uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
|
|
89
|
+
|
|
90
|
+
- name: Smoke test (source distribution)
|
|
91
|
+
run: uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
|
|
92
|
+
|
|
93
|
+
- name: Publish
|
|
94
|
+
run: uv publish
|
|
95
|
+
|
|
96
|
+
- uses: softprops/action-gh-release@v2
|
|
97
|
+
with:
|
|
98
|
+
generate_release_notes: true
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: CI-lvae-uv
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
tags:
|
|
8
|
+
- "v*"
|
|
9
|
+
pull_request:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
schedule:
|
|
12
|
+
# run every week (for --pre release tests)
|
|
13
|
+
- cron: "0 0 * * 0"
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
test:
|
|
17
|
+
name: LVAE py3.12 (ubuntu-latest)
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ["3.12"]
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: 🛑 Cancel Previous Runs
|
|
26
|
+
uses: styfle/cancel-workflow-action@0.11.0
|
|
27
|
+
with:
|
|
28
|
+
access_token: ${{ github.token }}
|
|
29
|
+
|
|
30
|
+
- uses: actions/checkout@v5
|
|
31
|
+
|
|
32
|
+
- name: Install uv
|
|
33
|
+
uses: astral-sh/setup-uv@v6
|
|
34
|
+
with:
|
|
35
|
+
# Install a specific version of uv.
|
|
36
|
+
version: "0.9.0"
|
|
37
|
+
enable-cache: true
|
|
38
|
+
python-version: ${{ matrix.python-version }}
|
|
39
|
+
|
|
40
|
+
- name: Install the project
|
|
41
|
+
run: uv sync --all-extras --dev
|
|
42
|
+
|
|
43
|
+
- name: 🧪 Run tests
|
|
44
|
+
# does not run doctests
|
|
45
|
+
run: uv run pytest tests --color=yes -m lvae
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: codecov
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
codecov:
|
|
10
|
+
name: codecov update
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
python-version: ["3.12"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: 🛑 Cancel Previous Runs
|
|
19
|
+
uses: styfle/cancel-workflow-action@0.11.0
|
|
20
|
+
with:
|
|
21
|
+
access_token: ${{ github.token }}
|
|
22
|
+
|
|
23
|
+
- name: Checkout code
|
|
24
|
+
uses: actions/checkout@v5
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v6
|
|
28
|
+
with:
|
|
29
|
+
# Install a specific version of uv.
|
|
30
|
+
version: "0.9.0"
|
|
31
|
+
enable-cache: true
|
|
32
|
+
python-version: ${{ matrix.python-version }}
|
|
33
|
+
|
|
34
|
+
- name: Install the project
|
|
35
|
+
run: uv sync --all-extras --dev
|
|
36
|
+
|
|
37
|
+
- name: 🧪 Run Tests
|
|
38
|
+
run: uv run pytest --color=yes --cov --cov-config=pyproject.toml --cov-report=xml --cov-report=term-missing
|
|
39
|
+
|
|
40
|
+
- name: Coverage
|
|
41
|
+
uses: codecov/codecov-action@v5
|
|
42
|
+
with:
|
|
43
|
+
version: v0.7.3
|
|
@@ -14,26 +14,25 @@ repos:
|
|
|
14
14
|
- id: validate-pyproject
|
|
15
15
|
|
|
16
16
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
17
|
-
rev: v0.
|
|
17
|
+
rev: v0.13.3
|
|
18
18
|
hooks:
|
|
19
19
|
- id: ruff
|
|
20
20
|
exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^scripts/.*"
|
|
21
|
-
args: [--fix, --target-version, py310]
|
|
22
21
|
|
|
23
|
-
- repo: https://github.com/psf/black
|
|
24
|
-
rev: 25.
|
|
22
|
+
- repo: https://github.com/psf/black-pre-commit-mirror
|
|
23
|
+
rev: 25.9.0
|
|
25
24
|
hooks:
|
|
26
25
|
- id: black
|
|
27
26
|
|
|
28
27
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
29
|
-
rev: v1.
|
|
28
|
+
rev: v1.18.2
|
|
30
29
|
hooks:
|
|
31
30
|
- id: mypy
|
|
32
31
|
files: "^src/"
|
|
33
32
|
exclude: "^src/careamics/lvae_training/.*|^src/careamics/models/lvae/.*|^src/careamics/config/likelihood_model.py|^src/careamics/losses/loss_factory.py|^src/careamics/losses/lvae/losses.py"
|
|
34
33
|
args: ["--config-file", "mypy.ini"]
|
|
35
34
|
additional_dependencies:
|
|
36
|
-
- numpy
|
|
35
|
+
- numpy
|
|
37
36
|
- pydantic
|
|
38
37
|
- types-PyYAML
|
|
39
38
|
- types-setuptools
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: careamics
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.17
|
|
4
4
|
Summary: Toolbox for running N2V and friends.
|
|
5
5
|
Project-URL: homepage, https://careamics.github.io/
|
|
6
6
|
Project-URL: repository, https://github.com/CAREamics/careamics
|
|
@@ -10,33 +10,30 @@ License-File: LICENSE
|
|
|
10
10
|
Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: License :: OSI Approved :: BSD License
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
|
-
Requires-Python: >=3.
|
|
18
|
-
Requires-Dist: bioimageio-core
|
|
19
|
-
Requires-Dist: matplotlib<=3.10.
|
|
20
|
-
Requires-Dist: numpy
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Requires-Dist: bioimageio-core>=0.9.0
|
|
19
|
+
Requires-Dist: matplotlib<=3.10.7
|
|
20
|
+
Requires-Dist: numpy>=1.21
|
|
21
|
+
Requires-Dist: numpy>=2.1.0; python_version >= '3.13'
|
|
22
|
+
Requires-Dist: pillow<=11.3.0
|
|
23
|
+
Requires-Dist: psutil<=7.1.0
|
|
24
|
+
Requires-Dist: pydantic<=2.12.2,>=2.11
|
|
25
|
+
Requires-Dist: pytorch-lightning<=2.5.5,>=2.2
|
|
26
|
+
Requires-Dist: pyyaml!=6.0.0,<=6.0.3
|
|
26
27
|
Requires-Dist: scikit-image<=0.25.2
|
|
27
|
-
Requires-Dist: tifffile<=2025.
|
|
28
|
-
Requires-Dist: torch<=2.
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: tifffile<=2025.10.4
|
|
29
|
+
Requires-Dist: torch<=2.8.0,>=2.0
|
|
30
|
+
Requires-Dist: torchmetrics<1.5.0,>=0.11.0
|
|
31
|
+
Requires-Dist: torchvision<=0.23.0
|
|
32
|
+
Requires-Dist: typer<=0.19.2,>=0.12.3
|
|
33
|
+
Requires-Dist: validators<=0.35.0
|
|
34
|
+
Requires-Dist: zarr<4.0.0,>=3.0.0
|
|
32
35
|
Provides-Extra: czi
|
|
33
36
|
Requires-Dist: pylibczirw<6.0.0,>=4.1.2; extra == 'czi'
|
|
34
|
-
Provides-Extra: dev
|
|
35
|
-
Requires-Dist: onnx; extra == 'dev'
|
|
36
|
-
Requires-Dist: pre-commit; extra == 'dev'
|
|
37
|
-
Requires-Dist: pytest; extra == 'dev'
|
|
38
|
-
Requires-Dist: pytest-cov; extra == 'dev'
|
|
39
|
-
Requires-Dist: sybil; extra == 'dev'
|
|
40
37
|
Provides-Extra: examples
|
|
41
38
|
Requires-Dist: careamics-portfolio; extra == 'examples'
|
|
42
39
|
Requires-Dist: jupyter; extra == 'examples'
|
|
@@ -20,7 +20,7 @@ name = "careamics"
|
|
|
20
20
|
dynamic = ["version"]
|
|
21
21
|
description = "Toolbox for running N2V and friends."
|
|
22
22
|
readme = "README.md"
|
|
23
|
-
requires-python = ">=3.
|
|
23
|
+
requires-python = ">=3.11"
|
|
24
24
|
license = { text = "BSD-3-Clause" }
|
|
25
25
|
authors = [
|
|
26
26
|
{ name = 'CAREamics team', email = 'rse@fht.org' },
|
|
@@ -34,27 +34,30 @@ authors = [
|
|
|
34
34
|
classifiers = [
|
|
35
35
|
"Development Status :: 3 - Alpha",
|
|
36
36
|
"Programming Language :: Python :: 3",
|
|
37
|
-
"Programming Language :: Python :: 3.10",
|
|
38
37
|
"Programming Language :: Python :: 3.11",
|
|
39
38
|
"Programming Language :: Python :: 3.12",
|
|
39
|
+
"Programming Language :: Python :: 3.13",
|
|
40
40
|
"License :: OSI Approved :: BSD License",
|
|
41
41
|
"Typing :: Typed",
|
|
42
42
|
]
|
|
43
43
|
dependencies = [
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
'
|
|
47
|
-
'
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
'
|
|
52
|
-
'
|
|
53
|
-
'
|
|
44
|
+
"numpy>=1.21",
|
|
45
|
+
"numpy>=2.1.0; python_version>='3.13'", # prevents ml_dtypes conflict in py313
|
|
46
|
+
'torch>=2.0,<=2.8.0',
|
|
47
|
+
'torchvision<=0.23.0',
|
|
48
|
+
'bioimageio.core>=0.9.0',
|
|
49
|
+
'tifffile<=2025.10.4',
|
|
50
|
+
'psutil<=7.1.0',
|
|
51
|
+
'pydantic>=2.11,<=2.12.2',
|
|
52
|
+
'pytorch_lightning>=2.2,<=2.5.5',
|
|
53
|
+
'pyyaml!=6.0.0,<=6.0.3',
|
|
54
|
+
'typer>=0.12.3,<=0.19.2',
|
|
54
55
|
'scikit-image<=0.25.2',
|
|
55
|
-
'zarr
|
|
56
|
-
'pillow<=11.
|
|
57
|
-
'matplotlib<=3.10.
|
|
56
|
+
'zarr>=3.0.0,<4.0.0',
|
|
57
|
+
'pillow<=11.3.0',
|
|
58
|
+
'matplotlib<=3.10.7',
|
|
59
|
+
'validators<=0.35.0',
|
|
60
|
+
'torchmetrics>=0.11.0,<1.5.0' # 1.5.0 causes `data_range` mandatory parameter issues
|
|
58
61
|
]
|
|
59
62
|
|
|
60
63
|
[project.optional-dependencies]
|
|
@@ -62,21 +65,25 @@ dependencies = [
|
|
|
62
65
|
# czi format
|
|
63
66
|
czi = ['pylibCZIrw>=4.1.2,<6.0.0']
|
|
64
67
|
|
|
68
|
+
# notebooks
|
|
69
|
+
examples = ["jupyter", "careamics-portfolio"]
|
|
70
|
+
|
|
71
|
+
# loggers
|
|
72
|
+
wandb = ["wandb"]
|
|
73
|
+
tensorboard = ["tensorboard", "protobuf==5.29.1"]
|
|
74
|
+
|
|
75
|
+
[dependency-groups]
|
|
65
76
|
# development dependencies and tooling
|
|
66
77
|
dev = [
|
|
67
78
|
"pre-commit",
|
|
68
79
|
"pytest",
|
|
69
80
|
"pytest-cov",
|
|
70
|
-
"onnx",
|
|
71
81
|
"sybil", # doctesting
|
|
72
|
-
]
|
|
73
82
|
|
|
74
|
-
#
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
wandb = ["wandb"]
|
|
79
|
-
tensorboard = ["tensorboard", "protobuf==5.29.1"]
|
|
83
|
+
# libraries used in some tests
|
|
84
|
+
"onnx",
|
|
85
|
+
"ml_dtypes>=0.5.0" # required by onnx, causes issues in gh runners with py313
|
|
86
|
+
]
|
|
80
87
|
|
|
81
88
|
[project.urls]
|
|
82
89
|
homepage = "https://careamics.github.io/"
|
|
@@ -88,8 +95,9 @@ careamics = "careamics.cli.main:run"
|
|
|
88
95
|
|
|
89
96
|
# https://beta.ruff.rs/docs
|
|
90
97
|
[tool.ruff]
|
|
98
|
+
fix = true
|
|
91
99
|
line-length = 88
|
|
92
|
-
target-version = "
|
|
100
|
+
target-version = "py311" # is this needed? see .pre-commit-config.yaml
|
|
93
101
|
src = ["src"]
|
|
94
102
|
lint.select = [
|
|
95
103
|
"E", # style errors
|
|
@@ -41,6 +41,7 @@ logger = get_logger(__name__)
|
|
|
41
41
|
LOGGER_TYPES = list[Union[TensorBoardLogger, WandbLogger, CSVLogger]]
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
# TODO type ignore have been added because of the czi data type in data configuration
|
|
44
45
|
class CAREamist:
|
|
45
46
|
"""Main CAREamics class, allowing training and prediction using various algorithms.
|
|
46
47
|
|
|
@@ -208,17 +209,11 @@ class CAREamist:
|
|
|
208
209
|
|
|
209
210
|
# instantiate trainer
|
|
210
211
|
self.trainer = Trainer(
|
|
211
|
-
max_epochs=self.cfg.training_config.num_epochs,
|
|
212
|
-
precision=self.cfg.training_config.precision,
|
|
213
|
-
max_steps=self.cfg.training_config.max_steps,
|
|
214
|
-
check_val_every_n_epoch=self.cfg.training_config.check_val_every_n_epoch,
|
|
215
212
|
enable_progress_bar=enable_progress_bar,
|
|
216
|
-
accumulate_grad_batches=self.cfg.training_config.accumulate_grad_batches,
|
|
217
|
-
gradient_clip_val=self.cfg.training_config.gradient_clip_val,
|
|
218
|
-
gradient_clip_algorithm=self.cfg.training_config.gradient_clip_algorithm,
|
|
219
213
|
callbacks=self.callbacks,
|
|
220
214
|
default_root_dir=self.work_dir,
|
|
221
215
|
logger=experiment_logger,
|
|
216
|
+
**self.cfg.training_config.lightning_trainer_config or {},
|
|
222
217
|
)
|
|
223
218
|
|
|
224
219
|
# place holder for the datamodules
|
|
@@ -264,7 +259,7 @@ class CAREamist:
|
|
|
264
259
|
HyperParametersCallback(self.cfg),
|
|
265
260
|
ModelCheckpoint(
|
|
266
261
|
dirpath=self.work_dir / Path("checkpoints"),
|
|
267
|
-
filename=self.cfg.experiment_name,
|
|
262
|
+
filename=f"{self.cfg.experiment_name}_{{epoch:02d}}_step_{{step}}",
|
|
268
263
|
**self.cfg.training_config.checkpoint_callback.model_dump(),
|
|
269
264
|
),
|
|
270
265
|
]
|
|
@@ -680,7 +675,7 @@ class CAREamist:
|
|
|
680
675
|
# create the prediction
|
|
681
676
|
self.pred_datamodule = create_predict_datamodule(
|
|
682
677
|
pred_data=source,
|
|
683
|
-
data_type=data_type or self.cfg.data_config.data_type,
|
|
678
|
+
data_type=data_type or self.cfg.data_config.data_type, # type: ignore
|
|
684
679
|
axes=axes or self.cfg.data_config.axes,
|
|
685
680
|
image_means=self.cfg.data_config.image_means,
|
|
686
681
|
image_stds=self.cfg.data_config.image_stds,
|
|
@@ -826,11 +821,13 @@ class CAREamist:
|
|
|
826
821
|
source_data_type: Literal["array", "tiff", "custom"]
|
|
827
822
|
if isinstance(source, PredictDataModule):
|
|
828
823
|
source_path = source.pred_data
|
|
829
|
-
source_data_type = source.data_type
|
|
824
|
+
source_data_type = source.data_type # type: ignore
|
|
830
825
|
extension_filter = source.extension_filter
|
|
831
|
-
elif isinstance(source, str | Path):
|
|
826
|
+
elif isinstance(source, (str | Path)):
|
|
832
827
|
source_path = source
|
|
833
|
-
source_data_type =
|
|
828
|
+
source_data_type = (
|
|
829
|
+
data_type or self.cfg.data_config.data_type # type: ignore
|
|
830
|
+
)
|
|
834
831
|
extension_filter = SupportedData.get_extension_pattern(
|
|
835
832
|
SupportedData(source_data_type)
|
|
836
833
|
)
|
|
@@ -841,7 +838,7 @@ class CAREamist:
|
|
|
841
838
|
raise ValueError(
|
|
842
839
|
"Predicting to disk is not supported for input type 'array'."
|
|
843
840
|
)
|
|
844
|
-
assert isinstance(source_path,
|
|
841
|
+
assert isinstance(source_path, (Path | str)) # because data_type != "array"
|
|
845
842
|
source_path = Path(source_path)
|
|
846
843
|
|
|
847
844
|
file_paths = list_files(source_path, source_data_type, extension_filter)
|
|
@@ -879,7 +876,7 @@ class CAREamist:
|
|
|
879
876
|
|
|
880
877
|
def export_to_bmz(
|
|
881
878
|
self,
|
|
882
|
-
path_to_archive: Union[Path
|
|
879
|
+
path_to_archive: Union[Path | str],
|
|
883
880
|
friendly_model_name: str,
|
|
884
881
|
input_array: NDArray,
|
|
885
882
|
authors: list[dict],
|
|
@@ -116,7 +116,11 @@ def care( # numpydoc ignore=PR01
|
|
|
116
116
|
),
|
|
117
117
|
],
|
|
118
118
|
batch_size: Annotated[int, typer.Option(help="Batch size.")],
|
|
119
|
-
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
|
|
119
|
+
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
|
|
120
|
+
num_steps: Annotated[
|
|
121
|
+
int | None,
|
|
122
|
+
typer.Option(help="Number of batches per epoch (limit_train_batches)."),
|
|
123
|
+
] = None,
|
|
120
124
|
data_type: Annotated[
|
|
121
125
|
click.Choice,
|
|
122
126
|
typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
|
|
@@ -175,6 +179,7 @@ def care( # numpydoc ignore=PR01
|
|
|
175
179
|
patch_size=patch_size,
|
|
176
180
|
batch_size=batch_size,
|
|
177
181
|
num_epochs=num_epochs,
|
|
182
|
+
num_steps=num_steps,
|
|
178
183
|
# TODO: fix choosing augmentations
|
|
179
184
|
augmentations=None if use_augmentations else [],
|
|
180
185
|
independent_channels=independent_channels,
|
|
@@ -203,7 +208,11 @@ def n2n( # numpydoc ignore=PR01
|
|
|
203
208
|
),
|
|
204
209
|
],
|
|
205
210
|
batch_size: Annotated[int, typer.Option(help="Batch size.")],
|
|
206
|
-
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
|
|
211
|
+
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
|
|
212
|
+
num_steps: Annotated[
|
|
213
|
+
int | None,
|
|
214
|
+
typer.Option(help="Number of batches per epoch (limit_train_batches)."),
|
|
215
|
+
] = None,
|
|
207
216
|
data_type: Annotated[
|
|
208
217
|
click.Choice,
|
|
209
218
|
typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
|
|
@@ -259,6 +268,7 @@ def n2n( # numpydoc ignore=PR01
|
|
|
259
268
|
patch_size=patch_size,
|
|
260
269
|
batch_size=batch_size,
|
|
261
270
|
num_epochs=num_epochs,
|
|
271
|
+
num_steps=num_steps,
|
|
262
272
|
# TODO: fix choosing augmentations
|
|
263
273
|
augmentations=None if use_augmentations else [],
|
|
264
274
|
independent_channels=independent_channels,
|
|
@@ -287,7 +297,11 @@ def n2v( # numpydoc ignore=PR01
|
|
|
287
297
|
),
|
|
288
298
|
],
|
|
289
299
|
batch_size: Annotated[int, typer.Option(help="Batch size.")],
|
|
290
|
-
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")],
|
|
300
|
+
num_epochs: Annotated[int, typer.Option(help="Number of epochs.")] = 100,
|
|
301
|
+
num_steps: Annotated[
|
|
302
|
+
int | None,
|
|
303
|
+
typer.Option(help="Number of batches per epoch (limit_train_batches)."),
|
|
304
|
+
] = None,
|
|
291
305
|
data_type: Annotated[
|
|
292
306
|
click.Choice,
|
|
293
307
|
typer.Option(click_type=click.Choice(["tiff"]), help="Type of the data."),
|
|
@@ -364,6 +378,7 @@ def n2v( # numpydoc ignore=PR01
|
|
|
364
378
|
patch_size=patch_size,
|
|
365
379
|
batch_size=batch_size,
|
|
366
380
|
num_epochs=num_epochs,
|
|
381
|
+
num_steps=num_steps,
|
|
367
382
|
# TODO: fix choosing augmentations
|
|
368
383
|
augmentations=None if use_augmentations else [],
|
|
369
384
|
independent_channels=independent_channels,
|
|
@@ -12,8 +12,10 @@ __all__ = [
|
|
|
12
12
|
"Configuration",
|
|
13
13
|
"DataConfig",
|
|
14
14
|
"GaussianMixtureNMConfig",
|
|
15
|
+
"HDNAlgorithm",
|
|
15
16
|
"InferenceConfig",
|
|
16
17
|
"LVAELossConfig",
|
|
18
|
+
"MicroSplitAlgorithm",
|
|
17
19
|
"MultiChannelNMConfig",
|
|
18
20
|
"N2NAlgorithm",
|
|
19
21
|
"N2VAlgorithm",
|
|
@@ -22,6 +24,8 @@ __all__ = [
|
|
|
22
24
|
"VAEBasedAlgorithm",
|
|
23
25
|
"algorithm_factory",
|
|
24
26
|
"create_care_configuration",
|
|
27
|
+
"create_hdn_configuration",
|
|
28
|
+
"create_microsplit_configuration",
|
|
25
29
|
"create_n2n_configuration",
|
|
26
30
|
"create_n2v_configuration",
|
|
27
31
|
"load_configuration",
|
|
@@ -30,6 +34,8 @@ __all__ = [
|
|
|
30
34
|
|
|
31
35
|
from .algorithms import (
|
|
32
36
|
CAREAlgorithm,
|
|
37
|
+
HDNAlgorithm,
|
|
38
|
+
MicroSplitAlgorithm,
|
|
33
39
|
N2NAlgorithm,
|
|
34
40
|
N2VAlgorithm,
|
|
35
41
|
UNetBasedAlgorithm,
|
|
@@ -40,6 +46,8 @@ from .configuration import Configuration
|
|
|
40
46
|
from .configuration_factories import (
|
|
41
47
|
algorithm_factory,
|
|
42
48
|
create_care_configuration,
|
|
49
|
+
create_hdn_configuration,
|
|
50
|
+
create_microsplit_configuration,
|
|
43
51
|
create_n2n_configuration,
|
|
44
52
|
create_n2v_configuration,
|
|
45
53
|
)
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
__all__ = [
|
|
4
4
|
"CAREAlgorithm",
|
|
5
|
+
"HDNAlgorithm",
|
|
6
|
+
"MicroSplitAlgorithm",
|
|
5
7
|
"N2NAlgorithm",
|
|
6
8
|
"N2VAlgorithm",
|
|
7
9
|
"UNetBasedAlgorithm",
|
|
@@ -9,6 +11,8 @@ __all__ = [
|
|
|
9
11
|
]
|
|
10
12
|
|
|
11
13
|
from .care_algorithm_model import CAREAlgorithm
|
|
14
|
+
from .hdn_algorithm_model import HDNAlgorithm
|
|
15
|
+
from .microsplit_algorithm_model import MicroSplitAlgorithm
|
|
12
16
|
from .n2n_algorithm_model import N2NAlgorithm
|
|
13
17
|
from .n2v_algorithm_model import N2VAlgorithm
|
|
14
18
|
from .unet_algorithm_model import UNetBasedAlgorithm
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""HDN algorithm configuration."""
|
|
2
|
+
|
|
3
|
+
from typing import Literal
|
|
4
|
+
|
|
5
|
+
from bioimageio.spec.generic.v0_3 import CiteEntry
|
|
6
|
+
from pydantic import ConfigDict
|
|
7
|
+
|
|
8
|
+
from careamics.config.algorithms.vae_algorithm_model import VAEBasedAlgorithm
|
|
9
|
+
from careamics.config.architectures import LVAEModel
|
|
10
|
+
from careamics.config.loss_model import LVAELossConfig
|
|
11
|
+
|
|
12
|
+
HDN = "Hierarchical DivNoising"
|
|
13
|
+
|
|
14
|
+
HDN_DESCRIPTION = (
|
|
15
|
+
"HDN leverages a hierarchical VAE to perform image "
|
|
16
|
+
"restoration. It is designed to be interpretable and unsupervised, "
|
|
17
|
+
"making it suitable for a wide range of microscopy images."
|
|
18
|
+
)
|
|
19
|
+
HDN_REF = CiteEntry(
|
|
20
|
+
text='Prakash, M., Delbracio, M., Milanfar, P., Jug, F. 2022. "Interpretable '
|
|
21
|
+
'Unsupervised Diversity Denoising and Artefact Removal." The International '
|
|
22
|
+
"Conference on Learning Representations (ICLR).",
|
|
23
|
+
doi="10.1561/2200000056",
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class HDNAlgorithm(VAEBasedAlgorithm):
|
|
28
|
+
"""HDN algorithm configuration."""
|
|
29
|
+
|
|
30
|
+
model_config = ConfigDict(validate_assignment=True)
|
|
31
|
+
|
|
32
|
+
algorithm: Literal["hdn"] = "hdn"
|
|
33
|
+
|
|
34
|
+
loss: LVAELossConfig
|
|
35
|
+
|
|
36
|
+
model: LVAEModel # TODO add validators
|
|
37
|
+
|
|
38
|
+
is_supervised: bool = False
|
|
39
|
+
|
|
40
|
+
def get_algorithm_friendly_name(self) -> str:
|
|
41
|
+
"""
|
|
42
|
+
Get the algorithm friendly name.
|
|
43
|
+
|
|
44
|
+
Returns
|
|
45
|
+
-------
|
|
46
|
+
str
|
|
47
|
+
Friendly name of the algorithm.
|
|
48
|
+
"""
|
|
49
|
+
return HDN
|
|
50
|
+
|
|
51
|
+
def get_algorithm_keywords(self) -> list[str]:
|
|
52
|
+
"""
|
|
53
|
+
Get algorithm keywords.
|
|
54
|
+
|
|
55
|
+
Returns
|
|
56
|
+
-------
|
|
57
|
+
list[str]
|
|
58
|
+
List of keywords.
|
|
59
|
+
"""
|
|
60
|
+
return [
|
|
61
|
+
"restoration",
|
|
62
|
+
"VAE",
|
|
63
|
+
"3D" if self.model.is_3D() else "2D",
|
|
64
|
+
"CAREamics",
|
|
65
|
+
"pytorch",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
def get_algorithm_references(self) -> str:
|
|
69
|
+
"""
|
|
70
|
+
Get the algorithm references.
|
|
71
|
+
|
|
72
|
+
This is used to generate the README of the BioImage Model Zoo export.
|
|
73
|
+
|
|
74
|
+
Returns
|
|
75
|
+
-------
|
|
76
|
+
str
|
|
77
|
+
Algorithm references.
|
|
78
|
+
"""
|
|
79
|
+
return HDN_REF.text + " doi: " + HDN_REF.doi
|
|
80
|
+
|
|
81
|
+
def get_algorithm_citations(self) -> list[CiteEntry]:
|
|
82
|
+
"""
|
|
83
|
+
Return a list of citation entries of the current algorithm.
|
|
84
|
+
|
|
85
|
+
This is used to generate the model description for the BioImage Model Zoo.
|
|
86
|
+
|
|
87
|
+
Returns
|
|
88
|
+
-------
|
|
89
|
+
List[CiteEntry]
|
|
90
|
+
List of citation entries.
|
|
91
|
+
"""
|
|
92
|
+
return [HDN_REF]
|
|
93
|
+
|
|
94
|
+
def get_algorithm_description(self) -> str:
|
|
95
|
+
"""
|
|
96
|
+
Get the algorithm description.
|
|
97
|
+
|
|
98
|
+
Returns
|
|
99
|
+
-------
|
|
100
|
+
str
|
|
101
|
+
Algorithm description.
|
|
102
|
+
"""
|
|
103
|
+
return HDN_DESCRIPTION
|