A quantum computing library for the rest of us
Project description
Qublets
Qublets is an approachable Quantum Computing Library written in Python using Intel's intel-qs Quantum Computing Simulator. The goal of the library is to make introductory quantum computing approachable at the undergraduate (or lower) level.
Setup
If you are on Unix, the easiest way to start using qublets is by installing the pre-compiled pip module:
pip install qublets
If you don't have pip installed, it takes 30 seconds and it will make your life managing Python deps much easier:
cd ~
curl https://bootstrap.pypa.io/get-pip.py > get-pip.py
python3 get-pip.py
If you are not on Unix or don't want to install pip, you can always build from source
Getting Started
Qublets makes it easy to run simple quantum examples. Consider the classic "Superposition qubit" case:
from qublets import QUInt
result = QUInt.zeros(1).hadamard().measure()
print(result)
As you can see, Qublets aims to be as readable as possible (although you can customize quite a bit later). Running the code above will yield a 1
50% of the cases and a 0
the rest. That's it. You may also notice (most) Qublets operators are chainable and will return the object they operated on - this makes building circuits a breeze.
If you're familiar with quantum state names, you can make the above example even shorter by using a |+〉
state:
from qublets import QUInt
result = QUInt.pluses(1).measure()
print(result)
You may have noticed Qublets supports integers natively - in fact, it supports both unsigned and signed integers of any given size (that your computer can work with without combusting in flames). The example above easily generalizes to a 4-bit QInt:
from qublets import QInt
result = QInt.pluses(4).measure()
print(result)
Now, you'd instead get a (mostly) uniformly random number between -8
and 7
.
It wouldn't really be a quantum computing library if we didn't entangle some bits so let's do that quickly:
from qublets import QUInt
q1 = QUInt.zeros(2)
q1[0].hadamard()
q1[1].c_negate(on=q1[0])
print(q1.measure())
# Or, just like before, we can use a shortcut
print(QUInt.fully_entangled(2).measure())
If you're familiar with quantum computing's ABCs, you'd likely be happy to see only 0
and 3
as the possible values of the measurements. That's because the classic had
/cnot
combo will give us a perfect |Φ+〉
state (a bell pair) to work with. fully_entangled
, on the other hand, will always entangle all the bits in a QInt
using a chain of cnot
s - which would be equivalent for only 2 bits.
Qublets also supports cross-q(u)int operations, built-in primitives, batch runs for your circuits, extracting probability amplitudes and more - you can find some inspirational samples in docs/examples/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for qublets-0.1.3-cp310-cp310-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7fb00febb72604acae8bed88e3362f93c8e8331e3598f9e7e336b533166966ac |
|
MD5 | e972d48e4ad7f75bb24e2cbab1a09bff |
|
BLAKE2b-256 | 3a80dfc550bd09d7ea53c5280c4910701bd57ad56e1e6cb2b5fb2df10f9ab8c3 |
Hashes for qublets-0.1.3-cp39-cp39-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1db4d059a6d0016360ecca300e1ae9cf3b512a3246a0d10b60145aac21bbcc0e |
|
MD5 | 8c0256569f970223fb84eaf900283a21 |
|
BLAKE2b-256 | b0a1d17f5ea54424642a311a99cbb2d9689243d9b693bd785dcac3a1ee32ce02 |
Hashes for qublets-0.1.3-cp38-cp38-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca3b6ee8f8d55e0e30ccb496162a12d8b6e88ff6fd2b5cf0256050c2e6786701 |
|
MD5 | 761bd9002dd5848e6ea39ac0854b0559 |
|
BLAKE2b-256 | b51920061575367d95d0dd0a847094756d03912ebac6f46a068c4dc678e39212 |
Hashes for qublets-0.1.3-cp37-cp37m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15e0afc4cdfb43a6df41ae1bfd01ea48ff4e385c700ae4e909b2b454232af6f6 |
|
MD5 | efdac16661904b675dd5af9cad462591 |
|
BLAKE2b-256 | 7285e284a7bfaba6a837d15c5cbe75c70b8bad565021cfd7568da289508a7cf9 |
Hashes for qublets-0.1.3-cp36-cp36m-manylinux_2_24_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ae84a28574b9db2bcc5e912f9e74bbfe7b98283d238a72bd648121230708bd3 |
|
MD5 | e655e4c5487f31c8a046694f34878ffd |
|
BLAKE2b-256 | dfa21732ba907f55114fb37dbed3074ec412fcf63a801f5d6a2e25ef9dd224d7 |