Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fast Singular Value Thresholding #209

Merged
merged 13 commits into from
Feb 7, 2022
Merged

Conversation

paquiteau
Copy link
Contributor

@paquiteau paquiteau commented Jan 25, 2022

This PR adds a Singular Value Threshold Operator. This does exactly the same that LowRankMatrix but faster (roughly 10 times, it depends on the threshold value, notebook and data available upon request).

Basically instead of computing all the singular value, and perform the thresholding, we only compute the one above the threshold, which save a lot of computation.

I left the legacy version for now, but this should act as a drop in replacement.

Screenshot from 2022-01-25 15-35-42

This Method provides 10x faster SVT estimation than the LowRankMatrix Operator.
@paquiteau paquiteau closed this Jan 25, 2022
@paquiteau paquiteau reopened this Jan 25, 2022
@paquiteau paquiteau changed the base branch from master to develop January 25, 2022 14:38
modopt/opt/proximity.py Outdated Show resolved Hide resolved
modopt/opt/proximity.py Outdated Show resolved Hide resolved
modopt/opt/proximity.py Outdated Show resolved Hide resolved
modopt/opt/proximity.py Outdated Show resolved Hide resolved
modopt/opt/proximity.py Outdated Show resolved Hide resolved
@sfarrens
Copy link
Contributor

sfarrens commented Feb 1, 2022

@paquiteau This is fantastic, great work! 🎉

Below are my thoughts on this PR. Let me know what you think. 🙂

  1. I am not sure if we should add redundancy to the code by having to proximity operators that do the same thing, especially as they have different names it might not be obvious to the users that LowRankMatrix and SingularValueThreshold do the same thing. What I would propose instead is that we add your improvements to LowRankMatrix as something like _op_method_new and change the existing method to _op_method_old, then you can simply add a parameter to __init__ to choose which method to use with a default value (e.g. op_method='old'). We can set the default value to 'old' to avoid any potential problems downstream, but add a deprecation warning to _op_method_old noting that in a follow up release we will switch the default to the new method.
  2. I would also propose to add your improved thresholding method as function to modopt.signal.svd and then import this function to modopt.opt.proximity where it can be called by _op_method_new.
  3. I have added few other comments to the code for more specific points.

@sfarrens sfarrens added this to ToDo in ModOpt-dev via automation Feb 1, 2022
@paquiteau
Copy link
Contributor Author

I made the requested changes.
I extracted the computation in its own function, and added test to hopefully increase coverage.

@paquiteau
Copy link
Contributor Author

well I don't understand the only error of the test suite:

/home/runner/work/ModOpt/ModOpt/modopt/signal/svd.py:1:1: DAR000: Unexpected exception in darglint: Multiple types should be combined into a Union

@sfarrens
Copy link
Contributor

sfarrens commented Feb 2, 2022

well I don't understand the only error of the test suite:

/home/runner/work/ModOpt/ModOpt/modopt/signal/svd.py:1:1: DAR000: Unexpected exception in darglint: Multiple types should be combined into a Union

Umm, that's weird. It seems like some other people are getting this too, but I have not found a solution. I suggest you update line 61 of setup.cfg with the following:

 modopt/signal/svd.py: WPS345, DAR000
 #Todo: Check security of using system executable call
 #Todo: Investigate source of darglint error

@codecov-commenter
Copy link

codecov-commenter commented Feb 2, 2022

Codecov Report

❗ No coverage uploaded for pull request base (develop@736e067). Click here to learn what that means.
The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##             develop     #209   +/-   ##
==========================================
  Coverage           ?   93.13%           
==========================================
  Files              ?       36           
  Lines              ?     2475           
  Branches           ?        0           
==========================================
  Hits               ?     2305           
  Misses             ?      170           
  Partials           ?        0           
Flag Coverage Δ
unittests 93.13% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.


Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 736e067...ca5524a. Read the comment docs.

modopt/opt/proximity.py Show resolved Hide resolved
modopt/opt/proximity.py Outdated Show resolved Hide resolved
modopt/signal/svd.py Outdated Show resolved Hide resolved
modopt/signal/svd.py Outdated Show resolved Hide resolved
@sfarrens
Copy link
Contributor

sfarrens commented Feb 2, 2022

@paquiteau Everything looks good now. There is just some very minor clean up left to do and then we can merge this PR. 🎉

paquiteau and others added 4 commits February 2, 2022 12:00
tuples in docstring

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
modopt/signal/svd.py Outdated Show resolved Hide resolved
modopt/signal/svd.py Outdated Show resolved Hide resolved
paquiteau and others added 4 commits February 3, 2022 09:15
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
@sfarrens sfarrens merged commit 65e24f1 into CEA-COSMIC:develop Feb 7, 2022
ModOpt-dev automation moved this from ToDo to Done Feb 7, 2022
@sfarrens sfarrens mentioned this pull request Apr 8, 2022
sfarrens added a commit that referenced this pull request Apr 8, 2022
* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

