skillfed

qcodes

Python-based data acquisition framework developed by the Copenhagen / Delft / Sydney / Microsoft quantum computing consortium

qcodes v0.58.0 79.1K downloads/30d#14,384 on PyPI453
Permissive license MIT Active released

What it is and what it does

QCoDeS is a Python framework for controlling laboratory instruments and acquiring data from experiments with many adjustable parameters. It was created by a consortium spanning Copenhagen, Delft, Sydney, and Microsoft to support quantum computing research, but its architecture generalizes to any system where a computer needs to set and measure multiple instrument parameters. The framework handles parameter definition, value validation, data storage, and visualization, with particular support for Jupyter notebook workflows.

The package integrates with a substantial ecosystem: it uses h5py and h5netcdf for hierarchical data storage, xarray and dask for multidimensional array handling, matplotlib and pillow for plotting, pyvisa for instrument communication, and several other utilities for metadata, progress tracking, and telemetry. This rich dependency graph means QCoDeS is heavyweight but self-contained—you get a complete measurement stack rather than a bare protocol library.

Use it for:

  • Automated parameter sweeps across quantum devices or nanoelectronic samples with live data collection and visualization.
  • Laboratory automation for multi-instrument experiments where you need to coordinate voltage, current, temperature, and frequency settings.
  • Data acquisition pipelines that require hierarchical storage, metadata tracking, and reproducible experiment logging.
  • Interactive measurement notebooks where scientists adjust parameters in real time and inspect results without writing boilerplate control code.
  • Instrument driver development and testing using a standardized parameter and command interface.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

QCoDeS is a Python data acquisition and control framework for systems with many computer-controllable degrees of freedom, originally developed for quantum computing experiments but applicable to any instrumentation scenario.

Yes, if you are building a measurement or control system with multiple instruments or parameters. The framework handles the plumbing—parameter validation, data storage, logging—that would otherwise require substantial custom code. The active maintenance, MIT license, and broad dependency set make it production-ready for academic and research labs. Not necessary for simple single-instrument scripts or if you need only raw VISA communication.

Install

qcodes on PyPI

pip

pip install qcodes

uv

uv add qcodes

poetry

poetry add qcodes

Installing qcodes

Before you install

Low friction installation with a pure-wheel distribution. Active maintenance with a recent release (102 days ago) and ongoing commits. Requires Python 3.11 or later, which may constrain older environments.

License in practice

MIT license permits commercial and private use with minimal restrictions, making it suitable for both academic and industrial instrumentation work.

Quickstart

pip install qcodes

import qcodes
from qcodes import Instrument

# Define an instrument with controllable parameters
class MyDevice(Instrument):
    def __init__(self, name, **kwargs):
        super().__init__(name, **kwargs)
        self.add_parameter('voltage', set_cmd=lambda v: None, get_cmd=lambda: 0)

Requires Python 3.11 or later. Primarily designed for Jupyter notebooks but can run in terminal scripts.

Verify before relying

  • Whether the 25 runtime dependencies (including h5py, pyvisa, xarray, dask) are all required for basic usage or if a minimal subset suffices.
  • Specific hardware interfaces and instrument drivers supported beyond the framework itself.
  • Performance characteristics for large-scale parameter sweeps or high-frequency data collection.

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.11)
Install friction low — pure-Python wheel
Runtime dependencies 25 — broadbean, h5netcdf, h5py, ipywidgets, ipykernel, jsonschema, matplotlib, networkx, numpy, packaging, pandas, pyarrow, pyvisa, ruamel.yaml, tabulate, typing_extensions, tqdm, uncertainties, versioningit, websockets, xarray, cf_xarray, opentelemetry-api, pillow, dask
Maintenance actively maintained — 102 days since the last release
Last repo commit
First released
Downloads 79,075/month — #14,384 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: qcodes-0.58.0-py3-none-any.whl

Development Status :: 3 - AlphaIntended Audience :: Science/ResearchProgramming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Scientific/Engineering

Tags

data acquisition frameworkinstrument control pythonquantum computing measurementlaboratory automationhardware parameter sweepexperimental data collectiondevice characterization
instrumentationjupyter-nativequantum-computing

More Scientific/Engineering packages