Skip to main content

quchip

Website · Documentation · Paper

PyPI version Python 3.11 or newer CI status Documentation build status

quchip is an open-source Python toolkit for modelling superconducting quantum chips.

A predictive chip model needs more than a Hamiltonian: device physics, control-line transformations, frames and approximations, dissipation, and measured observables all belong to it. quchip represents each part explicitly. Line properties such as gain, delay, and crosstalk belong to the control chain, not to Hamiltonian terms written by hand.

Declare the chip once. The same declaration drives dressed-state analysis, model reduction, control sequencing, open-system simulation, parameter sweeps, and exact JAX gradients. The engine resolves each device's frame, applies the requested approximations, and records the bands it drops.

quchip pipeline from declared devices and control parameters through basis and frame resolution, physics assembly, observable preparation, backend solving, and one reverse-mode gradient

Chip + QuantumSequenceResolvedFrameEngineResultSolveProblem → QuTiP or dynamiqs → SimulationResult

QuTiP is the default backend. The dynamiqs backend is JAX-native and keeps declared device and control parameters differentiable through the solve. The optional scqubits integration imports and exports selected device and composite models.

quchip uses GHz for ordinary frequencies, ns for time, and mK for temperature. The implemented conventions and approximations are documented in the physics guide.

Install

quchip requires Python 3.11 or newer.

python -m pip install quchip

Optional extras are available for the dynamiqs backend, graph visualization, and scqubits interoperability:

python -m pip install 'quchip[dynamiqs]'
python -m pip install 'quchip[viz]'
python -m pip install 'quchip[scqubits]'

Extras can be combined. To install the current source instead:

git clone https://github.com/quchip/quchip.git
cd quchip
python -m pip install .

Declare and inspect a chip

from quchip import RWA, Capacitive, ChargeDrive, Chip, DuffingTransmon, Resonator

qubit = DuffingTransmon(freq=5.0, anharmonicity=-0.30, levels=6, label="q")
readout = Resonator(freq=6.8, levels=10, quality_factor=6800, label="r")
coupling = Capacitive(qubit, readout, g=0.060, label="qr")
chip = Chip(
    [qubit, readout],
    couplings=[coupling],
    frame="rotating",
    approximation=RWA(),
)
qubit_line = ChargeDrive(qubit, label="qubit-charge")
readout_line = ChargeDrive(readout, label="readout-charge")
chip.wire(qubit_line, readout_line)

authored_hamiltonian = chip.unresolved_hamiltonian()
resolved_hamiltonian = chip.hamiltonian()

f01 = chip.freq(qubit)
f12 = chip.transition_frequency(qubit, 1, 2)
fr0 = chip.freq(readout, when={qubit: 0})
fr1 = chip.freq(readout, when={qubit: 1})

The authored Hamiltonian preserves the device and coupling expressions in their declared local spaces. The resolved view applies the chip's basis, frame, and approximation strategy through the same engine path used by simulation. Both remain inspectable symbolic expressions; call .matrix() when a numerical array is needed.

The complete example derives short and selective nominal-pi Gaussian drives from $|f_{12}-f_{01}|$, then derives a Gaussian-edge readout duration from the conditional pull and resonator linewidth. Both parts run the real multilevel, lossy chip with compact reproducibility receipts.

Short and long Gaussian pulses with multilevel qubit populations

Conditional resonator IQ paths with emphasized final points

The complete walkthrough is available in the documentation.

Examples

  • Hello, drive and readout: compare qubit-drive leakage, then resolve pulse-level dispersive readout on the same chip.
  • Cookbook: practical conventions and task recipes.
  • Extension guide: author devices, couplings, time-dependent terms, drives, envelopes, dissipation, local spaces, and interop mappings.

Project status and contributing

quchip is under active development. While it remains in 0.x, minor releases may refine public APIs; see the changelog.

Report bugs and model requests through GitHub Issues. Use Discussions for questions and open-ended proposals. See the contributing guide before making code or physics changes.

Paper and citation

The accompanying paper is quchip: A Differentiable Toolkit for Modeling Quantum Devices (arXiv:2607.17081).

The interactive walkthrough follows one five-device model through declaration, crosstalk identification and correction, adiabatic reduction from 576 to 16 dimensions, and gradient-based recovery of four directed crosstalk parameters.

If you use quchip in your work, please cite it:

@misc{alyousef2026quchip,
      title={quchip: A Differentiable Toolkit for Modeling Quantum Devices},
      author={Ibraheem AlYousef},
      year={2026},
      eprint={2607.17081},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      doi={10.48550/arXiv.2607.17081},
      url={https://arxiv.org/abs/2607.17081},
}

Citation metadata for the software itself is in CITATION.cff.

License

quchip is distributed under the 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

quchip-0.2.0.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

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

quchip-0.2.0-py3-none-any.whl (453.9 kB view details)

Uploaded Python 3

File details

Details for the file quchip-0.2.0.tar.gz.

File metadata

  • Download URL: quchip-0.2.0.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quchip-0.2.0.tar.gz
Algorithm Hash digest
SHA256 94b3157ed175dec31fce38501f9e96fc4ebc64f70e3d50baf122ff6f7ac648da
MD5 dcd8142b5685a9db52ef65e6528bfbd5
BLAKE2b-256 f9a1767e9af91a3fe0a331bf0cdce2e9de6d8fa7acac0f014bb7cdf4a352229a

See more details on using hashes here.

Provenance

The following attestation bundles were made for quchip-0.2.0.tar.gz:

Publisher: release.yml on quchip/quchip

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

File details

Details for the file quchip-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: quchip-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 453.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quchip-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 19c8583957f8e8835ea00598f1cf89dbb41f4a44281ef616df56ba0b90c82c4d
MD5 c0696f59fc32ab9c2d3a76694c9778e6
BLAKE2b-256 60fe5ca30c23e2f2d3327203aecb205b28e16de8e7db6e170b917c4b5cbfab08

See more details on using hashes here.

Provenance

The following attestation bundles were made for quchip-0.2.0-py3-none-any.whl:

Publisher: release.yml on quchip/quchip

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

Release history Release notifications | RSS feed

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

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