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.
Files changed (267) hide show
  1. {deepinv-0.3.2 → deepinv-0.3.3}/PKG-INFO +21 -8
  2. {deepinv-0.3.2 → deepinv-0.3.3}/README.rst +6 -2
  3. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/__about__.py +9 -0
  4. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/__init__.py +1 -0
  5. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/cbsd68.py +3 -3
  6. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/cmrxrecon.py +14 -4
  7. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/datagenerator.py +13 -1
  8. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/div2k.py +4 -1
  9. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/fastmri.py +207 -74
  10. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/flickr2k.py +2 -0
  11. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/fmd.py +2 -1
  12. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/kohler.py +4 -1
  13. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/lidc_idri.py +8 -5
  14. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/lsdir.py +4 -1
  15. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/satellite.py +13 -5
  16. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/set14.py +1 -1
  17. deepinv-0.3.3/deepinv/datasets/skmtea.py +193 -0
  18. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/urban100.py +2 -2
  19. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/utils.py +2 -2
  20. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/base.py +6 -5
  21. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/consistency.py +4 -10
  22. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/uair.py +2 -4
  23. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/augmentation.py +3 -3
  24. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/ei.py +4 -4
  25. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mc.py +0 -1
  26. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/measplit.py +8 -9
  27. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/distortion.py +18 -6
  28. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/metric.py +3 -3
  29. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/perceptual.py +4 -4
  30. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/moi.py +3 -3
  31. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mri/measplit.py +5 -7
  32. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/r2r.py +3 -4
  33. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/regularisers.py +3 -2
  34. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/score.py +4 -3
  35. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/sure.py +7 -10
  36. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/GSPnP.py +6 -5
  37. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/PDNet.py +2 -3
  38. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/__init__.py +1 -0
  39. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/artifactremoval.py +1 -1
  40. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/bm3d.py +3 -4
  41. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/diffunet.py +16 -7
  42. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dip.py +3 -5
  43. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dncnn.py +2 -3
  44. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/drunet.py +2 -4
  45. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dsccp.py +2 -2
  46. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/epll.py +3 -1
  47. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/equivariant.py +1 -2
  48. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/gan.py +11 -14
  49. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/guided_diffusion.py +6 -2
  50. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/icnn.py +3 -3
  51. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/modl.py +2 -1
  52. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/multispectral.py +3 -1
  53. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/ncsnpp.py +5 -3
  54. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/precond.py +6 -2
  55. deepinv-0.3.3/deepinv/models/ram.py +1143 -0
  56. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/restormer.py +6 -16
  57. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/scunet.py +3 -5
  58. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/swinir.py +3 -4
  59. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/tgv.py +4 -4
  60. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/tv.py +1 -3
  61. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/unet.py +30 -11
  62. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/varnet.py +2 -9
  63. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/wavdict.py +2 -2
  64. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/bregman.py +1 -2
  65. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/data_fidelity.py +2 -1
  66. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/distance.py +0 -1
  67. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/dpir.py +3 -2
  68. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/admm.py +1 -1
  69. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/optim_iterator.py +0 -1
  70. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/pgd.py +1 -2
  71. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/primal_dual_CP.py +2 -5
  72. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optimizers.py +6 -5
  73. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/prior.py +4 -7
  74. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/utils.py +5 -2
  75. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/__init__.py +10 -1
  76. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/blur.py +223 -54
  77. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/cassi.py +2 -1
  78. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/compressed_sensing.py +1 -1
  79. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/forward.py +102 -32
  80. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/__init__.py +1 -1
  81. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/astra.py +4 -3
  82. deepinv-0.3.3/deepinv/physics/functional/imresize.py +361 -0
  83. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/product_convolution.py +1 -5
  84. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/radon.py +1 -1
  85. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/base.py +11 -2
  86. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/blur.py +1 -1
  87. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/downsampling.py +26 -9
  88. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/inpainting.py +5 -7
  89. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/mri.py +1 -1
  90. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/haze.py +3 -1
  91. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/lidar.py +3 -1
  92. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/mri.py +2 -2
  93. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/noise.py +207 -81
  94. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/phase_retrieval.py +14 -3
  95. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/radio.py +2 -2
  96. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/remote_sensing.py +2 -2
  97. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/tomography.py +30 -10
  98. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/unmixing.py +2 -1
  99. deepinv-0.3.3/deepinv/physics/wrappers.py +153 -0
  100. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/diffusion.py +10 -9
  101. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/diffusion_sde.py +10 -2
  102. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/langevin.py +6 -4
  103. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling.py +3 -1
  104. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/SKRock.py +1 -3
  105. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/ula.py +2 -2
  106. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sde_solver.py +1 -1
  107. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/utils.py +2 -2
  108. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/conftest.py +13 -11
  109. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_adversarial.py +3 -1
  110. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_datasets.py +84 -5
  111. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_deprecated.py +6 -1
  112. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_generators.py +5 -5
  113. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_loss.py +15 -11
  114. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_loss_train.py +1 -1
  115. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_metric.py +15 -7
  116. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_models.py +147 -2
  117. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_noise_model.py +37 -0
  118. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_optim.py +1 -1
  119. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_physics.py +355 -70
  120. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_physics_functional.py +32 -3
  121. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_sampling.py +2 -2
  122. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_trainer.py +56 -39
  123. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_unfolded.py +1 -0
  124. deepinv-0.3.3/deepinv/tests/test_utils.py +798 -0
  125. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/testing.py +0 -1
  126. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/trainer.py +17 -5
  127. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/augmentation.py +1 -1
  128. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/diffeomorphism.py +7 -3
  129. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/projective.py +8 -6
  130. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/reflect.py +0 -3
  131. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/rotate.py +10 -1
  132. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/scale.py +3 -2
  133. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/__init__.py +3 -3
  134. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/demo.py +0 -3
  135. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/metric.py +0 -2
  136. deepinv-0.3.3/deepinv/utils/nn.py +111 -0
  137. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/parameters.py +0 -3
  138. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/phantoms.py +4 -0
  139. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/plotting.py +178 -148
  140. deepinv-0.3.3/deepinv/utils/signal.py +48 -0
  141. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/tensorlist.py +36 -8
  142. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/PKG-INFO +21 -8
  143. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/SOURCES.txt +6 -1
  144. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/requires.txt +12 -4
  145. {deepinv-0.3.2 → deepinv-0.3.3}/docs/source/conf.py +64 -0
  146. {deepinv-0.3.2 → deepinv-0.3.3}/examples/adversarial-learning/demo_gan_imaging.py +12 -24
  147. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_blur_tour.py +1 -1
  148. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_custom_prior.py +2 -3
  149. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_dataset.py +1 -1
  150. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_denoiser_tour.py +5 -5
  151. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_dip.py +2 -7
  152. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_lidar.py +1 -2
  153. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_microscopy_3d.py +1 -1
  154. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_phase_retrieval.py +0 -1
  155. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_physics.py +46 -9
  156. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_physics_tour.py +0 -1
  157. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_remote_sensing.py +3 -3
  158. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_spc.py +4 -5
  159. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_tour_mri.py +89 -73
  160. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_train_inpainting.py +1 -1
  161. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_transforms.py +2 -6
  162. {deepinv-0.3.2 → deepinv-0.3.3}/examples/external-libraries/_demo_astra_tomography.py +4 -4
  163. {deepinv-0.3.2 → deepinv-0.3.3}/examples/external-libraries/demo_ri_basic.py +4 -5
  164. {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_3D_wavelets.py +1 -3
  165. {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_TV_minimisation.py +1 -2
  166. {deepinv-0.3.2 → deepinv-0.3.3}/examples/optimization/demo_wavelet_prior.py +1 -1
  167. {deepinv-0.3.2 → deepinv-0.3.3}/examples/patch-priors/demo_epll.py +2 -2
  168. {deepinv-0.3.2 → deepinv-0.3.3}/examples/patch-priors/demo_patch_priors_CT.py +2 -2
  169. {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_DPIR_deblur.py +3 -8
  170. {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_custom_optim.py +1 -1
  171. {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_PnP_mirror_descent.py +3 -3
  172. {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_RED_GSPnP_SR.py +3 -7
  173. {deepinv-0.3.2 → deepinv-0.3.3}/examples/plug-and-play/demo_vanilla_PnP.py +1 -1
  174. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_ddrm.py +1 -4
  175. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_diffpir.py +3 -4
  176. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_dps.py +29 -53
  177. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_sampling.py +2 -5
  178. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_artifact2artifact.py +3 -6
  179. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_ei_transforms.py +3 -8
  180. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_equivariant_imaging.py +4 -5
  181. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_multioperator_imaging.py +2 -4
  182. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_n2n_denoising.py +3 -7
  183. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_r2r_denoising.py +2 -2
  184. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_splitting_loss.py +4 -6
  185. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_sure_denoising.py +1 -1
  186. {deepinv-0.3.2 → deepinv-0.3.3}/examples/self-supervised-learning/demo_unsure.py +2 -3
  187. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_DEQ.py +1 -3
  188. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_LISTA.py +3 -3
  189. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_custom_prior_unfolded.py +1 -1
  190. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_learned_primal_dual.py +1 -5
  191. deepinv-0.3.3/examples/unfolded/demo_ram.py +211 -0
  192. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_unfolded_constrained_LISTA.py +1 -1
  193. {deepinv-0.3.2 → deepinv-0.3.3}/examples/unfolded/demo_vanilla_unfolded.py +1 -1
  194. {deepinv-0.3.2 → deepinv-0.3.3}/pyproject.toml +32 -7
  195. deepinv-0.3.2/deepinv/physics/functional/downsampling.py +0 -5
  196. deepinv-0.3.2/deepinv/tests/test_utils.py +0 -174
  197. deepinv-0.3.2/deepinv/utils/nn.py +0 -51
  198. {deepinv-0.3.2 → deepinv-0.3.3}/LICENSE +0 -0
  199. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/__init__.py +0 -0
  200. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/datasets/patch_dataset.py +0 -0
  201. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/__init__.py +0 -0
  202. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/adversarial/__init__.py +0 -0
  203. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/loss.py +0 -0
  204. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/__init__.py +0 -0
  205. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/metric/functional.py +0 -0
  206. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/mri/__init__.py +0 -0
  207. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/scheduler.py +0 -0
  208. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/sup.py +0 -0
  209. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/loss/tv.py +0 -0
  210. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/ae.py +0 -0
  211. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/base.py +0 -0
  212. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/complex.py +0 -0
  213. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/dynamic.py +0 -0
  214. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/median.py +0 -0
  215. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/models/utils.py +0 -0
  216. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/__init__.py +0 -0
  217. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/epll.py +0 -0
  218. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/fixed_point.py +0 -0
  219. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/__init__.py +0 -0
  220. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/drs.py +0 -0
  221. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/gradient_descent.py +0 -0
  222. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/hqs.py +0 -0
  223. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/optim_iterators/spectral_methods.py +0 -0
  224. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/phase_retrieval.py +0 -0
  225. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/optim/potential.py +0 -0
  226. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/convolution.py +0 -0
  227. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/dst.py +0 -0
  228. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/hist.py +0 -0
  229. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/interp.py +0 -0
  230. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/multiplier.py +0 -0
  231. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/functional/rand.py +0 -0
  232. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/__init__.py +0 -0
  233. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/generator/noise.py +0 -0
  234. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/inpainting.py +0 -0
  235. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/range.py +0 -0
  236. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/singlepixel.py +0 -0
  237. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/structured_random.py +0 -0
  238. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/physics/time.py +0 -0
  239. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/__init__.py +0 -0
  240. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/noisy_datafidelity.py +0 -0
  241. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/__init__.py +0 -0
  242. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/diffusion.py +0 -0
  243. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/sampling/sampling_iterators/sampling_iterator.py +0 -0
  244. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/dummy.py +0 -0
  245. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_external_libraries.py +0 -0
  246. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/tests/test_transform.py +0 -0
  247. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/__init__.py +0 -0
  248. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/training/adversarial.py +0 -0
  249. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/__init__.py +0 -0
  250. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/base.py +0 -0
  251. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/shift.py +0 -0
  252. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/transform/temporal.py +0 -0
  253. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/__init__.py +0 -0
  254. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/deep_equilibrium.py +0 -0
  255. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/unfolded/unfolded.py +0 -0
  256. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/decorators.py +0 -0
  257. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/logger.py +0 -0
  258. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv/utils/patch_extractor.py +0 -0
  259. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/dependency_links.txt +0 -0
  260. {deepinv-0.3.2 → deepinv-0.3.3}/deepinv.egg-info/top_level.txt +0 -0
  261. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_hf_dataset.py +0 -0
  262. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_loading.py +0 -0
  263. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_optimizing_physics_parameter.py +0 -0
  264. {deepinv-0.3.2 → deepinv-0.3.3}/examples/basics/demo_ptychography.py +0 -0
  265. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_custom_kernel.py +0 -0
  266. {deepinv-0.3.2 → deepinv-0.3.3}/examples/sampling/demo_diffusion_sde.py +0 -0
  267. {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.2
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.9
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<2.7
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: natsort
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.9%2B-blue
219
- :target: https://www.python.org/downloads/release/python-390/
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.9%2B-blue
152
- :target: https://www.python.org/downloads/release/python-390/
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
+ ]
@@ -17,3 +17,4 @@ from .fmd import FMD
17
17
  from .kohler import Kohler
18
18
  from .utils import download_archive
19
19
  from .satellite import NBUDataset
20
+ from .skmtea import SKMTEASliceDataset
@@ -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
- from natsort import natsorted
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
- import h5py
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
- Images have varying sizes with up to 2040 vertical pixels, and 2040 horizontal pixels.
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/