Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Ket Quantum Programming

PyPI Contributor Covenant REUSE status

Ket is an embedded programming language that introduces the ease of Python to quantum programming, letting anyone quickly prototype and test a quantum application.

Python is the most widely used programming language for machine learning and data science and has been the language of choice for quantum programming. Ket is a Python-embedded language, but many can use it as a Python library in most cases. So you can use Ket together with NumPy, SciPy, Pandas, and other popular Python libraries.

Ket's goal is to streamline the development of hardware-independent classical quantum applications by providing transparent interaction of classical and quantum data. See https://quantumket.org to learn more about Ket.

Installation ⬇️

Ket requires Python 3.10 or newer and is available for Linux, Windows, and macOS (both Apple silicon and Intel). If you are using a non-x86_64 (Intel/AMD) CPU, such as ARM, on Linux or Windows, you will need to install Rust before installing Ket.

You can install Ket using pip. To do so, copy and paste the following command into your terminal:

pip install ket-lang

Documentation 📜

Documentation available at https://quantumket.org.

Examples 💡

Grover's Algorithm

import ket
from math import sqrt, pi


def grover(size: int, oracle) -> int:
    p = ket.Process(simulator="dense", num_qubits=size)
    s = ket.H(p.alloc(size))
    steps = int((pi / 4) * sqrt(2**size))
    for _ in range(steps):
        oracle(s)
        with ket.around(ket.cat(ket.H, ket.X), s):
            ket.CZ(*s)
    return ket.measure(s).value


size = 8
looking_for = 13
print(grover(size, ket.qulib.oracle.phase_oracle(looking_for)))
# 13

Quantum Teleportation

import ket


def bell(qubits):
    """Prepare a Bell (maximally entangled) pair."""
    return ket.ctrl(ket.H(qubits[0]), ket.X)(qubits[1])


def teleport(alice_msg, alice_aux, bob_aux):
    """Teleport the quantum state of alice_msg to bob_aux."""
    ket.ctrl(alice_msg, ket.X)(alice_aux)
    ket.H(alice_msg)

    m0 = ket.measure(alice_msg)
    m1 = ket.measure(alice_aux)

    if m1.value == 1:
        ket.X(bob_aux)
    if m0.value == 1:
        ket.Z(bob_aux)

    return bob_aux


p = ket.Process(execution="live")

alice = p.alloc()   # alice = |0⟩
ket.H(alice)        # alice = |+⟩
ket.Z(alice)        # alice = |–⟩

bob = teleport(alice, *bell(p.alloc(2)))  # bob ← alice
ket.H(bob)          # bob   = |1⟩
print("Expected measure 1, result =", ket.measure(bob).value)
# Expected measure 1, result = 1

Setup for Ket Development 🔨

To get started with Ket development, follow these steps:

  1. Rust Installation

    Ensure that Rust is installed on your system. If not, follow the Rust install guide.

    Important: For Rust development, make sure to use the exact same rustc version as the current ket distribution. This version-matching is not required if you are developing with Python or C FFI.

  2. Clone and Compile

    Clone the Ket repository and compile the Rust libraries:

    git clone --recursive https://gitlab.com/quantum-ket/ket.git
    cd ket
    
    cargo build -F c_api --manifest-path src/ket/clib/libs/libket/Cargo.toml
    cargo build --manifest-path src/ket/clib/libs/kbw/Cargo.toml
    
    # Create symlinks from within the libs directory
    ln -s libket/target/debug/libket.so src/ket/clib/libs/libket.so
    ln -s kbw/target/debug/libkbw.so src/ket/clib/libs/libkbw.so
    
  3. Set Up Virtual Environment

    Set up a virtual environment for Python:

    python3 -m venv venv
    source venv/bin/activate
    
  4. Install Dependencies

    Upgrade pip and install development requirements:

    pip install -U pip
    pip install -r requirements_dev.txt
    
  5. Install Ket

    Install Ket in editable mode:

    pip install -e .
    
  6. Run Tests

    To ensure everything is correctly installed, run the tests:

    pytest
    

You're now set up for Ket development! Happy coding! 🚀

Cite Ket 📖

When using Ket for research projects, please cite:

Evandro Chagas Ribeiro da Rosa and Rafael de Santiago. 2021. Ket Quantum Programming. J. Emerg. Technol. Comput. Syst. 18, 1, Article 12 (January 2022), 25 pages. DOI: 10.1145/3474224

