Skip to main content

A quantum state distinguisher with minimum theoretical worst-case probability of error.

Project description

Helstrom · GitHub license contributions welcome

Helstrom is a quantum state distinguisher with minimum theoretical worst-case probability of error.

Features

  • Distinguish two qubits with minimum worst-case error.
  • Obtain POVMs and min_pwc.
  • Now available on PyPI!
  • Support for qudits now here!
  • Support for entangled states coming soon!

Tech

Helstrom uses a number of open source projects to work properly:

  • CVXPY - Python-embedded modeling language for convex optimization problems!
  • MOSEK - The package for large scale convex, conic and mixed-integer optimization.
  • NumPy - The fundamental package for scientific computing with Python.

And of course Helstrom itself is a free and open-source software with a public repository on GitHub.

Installation

Helstrom has been developed and tested to run on Python 3.8.

Install Python if you have not already.

You could install Helstrom via pip by running:

pip install helstrom

Note: MOSEK requires an academic license to operate. Academic faculty, students or staff gets free license. Apply for a license.

Alternatively, to contribute, download the code as ZIP, extract it, and enter the folder. Then, install the dependencies by typing the following command on your terminal:

cd helstrom-main # Change directory into child directory
pip install -r requirements.txt

Examples

Now run the following command on the terminal to use Helstrom's SDP and the results will be printed:

python -m helstrom "1 0; 0 0" "1 0; 0 1"
# Pass in desired states of rho_0 and rho_1 as two arguments

If the two arguments are not provided, by default, the states rho_0 and rho_1 are:

rho_0 = [ 1 0 ]    rho_1 =  [ 0.5 0 ]
        [ 0 0 ]             [ 0 0.5 ]
        # "1 0; 0 0"          # "0.5 0; 0 0.5"

If Helstrom was downloaded via ZIP, you may run helstromSDP.py directly.

Helstrom can be used as part of your code. Simply,

import helstrom
helstrom.sdp(rho_0, rho_1)

Development

Want to contribute? Great!

Helstrom uses Python for developing. Make changes in your file and create a pull request!

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

helstrom-0.3.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

helstrom-0.3-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file helstrom-0.3.tar.gz.

File metadata

  • Download URL: helstrom-0.3.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.10

File hashes

Hashes for helstrom-0.3.tar.gz
Algorithm Hash digest
SHA256 9333dab2dc901953bd61d9d7b3746b09364ec737c183d6cf1d5abb1af229c99c
MD5 c2aebfaacd6f1581f5f4940d2cdf0322
BLAKE2b-256 2a65876b501c01fdb7554fb1c4d67b5a3cefb09ef22d712295350b31270e6e93

See more details on using hashes here.

File details

Details for the file helstrom-0.3-py3-none-any.whl.

File metadata

  • Download URL: helstrom-0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.10

File hashes

Hashes for helstrom-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 067278b570ff25ffb34af814021b803a5918dc16352682d429e184520320aeb6
MD5 53ead61296166bb893f5b2ca3b67abc8
BLAKE2b-256 196419d6ea765da86040df33d8f65c6250ccc1c78c825b4b744e5e8bc4731464

See more details on using hashes here.

Supported by

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