freealg


Namefreealg JSON
Version 0.6.0 PyPI version JSON
download
home_pagehttps://github.com/ameli/freealg
SummaryFree probability for large matrices
upload_time2025-07-27 05:51:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords linalg free-probability
VCS
bugtrack_url
requirements numpy scipy texplot matplotlib colorcet statsmodels numba
Travis-CI No Travis.
coveralls test coverage
            .. 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"
}
        
Elapsed time: 1.28716s