Skip to main content

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 or NamedQubit, etc., one can simply use integers (converted to LineQubits), 2-tuples or 2-lists (converted to GridQubits) or strings (converted to NamedQubits). 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


Download files

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

Source Distribution

blqs_cirq-0.1.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

blqs_cirq-0.1.0-py3-none-any.whl (34.5 kB view details)

Uploaded Python 3

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

Hashes for blqs_cirq-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1c93b37135a0dc03d426fdb11692f574a1dcdc847dc389d2cbd8a81372a6bfa2
MD5 622985f5d7b745cfbaadeaccf6bde69d
BLAKE2b-256 7c00b45b7b951abfe06cb61f21383d058a520a02b5e2db00153aa6b72710f80d

See more details on using hashes here.

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

Hashes for blqs_cirq-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7648531971586682d32a097430935db45dd5df3b4abb377942f753860e8b2ef3
MD5 29554db6ac9c8197e849f60ec8eb1409
BLAKE2b-256 6d7637dadb56a75c4520ce95dbb1cd3324014b41a97aaf721301a10e70fa26aa

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