qLDPC


NameqLDPC JSON
Version 0.0.14 PyPI version JSON
download
home_pagehttps://github.com/Infleqtion/qLDPC
SummaryTools for constructing and analyzing quantum low density parity check (qLDPC) codes.
upload_time2024-04-27 02:44:20
maintainerNone
docs_urlNone
authorMichael A. Perlin
requires_python<4.0,>=3.10
licenseApache-2.0
keywords quantum computing quantum error correction low density partiy check codes ldpc
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # qLDPC

This package contains tools for constructing and analyzing [quantum low density parity check (qLDPC) codes](https://errorcorrectionzoo.org/c/qldpc).

## 📦 Installation

This package requires Python>=3.10, and can be installed from PyPI with
```
pip install qldpc
```
To install a local version from source:
```
git clone git@github.com:Infleqtion/qLDPC.git
pip install -e qLDPC
```
You can also `pip install -e 'qLDPC[dev]'` to additionally install some development tools.

## 🚀 Features

Notable features include:
- `ClassicalCode`: class for representing classical linear error-correcting codes over finite fields.
  - Various pre-defined classical code families.
  - Communication with the [GAP/GUAVA](https://www.gap-system.org/Packages/guava.html) package for [even more codes](https://docs.gap-system.org/pkg/guava/doc/chap5.html).
- `QuditCode`: general class for constructing [Galois-qudit codes](https://errorcorrectionzoo.org/c/galois_into_galois).
- `CSSCode`: general class for constructing [quantum CSS codes](https://errorcorrectionzoo.org/c/css) out of two mutually compatible `ClassicalCode`s.
  - `CSSCode.get_logical_ops`: method to construct a complete basis of nontrivial logical operators for a `CSSCode`.
  - `CSSCode.get_distance`: method to compute the code distance (i.e., the minimum weight of a nontrivial logical operator) of a `CSSCode`.  Includes options for computing the exact code distance by brute force, as well as an estimate (or upper bound) with the method of [arXiv:2308.07915](https://arxiv.org/abs/2308.07915).
  - Includes options for applying local Hadamard transformations, which is useful for tailoring a `CSSCode` to biased noise (see [arXiv:2202.01702](https://arxiv.org/abs/2202.01702)).  Options to apply more general Clifford code deformations are pending.
- `GBCode`: class for constructing [generalized bicycle codes](https://errorcorrectionzoo.org/c/generalized_bicycle), as described in [arXiv:1904.02703](https://arxiv.org/abs/1904.02703).
- `BBCode`: class for constructing the [bivariate bicycle codes](https://errorcorrectionzoo.org/c/quantum_quasi_cyclic) in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915) and [arXiv:2311.16980](https://arxiv.org/abs/2311.16980).
  - Includes methods to identify "toric layouts" of a `BBCode`, in which the code looks like a toric code augmented by some long-distance checks, as in discussed in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915).
- `HGPCode`: class for constructing [hypergraph product codes](https://errorcorrectionzoo.org/c/hypergraph_product) out of two `ClassicalCode`s.
- `LPCode`: class for constructing [lifted product codes](https://errorcorrectionzoo.org/c/lifted_product) out of two protographs (i.e., matrices whose entries are elements of a group algebra).  See [arXiv:2012.04068](https://arxiv.org/abs/2012.04068) and [arXiv:2202.01702](https://arxiv.org/abs/2202.01702).
- `QTCode`: class for constructing [quantum Tanner codes](https://errorcorrectionzoo.org/c/quantum_tanner) out of (a) two symmetric subsets `A` and `B` of a group `G`, and (b) two `ClassicalCode`s with block lengths `|A|` and `|B|`.  See [arXiv:2202.13641](https://arxiv.org/abs/2202.13641) and [arXiv:2206.07571](https://arxiv.org/abs/2206.07571).
  - Random `QTCode`s can be constructed out of a choice of group `G` and one `ClassicalCode` only.
- `abstract.py`: module for basic abstract algebra (groups, algebras, and representations thereof).
  - Various pre-defined groups (mostly borrowed from [SymPy](https://docs.sympy.org/latest/modules/combinatorics/named_groups.html)).
  - Communication with the [GAP](https://www.gap-system.org/) computer algebra system and [GroupNames.org](https://people.maths.bris.ac.uk/~matyd/GroupNames/) for constructing [even more groups](https://docs.gap-system.org/doc/ref/chap50.html).
- `objects.py`: module for constructing helper objects such as Cayley complexes and chain complexes, which are instrumental for the construction of various quantum codes.

## 🤔 Questions and issues

If this project gains interest and traction, I'll add a documentation webpage and material to help users get started quickly.  I am also planning to write a paper that presents and explains this project.  In the meantime, you can explore the documentation and explanations in the source code, as well as the `examples` directory.  Test files (such as `qldpc/codes/quantum_test.py`) contain some examples of using the classes and methods described above.

If you have any questions, feedback, or requests, please [open an issue on GitHub](https://github.com/Infleqtion/qLDPC/issues/new) or email me at [michael.perlin@infleqtion.com](mailto:michael.perlin@infleqtion.com)!

## âš“ Attribution

If you use this software in your work, please cite with:
```
@misc{perlin2023qldpc,
  author = {Perlin, Michael A.},
  title = {{qLDPC}},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/Infleqtion/qLDPC}},
}
```
This may require adding `\usepackage{url}` to your LaTeX file header.  Alternatively, you can cite
```
Michael A. Perlin. qLDPC. https://github.com/Infleqtion/qLDPC, 2023.
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Infleqtion/qLDPC",
    "name": "qLDPC",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "quantum computing, quantum error correction, low density partiy check codes, LDPC",
    "author": "Michael A. Perlin",
    "author_email": "mika.perlin@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/b7/aa/ca80d9e6809c240b4f676fa561a952399005465d418b785e678b03bf3cd1/qldpc-0.0.14.tar.gz",
    "platform": null,
    "description": "# qLDPC\n\nThis package contains tools for constructing and analyzing [quantum low density parity check (qLDPC) codes](https://errorcorrectionzoo.org/c/qldpc).\n\n## \ud83d\udce6 Installation\n\nThis package requires Python>=3.10, and can be installed from PyPI with\n```\npip install qldpc\n```\nTo install a local version from source:\n```\ngit clone git@github.com:Infleqtion/qLDPC.git\npip install -e qLDPC\n```\nYou can also `pip install -e 'qLDPC[dev]'` to additionally install some development tools.\n\n## \ud83d\ude80 Features\n\nNotable features include:\n- `ClassicalCode`: class for representing classical linear error-correcting codes over finite fields.\n  - Various pre-defined classical code families.\n  - Communication with the [GAP/GUAVA](https://www.gap-system.org/Packages/guava.html) package for [even more codes](https://docs.gap-system.org/pkg/guava/doc/chap5.html).\n- `QuditCode`: general class for constructing [Galois-qudit codes](https://errorcorrectionzoo.org/c/galois_into_galois).\n- `CSSCode`: general class for constructing [quantum CSS codes](https://errorcorrectionzoo.org/c/css) out of two mutually compatible `ClassicalCode`s.\n  - `CSSCode.get_logical_ops`: method to construct a complete basis of nontrivial logical operators for a `CSSCode`.\n  - `CSSCode.get_distance`: method to compute the code distance (i.e., the minimum weight of a nontrivial logical operator) of a `CSSCode`.  Includes options for computing the exact code distance by brute force, as well as an estimate (or upper bound) with the method of [arXiv:2308.07915](https://arxiv.org/abs/2308.07915).\n  - Includes options for applying local Hadamard transformations, which is useful for tailoring a `CSSCode` to biased noise (see [arXiv:2202.01702](https://arxiv.org/abs/2202.01702)).  Options to apply more general Clifford code deformations are pending.\n- `GBCode`: class for constructing [generalized bicycle codes](https://errorcorrectionzoo.org/c/generalized_bicycle), as described in [arXiv:1904.02703](https://arxiv.org/abs/1904.02703).\n- `BBCode`: class for constructing the [bivariate bicycle codes](https://errorcorrectionzoo.org/c/quantum_quasi_cyclic) in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915) and [arXiv:2311.16980](https://arxiv.org/abs/2311.16980).\n  - Includes methods to identify \"toric layouts\" of a `BBCode`, in which the code looks like a toric code augmented by some long-distance checks, as in discussed in [arXiv:2308.07915](https://arxiv.org/abs/2308.07915).\n- `HGPCode`: class for constructing [hypergraph product codes](https://errorcorrectionzoo.org/c/hypergraph_product) out of two `ClassicalCode`s.\n- `LPCode`: class for constructing [lifted product codes](https://errorcorrectionzoo.org/c/lifted_product) out of two protographs (i.e., matrices whose entries are elements of a group algebra).  See [arXiv:2012.04068](https://arxiv.org/abs/2012.04068) and [arXiv:2202.01702](https://arxiv.org/abs/2202.01702).\n- `QTCode`: class for constructing [quantum Tanner codes](https://errorcorrectionzoo.org/c/quantum_tanner) out of (a) two symmetric subsets `A` and `B` of a group `G`, and (b) two `ClassicalCode`s with block lengths `|A|` and `|B|`.  See [arXiv:2202.13641](https://arxiv.org/abs/2202.13641) and [arXiv:2206.07571](https://arxiv.org/abs/2206.07571).\n  - Random `QTCode`s can be constructed out of a choice of group `G` and one `ClassicalCode` only.\n- `abstract.py`: module for basic abstract algebra (groups, algebras, and representations thereof).\n  - Various pre-defined groups (mostly borrowed from [SymPy](https://docs.sympy.org/latest/modules/combinatorics/named_groups.html)).\n  - Communication with the [GAP](https://www.gap-system.org/) computer algebra system and [GroupNames.org](https://people.maths.bris.ac.uk/~matyd/GroupNames/) for constructing [even more groups](https://docs.gap-system.org/doc/ref/chap50.html).\n- `objects.py`: module for constructing helper objects such as Cayley complexes and chain complexes, which are instrumental for the construction of various quantum codes.\n\n## \ud83e\udd14 Questions and issues\n\nIf this project gains interest and traction, I'll add a documentation webpage and material to help users get started quickly.  I am also planning to write a paper that presents and explains this project.  In the meantime, you can explore the documentation and explanations in the source code, as well as the `examples` directory.  Test files (such as `qldpc/codes/quantum_test.py`) contain some examples of using the classes and methods described above.\n\nIf you have any questions, feedback, or requests, please [open an issue on GitHub](https://github.com/Infleqtion/qLDPC/issues/new) or email me at [michael.perlin@infleqtion.com](mailto:michael.perlin@infleqtion.com)!\n\n## \u2693 Attribution\n\nIf you use this software in your work, please cite with:\n```\n@misc{perlin2023qldpc,\n  author = {Perlin, Michael A.},\n  title = {{qLDPC}},\n  year = {2023},\n  publisher = {GitHub},\n  journal = {GitHub repository},\n  howpublished = {\\url{https://github.com/Infleqtion/qLDPC}},\n}\n```\nThis may require adding `\\usepackage{url}` to your LaTeX file header.  Alternatively, you can cite\n```\nMichael A. Perlin. qLDPC. https://github.com/Infleqtion/qLDPC, 2023.\n```\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Tools for constructing and analyzing quantum low density parity check (qLDPC) codes.",
    "version": "0.0.14",
    "project_urls": {
        "Homepage": "https://github.com/Infleqtion/qLDPC",
        "Repository": "https://github.com/Infleqtion/qLDPC"
    },
    "split_keywords": [
        "quantum computing",
        " quantum error correction",
        " low density partiy check codes",
        " ldpc"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c45b1bbb74548ceeb208a1dd63934f2176a1f43a63530e38a5f134a8b9bcdb44",
                "md5": "1bb5feb0aba6f24e11bd25e37255383d",
                "sha256": "6872846848b0469cb5052fb96353f4282e79a5f4715766c3ad58441af6d79a07"
            },
            "downloads": -1,
            "filename": "qldpc-0.0.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1bb5feb0aba6f24e11bd25e37255383d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 80312,
            "upload_time": "2024-04-27T02:44:17",
            "upload_time_iso_8601": "2024-04-27T02:44:17.567888Z",
            "url": "https://files.pythonhosted.org/packages/c4/5b/1bbb74548ceeb208a1dd63934f2176a1f43a63530e38a5f134a8b9bcdb44/qldpc-0.0.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b7aaca80d9e6809c240b4f676fa561a952399005465d418b785e678b03bf3cd1",
                "md5": "50ba492b44dde9ebe82d177d12416058",
                "sha256": "b49ddf6df816d41c946bf1aca64b1ffafd5f438caa6b87c2b7adb3484025f4e1"
            },
            "downloads": -1,
            "filename": "qldpc-0.0.14.tar.gz",
            "has_sig": false,
            "md5_digest": "50ba492b44dde9ebe82d177d12416058",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 69852,
            "upload_time": "2024-04-27T02:44:20",
            "upload_time_iso_8601": "2024-04-27T02:44:20.090123Z",
            "url": "https://files.pythonhosted.org/packages/b7/aa/ca80d9e6809c240b4f676fa561a952399005465d418b785e678b03bf3cd1/qldpc-0.0.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-27 02:44:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Infleqtion",
    "github_project": "qLDPC",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "qldpc"
}
        
Elapsed time: 0.27437s