Skip to content

Conversation

@nucli-vicky
Copy link
Contributor

@nucli-vicky nucli-vicky commented Oct 1, 2025

Rough draft for now. WIP

To do (at least):

  • Support nibabel and blosc2 for PatchesDataset as well
  • Support giving a 'measurements' and 'ground-truth' dir
  • Refactor (it's probably not in the correct place right now)
  • Benchmark loading methods
  • Support 2D slicing and not just 3D patches

Checks to be done before submitting your PR

  • python3 -m pytest deepinv/tests runs successfully.
  • black . runs successfully.
  • make html runs successfully (in the docs/ directory).
  • Updated docstrings related to the changes (as applicable).
  • Added an entry to the CHANGELOG.rst.

@Andrewwango
Copy link
Collaborator

Hey Vicky, if any of the functionality proposed here can be integrated with the structural changes proposed in #768 that would be great! in particular with e.g. load_nifti function

@nucli-vicky
Copy link
Contributor Author

indeed, I originally opened a PR on your fork for #768

@codecov
Copy link

codecov bot commented Oct 3, 2025

Codecov Report

❌ Patch coverage is 92.81768% with 13 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.98%. Comparing base (21527e0) to head (a756192).
⚠️ Report is 10 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
deepinv/datasets/random_sampler.py 91.76% 2 Missing and 5 partials ⚠️
deepinv/utils/io_utils.py 75.00% 3 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #806      +/-   ##
==========================================
+ Coverage   83.92%   83.98%   +0.06%     
==========================================
  Files         206      208       +2     
  Lines       20691    20905     +214     
  Branches     2824     2861      +37     
==========================================
+ Hits        17365    17558     +193     
- Misses       2409     2418       +9     
- Partials      917      929      +12     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@nucli-vicky
Copy link
Contributor Author

nucli-vicky commented Oct 4, 2025

  • Add blosc2 to dataset optional dependencies
  • Maybe add a hint or warning when loading .nii.gz files without indexed-gzip available
  • Add blosc2 and nifti to test_PatchDataset3D
  • Add PatchDataset3D to userguide.
  • Robustness to images with channels.

@nucli-vicky
Copy link
Contributor Author

@Andrewwango the load functions added here were built from #768 . The functionality from that PR should remain since the default arguments would turn to what load_np and load_nifti did there, apart from
(i) I removed the unsqueeze(0). I am not sure what is the best way to handle (un)squeezing to keep things as general as possible, but the unsqueeze assumes data is of a format without channels, so probably not ideal?
(ii) How the dtypes are handled. See also Jérémy's comment. For now I handle this with the dtype argument (not added to load_np right now, will fix later), but for the future we could make use of headers when loading nifti files. Just letting users (or datasets) specify dtype to convert to seems fine for me as well.

Overall, what's the best way to proceed? #768 does a lot more than adding these 3 load functions; I don't want to give it too many merge conflicts..

@nucli-vicky
Copy link
Contributor Author

nucli-vicky commented Oct 4, 2025

Does it make sense to add this to the base datasets in the user guide? It does allow users to work with their own dataset, they need to provide a directory with volumetric data in nifti, blosc2 or npy format.
Additionally, what would be the correct file to put the PatchDataset3D class in? I feel like putting it into patch_dataset.py is a bit misleading since its behaviour / usecase is different from PatchDataset.

@Andrewwango
Copy link
Collaborator

Hey Vicky:

  • I wouldn't worry about conflicts between this PR and dinv.io module and clean up utils #768 - the load_np and load_nifti functions there are small, and happy to be overridden by your contribution. Thanks for letting me know the difference though! I will update you when I progress with it, as I may rename some things
  • The current PatchDataset could do with revamping to generalise it and make it more user friendly - do you think you could merge the functionality of it with PatchDataset3D, where it generalises patching to different dims? Happy to keep it in either file but we could definitely signpost better to it in the datasets user guide.
  • Should get_loader go into the io funcs as an overall "dinv.io.load" that autodetects how to load? (this is a common theme in other io libraries)

@nucli-vicky
Copy link
Contributor Author

PatchDataset and PatchDataset3D (or nd?) have quite different use-cases and functionality.
(i) Sampling is different (predetermined patches over each image, each epoch all those patches are sampled vs. a single random patch from each image).
(ii) In PatchDataset, the entire dataset fits into memory and is passed as a single tensor. PatchDataset3D assumes this is not possible, and even moreso supports cases where even a single volume is too large.

Merging them is possible, but would require an argument controlling the sampling method and general x and y arguments which can be either a Path/str or a tensor. Optionally we could auto revert to the current PatchDataset sampling method if tensors are passed, which actually makes sense: if the dataset fits entirely into memory, that sampling method makes more sense than defining an epoch as merely sampling once from each image. So it is possible, without hurting backwards compatibility (although in that case the stride argument would be ignored if we get paths).

However, this would reduce readability and maintainability + silently changing the sampling method based on the types of x/y does not seem ideal. In essence it would be a single class with two types of behaviors depending on its arguments. It's possible, but may not be desired? Perhaps it's better to have two intuitive classes than a single class with non-straightforward behavior?

Especially since, ideally PatchDataset3/ND should also be able to handle measurements with different resolutions for super-resolution datasets, so the current proposal will already gain some complexity.

@nucli-vicky
Copy link
Contributor Author

Good idea to move the get_loader functionality into io funcs! One potential issue that there exist at least two categories of formats: those supporting memory mapping vs. those that need to be loaded as whole. So these different formats would have different API arguments. We could however add the arguments for memory mapping to all loaders, which are simply ignored (with a warning?) if the format does not support memory mapping.

@nucli-vicky
Copy link
Contributor Author

Note: current PatchDataset has some resemblance to a sliding window set-up. It might make more sense to merge a sliding window loader and the current PatchDataset functionality.

@Andrewwango
Copy link
Collaborator

Re. PatchDataset great points - maybe we overloaded the meaning of "patch" here. I agree that they should be two separate things. Maybe the following could clean it up:

  1. Keep PatchDataset, and add a note to the docstring that this only handles 2D
  2. Rename PatchDataset3D to PatchRandomSamplerDataset or something, because, as you said, the functionality is different to that of PatchDataset. This dataset can also generalise to nd - I assume also 2D? So that this dataset functionality is general and orthogonal to that of PatchDataset

@Andrewwango
Copy link
Collaborator

Re. get_loader, I'm not an expert, but if you think that there are one or two arguments that would be common to many of the loader possibilities, I'm happy to add them explicitly and mention in the docstring that they are used for some data types and unused for others. Otherwise I think the most general way woud be just to have **loader_kwargs and pass that onto the specific loader, so that the user can pass whatever they want. I would say that the general loader is for users to do a quick demo and if they want more optimised functionality to speed up they should use the specific one instead (we should add warnings encouraging the user to do so)

@nucli-vicky
Copy link
Contributor Author

Re. PatchDataset Good suggestion, will indeed rename like this. Should I create a new file for it or put it in the base.py folder of datasets?

Re. get_loader, nice idea. I think however it's a bit outside the scope of this PR to already create this general util. I'll add a method set_loader to the class which for now does the same as get_loader in the current proposal. In the future we can change it to smth like

def set_loader(self, format : str):
   assert format in self.allowed_formats # or some global var for files supporting memory mapping
   self.load = get_loader(format)

@nucli-vicky
Copy link
Contributor Author

nucli-vicky commented Oct 4, 2025

Also, in the tests right now I use the brainweb_dl tool to download some example files. This adds yet another dependency to install during test + downloading takes time..
Maybe we could just create some zero/one arrays or 'phantoms' and save them instead of downloading. It does not test on "real" data but that shouldn't affect whether the test correctly evaluates the class functionality.

@Andrewwango
Copy link
Collaborator

Andrewwango commented Oct 4, 2025

Re. brainweb: we have both a demo volume and a demo slice available in the deepinv huggingface https://huggingface.co/datasets/deepinv/images/tree/main which you can load with dinv.utils.load_example("brainweb_t1_ICBM_1mm_subject_0.npy") or `brainweb_t1_ICBM_1mm_subject_0_slice_0.npy". Saves you from having to use brainweb - we don't want to be spending overhead loading nii.gz files. Let me know if you want me to upload anything else to the huggingface so you can use it for tests!

PS: here is a full list of demo data download/load functionality we have in deepinv: https://deepinv.github.io/deepinv/user_guide/other/utils.html#other-utils

@Andrewwango Andrewwango mentioned this pull request Oct 4, 2025
11 tasks
@nucli-vicky
Copy link
Contributor Author

@Andrewwango I removed the duplicate code in the io_utils.py by placing the patching logic entirely inside the dataset. This is fine for now; as the RandomPatchSampler is the only functionality that requires it. If in the future more features require it, we can look to refactor, but right now this seems to me the "cleanest" way to do things.

Also parametrized the tests, thanks for the suggestion!
Tried to address and fix most of your comments.

Copy link
Collaborator

@Andrewwango Andrewwango left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good! Thanks for you updates - some more smaller comments:

@nucli-vicky
Copy link
Contributor Author

@Andrewwango decided to indeed add support for the custom loader! It might not be in the easiest way, but the flexibility is there now, and I think making the constraints on the custom loader less tight would greatly increase code complexity..

Copy link
Collaborator

@Andrewwango Andrewwango left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @nucli-vicky - one final comment + a comment from the previous review left to address, then we're good to go!

@nucli-vicky
Copy link
Contributor Author

Thanks @Andrewwango . It seems like some of my responses on the comments had some issues, so I was unaware they were not visible, which is a bit annoying. I just now made them visible finally.

@deepinv deepinv deleted a comment from github-actions bot Oct 14, 2025
Copy link
Collaborator

@Andrewwango Andrewwango left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thanks @nucli-vicky !! Happy to merge once checks pass

@nucli-vicky
Copy link
Contributor Author

@Andrewwango I will have a look to improve the test coverage. The only functionality that should additionally be included in the tests now is the custom loader (maybe make it return a torch.Tensor? Also modify this bit in the docstring that tensor returns are allowed now).
One downside of the codecov is that it counts raise RuntimeError as a line which needs to be covered in tests. I don't think this is something we want?

@nucli-vicky
Copy link
Contributor Author

@Andrewwango the codecov is now only because of the raise RuntimeErrors not triggering. I think this is fine?
Maybe more broadly, is it possible to exclude these things from codecov? I think if we want to target raises being triggered during tests this would result in a combination of
(i) complexifying the tests, by a lot
(ii) discouraging the raising of errors, which leads to less informative errors being displayed to users, or silent bugs..

@Andrewwango
Copy link
Collaborator

Yes use on the except # pragma: no cover (you can search for instances where it's used elsewhere in the library)

@nucli-vicky
Copy link
Contributor Author

@Andrewwango thanks!

@Andrewwango Andrewwango merged commit 0373e84 into deepinv:main Oct 16, 2025
8 checks passed
@nucli-vicky nucli-vicky deleted the patchdataset3d branch October 17, 2025 18:51
Andrewwango added a commit that referenced this pull request Nov 14, 2025
* 3D Total variation priors (#745)

* 3D denoising variational

* comments

* comments jeremy

* Remove concurrency settings from gpu_docs.yml (#850)

* Remove concurrency settings from gpu_docs.yml

final CI fixes

* Remove concurrency settings from test_gpu.yml

Removed concurrency settings from the GPU test workflow.

* Refine Codecov upload condition for Linux only

* Update Codecov upload condition in workflow

Restrict Codecov upload to Linux with Python 3.10 only.

* Fix astra test failing on GPU (#841)

* fix normalize threshold in astra tests

* black

* Fix test transform on GPU (#852)

Co-authored-by: Andrew Wang <[email protected]>

* Fix broken download Set14 (#845)

* .

* fix

* adapt docs & use utils

* changelog

* Fix py3.9 not supported by recent coverage version (#856)

* .

* .

* Follow up to #856 (#857)

* Robustify CI for Python 3.9 (#858)

* Robustify CI for Python 3.9

* Update test_pr.yml

* Fix pip install command for Python 3.9

* Update test_pr.yml

* Update CI workflow for deepinv installation

Refactor installation steps for deepinv in CI workflow to handle Python 3.9 compatibility.

* Add compatibility step for Python 3.9 in workflow

Add step to modify pyproject.toml for Python 3.9 compatibility.

* Refactor deepinv installation steps in workflow

Removed conditional installation for Python 3.9 and adjusted the installation step for deepinv dependencies.

* Support 3D patches datasets (#806)

* Nibabel test hotfix (#863)

* Nibabel test hotfix

* Require 'blosc2' for the test dataset

Added a dependency check for 'blosc2' in the test.

* Typing optim (#827)

* distance typed

* dpir

* data fidelity

* fix callable

* bregman

* fix callable distance

* epll

* start optimizers.py

* phase retrieval

* start utils

* utils fixes

* fix circular import from physics

* bregman returns

* data fid phsycis & return

* distance returns

* epll returns

* opt & phase retrieval

* return spectral wrapper

* future annotations

* _reconstruction_step

* utils

* add suggestions

* finish optimizers.py

* Gentler loader check (#871)

* Gentler loader check

* remove codecov from test

* black

* add wee comment

* Fix error handling for CBSD68 dataset (#868)

* fix error handling

* fix

* suggestions

* add PR #723 in CHANGELOG; fix some minor typos (#860)

* add PR #723 in CHANGELOG; fix some minor typos

* update CHANGELOG

* Fix DDRM citation to reference Kawar et al. 2022 (#876)

* Initial plan

* Fix DDRM reference to cite Kawar et al. 2022

Co-authored-by: tachella <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: tachella <[email protected]>

* Allow for complex data inside Wavelets (#738)

* Update mri.py

* Update mri.py

* Added Complex support

* Added support for complex data

* reformat

* Undo MRI change

* More fixes

* More fixes

* yet more fixes, gosh why am i like this

* Finally done

* Take in comments

* fix psnr and add performance checks

---------

Co-authored-by: German Shâma Wache <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>

* add self-sup eval + history fixes (#777)

* add self-sup eval + history fixes

* changelog

* avoid using losses as metrics + add explicit model inference with .eval + trainer tests

* add docs warning

* remove loss docstring from metric

* add missing docstrings

* small fix

* doc fixes

* doc fixes

* fixes

* fix adversarial

* fixes

* fix bugs

* black

* reblack

* jeremy's comments

* improve docs explanation

* unsure + community + generate_datasets fix

* early_stop int + fix doc typo

* fix docs

* add pragma

* andrew's comments

* docstring compute_metrics

* change names + test

* still some fixes to go

* black

* add train_metrics_history

* fix wandb bug

* black + docs fixes

* black + docs fixes

* fix

* fix class link

* re-order

* Update deepinv/training/trainer.py

Co-authored-by: Andrew Wang <[email protected]>

* andrew's comments

* andrew's comments

* fix julian issue

* docstring fixes

---------

Co-authored-by: Andrew Wang <[email protected]>

* Add 3D variants of CNN networks (#869)

* dncnn

* gan

* .

* ruff check

* fix ordering test_pad

* maxpool unet nd

* icnn

* dsccp

* PDNet

* fix icnn

* fix dim drunet

* pragma

* fix dip

* test dsccp 3D

* icnn 3D test

* more tests

* test PDNet

* tests GAN

* .

* test all modes drunet + fix bug from main

* changelog

* clean dummy

* remove c variable

* fix doc rician noise

* 3d models -> denoisers

* warnings

* fixdim doc

* userguide

* syntax

* Fix LsdirHR download (#866)

* .

* ruff + fix docs

* add proposed train glob

* changelog

* fix docstring randompatchsampler

* fix sphynx?

* pragma

* pragma

* fix denoiser docs

* `dinv.io` module and clean up utils (#768)

* start develpoing io submodule + modify examples

* add scipy load mat

* fix doc

* add references to DIP demo (idk why this hasn't been added before)

* add raster

* io -> io_utils, signal -> signals

* checks

* ISMRMD loading

* add all tests

* fix optional deps

* add new example

* fix example

* changelog

* fix docs

* oops

* fix doc

* update typing

* remove load_np and load_nifit in preparation for merge from vicky PR

* black

* test assert in doctest

* add nifti vicky comment + io_utils -> io

* pydicom rescale + lidc uses load_dicom

* fix test

* fix typing in io and add kwargs

* fix sphinx typing

* fix test

* fix doc

* vicky comments

* vicky comment

* fix doc

* blosc2 test

* PET comment

* Minor README fix (#882)

* fix (#885)

Co-authored-by: mh-nguyen712 <[email protected]>

* Minor trainer docstring fixes (#884)

* io -> utils.io

* improve docstring

* very minor fix

* Fix formatting in contributing section of README (#888)

* Fix #887 (#890)

* Move changelog.rst to docs (#889)

* init

* fix links

* fix links

* fix double changelog

* change pytorch link

* remove llm bs

* black

* fix docs

* Update .github/workflows/release.yml

Co-authored-by: Minh Hai Nguyen <[email protected]>

* fix ghs

* fix ghs

---------

Co-authored-by: Minh Hai Nguyen <[email protected]>

* Enable ruff rule N805 (#892)

* enable ruff rule N805

Co-authored-by: Jérémy Scanvic <[email protected]>

* ruff check --fix --unsafe-fixes

Co-authored-by: Jérémy Scanvic <[email protected]>

---------

Co-authored-by: Andrewwango <[email protected]>

* Fix announcement text in conf.py (#901)

* Update link to changelog in PR template (#903)

* Fix docstring formatting in BaseSDE class (#902)

* Refactor release workflow (#914)

* Refactor release workflow by removing CI checks

Remove CI status check step from release workflow

* fixes

* fixes

* black

* Release v0.3.6 (#917)

Co-authored-by: tachella <[email protected]>

* Fix license formatting in CITATION.cff (#920)

* Fix license formatting in CITATION.cff

* Create workflow to validate CITATION.cff

Add GitHub Actions workflow to validate CITATION.cff file

* Add check_citation.yml workflow file

* Fix license format in CITATION.cff

* Add DOI and version to CITATION.cff

* Warn inconsistent upsampling parameters in SwinIR (#909)

* add a warning to SwinIR

* update the changelog

* let test be skipped when timm is absent (#922)

* Enable ruff rule E402 (#910)

* enable rule E402

Co-authored-by: Jérémy Scanvic <[email protected]>

* ignore E402 in the examples

Co-authored-by: Jérémy Scanvic <[email protected]>

* disable E402 in deepinv/__init__.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* pull changes from original PR

* fix the import location

* put back the weird named import

---------

Co-authored-by: Thibaut Modrzyk <[email protected]>

* Add demo to connect spyrit and deepinv (#865)

* Add demo to connect spyrit and deepinv

* implement changes

* lint

* add spyrit optional dependency

* fix toml file

* fix attribute to /images/

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

---------

Co-authored-by: Thibaut Modrzyk <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>

* add youtube (#926)

* Add center_crop parameter to Metric class (#913)

* Initial plan

* Add center_crop functionality to Metric class and update all child classes

Co-authored-by: tachella <[email protected]>

* fix metric docs + black + test for mixed signs

* fix docstrings

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: tachella <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>

* fix contributing doc

* remove auto labeller

---------

Co-authored-by: Matthieu Terris <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>
Co-authored-by: romainvo <[email protected]>
Co-authored-by: Andrew Wang <[email protected]>
Co-authored-by: Vicky De Ridder <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Johannes Hertrich <[email protected]>
Co-authored-by: Brayan Monroy <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Chaithya G R <[email protected]>
Co-authored-by: German Shâma Wache <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Minh Hai Nguyen <[email protected]>
Co-authored-by: mh-nguyen712 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thibaut Modrzyk <[email protected]>
Co-authored-by: tbaudier <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>
Andrewwango added a commit that referenced this pull request Nov 14, 2025
* enable blank issues

* PR status labels

* readme/index/community references contributing

* add label system

* Labelling (#931)

* 3D Total variation priors (#745)

* 3D denoising variational

* comments

* comments jeremy

* Remove concurrency settings from gpu_docs.yml (#850)

* Remove concurrency settings from gpu_docs.yml

final CI fixes

* Remove concurrency settings from test_gpu.yml

Removed concurrency settings from the GPU test workflow.

* Refine Codecov upload condition for Linux only

* Update Codecov upload condition in workflow

Restrict Codecov upload to Linux with Python 3.10 only.

* Fix astra test failing on GPU (#841)

* fix normalize threshold in astra tests

* black

* Fix test transform on GPU (#852)

Co-authored-by: Andrew Wang <[email protected]>

* Fix broken download Set14 (#845)

* .

* fix

* adapt docs & use utils

* changelog

* Fix py3.9 not supported by recent coverage version (#856)

* .

* .

* Follow up to #856 (#857)

* Robustify CI for Python 3.9 (#858)

* Robustify CI for Python 3.9

* Update test_pr.yml

* Fix pip install command for Python 3.9

* Update test_pr.yml

* Update CI workflow for deepinv installation

Refactor installation steps for deepinv in CI workflow to handle Python 3.9 compatibility.

* Add compatibility step for Python 3.9 in workflow

Add step to modify pyproject.toml for Python 3.9 compatibility.

* Refactor deepinv installation steps in workflow

Removed conditional installation for Python 3.9 and adjusted the installation step for deepinv dependencies.

* Support 3D patches datasets (#806)

* Nibabel test hotfix (#863)

* Nibabel test hotfix

* Require 'blosc2' for the test dataset

Added a dependency check for 'blosc2' in the test.

* Typing optim (#827)

* distance typed

* dpir

* data fidelity

* fix callable

* bregman

* fix callable distance

* epll

* start optimizers.py

* phase retrieval

* start utils

* utils fixes

* fix circular import from physics

* bregman returns

* data fid phsycis & return

* distance returns

* epll returns

* opt & phase retrieval

* return spectral wrapper

* future annotations

* _reconstruction_step

* utils

* add suggestions

* finish optimizers.py

* Gentler loader check (#871)

* Gentler loader check

* remove codecov from test

* black

* add wee comment

* Fix error handling for CBSD68 dataset (#868)

* fix error handling

* fix

* suggestions

* add PR #723 in CHANGELOG; fix some minor typos (#860)

* add PR #723 in CHANGELOG; fix some minor typos

* update CHANGELOG

* Fix DDRM citation to reference Kawar et al. 2022 (#876)

* Initial plan

* Fix DDRM reference to cite Kawar et al. 2022

Co-authored-by: tachella <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: tachella <[email protected]>

* Allow for complex data inside Wavelets (#738)

* Update mri.py

* Update mri.py

* Added Complex support

* Added support for complex data

* reformat

* Undo MRI change

* More fixes

* More fixes

* yet more fixes, gosh why am i like this

* Finally done

* Take in comments

* fix psnr and add performance checks

---------

Co-authored-by: German Shâma Wache <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>

* add self-sup eval + history fixes (#777)

* add self-sup eval + history fixes

* changelog

* avoid using losses as metrics + add explicit model inference with .eval + trainer tests

* add docs warning

* remove loss docstring from metric

* add missing docstrings

* small fix

* doc fixes

* doc fixes

* fixes

* fix adversarial

* fixes

* fix bugs

* black

* reblack

* jeremy's comments

* improve docs explanation

* unsure + community + generate_datasets fix

* early_stop int + fix doc typo

* fix docs

* add pragma

* andrew's comments

* docstring compute_metrics

* change names + test

* still some fixes to go

* black

* add train_metrics_history

* fix wandb bug

* black + docs fixes

* black + docs fixes

* fix

* fix class link

* re-order

* Update deepinv/training/trainer.py

Co-authored-by: Andrew Wang <[email protected]>

* andrew's comments

* andrew's comments

* fix julian issue

* docstring fixes

---------

Co-authored-by: Andrew Wang <[email protected]>

* Add 3D variants of CNN networks (#869)

* dncnn

* gan

* .

* ruff check

* fix ordering test_pad

* maxpool unet nd

* icnn

* dsccp

* PDNet

* fix icnn

* fix dim drunet

* pragma

* fix dip

* test dsccp 3D

* icnn 3D test

* more tests

* test PDNet

* tests GAN

* .

* test all modes drunet + fix bug from main

* changelog

* clean dummy

* remove c variable

* fix doc rician noise

* 3d models -> denoisers

* warnings

* fixdim doc

* userguide

* syntax

* Fix LsdirHR download (#866)

* .

* ruff + fix docs

* add proposed train glob

* changelog

* fix docstring randompatchsampler

* fix sphynx?

* pragma

* pragma

* fix denoiser docs

* `dinv.io` module and clean up utils (#768)

* start develpoing io submodule + modify examples

* add scipy load mat

* fix doc

* add references to DIP demo (idk why this hasn't been added before)

* add raster

* io -> io_utils, signal -> signals

* checks

* ISMRMD loading

* add all tests

* fix optional deps

* add new example

* fix example

* changelog

* fix docs

* oops

* fix doc

* update typing

* remove load_np and load_nifit in preparation for merge from vicky PR

* black

* test assert in doctest

* add nifti vicky comment + io_utils -> io

* pydicom rescale + lidc uses load_dicom

* fix test

* fix typing in io and add kwargs

* fix sphinx typing

* fix test

* fix doc

* vicky comments

* vicky comment

* fix doc

* blosc2 test

* PET comment

* Minor README fix (#882)

* fix (#885)

Co-authored-by: mh-nguyen712 <[email protected]>

* Minor trainer docstring fixes (#884)

* io -> utils.io

* improve docstring

* very minor fix

* Fix formatting in contributing section of README (#888)

* Fix #887 (#890)

* Move changelog.rst to docs (#889)

* init

* fix links

* fix links

* fix double changelog

* change pytorch link

* remove llm bs

* black

* fix docs

* Update .github/workflows/release.yml

Co-authored-by: Minh Hai Nguyen <[email protected]>

* fix ghs

* fix ghs

---------

Co-authored-by: Minh Hai Nguyen <[email protected]>

* Enable ruff rule N805 (#892)

* enable ruff rule N805

Co-authored-by: Jérémy Scanvic <[email protected]>

* ruff check --fix --unsafe-fixes

Co-authored-by: Jérémy Scanvic <[email protected]>

---------

Co-authored-by: Andrewwango <[email protected]>

* Fix announcement text in conf.py (#901)

* Update link to changelog in PR template (#903)

* Fix docstring formatting in BaseSDE class (#902)

* Refactor release workflow (#914)

* Refactor release workflow by removing CI checks

Remove CI status check step from release workflow

* fixes

* fixes

* black

* Release v0.3.6 (#917)

Co-authored-by: tachella <[email protected]>

* Fix license formatting in CITATION.cff (#920)

* Fix license formatting in CITATION.cff

* Create workflow to validate CITATION.cff

Add GitHub Actions workflow to validate CITATION.cff file

* Add check_citation.yml workflow file

* Fix license format in CITATION.cff

* Add DOI and version to CITATION.cff

* Warn inconsistent upsampling parameters in SwinIR (#909)

* add a warning to SwinIR

* update the changelog

* let test be skipped when timm is absent (#922)

* Enable ruff rule E402 (#910)

* enable rule E402

Co-authored-by: Jérémy Scanvic <[email protected]>

* ignore E402 in the examples

Co-authored-by: Jérémy Scanvic <[email protected]>

* disable E402 in deepinv/__init__.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* pull changes from original PR

* fix the import location

* put back the weird named import

---------

Co-authored-by: Thibaut Modrzyk <[email protected]>

* Add demo to connect spyrit and deepinv (#865)

* Add demo to connect spyrit and deepinv

* implement changes

* lint

* add spyrit optional dependency

* fix toml file

* fix attribute to /images/

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

* Update examples/external-libraries/demo_connect_spyrit.py

Co-authored-by: Jérémy Scanvic <[email protected]>

---------

Co-authored-by: Thibaut Modrzyk <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>

* add youtube (#926)

* Add center_crop parameter to Metric class (#913)

* Initial plan

* Add center_crop functionality to Metric class and update all child classes

Co-authored-by: tachella <[email protected]>

* fix metric docs + black + test for mixed signs

* fix docstrings

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: tachella <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>

* fix contributing doc

* remove auto labeller

---------

Co-authored-by: Matthieu Terris <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>
Co-authored-by: romainvo <[email protected]>
Co-authored-by: Andrew Wang <[email protected]>
Co-authored-by: Vicky De Ridder <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Johannes Hertrich <[email protected]>
Co-authored-by: Brayan Monroy <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Chaithya G R <[email protected]>
Co-authored-by: German Shâma Wache <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Minh Hai Nguyen <[email protected]>
Co-authored-by: mh-nguyen712 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thibaut Modrzyk <[email protected]>
Co-authored-by: tbaudier <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>

---------

Co-authored-by: Matthieu Terris <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>
Co-authored-by: romainvo <[email protected]>
Co-authored-by: Andrew Wang <[email protected]>
Co-authored-by: Vicky De Ridder <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Johannes Hertrich <[email protected]>
Co-authored-by: Brayan Monroy <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Chaithya G R <[email protected]>
Co-authored-by: German Shâma Wache <[email protected]>
Co-authored-by: Jérémy Scanvic <[email protected]>
Co-authored-by: Minh Hai Nguyen <[email protected]>
Co-authored-by: mh-nguyen712 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thibaut Modrzyk <[email protected]>
Co-authored-by: tbaudier <[email protected]>
Co-authored-by: Julián Tachella <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants