Metadata-Version: 2.1
Name: requsim
Version: 0.4
Summary: A simulation framework for quantum repeaters
Author: =?utf-8?q?Julius_Walln=C3=B6fer?=
License: =?utf-8?q?MIT_License?=
 =?utf-8?q?_?=
 =?utf-8?q?_Copyright_=28c=29_2021-2022_Julius_Walln=C3=B6fer?=
 =?utf-8?q?_?=
 =?utf-8?q?_Permission_is_hereby_granted=2C_free_of_charge=2C_to_any_person_obtaining_a_copy?=
 =?utf-8?q?_of_this_software_and_associated_documentation_files_=28the_=22Software=22=29=2C_to_deal?=
 =?utf-8?q?_in_the_Software_without_restriction=2C_including_without_limitation_the_rights?=
 =?utf-8?q?_to_use=2C_copy=2C_modify=2C_merge=2C_publish=2C_distribute=2C_sublicense=2C_and/or_sell?=
 =?utf-8?q?_copies_of_the_Software=2C_and_to_permit_persons_to_whom_the_Software_is?=
 =?utf-8?q?_furnished_to_do_so=2C_subject_to_the_following_conditions=3A?=
 =?utf-8?q?_?=
 =?utf-8?q?_The_above_copyright_notice_and_this_permission_notice_shall_be_included_in_all?=
 =?utf-8?q?_copies_or_substantial_portions_of_the_Software=2E?=
 =?utf-8?q?_?=
 =?utf-8?q?_THE_SOFTWARE_IS_PROVIDED_=22AS_IS=22=2C_WITHOUT_WARRANTY_OF_ANY_KIND=2C_EXPRESS_OR?=
 =?utf-8?q?_IMPLIED=2C_INCLUDING_BUT_NOT_LIMITED_TO_THE_WARRANTIES_OF_MERCHANTABILITY=2C?=
 =?utf-8?q?_FITNESS_FOR_A_PARTICULAR_PURPOSE_AND_NONINFRINGEMENT=2E_IN_NO_EVENT_SHALL_THE?=
 =?utf-8?q?_AUTHORS_OR_COPYRIGHT_HOLDERS_BE_LIABLE_FOR_ANY_CLAIM=2C_DAMAGES_OR_OTHER?=
 =?utf-8?q?_LIABILITY=2C_WHETHER_IN_AN_ACTION_OF_CONTRACT=2C_TORT_OR_OTHERWISE=2C_ARISING_FROM=2C?=
 =?utf-8?q?_OUT_OF_OR_IN_CONNECTION_WITH_THE_SOFTWARE_OR_THE_USE_OR_OTHER_DEALINGS_IN_THE?=
 =?utf-8?q?_SOFTWARE=2E?=
 =?utf-8?q?_?=
Project-URL: homepage, https://github.com/jwallnoefer/requsim
Keywords: quantum information,quantum information theory,quantum communication,quantum repeater
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.8.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy (>=1.21.2)
Requires-Dist: pandas (>=1.3.3)
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: autodocsumm ; extra == 'docs'
Requires-Dist: recommonmark ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest (>=6.2.5) ; extra == 'test'

# ReQuSim

[![PyPI](http://img.shields.io/pypi/v/requsim.svg)](https://pypi.python.org/pypi/requsim)
[![Docs](https://readthedocs.org/projects/requsim/badge/?version=latest)](https://requsim.readthedocs.io)
[![Tests, Artifacts and Release](https://github.com/jwallnoefer/requsim/actions/workflows/ci.yaml/badge.svg)](https://github.com/jwallnoefer/requsim/actions/workflows/ci.yaml)

ReQuSim is a simulation platform for quantum repeaters. It allows to evaluate
quantum repeater strategies for long-distance quantum key distribution and
entanglement distribution protocols, while taking into account arbitrary
error models.


## Installation

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

```
pip install requsim
```

As with all python packages this can possibly overwrite already installed
package versions in your environment with its dependencies, which is why
installing it in a dedicated virtual environment may be preferable.

## Documentation

The Documentation is hosted on [readthedocs](https://readthedocs.org/) and
includes some example setups of how to use ReQuSim to simulate basic
key distribution protocols.

Documentation: [https://requsim.readthedocs.io](https://requsim.readthedocs.io)

## Scope

The aim of ReQuSim is to model quantum repeater protocols accurately and gain
insight where analytical results are hard to obtain.

The level of abstraction
is chosen such that one can consider very general error models (basically
anything that can be described as a quantum channel), but not modeling down
to the actual physical level.

The abstractions used in ReQuSim lend themselves to describing protocols as
high-level strategies (e.g. if two pairs are present, perform entanglement
swapping), but in principle any strategy can be used to schedule arbitrary
events in the event system.

Classical communication plays an important role in quantum repeater protocols,
and cannot be ignored. Especially, because the timing of when quantum operations
need to be performed for a protocol is the central thing the simulation wants
to capture. ReQuSim allows to take into account the timing information from
classical communication steps, but does not model them down to the level of
individual messages being passed.

In summary, ReQuSim can be used for:
  * Modelling a variety of setups for quantum repeaters, like fiber based and
    free-space based repeater, through flexible loss and noise models.
  * Obtaining numerical key rates for repeater protocols that are challenging to
    evaluate analytically.
  * Testing the effect of strategies for repeater protocols at a high level,
    e.g.
    - Should one discard qubits that sit in storage for too long?
    - Does adding an additional repeater station help for a particular setup?
  * Evaluating the effect of parameters on the overall performance of a
    repeater setup. (e.g. if the error model is based on experimental data,
      this could assist in determining whether improving some experimental
      parameter is worthwhile.)

but it is not intended to:
  * Develop code that directly interacts with future quantum hardware.
  * In detail, model effects at the physical layer and some aspects of link
    layer protocols. (However,they can be incorporated indirectly via quantum
      channels and probability distributions.)
  * Simulate huge networks with 1000s of parties.


Support for elementary building blocks other than Bell pairs is considered for
future versions (e.g. distribution of GHZ states via a multipartite
repeater architecture).


### Other quantum network simulators

ReQuSim has a different scope and aim from some other simulation packages for
quantum networks (list obviously not exhaustive):

  * [NetSquid](https://netsquid.org/): Includes performance of physical and
    link layer in greater detail. Supports multiple ways to store quantum states
    (e.g. pure states, mixed states, stabilizers).
  * [QuISP](https://github.com/sfc-aqua/quisp): Tracks errors instead of full
    states. While lower level operations are supported, the focus is on
    networking aspects.
  * [QuNetSim](https://github.com/tqsd/QuNetSim): Supports multiple backends
    for simulating quantum objects, which can support lower level operations.
    QuNetSim itself focuses on the networking aspects.

ReQuSim's level of abstraction works very well for exploring and comparing
strategies for quantum repeaters. While it aims to be flexible and
extendable, another set of abstractions might work better for other questions.

## Publications and related projects
An earlier (unreleased) version of requsim was used for this publication:

> Simulating quantum repeater strategies for multiple satellites <br>
> J. Wallnöfer, F. Hahn, M. Gündoğan, J. S. Sidhu, F. Krüger, N. Walk, J. Eisert, J. Wolters <br>
> Commun Phys **5**, 169 (2022); DOI: [10.1038/s42005-022-00945-9](https://doi.org/10.1038/s42005-022-00945-9) <br>
> Preprint: [arXiv:2110.15806 [quant-ph]](https://doi.org/10.48550/arXiv.2110.15806);
> Code archive: [jwallnoefer/multisat_qrepeater_sim_archive](https://github.com/jwallnoefer/multisat_qrepeater_sim_archive)
