Skip to main content

QCoDeS compatible driver for the OPX+ from Quantum Machines

Project description

arbok-driver 🐍⚡️

Documentation Status PyPI License Coverage Python

A dynamically generated QCoDeS instrument for your FPGA based measurements using the Quantum Machines OPX+/OPX1000.

Installation 📲

From pypi install using pip in your environment:

pip install arbok-inspector

Even better if you are using uv, a uv.lock file is included!

Features 🛠️

  • Abstraction: In contrast to traditional static QCoDeS instruments with a fixed set of parameters determined at driver design time, arbok is dynamically generated for the FPGA program itself each time a measurement is run. FPGA progam parameters such as wait times, voltages, and frequencies etc. are automatically exposed through the QCoDeS instrument, without the user needing to interact with or even see the underlying FPGA code.

  • Modularity: Measurements are generated from logical blocks of instructions called SubSequence and ReadSequence whose order can be arranged freely. Those sequences can be nested arbitrarily deep to reach the desired complexity without repeating yourself (imagine a nested dict).

  • Scalability: Arbok strictly separates the qualitative design of FPGA instructions in SubSequence and ReadSequence and their quantitative configuration (through python dicts), ensuring reproducibility. Sequences are written in a fully parameterized way, giving user access to every aspect of the measurement. This approach allows us to grow our quantum chips without re-writing any FPGA sequences by just scaling the configuration we are using, while still exposing every single sub-parameter of the device.

  • Compatibility: At the end of the day, the arbok-driver is still a QCoDeS instrument, giving you all the features you know from running measurements on regular hardware. It slots right into your existing stack and allows you to sweep hardware parameters as well as FPGA instructions.

  • Auto-tuning: All parameters can be defined as undetermined variables and updated by the user in real time without needing to re-compile the FPGA program for each set of parameters. This is particularly interesting for adaptive calibrations, machine learning or qubit benchmarking.

  • Asynchronicity: Support for asynchronously running sequences like qubit state heralding or live qubit feedback (e.g Larmor, Rabi)

Tutorials 🎓

Running measurements from existing sub-modules and readouts is very easy and is covered in the first 2 tutorials. Tutorial 3 covers the manual writing of an experiment to easily run a certain type of measurement over and over again. Manual writing of a ReadoutSequence and an AbstractReadout will be the subject of tutorial 5. Finally we cover the GenericTuningInterface to implement a simple auto-tuning routine.

Tutorial 0: Getting started

Tutorial 1:

Tutorial 2:

Stripping jupyter notebooks 📒

We all love running measurements and analysis scripts from notebooks but keeping them up to date with version control can be a pain. Differeing outputs, timestamps and massive binary data can make your diffs massive. We include git hooks that automatically clear the outputs of your notebook once you commit it. The arbok_driver is configured declaratively so dont worry you will reach the same state again once you re-run your notebook.

Install the git hook so that your notebooks are stripped before committing.

Microsoft :

.\tools\git.hooks\setupMicrosoft.ps1

Linux :

./tools/git.hooks/setupLinux.sh

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

arbok_driver-2.5.0a0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

arbok_driver-2.5.0a0-py3-none-any.whl (93.3 kB view details)

Uploaded Python 3

File details

Details for the file arbok_driver-2.5.0a0.tar.gz.

File metadata

  • Download URL: arbok_driver-2.5.0a0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arbok_driver-2.5.0a0.tar.gz
Algorithm Hash digest
SHA256 9f8c34065baf9156be963a669cfc7777990071819fbd149645f1f38855a152a1
MD5 58d3cf8baf93a0bd6799e3799c65ae97
BLAKE2b-256 fd4b94a7e0e9873bb37f37279a07114697be7e59e9e3401a35237ff125191c5c

See more details on using hashes here.

File details

Details for the file arbok_driver-2.5.0a0-py3-none-any.whl.

File metadata

  • Download URL: arbok_driver-2.5.0a0-py3-none-any.whl
  • Upload date:
  • Size: 93.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for arbok_driver-2.5.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 02ae727bd73c37d00d2ed0f8215beba46c3894f339e7e44eb28c9e1967771702
MD5 b85fa2a95336c4401feec9b5c9c53dd9
BLAKE2b-256 898e49ee4f73c49676d3686652a6517eb78019835aa045cef25bd4e43b65cc05

See more details on using hashes here.

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