QCoDeS Documentation

repository·main·Indexed 19 days ago

https://github.com/microsoft/qcodes

A Python-based data acquisition framework developed by the Copenhagen / Delft / Sydney / Microsoft quantum computing consortium. The framework includes a web-based monitor for displaying parameters, benchmarking implementations using the Airspeed Velocity (asv) framework, and a wide array of instrument drivers for devices such as Keithley, Keysight, and Tektronix.

Tokens
70.2K
Snippets
190
Records
482
Agent score
66%

What's inside QCoDeS

  1. New features in QCoDeS 0.1.6

    main

    The following features were added or improved in version 0.1.6:

    • Parameter Incrementing: Added an increment function to Parameter objects.
    • Data Validation: The validator now supports numpy boolean types.
    • IVVI: Added a function to round floats to the specific DAC resolution.
    • Plotting Configuration: Notebook detection has been removed; top-level plotting library imports are now handled via configuration.
    • Slack Bot: General improvements to the Slack bot integration.
  2. New Drivers and Performance Improvements in QCoDeS 0.1.7

    main

    Version 0.1.7 introduced several new drivers and performance enhancements:

    New Drivers:

    • Oxford Kelvinox
    • Oxford ILM 200 Helium Level Meter
    • IPS120 Magnet
    • AMI430
    • Tektronix awg5200

    Improvements:

    • Fixes for the DecaDac driver.
    • Faster qdac performance.
    • Benchmark for Keysight DMM software trigger.
    • Support for IVVI triggers.
    • Improved PyQtGraph performance.
  3. Access the QCoDeS configuration module

    main

    The QCoDeS configuration module has been moved to disambiguate it from the currently active configuration.

    • Configuration Module: Use qcodes.configuration to access the module.
    • Active Configuration: Use qcodes.config to access the current active configuration.
  4. Improved type safety for InstrumentModule and Parameters

    main

    QCoDeS has introduced generic arguments to several core classes to improve IDE integration and static type checking:

    • InstrumentModule and InstrumentChannel: Now accept an optional generic argument to specify the type of the parent instrument.
    • Parameter classes: ParameterBase, Parameter, ParameterWithSetpoints, DelegateParameter, ArrayParameter, and MultiParameter now take two optional generic arguments. This allows the data type and the bound instrument type to be fixed statically, enabling type checkers to know the return type of parameter.get(), the input type of parameter.set(), and the type of parameter.instrument.
  5. New Data Saving capabilities in QCoDeS 0.3.0

    main

    The 0.3.0 release introduced several improvements to how data is saved and stored:

    • Heterogeneous Arrays: You can now store arrays of different lengths together in a single data saving operation.
    • Complex Numbers: Support for storing complex numbers has been added.
    • Automatic Type Inference: The system now automatically infers the appropriate SQLite storage type for parameters.
  6. Rules for valid parameter dependency trees

    main

    QCoDeS enforces specific rules for parameter dependencies to prevent ambiguity in data interpretation and plotting. The dataset only allows for a single layer of direct dependencies.

    Invalid Dependency Patterns:

    • Circular dependencies: Where it is impossible to distinguish between what is being varied and what is being measured.
    • Ambiguous independence: When multiple parameters are listed as independent but are actually coupled, making it unclear which parameter is the primary axis for a plot.
    • Ill-defined parameters: Parameters that are not clearly linked to a source or a dependent variable, leaving the plotting logic undefined.

    Valid Patterns:

    • Multiple outcomes: A single parameter can depend on multiple others (e.g., A depends on B and C), resulting in multiple plots (e.g., A vs B and A vs C).
    • Multiple trees: A single dataset can contain multiple independent 'top-level' trees (sets of parameters where no parameter depends on another).
  7. Performance improvement via frozen InterDependencies_ during measurements

    main
    In QCoDeS 0.54.4, the InterDependencies_ class is now frozen during the execution of a measurement. This prevents modification of the class during measurement performance, which allows for attribute caching. This change significantly reduces the overhead associated with measurements.
  8. Improved performance and timing in doNd functions

    main

    The doNd functions have been optimized:

    1. Redundant Setpoints: The dond function now avoids setting parameters with values that are already set, which improves performance during multi-dimensional measurements.
    2. Manual Delay Handling: doNd functions now manually wait the delay between setpoints instead of relying on the post_delay attribute of setpoint parameters. This prevents unintentional slowdowns when the step delay of a setpoint parameter is significantly lower than the delay between measurement step points passed into the doNd functions.
  9. Use Instruments to represent hardware

    main

    An Instrument is the primary abstraction for hardware. It handles underlying communication and lists all available Parameters and Functions.

    Common subclasses include:

    • IPInstrument: For instruments controlled via IP.
    • VisaInstrument: For instruments using the VISA protocol.
    • MockInstrument: Used for simulation. It connects to a Model that mimics a serialized communication channel, allowing you to test code without physical hardware.
  10. Work with Parameters for state variables

    main

    A Parameter represents a single state variable. Most parameters belong to an Instrument and are tied to specific hardware commands.

    Key characteristics:

    • Getters/Setters: A parameter must define at least a getter (to read) or a setter (to write). It does not need both.
    • Gettable Parameters: Can return a single value or a collection (e.g., multiple named values or arrays) to allow saving raw and calculated data simultaneously.
    • Settable Parameters: Take a single value. They can be sliced to create a SweepFixedValues object for automated sweeps.
    • Arbitrary Logic: Parameters can be used to execute arbitrary functions, such as combining multiple gate voltages for a diagonal sweep.