* Unpin package dependencies (#189)

* unpinned dependencies

* updated pinned documentation dependency versions

* Add Gradient descent algorithms (#196)

* Version 1.5.1 patch release (#114)

* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* make algorithms a module.

* add Gradient Descent Algorithms

* enforce WPS compliance.

* add test for gradient descent

* Docstrings improvements

* Add See Also and minor corrections

* add idx initialisation for all algorithms.

* fix merge error

* fix typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Release cleanup (#198)

* started clean up for next release

* update progress

* further clean up

* additional clean up

* cleaned up link to logo

* fixed index.rst

* fixed conflict

* Fast Singular Value Thresholding  (#209)

* add SingularValueThreshold

This Method provides 10x faster SVT estimation than the LowRankMatrix Operator.

* linting

* add test for fast computation.

* flake8 compliance

* Ignore DAR000 Error.

* Update modopt/signal/svd.py

tuples in docstring

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/opt/proximity.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* update docstring

* fix isort

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* run isort

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* added writeable input data array feature for benchopt (#213)

* removed flake8 limit

Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Pierre-Antoine Comby <77174042+paquiteau@users.noreply.github.com>
sfarrens added a commit that referenced this pull request Apr 8, 2022
* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

* Unpin package dependencies (#189)

* unpinned dependencies

* updated pinned documentation dependency versions

* Add Gradient descent algorithms (#196)

* Version 1.5.1 patch release (#114)

* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* make algorithms a module.

* add Gradient Descent Algorithms

* enforce WPS compliance.

* add test for gradient descent

* Docstrings improvements

* Add See Also and minor corrections

* add idx initialisation for all algorithms.

* fix merge error

* fix typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Release cleanup (#198)

* started clean up for next release

* update progress

* further clean up

* additional clean up

* cleaned up link to logo

* fixed index.rst

* fixed conflict

* Fast Singular Value Thresholding  (#209)

* add SingularValueThreshold

This Method provides 10x faster SVT estimation than the LowRankMatrix Operator.

* linting

* add test for fast computation.

* flake8 compliance

* Ignore DAR000 Error.

* Update modopt/signal/svd.py

tuples in docstring

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/opt/proximity.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* update docstring

* fix isort

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* run isort

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* added writeable input data array feature for benchopt (#213)

* removed flake8 limit

* updated patch version

Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Pierre-Antoine Comby <77174042+paquiteau@users.noreply.github.com>
chaithyagr added a commit that referenced this pull request Jan 19, 2024
* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

* Unpin package dependencies (#189)

* unpinned dependencies

* updated pinned documentation dependency versions

* Add Gradient descent algorithms (#196)

* Version 1.5.1 patch release (#114)

* Add support for tensorflow backend which allows for differentiability (#112)

* Added support for tensorflow

* Updates to get tests passing

* Or --> And

* Moving modopt to allow working with tensorflow

* Fix issues with wos

* Fix all flakes finally!

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/base/backend.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Minute updates to codes

* Add dynamic module

* Fix docu

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Fix 115 (#116)

* Fix issues

* Add right tests

* Fix PEP

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Minor bug fix, remove elif (#124)

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Add tests for modopt.base.backend and fix minute bug uncovered (#126)

* Minor bug fix, remove elif

* Add tests for backend

* Fix tests

* Add tests

* Remove cupy

* PEP fixes

* Fix PEP

* Fix PEP and update

* Final PEP

* Update setup.cfg

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update test_base.py

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Release cleanup (#128)

* updated GPU dependencies

* added logo to manifest

* updated package version and release date

Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* make algorithms a module.

* add Gradient Descent Algorithms

* enforce WPS compliance.

* add test for gradient descent

* Docstrings improvements

* Add See Also and minor corrections

* add idx initialisation for all algorithms.

* fix merge error

* fix typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
Co-authored-by: Chaithya G R <chaithyagr@gmail.com>
Co-authored-by: chaithyagr <chaithyagr@gitlab.com>

* Release cleanup (#198)

* started clean up for next release

* update progress

* further clean up

* additional clean up

* cleaned up link to logo

* fixed index.rst

* fixed conflict

* Fast Singular Value Thresholding  (#209)

* add SingularValueThreshold

This Method provides 10x faster SVT estimation than the LowRankMatrix Operator.

* linting

* add test for fast computation.

* flake8 compliance

* Ignore DAR000 Error.

* Update modopt/signal/svd.py

tuples in docstring

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/opt/proximity.py

typo

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* update docstring

* fix isort

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/signal/svd.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* run isort

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* added writeable input data array feature for benchopt (#213)

* removed flake8 limit

* updated patch version

* [lint] pydocstyle compliance. (#228)

* [lint] pydocstyle compliance.

* use pytest-pydocstyle

* Power method: fix #211 (#212)

* Correct the norm update for Power Method

x_new should be divided by its norm, not by x_old_norm.

* fix test value

We are testing for eigen value of Identity. It should be one.

* fix WPS350

* fix test value for unconverged case

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Switch from progressbar to tqdm (#231)

* switch from progressbar to tqdm.

The progress bar can be provided externally for nested usage.

* exposes the progress bar argument.

* Child classes better have to implement these.

(my linter was complaining)

* update docs for progress bar using tqdm.

* fix WPS errors

* drop progressbar requirement, add tqdm.

* [lint] disable warning for non implemented function.

* simplify progbar check and argument passthrough

* Update README for tqdm dependency (#240)

Remote progressbar, use tqdm.

* add small help for the metric argument. (#241)

* add small help for the metric argument.

* RST validation

* use single quote

* use double backticks.

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* add implementation for admm and fast admm.

Based on Goldstein2014

* add Goldstein ref.

* WPS compliance.

* Abstract class for cost function.

* add custom cost operator for admm.

* fix WPS compliance.

* Ci update (#268)

* update python version support.

* use string for CI.

* remove flake8 and wemake-python-styleguide

This anticipates the change to black formatting.

* remove wps checks

* apparently conda does not support 3.11 for now

* remove all linting testing.

* fix np.int warning/error

* fix dtype error

* fix precision for doctest

* added black and isort support

* Update python version in README

* add 3.7 for test  back

* don't test 3.10 twice

* Test rewrite (#266)

* add MatrixOperator.

* move base test to pytest.

* [fixme] remove flake8 and emoji config.

* rewrite test_math module using pytest.

* use fail/skipparam helper function.

* generalize usage of failparam

* refactor test_signal.

* refactor test_signal, the end.

* lint

* fix missing parameter.

* add dummy object test helper.

* rewrite test for cost and gradients.

* show missing lines in coverage reports

* rewrite of proximity operators testing.

* add fail  low rank method.

* add cases for algorithms test

* add algorithm test.

* add pytest-cases and pytest-xdists support.

* add support for testing metrics.

* improve base module coverage.

* test for wrong mask in metric module.

* add docstring.

* update email adress and authors field.

* 100% coverage for transform module.

* move linear operator to class

* update docstring.

* paramet(e)rization.

* update docstring.

* improve test_helper module.

* raises should be specified for each failparam call.

* encapsulate module's test in classes.

* skip test if sklearn is not installed.

* pin pydocstyle

* removed unnormalised Gaussian kernel option and corresponding test

* Restrict scikit-image version for testing

* added fix for basic test suite

* set behaviour for different astropy versions

* updated docstring for gaussian_kernel

* Use example scripts as  tests. (#277)

* Initialize the example module.

* do not export the assert statements.

* add matplotlib as requirement.

* add support for sphinx-gallery

* Update modopt/examples/README.rst

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/examples/__init__.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/examples/conftest.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/examples/example_lasso_forward_backward.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* Update modopt/examples/example_lasso_forward_backward.py

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* ignore auto_example folder

* doc formatting.

* add pogm and basic comparison.

* fix: add matplotlib for the plotting in examples scripts.

* fix: add matplotlib for basic ci too.

* ci: run pytest with xdist for faster testing

---------

Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>

* fix: specify data_range for ssim.

Refs: #290

* typos.

* feat(test): add test for admm.

* feat(admm): improve doc.

* refactor: rename abstract cost to CostParent.

* feat: add test for fast admm.

* feat(admm): improve docstrings.

* style: remove extra line.c

* feat: make POGM more memory efficient.

* feat: add a dummy cost for the identity operator.

* feat: create a linear operator module, add wavelet transform.

* feat: add test case for wavelet transform.

* Update setup.py

---------

Co-authored-by: chaithyagr <chaithyagr@gitlab.com>
Co-authored-by: Samuel Farrens <samuel.farrens@gmail.com>
Co-authored-by: Pierre-Antoine Comby <77174042+paquiteau@users.noreply.github.com>
Co-authored-by: Pierre-antoine Comby <pierre-antoine.comby@crans.org>
Co-authored-by: Pierre-Antoine Comby <pierre-antoine.comby@ens-paris-saclay.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
ModOpt-dev
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

3 participants