A library for writing imperative quantum computing programs in Cirq.
Project description
blqs_cirq: Taking the pain out of writing Cirq programs
Blqs_cirq is a library that uses blqs to make it easier to write Cirq programs.
Here is the creation of a simple circuit in Cirq
import cirq
circuit = cirq.Circuit()
q0, q1 = cirq.LineQubit.range(2)
circuit.append(cirq.H(q0))
circuit.append(cirq.CX(q0, q1))
circuit.append(measure(q0, key='a'))
Blqs_cirq makes it so that you can write this more like a normal imperative program
import blqs_cirq as bc
from blqs_cirq import CX, H, measure
# Write the function imperatively.
@bc.build
def my_circuit():
H(0)
CX(0, 1)
measure(q0, key='a')
# To create the circuit we simply call the function.
circuit = my_circuit()
Blqs provides supports for all the gates in Cirq, along with all the various ways to use these gates to create operations.
But wait, there is more. Blqs_cirq supports
-
Simplification of qubit specification. Instead of creating
LineQubit
orNamedQubit
, etc., one can simply use integers (converted toLineQubit
s), 2-tuples or 2-lists (converted toGridQubit
s) or strings (converted toNamedQubits
). Custom conversions are also possible. -
Simplification of control flow primitives. For example Cirq currently supports a subcircuit which can be repeated. For example here we repeat a small circuit within our circuit:
@bc.build
def my_circuit():
H(1)
with Repeat(repetitions=10):
H(0)
CX(0, 1)
As more control operations are added to Cirq these will be added to blqs_cirq.
- Simple building of Moments. For example, the code below builds two moments:
@bc.build
def my_circuit():
with Moment():
bc.H(0)
with Moment():
bc.H(1)
- Support for Cirq's insertion strategies:
@bc.build
def my_circuit():
with bc.InsertStrategy(cirq.InsertStrategy.NEW):
H(0)
H(1)
Installation
To install blqs_cirq one can simply pip install the appropriate package
pip install blqs_cirq
Note that installing blqs_cirq will also install blqs and cirq.
Documentation
A good place to start is with the introduction, followed by a look at the important features. For a quick intro via a jupyter notebook, see hello blqs_cirq.
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 Distribution
File details
Details for the file blqs_cirq-0.1.0.tar.gz
.
File metadata
- Download URL: blqs_cirq-0.1.0.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c93b37135a0dc03d426fdb11692f574a1dcdc847dc389d2cbd8a81372a6bfa2 |
|
MD5 | 622985f5d7b745cfbaadeaccf6bde69d |
|
BLAKE2b-256 | 7c00b45b7b951abfe06cb61f21383d058a520a02b5e2db00153aa6b72710f80d |
File details
Details for the file blqs_cirq-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: blqs_cirq-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7648531971586682d32a097430935db45dd5df3b4abb377942f753860e8b2ef3 |
|
MD5 | 29554db6ac9c8197e849f60ec8eb1409 |
|
BLAKE2b-256 | 6d7637dadb56a75c4520ce95dbb1cd3324014b41a97aaf721301a10e70fa26aa |