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