Welcome to the QuREBB repository! Here, we introduce a modular theoretical framework designed for the comprehensive understanding and comparison of various photon-mediated remote entanglement protocols (REPs). This repository is based on the framework and results outlined in the paper "Tutorial: Remote entanglement protocols for stationary qubits with photonic interface". Structured into four distinct layers, this framework facilitates the assembly of modules by connecting one's output to another's input, elucidating the intricate mechanisms underpinning entanglement.
The primary strength of our framework is its capability to delineate common features inherent to different remote entanglement protocols. Beyond this, it is designed with adaptability at its core, enabling users to modify modules with precision. This adaptability is crucial to compare a protocol across diverse quantum hardware setups or to test an array of protocols on a consistent hardware foundation. Such modularity and precision often remain elusive in dedicated entanglement simulations tailored for specific experimental setups. Dive deep into the intricacies of photon-mediated entanglement generation between qubit systems, and leverage the robust capabilities of our simulation suite.
Hans Beukers1,*, Matteo Pasini1,*, Hyeongrak Choi2,*, Dirk Englund2, Ronald Hanson1, Johannes Borregaard1
* These authors equally contributed to this work.
-
NQobj.py
- This file contains the
NQobjclass, an extension of QuTiP'sQobj. The core enhancement is the ability to index quantum object modes using descriptivenamesrather than numerical indices. The named indexing feature allows for the operations like$+, \times, \otimes$ ,$^\dagger, \braket{\cdot|\cdot}$ , and others, withnames. - Error handling is in place to ensure that the naming conventions are consistent and non-duplicative.
- Several helper functions are provided, including functions to find missing names, permute objects, and add missing modes.
- This file contains the
-
quantum_optical_modelling.py
- This file contains the quantum optical modelling functions to simulate the quantum hardware (e.g. cavity-QED system, laser-qubit interaction, quantum noises).
- Input: physical parameters, output: parameters describing the response of quantum system.
- For instance, the cavity function accepts
$\kappa, \gamma, g$ etc. as arguments and returns$t, r$ and$l$ (transmission, reflection and loss).
-
PBB.py
- This file contains building-block functions based on physical functionality.
- While some functions are self-contained, more complex PBBs leverage the
quantum_optical_modelling.pyfor hardware simulation. -
PBBinput: physical parameters,PBBoutput: quantum channel (also called unital map, operator sum representation, or completely-positive trace-preserving map)
-
LBB.py
- This file contains building-block functions based on logical functionality.
-
LBBfunctions employsPBBfunctions to craft LBB quantum channels. -
LBBinput: density matrix,LBBoutput: logically process density matrix
-
protocol.py
- This file contains the
Protocolclass, that is used to simulate the behaviour of a remote entanglement protocol (REP). - It also provides the
ProtocolSweepclass for sweeping parameters in the protocols for fidelity and rate optimization.
- This file contains the
-
states.py
- Primarily for convenience and enhanced code readability (e.g.
vacuum()in stead ofqutip.basis(0,2)).
- Primarily for convenience and enhanced code readability (e.g.
- tutorial_protocols.py
- The three protocols (A, B, C) from the QuREBB paper (Figure 7) are implemented in code in this file.
- Example notebook.ipynb
- This notebook illustrates the construction of a protocol, exemplified by Protocol C in the referenced document.
- It details common imports, the definition of a protocol using building blocks, and the execution of parameter sweeps.
- This subdirectory contains the notebooks simulating the three protocols (A, B, C) from the QuREBB paper.
The virtual environment in this QuREBB repository is managed by pipenv. To install pipenv you can use pip:
$ pip install pipenv --userUsing pipenv you then want to install all the dependencies of the repository by syncing with pipenv. First navigate in the terminal to the QuREBB folder. Then run:
$ pipenv syncOnce you are synced you can go into a shell of this virtual enviroment (again while being in the QuREBB folder):
$ pipenv shellThe commands you now run are within this virtual enviroment, e.g.:
$ jupyter labThe dependencies are formulated in the pipenv file. Also the pipenv tool can be used to load the correct enviroment (see "running QuREBB").
QuREBB is licensed under the BSD 3-Clause License, which allows for the free use, modification, and distribution of software as long as certain conditions are met.
See the LICENSE.txt file for more details.
If you use QuREBB in your research, please cite the original QuREBB paper.