noisy-graph-states


Namenoisy-graph-states JSON
Version 0.3 PyPI version JSON
download
home_pageNone
SummaryA tool to treat noise on graph states.
upload_time2024-04-17 11:42:38
maintainerNone
docs_urlNone
authorJulius Wallnöfer, Maria Flors Mor-Ruiz
requires_python>=3.9
licenseMIT License Copyright (c) 2023 Julius Wallnöfer Copyright (c) 2024 Julius Wallnöfer and Maria Flors Mor-Ruiz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords quantum information quantum information theory graph graph state stabilizer state stabilizer formalism entanglement multipartite entanglement
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Noisy graph states

[![PyPI](https://img.shields.io/pypi/v/noisy-graph-states)](https://pypi.org/project/noisy-graph-states/)
[![Documentation Status](https://readthedocs.org/projects/noisy-graph-states/badge/?version=latest)](https://noisy-graph-states.readthedocs.io/en/latest/?badge=latest)
[![Tests](https://github.com/jwallnoefer/noisy_graph_states/actions/workflows/ci.yaml/badge.svg)](https://github.com/jwallnoefer/noisy_graph_states/actions/workflows/ci.yaml)
[![DOI](https://zenodo.org/badge/696296923.svg)](https://zenodo.org/doi/10.5281/zenodo.10625616)


This python package is a tool to track how noisy graph
states transform under operations and measurements
(for an introduction to graph states see e.g.
[arXiv:quant-ph/0602096](https://arxiv.org/abs/quant-ph/0602096)).
It uses the Noisy Stabilizer Formalism introduced in


> Noisy stabilizer formalism <br>
> M. F. Mor-Ruiz, W. Dür <br>
> Phys. Rev. A **107**, 032424 (2023); DOI: [10.1103/PhysRevA.107.032424](https://doi.org/10.1103/PhysRevA.107.032424) <br>
> Preprint: [arXiv:2212.08677 [quant-ph]](https://doi.org/10.48550/arXiv.2212.08677)

that describes how Pauli-diagonal noise on graph states
transforms under various graph operations, such as
local complementation, Pauli measurements and merging
operations.

## Installation

You can install the package into your Python environment
from the Python Package Index:

```
pip install noisy-graph-states
```
As with all Python packages this can
possibly overwrite already installed package versions in your
environment with its dependencies, so installing it in a
dedicated virtual environment may be preferable.

If you encounter any problems, you can try installing the
exact versions of the dependencies of this package, which
were used to develop it (specified in `Pipfile.lock`).
This assume Python 3.9 and `pipenv` are available on your system.
```
git clone https://github.com/jwallnoefer/noisy_graph_states.git
cd noisy_graph_states
git checkout main
pipenv sync
pipenv install .
```
Then you can activate the virtual environment with `pipenv shell`.

## Documentation

The documentation can be built from source with Sphinx,
but it is also hosted at [https://noisy-graph-states.readthedocs.io](https://noisy-graph-states.readthedocs.io)

## Motivation

There are many protocols in quantum information science
that are based on graph states and transformations of
graph states. In any realistic scenario noise and
imperfections have to be taken into account in order
to analyse the performance of such protocols.

While there are existing tools for dealing with
stabilizer states and Clifford circuits,
it can be useful to stay within the graph state
interpretation for the whole protocol.
Furthermore, our approach allows us to explicitly
obtain the density matrix of the output state
without the need to sample from it.


### Working principle

Instead of updating the density matrix, instead track
how the noise on the state transforms along with the
graph state transformation.

For some cases of noise (such as local noise acting on
the initial state before operations are performed)
the Noisy Stabilizer Formalism allows to do this
very efficiently (updating O(n) noises instead of
exponentially many density matrix entries).

The main insight here is that the
noise channels can be tracked individually instead
of being combined to one global channel,
e.g. local depolarizing noise on every qubit is highly
structured, but nonetheless a full rank noise channel
viewed in a global picture.

However, note that this efficiency increase is not
guaranteed in general, as with the general correlated
noise, one inevitably needs to track exponentially many
entries again.

## Use of the code
The noisy graph state package was used for these publications:

> Imperfect quantum networks with tailored resource states <br>
> M. F. Mor-Ruiz, J. Wallnöfer, W. Dür <br>
> Preprint: [arXiv:2403.19778 [quant-ph]](https://doi.org/10.48550/arXiv.2403.19778)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "noisy-graph-states",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "quantum information, quantum information theory, graph, graph state, stabilizer state, stabilizer formalism, entanglement, multipartite entanglement",
    "author": "Julius Walln\u00f6fer, Maria Flors Mor-Ruiz",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/ed/3e/05e5c0ac5ebcfb60f6e13ad736388f9a3978e6808b63dfe2f06d1a33084e/noisy_graph_states-0.3.tar.gz",
    "platform": null,
    "description": "# Noisy graph states\n\n[![PyPI](https://img.shields.io/pypi/v/noisy-graph-states)](https://pypi.org/project/noisy-graph-states/)\n[![Documentation Status](https://readthedocs.org/projects/noisy-graph-states/badge/?version=latest)](https://noisy-graph-states.readthedocs.io/en/latest/?badge=latest)\n[![Tests](https://github.com/jwallnoefer/noisy_graph_states/actions/workflows/ci.yaml/badge.svg)](https://github.com/jwallnoefer/noisy_graph_states/actions/workflows/ci.yaml)\n[![DOI](https://zenodo.org/badge/696296923.svg)](https://zenodo.org/doi/10.5281/zenodo.10625616)\n\n\nThis python package is a tool to track how noisy graph\nstates transform under operations and measurements\n(for an introduction to graph states see e.g.\n[arXiv:quant-ph/0602096](https://arxiv.org/abs/quant-ph/0602096)).\nIt uses the Noisy Stabilizer Formalism introduced in\n\n\n> Noisy stabilizer formalism <br>\n> M. F. Mor-Ruiz, W. D\u00fcr <br>\n> Phys. Rev. A **107**, 032424 (2023); DOI: [10.1103/PhysRevA.107.032424](https://doi.org/10.1103/PhysRevA.107.032424) <br>\n> Preprint: [arXiv:2212.08677 [quant-ph]](https://doi.org/10.48550/arXiv.2212.08677)\n\nthat describes how Pauli-diagonal noise on graph states\ntransforms under various graph operations, such as\nlocal complementation, Pauli measurements and merging\noperations.\n\n## Installation\n\nYou can install the package into your Python environment\nfrom the Python Package Index:\n\n```\npip install noisy-graph-states\n```\nAs with all Python packages this can\npossibly overwrite already installed package versions in your\nenvironment with its dependencies, so installing it in a\ndedicated virtual environment may be preferable.\n\nIf you encounter any problems, you can try installing the\nexact versions of the dependencies of this package, which\nwere used to develop it (specified in `Pipfile.lock`).\nThis assume Python 3.9 and `pipenv` are available on your system.\n```\ngit clone https://github.com/jwallnoefer/noisy_graph_states.git\ncd noisy_graph_states\ngit checkout main\npipenv sync\npipenv install .\n```\nThen you can activate the virtual environment with `pipenv shell`.\n\n## Documentation\n\nThe documentation can be built from source with Sphinx,\nbut it is also hosted at [https://noisy-graph-states.readthedocs.io](https://noisy-graph-states.readthedocs.io)\n\n## Motivation\n\nThere are many protocols in quantum information science\nthat are based on graph states and transformations of\ngraph states. In any realistic scenario noise and\nimperfections have to be taken into account in order\nto analyse the performance of such protocols.\n\nWhile there are existing tools for dealing with\nstabilizer states and Clifford circuits,\nit can be useful to stay within the graph state\ninterpretation for the whole protocol.\nFurthermore, our approach allows us to explicitly\nobtain the density matrix of the output state\nwithout the need to sample from it.\n\n\n### Working principle\n\nInstead of updating the density matrix, instead track\nhow the noise on the state transforms along with the\ngraph state transformation.\n\nFor some cases of noise (such as local noise acting on\nthe initial state before operations are performed)\nthe Noisy Stabilizer Formalism allows to do this\nvery efficiently (updating O(n) noises instead of\nexponentially many density matrix entries).\n\nThe main insight here is that the\nnoise channels can be tracked individually instead\nof being combined to one global channel,\ne.g. local depolarizing noise on every qubit is highly\nstructured, but nonetheless a full rank noise channel\nviewed in a global picture.\n\nHowever, note that this efficiency increase is not\nguaranteed in general, as with the general correlated\nnoise, one inevitably needs to track exponentially many\nentries again.\n\n## Use of the code\nThe noisy graph state package was used for these publications:\n\n> Imperfect quantum networks with tailored resource states <br>\n> M. F. Mor-Ruiz, J. Walln\u00f6fer, W. D\u00fcr <br>\n> Preprint: [arXiv:2403.19778 [quant-ph]](https://doi.org/10.48550/arXiv.2403.19778)\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2023 Julius Walln\u00f6fer Copyright (c) 2024 Julius Walln\u00f6fer and Maria Flors Mor-Ruiz  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ",
    "summary": "A tool to treat noise on graph states.",
    "version": "0.3",
    "project_urls": {
        "homepage": "https://github.com/jwallnoefer/noisy_graph_states"
    },
    "split_keywords": [
        "quantum information",
        " quantum information theory",
        " graph",
        " graph state",
        " stabilizer state",
        " stabilizer formalism",
        " entanglement",
        " multipartite entanglement"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "35ead21b58711561fc405ee356681c95f525e48695b52e7713faef167cafd801",
                "md5": "767d0d42cdcf4bda503aacf998a48afa",
                "sha256": "248c8686e3b3ef43dffb748934ac49ce0fbb463be27d5e50691cdff79b98b4c0"
            },
            "downloads": -1,
            "filename": "noisy_graph_states-0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "767d0d42cdcf4bda503aacf998a48afa",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 24729,
            "upload_time": "2024-04-17T11:42:36",
            "upload_time_iso_8601": "2024-04-17T11:42:36.148469Z",
            "url": "https://files.pythonhosted.org/packages/35/ea/d21b58711561fc405ee356681c95f525e48695b52e7713faef167cafd801/noisy_graph_states-0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ed3e05e5c0ac5ebcfb60f6e13ad736388f9a3978e6808b63dfe2f06d1a33084e",
                "md5": "194df8d4996f735ce359ce49b8f43590",
                "sha256": "4f95427cfdd7bca7f371dbc3f810b2e89a9964ddd75a975ac3c1f7c22976fc91"
            },
            "downloads": -1,
            "filename": "noisy_graph_states-0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "194df8d4996f735ce359ce49b8f43590",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 54250,
            "upload_time": "2024-04-17T11:42:38",
            "upload_time_iso_8601": "2024-04-17T11:42:38.636329Z",
            "url": "https://files.pythonhosted.org/packages/ed/3e/05e5c0ac5ebcfb60f6e13ad736388f9a3978e6808b63dfe2f06d1a33084e/noisy_graph_states-0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-17 11:42:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jwallnoefer",
    "github_project": "noisy_graph_states",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "noisy-graph-states"
}
        
Elapsed time: 0.27293s