.. figure:: https://raw.githubusercontent.com/ameli/freealg/refs/heads/main/docs/source/_static/images/icons/logo-freealg-light.png
:align: left
:width: 240
`Paper <https://arxiv.org/abs/2506.11994>`__ |
`Slides <https://www.dropbox.com/scl/fi/03gjuyz17k9yhsqy0isoz/free_decomporession_slides.pdf?rlkey=8f82mhciyl2ju02l7hv1md5li&st=26xmhjga&dl=0>`__ |
`Docs <https://ameli.github.io/freealg>`__ |
`Live Demo <https://colab.research.google.com/github/ameli/freealg/blob/main/notebooks/quick_start.ipynb>`__
.. `Slides <https://ameli.github.io/freealg/_static/data/slides.pdf>`__ |
*freealg* is a Python package that employs **free** probability to evaluate the
spectral densities of large matrix **form**\ s. The fundamental algorithm
employed by *freealg* is **free decompression**, which extrapolates from the
empirical spectral densities of small submatrices to infer the eigenspectrum
of extremely large matrices.
Install
=======
|pypi|
Install with ``pip``:
.. code-block::
pip install freealg
Alternatively, clone the source code and install with
.. code-block::
cd source_dir
pip install .
Documentation
=============
|deploy-docs|
Documentation is available at `ameli.github.io/freealg <https://ameli.github.io/freealg>`__.
Quick Usage
===========
The following code estimates the eigenvalues of a very large Wishart matrix
using a much smaller Wishart matrix.
.. code-block:: python
>>> import freealg as fa
>>> mp = fa.distributions.MarchenkoPastur(1/50) # Wishart matrices with aspect ratio 1/50
>>> A = mp.matrix(1000) # Sample a 1000 x 1000 Wishart matrix
>>> eigs = fa.eigvalsh(A, 100_000) # Estimate the eigenvalues of 100000 x 100000
For more details on how to interface with *freealg* check out the
`Live Demo <https://colab.research.google.com/github/ameli/freealg/blob/main/notebooks/quick_start.ipynb>`__.
Test
====
|build-linux|
You may test the package with `tox <https://tox.wiki/>`__:
.. code-block::
cd source_dir
tox
Alternatively, test with `pytest <https://pytest.org>`__:
.. code-block::
cd source_dir
pytest
How to Contribute
=================
We welcome contributions via GitHub's pull request. Developers should review
our `Contributing Guidelines <https://github.com/ameli/freealg/blob/main/CONTRIBUTING.rst>`__
before submitting their code. If you do not feel comfortable modifying the
code, we also welcome feature requests and bug reports.
How to Cite
===========
If you use this work, please cite our `arXiv paper <https://arxiv.org/abs/2506.11994>`__.
.. code::
@article{spectral2025,
title={Spectral Estimation with Free Decompression},
author={Siavash Ameli and Chris van der Heide and Liam Hodgkinson and Michael W. Mahoney},
year={2025},
eprint={2506.11994},
archivePrefix={arXiv},
primaryClass={stat.ML},
url={https://arxiv.org/abs/2506.11994},
journal={arXiv preprint arXiv:2506.11994},
}
License
=======
|license|
.. |build-linux| image:: https://img.shields.io/github/actions/workflow/status/ameli/freealg/build-linux.yml
:target: https://github.com/ameli/freealg/actions?query=workflow%3Abuild-linux
.. |deploy-docs| image:: https://img.shields.io/github/actions/workflow/status/ameli/freealg/deploy-docs.yml?label=docs
:target: https://github.com/ameli/freealg/actions?query=workflow%3Adeploy-docs
.. |pypi| image:: https://img.shields.io/pypi/v/freealg
:target: https://pypi.org/project/freealg/
.. |license| image:: https://img.shields.io/github/license/ameli/freealg
:target: https://opensource.org/licenses/BSD-3-Clause
Raw data
{
"_id": null,
"home_page": "https://github.com/ameli/freealg",
"name": "freealg",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "linalg, free-probability",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/08/24/07886e828b282fd05046ef5cf705404d2cca9551119e6639c720e953584c/freealg-0.6.0.tar.gz",
"platform": "Linux",
"description": ".. figure:: https://raw.githubusercontent.com/ameli/freealg/refs/heads/main/docs/source/_static/images/icons/logo-freealg-light.png\n :align: left\n :width: 240\n\n`Paper <https://arxiv.org/abs/2506.11994>`__ |\n`Slides <https://www.dropbox.com/scl/fi/03gjuyz17k9yhsqy0isoz/free_decomporession_slides.pdf?rlkey=8f82mhciyl2ju02l7hv1md5li&st=26xmhjga&dl=0>`__ |\n`Docs <https://ameli.github.io/freealg>`__ |\n`Live Demo <https://colab.research.google.com/github/ameli/freealg/blob/main/notebooks/quick_start.ipynb>`__\n\n.. `Slides <https://ameli.github.io/freealg/_static/data/slides.pdf>`__ |\n\n*freealg* is a Python package that employs **free** probability to evaluate the\nspectral densities of large matrix **form**\\ s. The fundamental algorithm\nemployed by *freealg* is **free decompression**, which extrapolates from the\nempirical spectral densities of small submatrices to infer the eigenspectrum\nof extremely large matrices. \n\nInstall\n=======\n\n|pypi|\n\nInstall with ``pip``:\n\n.. code-block::\n\n pip install freealg\n\nAlternatively, clone the source code and install with\n\n.. code-block::\n\n cd source_dir\n pip install .\n\nDocumentation\n=============\n\n|deploy-docs|\n\nDocumentation is available at `ameli.github.io/freealg <https://ameli.github.io/freealg>`__.\n\nQuick Usage\n===========\n\nThe following code estimates the eigenvalues of a very large Wishart matrix\nusing a much smaller Wishart matrix.\n\n.. code-block:: python\n\n >>> import freealg as fa\n >>> mp = fa.distributions.MarchenkoPastur(1/50) # Wishart matrices with aspect ratio 1/50\n >>> A = mp.matrix(1000) # Sample a 1000 x 1000 Wishart matrix\n >>> eigs = fa.eigvalsh(A, 100_000) # Estimate the eigenvalues of 100000 x 100000\n\nFor more details on how to interface with *freealg* check out the \n`Live Demo <https://colab.research.google.com/github/ameli/freealg/blob/main/notebooks/quick_start.ipynb>`__.\n\n\nTest\n====\n\n|build-linux| \n\nYou may test the package with `tox <https://tox.wiki/>`__:\n\n.. code-block::\n\n cd source_dir\n tox\n\nAlternatively, test with `pytest <https://pytest.org>`__:\n\n.. code-block::\n\n cd source_dir\n pytest\n\nHow to Contribute\n=================\n\nWe welcome contributions via GitHub's pull request. Developers should review\nour `Contributing Guidelines <https://github.com/ameli/freealg/blob/main/CONTRIBUTING.rst>`__\nbefore submitting their code. If you do not feel comfortable modifying the\ncode, we also welcome feature requests and bug reports.\n\nHow to Cite\n===========\n\nIf you use this work, please cite our `arXiv paper <https://arxiv.org/abs/2506.11994>`__.\n\n .. code::\n\n @article{spectral2025,\n title={Spectral Estimation with Free Decompression},\n author={Siavash Ameli and Chris van der Heide and Liam Hodgkinson and Michael W. Mahoney},\n year={2025},\n eprint={2506.11994},\n archivePrefix={arXiv},\n primaryClass={stat.ML},\n url={https://arxiv.org/abs/2506.11994},\n journal={arXiv preprint arXiv:2506.11994},\n }\n\n\nLicense\n=======\n\n|license|\n\n.. |build-linux| image:: https://img.shields.io/github/actions/workflow/status/ameli/freealg/build-linux.yml\n :target: https://github.com/ameli/freealg/actions?query=workflow%3Abuild-linux \n.. |deploy-docs| image:: https://img.shields.io/github/actions/workflow/status/ameli/freealg/deploy-docs.yml?label=docs\n :target: https://github.com/ameli/freealg/actions?query=workflow%3Adeploy-docs\n.. |pypi| image:: https://img.shields.io/pypi/v/freealg\n :target: https://pypi.org/project/freealg/\n.. |license| image:: https://img.shields.io/github/license/ameli/freealg\n :target: https://opensource.org/licenses/BSD-3-Clause\n",
"bugtrack_url": null,
"license": null,
"summary": "Free probability for large matrices",
"version": "0.6.0",
"project_urls": {
"Documentation": "https://ameli.github.io/freealg",
"Download": "https://github.com/ameli/freealg/archive/main.zip",
"Homepage": "https://github.com/ameli/freealg",
"Source": "https://github.com/ameli/freealg",
"Tracker": "https://github.com/ameli/freealg/issues"
},
"split_keywords": [
"linalg",
" free-probability"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "992761bcd6d3ce7db5ac77b560dff95a90b2e02e2fbf5e2b9bcf6705c8a158f7",
"md5": "795c86672275160fd1add6f7cc780e9f",
"sha256": "686cbea6540094858e121411df5687179fc4ab25e7ff60b760d9b7a773a7a3ca"
},
"downloads": -1,
"filename": "freealg-0.6.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "795c86672275160fd1add6f7cc780e9f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 74845,
"upload_time": "2025-07-27T05:51:13",
"upload_time_iso_8601": "2025-07-27T05:51:13.737546Z",
"url": "https://files.pythonhosted.org/packages/99/27/61bcd6d3ce7db5ac77b560dff95a90b2e02e2fbf5e2b9bcf6705c8a158f7/freealg-0.6.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "082407886e828b282fd05046ef5cf705404d2cca9551119e6639c720e953584c",
"md5": "262fa7538fe85e18f52a9e95e6734ed5",
"sha256": "a6238dd809ff2864a5c69ea04b75f72993300b631a15c03d783fb126d0d5cd6a"
},
"downloads": -1,
"filename": "freealg-0.6.0.tar.gz",
"has_sig": false,
"md5_digest": "262fa7538fe85e18f52a9e95e6734ed5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 58810,
"upload_time": "2025-07-27T05:51:14",
"upload_time_iso_8601": "2025-07-27T05:51:14.749124Z",
"url": "https://files.pythonhosted.org/packages/08/24/07886e828b282fd05046ef5cf705404d2cca9551119e6639c720e953584c/freealg-0.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 05:51:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ameli",
"github_project": "freealg",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": []
},
{
"name": "scipy",
"specs": []
},
{
"name": "texplot",
"specs": []
},
{
"name": "matplotlib",
"specs": []
},
{
"name": "colorcet",
"specs": []
},
{
"name": "statsmodels",
"specs": []
},
{
"name": "numba",
"specs": []
}
],
"tox": true,
"lcname": "freealg"
}