Skip to main content

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

qpz_atomics-0.1.3.tar.gz (21.3 kB view details)

Uploaded Source

File details

Details for the file qpz_atomics-0.1.3.tar.gz.

File metadata

  • Download URL: qpz_atomics-0.1.3.tar.gz
  • Upload date:
  • Size: 21.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/50.0.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.2

File hashes

Hashes for qpz_atomics-0.1.3.tar.gz
Algorithm Hash digest
SHA256 4476dc576a99f9c4440965dddf88894812854be174972ea67b8d3fe0ececd498
MD5 5ad9c99dbe7f7e0dc2af9b6ee0f39bfc
BLAKE2b-256 493c7b1d1ae060c2c0cd554e372bcfcf3eb6466cfc998f689fa4a7a28beca8dd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page