@article{ket,
   author = {Evandro Chagas Ribeiro da Rosa and Rafael de Santiago},
   title = {Ket Quantum Programming},
   year = {2021},
   issue_date = {January 2022},
   publisher = {Association for Computing Machinery},
   address = {New York, NY, USA},
   volume = {18},
   number = {1},
   issn = {1550-4832},
   url = {https://doi.org/10.1145/3474224},
   doi = {10.1145/3474224},
   journal = {J. Emerg. Technol. Comput. Syst.},
   month = oct,
   articleno = {12},
   numpages = {25},
   keywords = {Quantum programming, cloud quantum computation, qubit simulation}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ket_lang-0.10.2rc1.tar.gz (215.6 kB view details)

Uploaded Source

Built Distributions

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

ket_lang-0.10.2rc1-py3-none-win_amd64.whl (6.9 MB view details)

Uploaded Python 3Windows x86-64

ket_lang-0.10.2rc1-py3-none-manylinux_2_28_x86_64.whl (4.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

ket_lang-0.10.2rc1-py3-none-macosx_14_0_universal2.whl (8.1 MB view details)

Uploaded Python 3macOS 14.0+ universal2 (ARM64, x86-64)

File details

Details for the file ket_lang-0.10.2rc1.tar.gz.

File metadata

  • Download URL: ket_lang-0.10.2rc1.tar.gz
  • Upload date:
  • Size: 215.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.21

File hashes

Hashes for ket_lang-0.10.2rc1.tar.gz
Algorithm Hash digest
SHA256 3f537fc52a36ad86f4cc6a5ab613e03b2b96b78af22a5c88e7c6c2751739a931
MD5 94e3b09a20008c92bed957fd632349fb
BLAKE2b-256 c6fe2e3192eb3f515288c28909a6f1b5397138065b8f3a595fd74d68b2078f5f

See more details on using hashes here.

File details

Details for the file ket_lang-0.10.2rc1-py3-none-win_amd64.whl.

File metadata

  • Download URL: ket_lang-0.10.2rc1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.10.21

File hashes

Hashes for ket_lang-0.10.2rc1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a517f6c7c272bf937e5812b17843a1a264c54e10a8f07f042a9657187b242d53
MD5 460480ce70d9baa62e3bf5aaa08d67c5
BLAKE2b-256 3e4b250238a3eeb4f22d4e7773b081d73c0e242c5ccc0258f03f8624f22c0f32

See more details on using hashes here.

File details

Details for the file ket_lang-0.10.2rc1-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for ket_lang-0.10.2rc1-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ee41c5c2ccdddac0abb486ae2a4fede7bbdc4c47f88bb81cee6e74a933ce242
MD5 a725808b39b300704fca4bef7794e2ff
BLAKE2b-256 94733a21df8f8c4dba3a320e3ab393e83b5b0090cd76338101e2d8cb225ea76e

See more details on using hashes here.

File details

Details for the file ket_lang-0.10.2rc1-py3-none-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for ket_lang-0.10.2rc1-py3-none-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 841da02f704d2fa5a41ffca03af8f1ed647521a6e4fd3c02eac0551804f5c8c0
MD5 a4efaa6a359f06cd2fd84615b6a4bb60
BLAKE2b-256 0c3ef1e5a3b93a278d13bedca1064222062ed924bd2cbcef6534624695121e13

See more details on using hashes here.

Release history Release notifications | RSS feed

0.10.3

4 files

0.10.2

4 files

This release

0.10.2rc1 This release

4 files

0.10.1

4 files

0.10.0.post1

4 files

0.10.0

4 files

0.9.3.5.post1

4 files

0.9.3.5

4 files

0.9.3.4.post1

4 files

0.9.3.4

4 files

0.9.3.3

4 files

0.9.3.2

4 files

0.9.3.1

4 files

0.9.3

4 files

0.9.2.8

4 files

0.9.2.7

4 files

0.9.2.6

4 files

0.9.2.5

4 files

0.9.2.4

4 files

0.9.2.3

4 files

0.9.2.2

4 files

0.9.2.1

4 files

0.9.2

4 files

0.9.1.5

4 files

0.9.1.4

4 files

0.9.1.3

4 files

0.9.1.2

4 files

0.9.1.1

1 file

0.9.1

4 files

0.9.0

4 files

0.8.3

4 files

0.8.2

4 files

0.8.1

4 files

0.8.0

4 files

0.7.1

5 files

0.7

5 files

0.6.1

5 files

0.6

5 files

0.5.3

3 files

0.5.2

5 files

0.5.1

5 files

0.5.0.1

4 files

0.5.0

4 files

0.4.3

4 files

0.4.2

2 files

0.4.1.post1

2 files

0.4.1

1 file

0.4

1 file

0.3.3

1 file

0.3.2

1 file

0.3.1

1 file

0.3

1 file

0.2.1

5 files

0.2

5 files

0.1.1

6 files

0.1

6 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page