Skip to main content

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-driver

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🎓

The tutorial series introduces the core concepts of the arbok framework, guiding you from running basic measurements to building modular, scalable, and automated experiments.

Set up your environment, initialise your device, and run a first measurement using existing sequences.

Learn how FPGA program parameters (e.g. voltages, timings, frequencies) are exposed through the QCoDeS interface and how to configure them dynamically.

Understand how to use and compose ReadSequences to extract measurement results in a structured and reusable way.

Build higher-level experiment abstractions to repeatedly run and organise complex measurement routines.

Implement automated tuning and calibration routines using the GenericTuningInterface, enabling adaptive and scalable workflows without recompilation of FPGA instructions

Learn about dynamic FPGA program reloading and real-time parameter updates for fast iteration and adaptive measurements

Implement an asynchronous heralded quantum state initialization via a real time repeat-until-success loop.

Together, these tutorials demonstrate how arbok enables:

  • Modular composition of measurements from reusable building blocks
  • Full parameter control without modifying FPGA/qua code
  • Seamless scaling from small devices to larger quantum systems
  • Fast iteration through dynamic reloading with Ekans

Developer guides

Learn how to write your own SubSequence from scratch: defining a ParameterClass, writing qua_sequence, scaling to multiple gates with ParameterMap, using lifecycle hooks, and composing sequences by nesting.

Learn how to write AbstractReadout subclasses and compose them into a ReadSequence: producing and consuming gettables, adding settable parameters, declaring temporary QUA variables, and writing the configuration.

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

Use of AI

Large language models (LLMs) were used to help generate the documentation of this project, including the tutorials, developer guides, and examples. The core logic and code of the arbok-driver were written without the use of AI.

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.6.1.tar.gz (1.8 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.6.1-py3-none-any.whl (105.9 kB view details)

Uploaded Python 3

File details

Details for the file arbok_driver-2.6.1.tar.gz.

File metadata

  • Download URL: arbok_driver-2.6.1.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for arbok_driver-2.6.1.tar.gz
Algorithm Hash digest
SHA256 bbe51ac94d1878cd30236249fc62001f0b41ad24f4511600f5f081c1f0c575ec
MD5 90483ba8b0b8690a3473c3d13972e58e
BLAKE2b-256 88df0c9ac2a3d43f93fdd29b0188883a913cb3c50aa2fcc3c1570a3d812d4ecb

See more details on using hashes here.

File details

Details for the file arbok_driver-2.6.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for arbok_driver-2.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 61901594123f22400b6a1ee298be9312e2dd245da8ce591f92d383a2e7f2855e
MD5 df9e81f599ca951c4279fe3a00128e58
BLAKE2b-256 1f9bb7c965b23194c432b87e0c8dd2638cf12a8516210e1d1c6efda2bd23da8d

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.0

2 files

2.6.2

2 files

This release

2.6.1 This release

2 files

2.6.0

2 files

2.5.9

2 files

2.5.8

2 files

2.5.7

2 files

2.5.6

2 files

2.5.5

2 files

2.5.4

2 files

2.5.3

2 files

2.5.2

2 files

2.5.1

2 files

2.5.0

2 files

2.4.4

2 files

2.4.2

2 files

2.4.1

2 files

2.4.0

2 files

2.3.0

2 files

2.2.1

2 files

2.2.0

2 files

2.1.7

2 files

2.1.6

2 files

2.1.5

2 files

2.1.4

2 files

2.1.3

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.6.0

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1.2

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1.1

2 files

0.1.0

2 files

0.0.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