{"id":37662646,"url":"https://github.com/getspams/spams-python","last_synced_at":"2026-01-16T11:51:54.552Z","repository":{"id":41171283,"uuid":"454733631","full_name":"getspams/spams-python","owner":"getspams","description":"Python interface for SPAMS (SPArse Modeling Software)","archived":false,"fork":false,"pushed_at":"2024-10-24T13:27:06.000Z","size":2907,"stargazers_count":21,"open_issues_count":14,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-07T15:49:15.710Z","etag":null,"topics":["machine-learning","optimization","python"],"latest_commit_sha":null,"homepage":"https://thoth.inrialpes.fr/people/mairal/spams/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getspams.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-02T10:40:43.000Z","updated_at":"2025-08-20T04:03:22.000Z","dependencies_parsed_at":"2024-06-19T14:33:53.994Z","dependency_job_id":"94ce5a71-96b6-43b6-811c-2b8bd14d4402","html_url":"https://github.com/getspams/spams-python","commit_stats":{"total_commits":81,"total_committers":9,"mean_commits":9.0,"dds":0.4320987654320988,"last_synced_commit":"b78a8ce4a1a07748d98d4c8ef1606c03e1545afd"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/getspams/spams-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getspams%2Fspams-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getspams%2Fspams-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getspams%2Fspams-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getspams%2Fspams-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getspams","download_url":"https://codeload.github.com/getspams/spams-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getspams%2Fspams-python/sbom","scorecard":{"id":424683,"data":{"date":"2025-08-11","repo":{"name":"github.com/getspams/spams-python","commit":"897314636898858f957ed82da7995eb27156150b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":3,"reason":"Found 3/10 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/getspams/spams-python/python-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/getspams/spams-python/python-publish.yml/main?enable=pin","Warn: pipCommand not pinned by hash: pybuild.sh:83","Warn: pipCommand not pinned by hash: pytest.sh:83","Warn: pipCommand not pinned by hash: pytest.sh:91","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:28","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:29","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"53 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: GHSA-6p56-wp2h-9hxr","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: PYSEC-2021-41 / GHSA-3wvg-mj6g-m9cv","Warn: Project is vulnerable to: PYSEC-2020-77 / GHSA-3xv8-3j54-hgrp","Warn: Project is vulnerable to: PYSEC-2020-80 / GHSA-43fq-w8qq-v88h","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: GHSA-4fx9-vc88-q2xc","Warn: Project is vulnerable to: PYSEC-2021-35 / GHSA-57h3-9rgr-c24m","Warn: Project is vulnerable to: PYSEC-2020-172 / GHSA-5gm3-px64-rw72","Warn: Project is vulnerable to: PYSEC-2021-331 / GHSA-7534-mm45-c74v","Warn: Project is vulnerable to: PYSEC-2021-137 / GHSA-77gc-v2xv-rvvh","Warn: Project is vulnerable to: PYSEC-2021-92 / GHSA-7r7m-5h27-29hp","Warn: Project is vulnerable to: PYSEC-2020-78 / GHSA-8843-m7mw-mxqm","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: PYSEC-2022-10 / GHSA-8vj2-vxx3-667w","Warn: Project is vulnerable to: PYSEC-2021-36 / GHSA-8xjq-8fcg-g5hw","Warn: Project is vulnerable to: PYSEC-2021-42 / GHSA-95q3-8gr9-gm8w","Warn: Project is vulnerable to: PYSEC-2021-317 / GHSA-98vv-pw6r-q6q4","Warn: Project is vulnerable to: PYSEC-2021-38 / GHSA-9hx2-hgq2-2g4f","Warn: Project is vulnerable to: PYSEC-2022-168 / GHSA-9j59-75qj-795w","Warn: Project is vulnerable to: PYSEC-2020-76 / GHSA-cqhg-xjhh-p8hf","Warn: Project is vulnerable to: PYSEC-2021-40 / GHSA-f4w8-cv6p-x6r5","Warn: Project is vulnerable to: PYSEC-2021-69 / GHSA-f5g8-5qq7-938w","Warn: Project is vulnerable to: PYSEC-2021-139 / GHSA-g6rj-rv7j-xwp4","Warn: Project is vulnerable to: PYSEC-2021-71 / GHSA-hf64-x4gq-p99h","Warn: Project is vulnerable to: PYSEC-2020-84 / GHSA-hj69-c76v-86wr","Warn: Project is vulnerable to: PYSEC-2021-94 / GHSA-hjfx-8p6c-g7gx","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2019-110 / GHSA-j7mj-748x-7p78","Warn: Project is vulnerable to: GHSA-jgpv-4h4c-xhw3","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2021-37 / GHSA-mvg9-xffr-p774","Warn: Project is vulnerable to: PYSEC-2021-39 / GHSA-p43w-g3c5-g5mq","Warn: Project is vulnerable to: PYSEC-2020-83 / GHSA-p49h-hjvm-jg3h","Warn: Project is vulnerable to: PYSEC-2022-8 / GHSA-pw3c-h7wp-cvhx","Warn: Project is vulnerable to: PYSEC-2021-93 / GHSA-q5hq-fp76-qmrc","Warn: Project is vulnerable to: PYSEC-2020-82 / GHSA-r7rm-8j6h-r933","Warn: Project is vulnerable to: PYSEC-2021-138 / GHSA-rwv7-3v45-hg29","Warn: Project is vulnerable to: PYSEC-2020-81 / GHSA-vcqg-3p29-xw73","Warn: Project is vulnerable to: PYSEC-2020-79 / GHSA-vj42-xq3r-hr3r","Warn: Project is vulnerable to: PYSEC-2021-70 / GHSA-vqcj-wrf2-7v73","Warn: Project is vulnerable to: PYSEC-2022-9 / GHSA-xrcv-f9gm-v42c","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T01:59:08.615Z","repository_id":41171283,"created_at":"2025-08-19T01:59:08.615Z","updated_at":"2025-08-19T01:59:08.615Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["machine-learning","optimization","python"],"created_at":"2026-01-16T11:51:54.440Z","updated_at":"2026-01-16T11:51:54.534Z","avatar_url":"https://github.com/getspams.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SPAMS: a SPArse Modeling Software\n\nHere is the Python package interfacing the SPAMS C++ library.\n\n## What is SPAMS?\n\nSPAMS (SPArse Modeling Software) is an optimization toolbox for solving various sparse estimation problems.\n\n- Dictionary learning and matrix factorization (NMF, sparse PCA, ...)\n- Solving sparse decomposition problems with LARS, coordinate descent, OMP, SOMP, proximal methods\n- Solving structured sparse decomposition problems (l1/l2, l1/linf, sparse group lasso, tree-structured regularization, structured sparsity with overlapping groups, ...)\n\n\n## Installation\n\n### Requirements\n\n- a C++ modern compiler (tested with gcc \u003e= 4.5)\n- a BLAS/LAPACK library (like OpenBLAS, Intel MKL, Atlas)\n\nCarefully install **libblas \u0026 liblapack**. For example, on Ubuntu, it is necessary to do `sudo apt-get -y install libblas-dev liblapack-dev gfortran`. For MacOS, you most likely need to do `brew install gcc openblas lapack`.\n\nFor better performance, we recommend to install the **MKL Intel library** (available for instance on PyPI with `pip install mkl`, or in the Anaconda Python distribution with `conda install mkl`) before installing Numpy (which is a dependency of SPAMS, the latter checking Numpy configuration for its installation).\n\nSPAMS for Python was tested on **Linux** and **MacOS**. It is **not available for Windows** at the moment. **For MacOS users**, the install setup detects if OpenMP is available on your system and enable/disable OpenMP support accordingly. For better performance, we recommend to install an **OpenMP-compatible compiler** on your system (e.g. `gcc` or `llvm`).\n\n**Note for Windows users:** at the moment you can run `pip install spams-bin` (provided by \u003chttps://github.com/samuelstjean/spams-python\u003e).\n\n### Installation from PyPI:\n\nThe standard installation uses the BLAS and LAPACK libraries used by Numpy:\n```bash\npip install spams\n```\n\n### Installation from sources\n\nMake sure you have install libblas \u0026 liblapack (see above)\n```bash\ngit clone https://github.com/getspams/spams-python\ncd spams-python\npip install -e .\n```\n\n### Usage\n\nManipulated objects are imported from numpy and scipy. Matrices should be stored by columns, and sparse matrices should be \"column compressed\".\n\n\n### Testing the interface\n\n- From the command line (to be called from the project root directory):\n```bash\npython tests/test_spams.py -h       # print the man page\npython tests/test_spams.py          # run all the tests\n```\n\n- From Python (assuming `spams` package is installed):\n```python\nfrom spams.tests import test_spams\n\ntest_spams('-h')                    # print the man page\ntest_spams()                        # run all tests\ntest_spams(['sort', 'calcAAt'])     # run specific tests\ntest_spams(python_exec='python3')   # specify the python exec\n```\n\n- From the command line (assuming `spams` package is installed):\n```bash\n# c.f. previous point for the different options\npython -c \"from spams.tests import test_spams; test_spams()\"\n```\n\n---\n\n## Links\n\n- [Official website](https://thoth.inrialpes.fr/people/mairal/spams/) (documentation and downloads)\n- [Python specific project](https://github.com/getspams/spams-python) and [PyPI](https://pypi.org/project/spams/) repository (available with `pip install spams`)\n- [R specific project](https://github.com/getspams/spams-R) (available with `remotes::install_github(\"getspams/spams-R\")`)\n- [Original C++ project](https://github.com/getspams/spams-devel) (and original sources for Matlab, Python and R interfaces)\n\n\u003e SPAMS-related git repositories are also available on [Inria](https://www.inria.fr/) [gitlab forge](https://gitlab.inria.fr/): see [original C++ project](https://gitlab.inria.fr/thoth/spams-devel)  (and original sources for Matlab, Python and R interfaces), [Python specific project](https://gitlab.inria.fr/thoth/spams-python)\n\n\n## Contact\n\nRegarding SPAMS **Python** package: you can open an issue on the dedicated git project at \u003chttps://github.com/getspams/spams-python\u003e\n\nRegarding SPAMS **R** package: you can open an issue on the dedicated git project at \u003chttps://github.com/getspams/spams-R\u003e\n\nFor any other question related to the use or development of SPAMS:\n\n- you can you can contact us at `spams.dev'AT'inria.fr` (replace `'AT'` by `@`)\n- you can open an issue on the general git project at \u003chttps://github.com/getspams/spams-devel\u003e\n\n---\n\n## Authorship\n\nSPAMS is developed and maintained by [Julien Mairal](http://julien.mairal.org) (Inria), and contains sparse estimation methods resulting from collaborations with various people: notably, [Francis Bach](http://www.di.ens.fr/~fbach), [Jean Ponce](http://www.di.ens.fr/~ponce), Guillermo Sapiro, [Rodolphe Jenatton](http://www.di.ens.fr/~jenatton/) and [Guillaume Obozinski](http://imagine.enpc.fr/~obozinsg/).\n\nIt is coded in C++ with a Matlab interface. Interfaces for R and Python have been developed by Jean-Paul Chieze, and archetypal analysis was written by Yuansi Chen.\n\nRelease of version 2.6/2.6.1 and porting to R-3.x and Python3.x was done by [Ghislain Durif](https://gdurif.perso.math.cnrs.fr/) (Inria). The original porting to Python3.x is based on [this patch](https://aur.archlinux.org/packages/python-spams-svn/) and on the work of John Kirkham available [here](https://github.com/conda-forge/python-spams-feedstock).\n\nVersion 2.6.2 (Python only) update is based on contributions by [Francois Rheault](https://github.com/frheault) and [Samuel Saint-Jean](http://samuelstjean.github.io/).\n\n### Maintenance\n\nSince version 2.6.3+, SPAMS (especially the Python version) is now maintained by the following team:\n\n- [Alessandro Daducci](https://github.com/daducci)\n- [Ghislain Durif](https://gdurif.perso.math.cnrs.fr/)\n- [Francois Rheault](https://github.com/frheault)\n- [Samuel Saint-Jean](http://samuelstjean.github.io/)\n\n---\n\n## Funding\n\nThis work was supported in part by the SIERRA and VIDEOWORLD ERC projects, and by the MACARON ANR project.\n\n## License\n\nVersion 2.1 and later are open-source under [GPLv3 licence](http://www.gnu.org/licenses/gpl.html). For other licenses, please contact the authors.\n\n---\n\n## News\n\n- 14/02/2022: Python SPAMS is now officially hosted on [Github](https://github.com/getspams/spams-python)\n- 07/02/2022: [SPAMS C++ project](https://github.com/getspams/spams-devel) and [SPAMS for R](https://github.com/getspams/spams-R) are now officially hosted on Github\n- 03/02/2022: Python SPAMS v2.6.3 is released (source and PyPI)\n- 03/09/2020: Python SPAMS v2.6.2 is released (source and PyPI)\n- 15/01/2019: Python SPAMS v2.6.1 is available on PyPI)\n- 08/12/2017: Python SPAMS v2.6.1 for Anaconda (with MKL support) is released\n- 24/08/2017: Python SPAMS v2.6.1 is released (a single source code for Python 3 and 2)\n- 27/02/2017: SPAMS v2.6 is released, including precompiled Matlab packages, R-3.x and Python3.x compatibility\n- 25/05/2014: SPAMS v2.5 is released\n- 12/05/2013: SPAMS v2.4 is released\n- 05/23/2012: SPAMS v2.3 is released\n- 03/24/2012: SPAMS v2.2 is released with a Python and R interface, and new compilation scripts for a better Windows/Mac OS compatibility\n- 06/30/2011: SPAMS v2.1 goes open-source!\n- 11/04/2010: SPAMS v2.0 is out for Linux and Mac OS!\n- 02/23/2010: Windows 32 bits version available! Elastic-Net is implemented\n- 10/26/2009: Mac OS, 64 bits version available!\n\n---\n\n## References\n\n### A monograph about sparse estimation\n\nWe encourage the users of SPAMS to read the following monograph, which contains numerous applications of dictionary learning, an introduction to sparse modeling, and many practical advices.\n\n- J. Mairal, F. Bach and J. Ponce. [Sparse Modeling for Image and Visio Processing](http://lear.inrialpes.fr/people/mairal/resources/pdf/review_sparse_arxiv.pdf). Foundations and Trends in Computer Graphics and Vision. vol 8. number 2-3. pages 85--283. 2014\n\n### Related publications\n\nYou can find here some publications at the origin of this software.\n\nThe \"matrix factorization\" and \"sparse decomposition\" modules were developed for the following papers:\n\n- J. Mairal, F. Bach, J. Ponce and G. Sapiro. [Online Learning for Matrix Factorization and Sparse Coding](https://www.jmlr.org/papers/volume11/mairal10a/mairal10a.pdf). Journal of Machine Learning Research, volume 11, pages 19-60. 2010.\n- J. Mairal, F. Bach, J. Ponce and G. Sapiro. [Online Dictionary Learning for Sparse Coding](http://www.di.ens.fr/willow/pdfs/icml09.pdf). International Conference on Machine Learning, Montreal, Canada, 2009\n\nThe \"proximal\" module was developed for the following papers:\n\n- J. Mairal, R. Jenatton, G. Obozinski and F. Bach. [Network Flow Algorithms for Structured Sparsity](http://books.nips.cc/papers/files/nips23/NIPS2010_1040.pdf). Adv. Neural Information Processing Systems (NIPS). 2010.\n- R. Jenatton, J. Mairal, G. Obozinski and F. Bach. [Proximal Methods for Sparse Hierarchical Dictionary Learning](http://www.di.ens.fr/willow/pdfs/icml2010a.pdf). International Conference on Machine Learning. 2010.\n\nThe feature selection tools for graphs were developed for:\n\n- J. Mairal and B. Yu. [Supervised Feature Selection in Graphs with Path Coding Penalties and Network Flows](http://arxiv.org/abs/1204.4539). JMLR. 2013.\n\nThe incremental and stochastic proximal gradient algorithm correspond to the following papers:\n\n- J. Mairal. [Stochastic Majorization-Minimization Algorithms for Large-Scale Optimization](http://hal.inria.fr/docs/00/86/02/68/PDF/main_with_appendices.pdf). NIPS. 2013.\n- J. Mairal. [Optimization with First-Order Surrogate Functions](http://hal.inria.fr/docs/00/82/22/29/PDF/main.pdf). International Conference on Machine Learning. 2013.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetspams%2Fspams-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetspams%2Fspams-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetspams%2Fspams-python/lists"}