Quantum Protocol Zoo Atomic Functions Library
Project description
Overview
This library provides atomic functions implementations and makes them available to several quantum simulation backends.
Status
Implemented atomic functions and planning
Name |
Implementation |
Doc string |
Test |
Cubmodule |
Comment |
---|---|---|---|---|---|
Sending qubit (given by simulation backend) |
DNE |
OK |
NA |
simulaqron mapping |
|
Receive qubit (given by simulation backend) |
DNE |
OK |
NA |
simulaqron mapping |
|
Local Clifford Gates (CNOT, H, Pauli’s) |
DNE |
OK |
NA |
simulaqron mapping |
|
Local non-Clifford Gates (T, Tinv) |
DNE |
OK |
NA |
simulaqron mapping |
|
CZ gate |
DNE |
OK |
TDO |
gate |
self inverse, and corresponds to classically controlled Z for comp. basis control |
CSWAP gate |
DNE |
OK |
TDO |
gate |
|
Creation Pauli eigenstates |
DNE |
OK |
DNE |
prep |
|
Creation and broadcast of n-party GHZ state |
DNE |
OK |
DNE |
prep |
|
Single qubit equatorial plane preparation |
DNE |
OK |
TDO |
prep |
|
Creation and broadcast of n-party stabilizer states |
NXT |
prep |
|||
QFactory |
LTR |
prep |
|||
Projections onto Pauli eigenstates |
DNE |
OK |
OK |
meas |
|
Single qubit equatorial plane measurement |
TDO |
meas |
|||
Multi qubit POVM |
LTR |
meas |
|||
Quantum One-Time-Pad encode / decode |
DNE |
OK |
OK |
pres |
|
BB84 encode / decode is a subset of QOTP encode / decode |
NA |
NA |
NA |
NA |
|
Collective BB84 encoding |
DNG |
pres |
|||
Swap Test |
DNE |
OK |
TDO |
test |
|
Verification of stabilizer state |
test |
||||
Quantum RNG |
DNE |
Check |
TDO |
util |
|
Information reconciliation |
LTR |
util |
|||
Classical error correction |
LTR |
util |
|||
Quantum error correction |
LTR |
util |
|||
Privacy amplification |
LTR |
util |
|||
Quantum one-way function |
NXT |
util |
|||
Weak string erasure |
NXT |
||||
Teleportation send |
TDO |
tran |
|||
Teleportation receive |
TDO |
tran |
|||
Quantum authenticated channel |
LTR |
||||
Secure classical broadcast channel |
LTR |
||||
Classical authenticated channel |
LTR |
Design principles
There exist many different quantum computing backends. The idea with this library was to abstract them away so that code running written using the library could be run on other backends, provided that the rest of the code not composed of functions defined by the library is not backend specific.
To do this, we instantiate the library by giving it a mapping and a node. The mapping is the translation of the backend specific way of calling elementary quantum operations, while the node is the actual quantum registers that are available to perform the computation. The node usually contains also some additional functions such as sending qubits to other nodes, receiving and sending entanglement etc. The differences have been abstracted away with the mappings for simulaqron and qunetsim . Other mappings have been considered and used but not made available most notably for Netsquid.
Feel free to add functions, or code new mappings by forking and pull-requesting insertion of your additions. Please keep us updated with your work so that we inform you of changes that could be breaking things.
Usage
Look at the examples/examples.py file. The library is instantiated for each node (as if the nodes were independent computers, each loading its version of the library).
Other sources of inspirations are the tests defined in the tests directory
New atomic functions will be added following the list established by extracting atomic functions from the Quantum Protocol Zoo.
Testing
Tests can be run using python setup.py test at the root of the repository.
The repository includes a tests directory that contains the file test_qpz_atomics.py which gathers all the tests implemented. It is using the pytest package to launch the tests and gather statistics, while being based on hypothesis for generating examples.
For the tests to run, you need to have a quatum network simulator available and running. We have chosen to implement the tests using simulaqron as a backend, hence requiring a running simulaqron instance. This can be done typing the following:
simulaqron set max-qubits 100
simulaqron start
Other backends could be used provided the tests are rewritten and the required backend is available and properly mapped in the library.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file qpz_atomics-0.1.4.tar.gz
.
File metadata
- Download URL: qpz_atomics-0.1.4.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/44.0.0.post20200709 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | da8f58db3a76e8bd96eb9b6d766a3d17ab86258934279a4ffd54adc751f569b7 |
|
MD5 | ea079378437bb5784a36a058325eeba4 |
|
BLAKE2b-256 | 309797aadd4646a0f682b34174ff9d9e7e3169b3df2e2a15dca9d62ef3e450ff |