deepinv 0.3.2__tar.gz → 0.3.3__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.
- {deepinv-0.3.2 → deepinv-0.3.3}/PKG-INFO +21 -8
- {deepinv-0.3.2 → deepinv-0.3.3}/README.rst +6 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/__about__.py +9 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/__init__.py +1 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/cbsd68.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/cmrxrecon.py +14 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/datagenerator.py +13 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/div2k.py +4 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/fastmri.py +207 -74
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/flickr2k.py +2 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/fmd.py +2 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/kohler.py +4 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/lidc_idri.py +8 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/lsdir.py +4 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/satellite.py +13 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/set14.py +1 -1
- deepinv-0.3.3/deepinv/datasets/skmtea.py +193 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/urban100.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/utils.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/base.py +6 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/consistency.py +4 -10
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/uair.py +2 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/augmentation.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/ei.py +4 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mc.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/measplit.py +8 -9
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/distortion.py +18 -6
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/metric.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/perceptual.py +4 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/moi.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mri/measplit.py +5 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/r2r.py +3 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/regularisers.py +3 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/score.py +4 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/sure.py +7 -10
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/GSPnP.py +6 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/PDNet.py +2 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/__init__.py +1 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/artifactremoval.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/bm3d.py +3 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/diffunet.py +16 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dip.py +3 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dncnn.py +2 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/drunet.py +2 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dsccp.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/epll.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/equivariant.py +1 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/gan.py +11 -14
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/guided_diffusion.py +6 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/icnn.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/modl.py +2 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/multispectral.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/ncsnpp.py +5 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/precond.py +6 -2
- deepinv-0.3.3/deepinv/models/ram.py +1143 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/restormer.py +6 -16
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/scunet.py +3 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/swinir.py +3 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/tgv.py +4 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/tv.py +1 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/unet.py +30 -11
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/varnet.py +2 -9
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/wavdict.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/bregman.py +1 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/data_fidelity.py +2 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/distance.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/dpir.py +3 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/admm.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/optim_iterator.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/pgd.py +1 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/primal_dual_CP.py +2 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optimizers.py +6 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/prior.py +4 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/utils.py +5 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/__init__.py +10 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/blur.py +223 -54
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/cassi.py +2 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/compressed_sensing.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/forward.py +102 -32
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/__init__.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/astra.py +4 -3
- deepinv-0.3.3/deepinv/physics/functional/imresize.py +361 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/product_convolution.py +1 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/radon.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/base.py +11 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/blur.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/downsampling.py +26 -9
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/inpainting.py +5 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/mri.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/haze.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/lidar.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/mri.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/noise.py +207 -81
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/phase_retrieval.py +14 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/radio.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/remote_sensing.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/tomography.py +30 -10
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/unmixing.py +2 -1
- deepinv-0.3.3/deepinv/physics/wrappers.py +153 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/diffusion.py +10 -9
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/diffusion_sde.py +10 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/langevin.py +6 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/SKRock.py +1 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/ula.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sde_solver.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/utils.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/conftest.py +13 -11
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_adversarial.py +3 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_datasets.py +84 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_deprecated.py +6 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_generators.py +5 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_loss.py +15 -11
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_loss_train.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_metric.py +15 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_models.py +147 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_noise_model.py +37 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_optim.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_physics.py +355 -70
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_physics_functional.py +32 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_sampling.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_trainer.py +56 -39
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_unfolded.py +1 -0
- deepinv-0.3.3/deepinv/tests/test_utils.py +798 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/testing.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/trainer.py +17 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/augmentation.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/diffeomorphism.py +7 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/projective.py +8 -6
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/reflect.py +0 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/rotate.py +10 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/scale.py +3 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/__init__.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/demo.py +0 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/metric.py +0 -2
- deepinv-0.3.3/deepinv/utils/nn.py +111 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/parameters.py +0 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/phantoms.py +4 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/plotting.py +178 -148
- deepinv-0.3.3/deepinv/utils/signal.py +48 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/tensorlist.py +36 -8
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/PKG-INFO +21 -8
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/SOURCES.txt +6 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/requires.txt +12 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/docs/source/conf.py +64 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/adversarial-learning/demo_gan_imaging.py +12 -24
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_blur_tour.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_custom_prior.py +2 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_dataset.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_denoiser_tour.py +5 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_dip.py +2 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_lidar.py +1 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_microscopy_3d.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_phase_retrieval.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_physics.py +46 -9
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_physics_tour.py +0 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_remote_sensing.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_spc.py +4 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_tour_mri.py +89 -73
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_train_inpainting.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_transforms.py +2 -6
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/external-libraries/_demo_astra_tomography.py +4 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/external-libraries/demo_ri_basic.py +4 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_3D_wavelets.py +1 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_TV_minimisation.py +1 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_wavelet_prior.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/patch-priors/demo_epll.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/patch-priors/demo_patch_priors_CT.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_DPIR_deblur.py +3 -8
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_custom_optim.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_mirror_descent.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_RED_GSPnP_SR.py +3 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_vanilla_PnP.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_ddrm.py +1 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_diffpir.py +3 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_dps.py +29 -53
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_sampling.py +2 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_artifact2artifact.py +3 -6
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_ei_transforms.py +3 -8
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_equivariant_imaging.py +4 -5
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_multioperator_imaging.py +2 -4
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_n2n_denoising.py +3 -7
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_r2r_denoising.py +2 -2
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_splitting_loss.py +4 -6
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_sure_denoising.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_unsure.py +2 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_DEQ.py +1 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_LISTA.py +3 -3
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_custom_prior_unfolded.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_learned_primal_dual.py +1 -5
- deepinv-0.3.3/examples/unfolded/demo_ram.py +211 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_unfolded_constrained_LISTA.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_vanilla_unfolded.py +1 -1
- {deepinv-0.3.2 → deepinv-0.3.3}/pyproject.toml +32 -7
- deepinv-0.3.2/deepinv/physics/functional/downsampling.py +0 -5
- deepinv-0.3.2/deepinv/tests/test_utils.py +0 -174
- deepinv-0.3.2/deepinv/utils/nn.py +0 -51
- {deepinv-0.3.2 → deepinv-0.3.3}/LICENSE +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/patch_dataset.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/loss.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/functional.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mri/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/scheduler.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/sup.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/tv.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/ae.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/base.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/complex.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dynamic.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/median.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/utils.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/epll.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/fixed_point.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/drs.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/gradient_descent.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/hqs.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/spectral_methods.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/phase_retrieval.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/potential.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/convolution.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/dst.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/hist.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/interp.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/multiplier.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/rand.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/noise.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/inpainting.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/range.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/singlepixel.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/structured_random.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/time.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/noisy_datafidelity.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/diffusion.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/sampling_iterator.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/dummy.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_external_libraries.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_transform.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/adversarial.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/base.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/shift.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/temporal.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/__init__.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/deep_equilibrium.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/unfolded.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/decorators.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/logger.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/patch_extractor.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/dependency_links.txt +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/top_level.txt +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_hf_dataset.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_loading.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_optimizing_physics_parameter.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_ptychography.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_custom_kernel.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_diffusion_sde.py +0 -0
- {deepinv-0.3.2 → deepinv-0.3.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deepinv
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: DeepInverse: a PyTorch library for imaging with deep learning
|
|
5
5
|
Author: DeepInverse maintainers (see https://github.com/deepinv/deepinv/blob/main/MAINTAINERS.md)
|
|
6
6
|
License: BSD 3-Clause
|
|
@@ -14,23 +14,25 @@ Classifier: Intended Audience :: Science/Research
|
|
|
14
14
|
Classifier: License :: OSI Approved :: BSD License
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
20
|
Classifier: Topic :: Utilities
|
|
18
21
|
Classifier: Topic :: Scientific/Engineering
|
|
19
22
|
Classifier: Topic :: Software Development :: Libraries
|
|
20
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.10
|
|
21
24
|
Description-Content-Type: text/x-rst
|
|
22
25
|
License-File: LICENSE
|
|
23
26
|
Requires-Dist: numpy
|
|
24
27
|
Requires-Dist: matplotlib
|
|
25
|
-
Requires-Dist: hdf5storage
|
|
26
28
|
Requires-Dist: tqdm
|
|
27
|
-
Requires-Dist: torch
|
|
29
|
+
Requires-Dist: torch>=2.2.0
|
|
28
30
|
Requires-Dist: torchvision
|
|
29
31
|
Requires-Dist: torchmetrics
|
|
30
32
|
Requires-Dist: einops
|
|
31
|
-
Requires-Dist: wandb
|
|
32
33
|
Requires-Dist: scipy
|
|
33
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: requests
|
|
35
|
+
Requires-Dist: h5py
|
|
34
36
|
Provides-Extra: test
|
|
35
37
|
Requires-Dist: pytest; extra == "test"
|
|
36
38
|
Requires-Dist: pytest-cov; extra == "test"
|
|
@@ -45,6 +47,10 @@ Requires-Dist: sphinx_copybutton; extra == "doc"
|
|
|
45
47
|
Requires-Dist: sphinx_autoapi; extra == "doc"
|
|
46
48
|
Requires-Dist: sphinx-design; extra == "doc"
|
|
47
49
|
Requires-Dist: sphinx_sitemap<2.7.0; extra == "doc"
|
|
50
|
+
Requires-Dist: sphinxcontrib.bibtex; extra == "doc"
|
|
51
|
+
Provides-Extra: lint
|
|
52
|
+
Requires-Dist: black; extra == "lint"
|
|
53
|
+
Requires-Dist: ruff; extra == "lint"
|
|
48
54
|
Provides-Extra: denoisers
|
|
49
55
|
Requires-Dist: bm3d; extra == "denoisers"
|
|
50
56
|
Requires-Dist: bm4d<4.2.4; extra == "denoisers"
|
|
@@ -63,6 +69,9 @@ Requires-Dist: datasets; extra == "dataset"
|
|
|
63
69
|
Requires-Dist: pandas; extra == "dataset"
|
|
64
70
|
Requires-Dist: pydicom; extra == "dataset"
|
|
65
71
|
Requires-Dist: mat73; extra == "dataset"
|
|
72
|
+
Requires-Dist: natsort; extra == "dataset"
|
|
73
|
+
Provides-Extra: training
|
|
74
|
+
Requires-Dist: wandb; extra == "training"
|
|
66
75
|
Dynamic: license-file
|
|
67
76
|
|
|
68
77
|
.. image:: https://github.com/deepinv/deepinv/raw/main/docs/source/figures/deepinv_logolarge.png
|
|
@@ -109,6 +118,10 @@ To install the latest stable release of ``deepinv``, you can simply do:
|
|
|
109
118
|
|
|
110
119
|
pip install deepinv
|
|
111
120
|
|
|
121
|
+
# or using uv for faster installation
|
|
122
|
+
|
|
123
|
+
uv pip install deepinv
|
|
124
|
+
|
|
112
125
|
You can also install the latest version of ``deepinv`` directly from github:
|
|
113
126
|
|
|
114
127
|
.. code-block:: bash
|
|
@@ -215,8 +228,8 @@ Star history
|
|
|
215
228
|
:target: https://github.com/deepinv/deepinv/actions/workflows/test.yml
|
|
216
229
|
.. |Docs Status| image:: https://github.com/deepinv/deepinv/actions/workflows/documentation.yml/badge.svg
|
|
217
230
|
:target: https://github.com/deepinv/deepinv/actions/workflows/documentation.yml
|
|
218
|
-
.. |Python Version| image:: https://img.shields.io/badge/python-3.
|
|
219
|
-
:target: https://www.python.org/downloads/release/python-
|
|
231
|
+
.. |Python Version| image:: https://img.shields.io/badge/python-3.10%2B-blue
|
|
232
|
+
:target: https://www.python.org/downloads/release/python-3100/
|
|
220
233
|
.. |codecov| image:: https://codecov.io/gh/deepinv/deepinv/branch/main/graph/badge.svg?token=77JRvUhQzh
|
|
221
234
|
:target: https://codecov.io/gh/deepinv/deepinv
|
|
222
235
|
.. |pip install| image:: https://img.shields.io/pypi/dm/deepinv.svg?logo=pypi&label=pip%20install&color=fedcba
|
|
@@ -42,6 +42,10 @@ To install the latest stable release of ``deepinv``, you can simply do:
|
|
|
42
42
|
|
|
43
43
|
pip install deepinv
|
|
44
44
|
|
|
45
|
+
# or using uv for faster installation
|
|
46
|
+
|
|
47
|
+
uv pip install deepinv
|
|
48
|
+
|
|
45
49
|
You can also install the latest version of ``deepinv`` directly from github:
|
|
46
50
|
|
|
47
51
|
.. code-block:: bash
|
|
@@ -148,8 +152,8 @@ Star history
|
|
|
148
152
|
:target: https://github.com/deepinv/deepinv/actions/workflows/test.yml
|
|
149
153
|
.. |Docs Status| image:: https://github.com/deepinv/deepinv/actions/workflows/documentation.yml/badge.svg
|
|
150
154
|
:target: https://github.com/deepinv/deepinv/actions/workflows/documentation.yml
|
|
151
|
-
.. |Python Version| image:: https://img.shields.io/badge/python-3.
|
|
152
|
-
:target: https://www.python.org/downloads/release/python-
|
|
155
|
+
.. |Python Version| image:: https://img.shields.io/badge/python-3.10%2B-blue
|
|
156
|
+
:target: https://www.python.org/downloads/release/python-3100/
|
|
153
157
|
.. |codecov| image:: https://codecov.io/gh/deepinv/deepinv/branch/main/graph/badge.svg?token=77JRvUhQzh
|
|
154
158
|
:target: https://codecov.io/gh/deepinv/deepinv
|
|
155
159
|
.. |pip install| image:: https://img.shields.io/pypi/dm/deepinv.svg?logo=pypi&label=pip%20install&color=fedcba
|
|
@@ -7,3 +7,12 @@ __version__ = metadata["Version"]
|
|
|
7
7
|
__author__ = metadata["Author"]
|
|
8
8
|
__license__ = metadata["License"]
|
|
9
9
|
__url__ = metadata["Project-URL"]
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"__title__",
|
|
13
|
+
"__summary__",
|
|
14
|
+
"__version__",
|
|
15
|
+
"__author__",
|
|
16
|
+
"__license__",
|
|
17
|
+
"__url__",
|
|
18
|
+
]
|
|
@@ -8,16 +8,16 @@ from deepinv.datasets.utils import calculate_md5
|
|
|
8
8
|
error_import = None
|
|
9
9
|
try:
|
|
10
10
|
from datasets import load_dataset as load_dataset_hf, load_from_disk
|
|
11
|
-
except:
|
|
11
|
+
except ImportError: # pragma: no cover
|
|
12
12
|
error_import = ImportError(
|
|
13
13
|
"datasets is not available. Please install the datasets package with `pip install datasets`."
|
|
14
|
-
)
|
|
14
|
+
) # pragma: no cover
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class CBSD68(torch.utils.data.Dataset):
|
|
18
18
|
"""Dataset for `CBSBD68 <https://paperswithcode.com/dataset/cbsd68>`_.
|
|
19
19
|
|
|
20
|
-
Color BSD68 dataset for image restoration benchmarks is part of The Berkeley Segmentation Dataset and Benchmark
|
|
20
|
+
Color BSD68 dataset for image restoration benchmarks is part of The Berkeley Segmentation Dataset and Benchmark from :footcite:t:`martin2001database`.
|
|
21
21
|
It is used for measuring image restoration algorithms performance. It contains 68 images.
|
|
22
22
|
|
|
23
23
|
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
from typing import Any, Callable, Optional, Union
|
|
2
2
|
from pathlib import Path
|
|
3
3
|
import os
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
try:
|
|
6
|
+
from natsort import natsorted
|
|
7
|
+
except ImportError: # pragma: no cover
|
|
8
|
+
natsorted = ImportError(
|
|
9
|
+
"natsort is not available. In order to use CMRxReconSliceDataset, please install the natsort package with `pip install natsort`."
|
|
10
|
+
) # pragma: no cover
|
|
11
|
+
|
|
5
12
|
from tqdm import tqdm
|
|
6
13
|
from warnings import warn
|
|
7
14
|
|
|
@@ -145,6 +152,9 @@ class CMRxReconSliceDataset(FastMRISliceDataset, MRIMixin):
|
|
|
145
152
|
f"Data or mask folder does not exist. Please set root, data_dir and mask_dir properly."
|
|
146
153
|
)
|
|
147
154
|
|
|
155
|
+
if isinstance(natsorted, ImportError):
|
|
156
|
+
raise natsorted
|
|
157
|
+
|
|
148
158
|
all_fnames = natsorted(
|
|
149
159
|
f
|
|
150
160
|
for f in (self.root / self.data_dir).rglob("**/*.mat")
|
|
@@ -210,7 +220,7 @@ class CMRxReconSliceDataset(FastMRISliceDataset, MRIMixin):
|
|
|
210
220
|
kspace = kspace.moveaxis(-1, 1) # shape CTWH
|
|
211
221
|
target = None
|
|
212
222
|
|
|
213
|
-
# The following is akin to :class:`deepinv.datasets.fastmri.MRISliceTransform` and will be moved
|
|
223
|
+
# TODO The following is akin to :class:`deepinv.datasets.fastmri.MRISliceTransform` and will be moved
|
|
214
224
|
# to a separate CMRxReconTransform in future.
|
|
215
225
|
|
|
216
226
|
# Load mask
|
|
@@ -260,6 +270,6 @@ class CMRxReconSliceDataset(FastMRISliceDataset, MRIMixin):
|
|
|
260
270
|
|
|
261
271
|
if self.apply_mask:
|
|
262
272
|
kspace = kspace * mask + 0.0
|
|
263
|
-
return target, kspace, {"mask": mask.float()}
|
|
273
|
+
return target, kspace.float(), {"mask": mask.float()}
|
|
264
274
|
else:
|
|
265
|
-
return target, kspace
|
|
275
|
+
return target, kspace.float()
|
|
@@ -4,7 +4,13 @@ from typing import TYPE_CHECKING, Union, Callable
|
|
|
4
4
|
from tqdm import tqdm
|
|
5
5
|
import os
|
|
6
6
|
from warnings import warn
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
try:
|
|
9
|
+
import h5py
|
|
10
|
+
except ImportError: # pragma: no cover
|
|
11
|
+
h5py = ImportError(
|
|
12
|
+
"The h5py package is not installed. Please install it with `pip install h5py`."
|
|
13
|
+
) # pragma: no cover
|
|
8
14
|
import torch
|
|
9
15
|
|
|
10
16
|
from torch import Tensor
|
|
@@ -60,6 +66,9 @@ class HDF5Dataset(data.Dataset):
|
|
|
60
66
|
self.load_physics_generator_params = load_physics_generator_params
|
|
61
67
|
self.cast = lambda x: x.type(complex_dtype if x.is_complex() else dtype)
|
|
62
68
|
|
|
69
|
+
if isinstance(h5py, ImportError):
|
|
70
|
+
raise h5py
|
|
71
|
+
|
|
63
72
|
hd5 = h5py.File(path, "r")
|
|
64
73
|
suffix = ("_train" if train else "_test") if split is None else f"_{split}"
|
|
65
74
|
|
|
@@ -203,6 +212,9 @@ def generate_dataset(
|
|
|
203
212
|
:param torch.device, str device: device, e.g. cpu or gpu, on which to generate measurements. All data is moved back to cpu before saving.
|
|
204
213
|
|
|
205
214
|
"""
|
|
215
|
+
if isinstance(h5py, ImportError):
|
|
216
|
+
raise h5py
|
|
217
|
+
|
|
206
218
|
if test_dataset is None and train_dataset is None and val_dataset is None:
|
|
207
219
|
raise ValueError("No train or test datasets provided.")
|
|
208
220
|
|
|
@@ -14,8 +14,9 @@ from deepinv.datasets.utils import (
|
|
|
14
14
|
class DIV2K(torch.utils.data.Dataset):
|
|
15
15
|
"""Dataset for `DIV2K Image Super-Resolution Challenge <https://data.vision.ee.ethz.ch/cvl/DIV2K>`_.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
The DIV2K dataset from :footcite:t:`agustsson2017ntire` is a high-quality image dataset originally built for image super-resolution tasks.
|
|
18
18
|
|
|
19
|
+
Images have varying sizes with up to 2040 vertical pixels, and 2040 horizontal pixels.
|
|
19
20
|
|
|
20
21
|
**Raw data file structure:** ::
|
|
21
22
|
|
|
@@ -51,6 +52,8 @@ class DIV2K(torch.utils.data.Dataset):
|
|
|
51
52
|
>>> print(len(dataset)) # check that we have 100 images
|
|
52
53
|
100
|
|
53
54
|
>>> shutil.rmtree("DIV2K") # remove raw data from disk
|
|
55
|
+
|
|
56
|
+
|
|
54
57
|
"""
|
|
55
58
|
|
|
56
59
|
# https://data.vision.ee.ethz.ch/cvl/DIV2K/
|