Skip to main content

QProgram Qblox

Tests Code Quality Python License

Qblox extensions for QProgram, a Python DSL for pulse-level quantum experiments.

The core DSL knows nothing about any instrument. This package teaches it about the Qblox cluster. It adds six operations that the portable language does not cover, a capability profile that says what QCM and QRM sequencers accept, and .qp serialization for everything it adds. Importing the package is the whole activation step.

Installation

pip install qprogram-qblox

The core qprogram package installs with it.

A first program

Calibrate the acquisition rotation angle of a readout bus: sweep the angle, discriminate the qubit state at each point, and average the outcome.

import math

import qprogram as qp
from qprogram.buses import BusSchema
from qprogram.waveforms import IQDrag, IQPair, Square

from qprogram_qblox import QProgram  # qprogram.QProgram with a typed .qblox namespace

schema = BusSchema.transmon()
q = schema.q

program = QProgram(label="rotation_calibration", schema=schema)
angle = program.variable("angle", units="rad")

with program.average(shots=1000):
    with program.sweep(angle).from_linspace(0.0, math.pi, 21):
        program.qblox.set_acquisition_rotation(q[0].readout, angle)
        program.play(q[0].drive, "pi_pulse")
        program.sync()
        m0 = program.qblox.acquire(q[0].readout, "weights", fields=(qp.MeasurementField.STATE,))

# Bind calibrated waveforms at the very end; the program itself only names them.
resolved = program.with_waveforms(
    {
        "pi_pulse": IQDrag(amplitude=0.5, duration=40, sigma=8, beta=0.1),
        "weights": IQPair(Square(1.0, 2000), Square(1.0, 2000)),
    }
)

result = qp.simulate(resolved)
population = result.get(m0, field=qp.MeasurementField.STATE)
print(population.dims, population.shape)  # ('angle',) (21,)

qp.simulate is the reference software executor that ships with the core package. It runs the qblox operations generically: qblox.acquire produces measurement records, the rest have no effect on the simulated outcome. A Qblox platform is a drop-in for the same call and lowers each operation onto real sequencers.

What you get

  • Six operations under program.qblox. acquire reads a bus without playing a readout pulse. set_markers and set_trigger drive the digital outputs, wait_trigger waits on a digital input. set_acquisition_threshold and set_acquisition_rotation configure thresholded acquisition, and take effect off the sequencer as slow-control parameter writes at execution time.
  • Typed or dynamic access. qprogram_qblox.QProgram has .qblox typed for autocomplete, QbloxMixin composes with other vendor mixins, and the plain qprogram.QProgram gets the same namespace at runtime once this package is imported.
  • A capability profile. QBLOX_DEFAULT_V1 declares the operations, waveforms, measurement fields, and limits of a qblox-driven bus, plus the two constraints the hardware imposes: an arbitrary-valued sweep cannot drive a wait duration, and sweeping an IQDrag sigma forces its loop to iterate host-side.
  • Round-tripping .qp files. Every operation serializes as qblox.<name> <args> and reloads to a structurally equal program. Files carry require qblox 0.1, which the parser checks against the installed version.
  • Auto-activation on load. qprogram.load("file.qp") imports this package on demand when the file requires the qblox vendor, so a reader never has to know which extensions a file uses.

Documentation

Full documentation, including the operation reference, the capability profile, and the generated API reference, lives at https://qilimanjaro-tech.github.io/qprogram-qblox/.

Development

The project uses uv.

git clone https://github.com/qilimanjaro-tech/qprogram-qblox
cd qprogram-qblox

uv sync --group dev                  # create .venv and install the package plus dev tools
uv run pytest                        # run the test suite
uv run ruff check .                  # lint
uv run ruff format .                 # format
uv run ty check                      # type-check
uv run --group docs zensical serve   # preview the documentation

License

Apache License 2.0 - see LICENSE.

Download files

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

Source Distribution

qprogram_qblox-0.1.0.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

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

qprogram_qblox-0.1.0-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qprogram_qblox-0.1.0.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qprogram_qblox-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7985cfab92a0f340d91b6129192f1290894e91118d33649d4bec9d1194810c2b
MD5 1324500b36bbd71e96ed7ac875062b20
BLAKE2b-256 7084e2154dde796cb41cd761fbc6a98f84113423b8d5fb282ae272cdf95f764f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qprogram_qblox-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for qprogram_qblox-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70e3ae28cb6877c5f2652a633a9554459d12c84129930545eca75c149dedcbba
MD5 c45b7ffc8575c6f3131636cf83484ec5
BLAKE2b-256 72d17b01a09ce2da9c1908d616d35c4cfbb6dcb385bd310248300e9ef4f26524

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 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