Skip to main content

Cirq adapter for Clifft circuits and sampling

Project description

clifft-cirq

clifft-cirq converts parameter-resolved qubit cirq.Circuit instances into Clifft circuit text and provides a small Cirq-style sampler facade on top of Clifft. Parameter-resolved means the circuit has no symbolic parameters left, for example after cirq.resolve_parameters.

import cirq
import clifft_cirq

q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
    cirq.H(q0),
    cirq.CNOT(q0, q1),
    cirq.measure(q0, q1, key="m"),
)

converted = clifft_cirq.to_clifft_text(circuit)
print(converted.clifft_text)

sampler = clifft_cirq.ClifftSampler(seed=123)
result = sampler.run(circuit, repetitions=1000)

The converter returns:

  • clifft_text: text accepted by Clifft's parser.
  • qubit_map: the deterministic mapping from Cirq qubits to Clifft integer qubits.
  • measurement_map: measurement-key metadata used to rebuild a cirq.Result.

Supported

  • Qubit circuits with parameter-resolved operations.
  • Sampling behavior and measurement distributions up to unconditional global phase.
  • Mid-circuit measurements and resets.
  • Measurement keys that appear once each.
  • Common one-, two-, and three-qubit gates, including H, Pauli gates, special-angle axis powers, CX, CZ, SWAP, ISWAP, CH, CCX, CCZ, and Clifft half-turn rotations such as R_X and R_ZZ.
  • Operations that Cirq can decompose into supported operations.

The converter uses rotations instead of same-named Clifft sqrt gates when Clifft and Cirq conventions differ. Unsupported operations raise UnsupportedCirqOperationError with the failing operation.

Unsupported

  • Qudits.
  • Unresolved symbolic parameters at the to_clifft_text boundary.
  • Repeated measurement keys, such as cirq.measure(q0, key="m") followed by cirq.measure(q1, key="m").
  • Arbitrary classical control.
  • Measurement confusion maps.
  • Cirq noise channels.
  • Device, timing, calibration, duration, and tag semantics.
  • Stochastic noise, leakage, loss, and other noncomputational models.

Development

uv sync --group dev
uv run pytest
uv run ruff check .

The package depends on clifft>=0.5 because that release supports the gateset used by this adapter, including controlled-gate rewrites for CH, CCX, and CCZ. CI should keep testing both the Cirq floor and the latest allowed cirq-core<2 range.

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

clifft_cirq-0.1.0.tar.gz (88.0 kB view details)

Uploaded Source

Built Distribution

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

clifft_cirq-0.1.0-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file clifft_cirq-0.1.0.tar.gz.

File metadata

  • Download URL: clifft_cirq-0.1.0.tar.gz
  • Upload date:
  • Size: 88.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clifft_cirq-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b48523a3656f808ef2f821f02a56658b2412d7d4e4b97c621dfc77499cb8e32c
MD5 f7908134dcc98000e030aee066794bef
BLAKE2b-256 111db8c490464e9f288d9c0c3d2184c93d6af4f0093bc717108ace964aa9d843

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft_cirq-0.1.0.tar.gz:

Publisher: release.yml on unitaryfoundation/clifft-cirq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clifft_cirq-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: clifft_cirq-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clifft_cirq-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4633d7a22adcf1976c23f8abeca9d886b8e574f8c1101b778eb72369543c4358
MD5 3185469156b836a6570bb0ebc865230f
BLAKE2b-256 99ddfd5350529614b722c5f13a57a470b2096a97036836c987e6d25dce12f47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for clifft_cirq-0.1.0-py3-none-any.whl:

Publisher: release.yml on unitaryfoundation/clifft-cirq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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