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