All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- characterization/two_qubit_rb - Migrate standard two-qubit randomized benchmarking implementation.
- wirer - Added test-case for OPX+ and Octave with fixed-frequency tranmsons.
- macros/long_wait - Fix issue with
threshold_for_looping
not enforced to be an integer. - simulator - Recast connection ports in
create_simulator_controller_connections
to beint
, instead ofnp.int64
. - config/waveform_tools - Allow to set the detuning of a DRAG waveform even when the alpha parameter is 0.
- config/waveform_tools - Remove the deprecated parameter
delta
that was replaced byanharmonicity
for the DRAG waveforms.
0.18.2 - 2024-12-23
- Support for Python 3.12
- wirer - Add support for external mixers
- external_frameworks/qcodes - Fixed the driver to be compatible with qm-qua==1.2.1.
0.18.1 - 2024-11-05
- wirer - Support for fixed-frequency transmons, i.e., cross-resonant drive lines and zz drive lines
- examples/Qcodes_drivers: Added examples with the OPX1000.
- external_frameworks/qcodes - Added the
readout_sampling_rate
parameter for the OPX1000.
- external_frameworks/qcodes - Fixed the connection message and OPX identification to include the OPX1000 and QOP 2.4.
- voltage_gates - Fix the derivation of the compensation pulse for a small voltage*duration.
0.18.0 - 2024-10-23
- results - Allow the data saver to create the root folder if it doesn't exist.
- wirer - Automatic tool to allocate channels for arbitrary combinations of QM instruments and superconducting qubits.
- data_handler - Fix figure saving cutting off title text if it is long using
bbox_inches="tight"
.
0.17.7 - 2024-08-20
- VoltageGateSequence - The
VoltageGateSequence
class facilitates the creation and management of complex pulse sequences, allowing dynamic voltage control, ramping, and bias compensation across gate elements.
0.17.6 - 2024-06-27
- Fix deprecated imports in preparation for qm-qua version 1.2.0
0.17.5 - 2024-06-26
- control_panel - Fix voltage booking error introduced in the previous fix.
- control_panel - Fix rounding error in
ManualOutputControl
that caused voltage drifts. - octave_tools - Fix bug when setting calibrate to False in
get_correction_for_each_LO_and_IF()
. - unit -
to_clock_cycles()
now always returns an integer. - examples/Qcodes_drivers: Fixed compatibility with qm-qua 1.1.6 or newer.
- octave_tools - Added the possibility to pass the AutoCalibrationParams to
get_correction_for_each_LO_and_IF()
to customize the calibration parameters (IF_amplitude for instance). - unit -
volts2demod()
function that does the inverse operation ofdemod2volts()
- data_handler - Added support for nested figures and arrays
0.17.4 - 2024-05-07
- control_panel - Fix init of ManualOutputControl (remove old logger call).
0.17.3 - 2024-05-06
- digital_filters - added
multi_exponential_decay
to__init__
file.
0.17.2 - 2024-05-06
- digital_filters - added
multi_exponential_decay
function which can be used to fit and extract the exponential decay coefficients when there are multiple time constants. It supports any number of exponential decays.
- digital_filters -
exponential_decay
function now internally uses themulti_exponential_decay
function for calculation. The user-facing interface ofexponential_decay
remains unchanged, ensuring backward compatibility. - digital_filters -
multi_exponential_decay
function has the following formula:s * (1 + a1 * np.exp(-x / t1) + a2 * np.exp(-x / t2) + ... + an * np.exp(-x / tn))
, wheres=1
by default.
0.17.1 - 2024-04-19
- results/DataHandler - Only load DataHandler XarrayDataProcessor if xarray can be imported
- results/DataHandler - Fix bug with the data folder path.
- bakery - Fix typo in the
baking
tool config lookup (mwInput
->MWInput
)
0.17.0 - 2024-04-18
- Video_mode - New module to update some pre-defined parameters of a QUA program while fetching data from the OPX.
- simulator -
create_simulator_controller_connections
can now be used to create the connections between a subset of a large cluster. - results -
DataHandler
can be used to save data (values, matplotlib figures, numpy/xarray arrays) to the local file storage. - callable_from_qua - Framework used to call Python functions within the core of a QUA program.
- octave_tools - Added library of functions for manipulating the calibration database and updating the mixer correction parameters dynamically in Python or in QUA directly.
- digital_filters - Added library of functions allowing the derivation of the digital filter taps to correct distortions.
- macros - Added
long_wait
convenience macro to simplify waiting for longer than the maximum wait time.
- bakery - Added the possibility to use the
mwInput
key to enable baking compatibility with MW-FEM dedicated element. - config/waveform_tools - Added sampling rate argument with default value set to 1GS/s to the waveforms.
- simulator -
create_simulator_controller_connections
now creates the connections with a different algorithm that uses all available optical connections. - simulator -
create_simulator_controller_connections
order of input parameters has changed. - External_frameworks/qcodes - Fixed the unit of phase
- External_frameworks/qcodes - Added a flag to allow for the phase to remain wrapped
- results - Add a warning when timeout is reached in
wait_until_job_is_paused
.
- simulator -
qualang_tools.simulator_tools
has been deprecated and was moved toqualang_tools.simulator
.
- loops - An error will be raised when the logarithmic step is too small (from_array & qua_logspace with integers).
0.16.0 - 2024-01-25
- ConfigBuilder -
Element
now correctly accepts default arguments. - External_frameworks/qcodes - Fix bug with the setpoints when streaming the raw adc traces.
- bakery - add the
RF_inputs
key to be compatible with the Octave API from qm-qua>=1.1.5.
- External_frameworks/qcodes - Added
update_readout_length()
to update locally the readout length of a given readout element and operation. - External_frameworks/qcodes - Added
update_qm()
to update the quantum machine (close and re-open it) in case the config has been updated. - External_frameworks/qcodes - Added
live_plotting()
to fetch and plot the OPX results while the program is running. - Unit - Added
volts2dBm
anddBm2volts
.
- Eased package dependencies, requires python 3.8 or above
- Unit -
demod2volts
now has asingle_demod
flag to correctly convert the data from single demodulation.
- ConfigBuilder and ConfigGUI are not being activity developed and may not have all config options
0.15.2 - 2023-09-06
- results - Add
wait_until_job_is_paused()
to block python console until the OPX sequence reaches apause()
statement. - External_frameworks/qcodes - Added
cluster_name
as optional input parameter to connect to the OPX with QOP220 or above.
- Units.unit -
units.unit.Hz
now rounds the result and casts it to an integer if the flag coerce_to_integer is set to True. Same forkHz
,MHz
andGHz
. - External_frameworks/qcodes - Added
wait_until_job_is_paused()
in the resume() command to ensure that resume will be called only after the program reached the pause() statement.
0.15.1 - 2023-06-07
- Loosened requirements on
pandas
- External_frameworks/qcodes - Add the possibility to input a scale factor to the get_measurement_parameter() function in order to convert the results from Volts to an arbitrary unit.
- External_frameworks/qcodes - Now it is possible to plot several results on the same graph with the inspectr tool.
0.15.0 - 2023-05-15
- External_frameworks - add qcodes drivers to set the OPX as a qcodes instrument.
- Examples - add examples to show how to integrate the OPX in your qcodes framework and customize the qcodes driver
0.14.0 - 2023-03-23
- Changed
qm-qua
requirements to be >=1.1.0
- Config.helper_tools - Added the function
transform_negative_delays()
to adjust a config containing negative delays by offsetting all delays by the most negative one.
- Fixed the loops library to support
qm-qua
1.1.0
0.13.2 - 2023-02-23
- Plot.fitting - add resonator frequency vs flux fitting function.
- Plot.plots - add the possibility to fit the data to be plotted for plot_demodulated_data_1D.
- addons.variables.assign_variables_to_element - A function to force variables assignment to specific elements.
- Units.unit -
units.unit.ns
now returns1/4
within an openqm.qua.program
scope and1
otherwise. Same forus
,ms
,s
, andclock_cycle
. By default results ofa * ns
operation are cast toint
and a warning is generated if casting discards a nonzero remainder.
- simulator_tools.create_simulator_controller_connections - now deals with the case of 1 controller.
0.13.1 - 2022-11-18
- Fix init files.
0.13.0 - 2022-11-18
- Multi-user Tools - A subpackage that allows several users to work simultaneously.
- Config.helper_tools - This package includes tools for writing and updating the configuration.
- Plot.fitting - This tool enables the use to fit results from qua programs.
- Bakery - Added a flag to disable the addition of an
align
to therun
function.
- Plot.plots - Added functions to plot results from qua programs (
plot_demodulated_data 1D and 2D
,get_simulated_samples_by_element
andplot_simulator_output
) - Bakery - Now uses the more efficient
frame_rotation_2pi
instead offrame_rotation
.
- Bakery - Fixed cases in which a
frame_rotation_2pi(0.0)
was added.
0.12.0 - 2022-08-29
- Breaking change! - Waveform tools - Added a missing 2$\pi$ factor into
detuning
parameter indrag_gaussian_pulse_waveforms
anddrag_cosine_pulse_waveforms
. This will produce different results compared to previous versions, to get the same results, divide thedetuning
parameter by 2pi. Bothdetuning
,delta
, andanharmonicity
are now expected inHz
rather thanrad
; a 2$\pi$ multiplication occurs in the built-in function. - Waveform tools - Renamed argument
delta
toanharmonicity
indrag_gaussian_pulse_waveforms
anddrag_cosine_pulse_waveforms
.delta
is still accepted but will be deprecated in future versions. - ConfigBuilder - renamed arguments (backward compatible) in Element and MeasureElement classes.
- ConfigBuilder - renamed AnalogOutputPort attribute channel_weights to crosstalk
- ConfigBuilder - PiecewiseConstantIntegrationWeights class.
- ConfigBuilder - added thread and Oscillator to Element class.
- ConfigBuilder - added shareable field to all ports.
- ConfigBuilder - added doc strings
- ConfigBuilder - measure pulse type in the configuration
- ConfigBuilder - removed offset field in DigitalOutputPort
- ConfigBuilder - DigitalInputPort's port id
- ConfigBuilder - fixed len method of Parameter when a setter is used
- Fixed dependency to be compatible with qm-qua 0.4.0
0.11.2 - 2022-07-25
- results - Improved
is_processing()
and addget_start_time()
to fetching_tool.
0.11.1 - 2022-07-19
- Fixed internal package structure to support mkdocs.
0.11.0 - 2022-07-18
- Calibrations - a new package with an API to perform basic single qubit calibration protocols.
- Results.fetching_tool - Add the
.is_processing()
method.
- Loops - Fixed qua_logspace() and from_array() for logarithmic increments with integers.
0.10.0 - 2022-07-04
- ManualOutputControl - Fixed the
close
function - Waveform tools - DRAG now handles alpha=0 correctly (Was not fixed in 0.9.0)
- Results - a new package with fetching tools and progress bar.
- Plot - a new package with plotting tool for interrupting live plotting.
- Loops - a new package with the qua_arange, qua_linspace, qua_logspace, from_array and get_equivalent_log_array tools for parametrizing QUA for_ loops.
- Units - a new package with an API to use units (MHz, us, mV...) and functions to convert data to other units (demodulated data to volts for instance).
- Waveform tools - Added various flattop waveforms and Blackman integral waveform
- Added support for Python 3.10
- Lower Numpy requirement to 1.17.0
0.9.0 - 2022-05-24
- various issues were fixed in config builder
- Waveform tools - DRAG now handles alpha=0 correctly
- config builder MeasurePulse now accepts IntegrationWeights object as well
- config builder Element now accepts ControlPulse and MeasurePulse
- config builder Parameter class now support basic algebra (+, -, /, *, **)
- A new tool for discriminating two states in the IQ blob under
analysis.discriminator
- All config builder objects can be initialized with all the data (but still can be built step by step)
- config builder FluxTunableTransmon - parameter name changed from fl_port to flux_port
- config builder Coupler - parameter name changed from p to port
- config builder Element - renamed set_delay/buffer methods as set_digital_input_delay/buffer
- config builder ConfigVar is changed to ConfigVars
- config builder ConfigVars - parameter method now returns a Parameter object instead of lambda function
- config builder ConfigVars - parameter method optionally accepts a setter
- config builder Controller - does not accept number of outputs and inputs anymore
- config builder Mixer - added MixerData class (holds intermediate_frequency, lo_frequecy and correction matrix), we now support correction matrix for every pair of IF and LO frequencies
- Waveform tools - now return Numpy arrays
0.8.0 - 2022-04-04
- Interactive plotlib - Support for 2d plot, better data manipulation and better fits
- Waveform tools - Added the waveform tool package, currently including scripts for creating Gaussian and Cosine DRAG waveforms
- Control Panel - VNA Mode - This module allows to configure the OPX as a VNA for a given element (readout resonator for instance) and operation (readout pulse for instance) already defined in the configuration.
0.7.2 - 2022-03-15
- Set minimum version of docutils dependency to 0.14
0.7.1 - 2022-03-13
- Interactive Plotting Toolbox - Fixed several small issues when loading a figure
- Integration Weights Tool - When compressing and plotting integration weights, the correct label is shown.
- Set minimum version of docutils dependency to 0.14
- Fix config builder GUI imports
- Interactive Plotting Toolbox - Added default markers when fitting
- Interactive Plotting Toolbox - Improved example and added a demo video
- readme for config builder GUI
0.7.0 - 2022-02-10
- Add experimental feature - InteractivePlotLib. This plotting library, built on Matplotlib, adds many new features to it.
- Integration weights tool - Fixed a bug which caused the integration weight tool to not work on lists
0.6.5 - 2022-01-26
- ManualOutputControl - Digital outputs are now controlled by independent quantum machines, allowing switching them on and off without deadtime.
0.6.4 - 2022-01-25
- Bakery - Using "delete_samples()" did not update the element internal time tracking.
0.6.3 - 2022-01-24
- ManualOutputControl - An option to open up the ManualOutputControl without a configuration file. Using ManualOutputControl.ports().
- ManualOutputControl - Added a readme file to explain how to use.
- ManualOutputControl - Added various validations and exceptions when illegal operations are performed
- ManualOutputControl - Added print_analog_status() and print_digital_status() to print the current status.
- ManualOutputControl - analog_status() and digital_status() now return a dict containing the information.
0.6.2 - 2022-01-18
- Bakery Bug - delete_samples() crash
- Bakery Bug - Bakery Bug - using a negative wait can lead to infinite recursion
- ConfigBuilder Bug - renamed digital_inputs in Element to digitalInputs
- ConfigBuilder Bug - removed empty dictionary of outputPulseParameters when not initialized
- ConfigBuilder Bug - fixed the format of Mixers in the configuration
0.6.1 - 2022-01-13
- API Changes to the "ManualOutputControl" class:
- Constructor does not take "digital_on" elements.
- Constructor accepts optional input of elements to include.
- "set_amplitude" and "update_frequency" have been renamed to "set_amplitude" and "set_frequency".
- "digital_on" and "digital_off" no longer change elements which are not given.
- "digital_on" and "digital_off" can accept no input, which makes them turn on and off all channels.
- New function, "turn_off_elements" which turns off both digital and analog of the given elements.
0.6.0 - 2022-01-11
- The imports from the package, mainly when doing import *, has changed.
- Add a "Control Panel" - A user interface for controlling the outputs from the OPX in CW mode, based on the user's configuration.
- Added support for Elements with digital inputs/outputs (in the config builder tool).
- Fixed bakery bug - Negative wait for single input element was not working.
- Fixed bakery bug - Fixed the symmetric padding method when wait duration was even.
- Readme had voltage values in code examples that were not realistic.
- Fixed convention of input/output ports of Element in config builder.
0.5.0 - 2021-12-02
- Added a brand-new Config GUI which can be used to visually edit and modify QUA configurations.
- A readme has been added for the Config builder which guides you through basic usage (and more).
0.4.1 - 2021-12-15
- Fixed a bug in the compress_integration_weights functions -> consecutive values with the same difference were deleted.
- In addition, added a function to plot the integration weights.
0.4.0 - 2021-12-14
- Main new feature: Added a toolbox for building configuration files!
- Also added a tool for creating the inter-OPX connections for simulations.
0.3.3 - 2021-11-21
- Added back add_Op() with deprecation.
- Improved examples and docs.
0.3.2 - 2021-10-20
- Fix Ramsey example.
0.3.1 - 2021-10-20
- Change play_at() behavior - play_at() will now use the latest frame & detuning.
0.3.0 - 2021-10-18
- Sampling rate is now tunable within the baking.
- Integration weights tool added.
- Possibility to delete samples in the baking.
0.2.2 - 2021-10-06
- Clarification in the documentation (readme.md) about the need to declare the Quantum Machine after the baking of all waveforms to ensure they are runnable within the QUA program.
- Removed Entropy dependency from XEB example.
0.2.1 - 2021-09-06
- Extended the method get_Op_length() which does not require a quantum element anymore, as the output of the method will be the longest baked waveform across all involved quantum elements if none is provided (specifically useful for the example of 2 qubit RB in qua-libs).
- Updated docstrings describing the baking tool to make it more readable.
- Refined the method b.align() which was padding 0s to all elements in the config instead of only aligning elements already involved in the baking context manager when no argument was provided. This is now corrected.
0.2.0 - 2021-08-16
- Digital waveforms are now editable within the baking and can be attached to arbitrary baked waveforms (b.add_digital_waveform).
- Existing digital waveform can now be attached to a baked operation.
- The possibility to update the config or not is now induced directly by the providing of a baking index to adapt the length of the baked reference pulse (no update_config boolean in baking initialization required anymore).
- One can delete a baked Operation from the config using delete_baked_Op (which deletes both analog and digital baked waveforms associated to the baking object).
0.1.1 - 2021-08-02
- Fixed license metadata.
0.1.0 - 2021-08-02
- This release exposes the baking, RB and XEB functionality.