Quantum Control Solution Changelog

[2.5.4] - 2025-04-17

Fixed

  • The potential to timeout during system calls from HclBackend.

[2.5.3] - 2025-04-14

Added

  • The parameter reset_phase_every_shot to the constructor of HclBackend. If True this will perform a phase reset before every iteration of a program.

Fixed

  • Use of the integration filter in the user guide for live plotting.

[2.5.2] - 2025-04-03

Fixed

  • Documentation for current supported instruments.

  • Improved result handling for experiment class by setting the recent called/executed program.

[2.5.1] - 2025-04-01

Changed

  • Linker.create_measurement_linker() to use Classifier instead of MinimumDistanceClassifier.

[2.5.0] - 2025-03-27

Added

  • kernel_optimization() method to IQDistributionExperiment.

  • More system status information when the system is not in a “Ready” state.

  • Data caching for calls to get_trace, get_iq, or get_classified on Results.

  • The ability to perform multi-dimensional sweeps in hardware-time.

  • The ability to query pending programs through HclBackend.get_pending_programs_info().

  • CrossResonance experiment class.

  • Loading of mock_data to Experiment class.

  • The parameter keep_progress_bar to the constructor of HclBackend. If False, will remove progress bars after the Program has completed. True keeps the current default behavior. This prevents output cluttering when doing for loop executes.

  • Live plotting of one-dimensional and two-dimensional software sweeps.

Deprecated

  • MinimumDistanceClassifier in favor of Classifier.

Fixed

  • Rendering for programs that contain ConditionalOperations.

  • Rendering of plotly graphs in documentation.

[2.4.3] - 2025-02-20

Fixed

  • Prompting the user to login when HCL throws an unrelated error.

[2.4.2] - 2025-02-06

Added

  • Error handling when .NET runtime is not installed.

  • run_module_self_test() and get_module_temperatures() methods to HclBackend.

[2.4.1] - 2025-02-03

Fixed

  • Prompting the user to login when an invalid token is used.

[2.4.0] - 2025-01-30

Added

  • Methods to HclBackend for user authentication, account management and role management.

  • The ability to query program execution history through HclBackend.get_program_execution_history().

  • The ability to query system logs through HclBackend.get_log_messages().

  • The ability to configure Experiments with zipped sweeping parameters.

  • Cross-Resonance gate linker in make_calibration_set().

[2.3.0] - 2024-12-13

Added

  • Linear plots of classified data.

  • 2D plots of classified data.

Changed

  • The required .NET runtime from 7.0 to 8.0.

  • The default number of visible traces in plot_iq, plot_trace, and plot_classified to 10.

  • Added acquisition pre-delay in CalibrationSet.add_measurement.

Fixed

  • Saving of hardware classified data to hdf5.

  • Implementation of y gate in make_calibration_set.

[2.2.14] - 2024-10-07

Added

  • T1Experiment and EchoExperiment classes to run relaxation and Hahn echo experiments.

  • ResonatorSpectroscopy2D and DispersiveShift to characterize and calibrate the readout pulses for qubit state measurement.

  • ErrorAmplification experiment class for fine-tuning amplitudes for X gate.

  • The _repr_html() method on Estimate, EstimateCollection and Program classes for html visualization.

  • Performance improvements when fetching results from the database.

  • The ability to specify durations of operations as iterables or Arrays.

  • Linear plots of classified data.

Fixed

  • Amplitude Scaling of DRAG waveforms.

  • Saving of hardware classified data to hdf5.

[2.2.13] - 2024-09-13

Fixed

  • Handling of edge cases in Experiment.fit and Experiment.plot.

[2.2.12] - 2024-09-09

Added

  • The Experiment.plot() method that plots fitted data.

  • The get_updated_calibration_values() and set_updated_calibration_values() on CalibrationExperiment.

  • A pre_processor argument to CalibrationExperiment to allow data to be pre-processed before fitting.

  • A remove method on VariableSet to remove variables by name.

  • The ability to render Acquisitions in Program.render.

  • The plot_classified method to Program and Experiment.

  • Examples added to ResonatorSpectroscopy and ResonatorSpectroscopy2D

Changed

  • The linker argument to CalibrationExperiment in favour of operation.

  • The order of arguments in Experiment and CalibrationExperiment for consistency.

  • The experiment CalibrationSet from a static class to a method for generating CalibrationSets, make_calibration_set().

  • The names of the channels used in the experiment CalibrationSet.

  • Moved ipykernel from a documentation to a normal dependency to facilitate airgapped installations.

Fixed

  • The experiment CalibrationSet to use absolute_phase=True for the readout pulse channels.

Removed

  • The calibration set editor invoked through CalibrationSet.edit.

[2.2.11] - 2024-08-05

Changed

  • Moved ipykernel from a normal to a documentation dependency to facilitate airgapped installations.

[2.2.10] - 2024-08-02

Added

  • Added documentation highlighting the constraints of using LinkerPass with ConditionalOperations.

Changed

  • Moved ipykernel from a documentation to a normal dependency to facilitate airgapped installations.

Fixed

  • A bug where a measurement writing to a register could be linked to an acquisition without a classifier.

Removed

  • Support for executing programs with auto_delays=False.

[2.2.9] - 2024-07-17

Added

  • Added CalibrationExperiment to calibrate linkers.

  • Added QubitSpectroscopy, RamseyExperiment, and ReadoutSpectroscopy.

  • The fitter, idx, and targets properties to Experiment to allow for easily fitting experimental data and storing the results in a CalibrationSet.

  • Added Experiment.configure_repetitions to specify and update the sweep points and number of shots to use with Experiment.execute.

  • The analysis submodule, including basic fitters and estimates to store them.

  • The acq_index keyword argument to get_iq/get_classified and plot_iq for Program, Results and Experiment to specify the acquisition index for programs with multiple acquisitions per channel.

  • The repeat_reset argument to Program.add_measurement to repeat a reset operation multiple times.

  • The DynamicalDecoupling experiment class and methods to generate various decoupling sequences.

  • The TrueQExperiment to convert and execute run TrueQ circuit collections.

  • The SRBExperiment to generate and execute randomized benchmarking circuits.

Changed

  • Increased the version of qcs-common to 0.7.10.

  • Restricted the version of pandas to below 3.0.

  • Changed the blocking_timeout argument to HclBackend.execute to blocking that blocks use of the Python kernel while executing programs.

  • The default behavior of Experiment.execute so that the program files are no longer saved to disk automatically (specified through auto_save=False). Programs will be retrieved from the database when calling the Experiment.get_*/plot_* methods.

  • Targets.match now returns an int rather than a list[int] of length 1. This is to mirror the behavior of numpy slicing.

Fixed

  • A bug in Program.render where all channels for a given channel mapper were rendered, even if they weren’t in the actual program.

Removed

  • make_ramsey and make_spectroscopy in favor of RamseyExperiment and QubitSpectroscopy.

[2.2.8] - 2024-06-27

Added

  • The set/get_dark_theme setting to set a dark theme for visualization and plotting.

  • The RabiExperiment and IQDistributionExperiment to the experiment library.

  • A channels argument to Program.plot_iq / trace / spectrum to select which channels are to be plotted.

  • A reset_repetitions method on Program.

Changed

  • The PySide2 dependency to PySide6.

  • Restricted the version of numpy to less than 2.0.

  • The default plot type for Program.plot_iq from linear to scatter.

  • Renamed the protocols module to experiments.

Removed

  • make_rabi in favor of RabiExperiment.

[2.2.7] - 2024-05-07

Changed

  • Increased the version of qcs-common to 0.6.47.

[2.2.6] - 2024-05-03

Added

  • Guide on active qudit reset and conditional operations.

  • Guide on how to export and import CalibrationSet data from a JSON.

Changed

  • Linker.match now returns variables as ScalarRefs rather than ArraySlices when matching single index targets.

Fixed

  • A bug where LinkerPass would improperly align operations mapped to different targets in a single layer.

  • A bug where TrueQConverter would use incorrect single-qudit decompositions.

  • A bug where TrueQConverter improperly converted ParametricGates to trueq.GateFactorys.

[2.2.5] - 2024-04-26

Added

  • Program.add_parametric_gate now accepts float-likes as arguments for parameters.

  • Support for active qubit reset by setting the reset argument of Program.add_measurement to True.

  • A save_path attribute to Program.

Changed

  • Saving with qcs.save without having to specify a filename as long as the object has a save_path and name attribute. E.g. Program and Experiment.

Fixed

  • A bug where TargetList.labels could sometimes display incorrect labels after slicing.

  • Legacy hdf5 files are now merged into a single file when loading legacy programs.

[2.2.4] - 2024-04-19

Added

  • An Experiment class to encapsulate the full workflow of running a Program on hardware.

  • An ip_address property on ChannelMapper.

  • A new plot type for Program.plot_iq() to plot 2D plots.

  • The target_variables property to CalibrationSet.

Changed

  • Plot labels in IQ plots are changed to sweep indices if the labels are too long.

  • The lines in the IQ plot legend are now wrapped automatically.

  • The add_linker method of CalibrationSet to automatically populate the target_variables property.

Fixed

  • A deprecation warning from numpy versions >=1.25 when rounding values.

  • A bug where Program.draw failed when the last operation was a multi-qudit gates.

  • A bug where lines between gates in Program.draw did not get generated correctly for multi-qudit gates with more than two targets.

Removed

  • The address parameter on HclBackend in favor of ip_address on ChannelMapper.

  • The TagEnum class and the corresponding tag argument in the add_variable method of CalibrationSet.

[2.2.4a2] - 2024-04-09

Added

  • add_cr_gate, add_measurement, and add_sq_gate methods to CalibrationSet and corresponding create_cross_resonance_gate_linker, create_measurement_linker and create_single_qudit_gate_linker methods to ParameterizedLinker to create common linkers.

  • A new Classifier class to represent multiple MinimumDistanceClassifiers.

  • A name property on operations.

  • A unit property on variables.

Changed

  • The classifier property of Acquisition to return a single merged Classifier or None rather than a tuple of MinimumDistanceClassifiers.

Removed

  • The set_cl, get_cl, and get_zl functions from keysight.qcs.settings.

[2.2.4a1] - 2024-04-04

Changed.

  • Increased the version of keysight-qcs-common.

[2.2.3] - 2024-03-21

Added

  • A progress bar while executing via HclBackend.

  • The group_scatter keyword argument to Program.plot_iq() to allow I/Q scatter points to be grouped by sweep labels. This is now the default setting.

Changed

  • Increased the version of keysight-qcs-common.

Fixed

  • A bug in Program.plot_trace()/plot_iq() when sweep labels are duplicated.

[2.2.2] - 2024-03-13

Changed

  • Increased the version of keysight-qcs-common.

Fixed

  • A bug in loading legacy Measure() operations.

[2.2.1] - 2024-03-12

Fixed

  • A bug in Program.plot_iq() and get_trace()/iq()/spectrum() where sweep values were rounded and lost precision.

[2.2.0] - 2024-03-12

Added

  • A name property for Programs, which is now used in place of the key.

  • Addition and multiplication overloads to DCWaveform and RFWaveform to construct more complex envelopes.

  • The convenience method add_sq_gate to CalibrationSet to quickly define linkers from single-qudit gates to one or more waveforms.

  • The activate and deactivate methods to CalibrationSet.

  • The PhaseIncrement class to represent, e.g., virtual Z gates as hardware operations.

  • Support for loading legacy .qcs files. Supported versions include 2.0.1 up to 2.0.17.

Changed

  • Increased the version of keysight-qcs-common.

  • Linkers and ParametricLinkers now raise when mapping quantum operations to quantum operations.

  • MinimumDistanceClassifier now takes a list or Array of reference points instead of a dictionary.

Fixed

  • A bug when averaging over trace data from the Results class.

Removed

  • The Key class and the key property for Programs.

Fixed

  • A bug when trying to infer units.

[2.1.3] - 2024-02-15

Changed

  • Increased the version of keysight-qcs-common.

[2.1.2] - 2024-02-12

Fixed

  • A bug where the x-axis labels in I/Q plots were out of order due to implicit pandas MultiIndex sorting.

[2.1.1] - 2024-02-08

Fixed

  • A bug where the CalibrationSet editor would crash when it contains an Array with no value.

  • A bug where CalibrationSet sometimes add extra parameters to its variables.

[2.1.0] - 2024-02-02

Added

  • A layer-based timing model for programs.

  • A draw method to Program that enables users to visualize the program in a manner comparable to standard quantum circuit diagrams.

  • The plot_iq and plot_trace methods to Program.

  • The Results.get_spectrum(), Program.get_spectrum() and Program.plot_spectrum() methods.

  • Support for exporting experimental results to portable hdf5 files.

  • The DCWaveform class to represent an envelope scaled by a specified amplitude and duration.

  • render method to render waveforms before mixing with an LO frequency.

  • The Hold operation and MaskEnvelope and SineEnvelope envelopes.

  • The to_flattop method to waveforms and to_drag to RFWaveform.

  • The accession_id property to Results.

  • Arguments to get_iq and get_classified to allow results to be re-processed with different integration filters and classifiers.

  • The truncate argument to IntegrationFilter.integrate method to ensure that the signal and filter are the same length. Additionally, added extra validation.

  • The HclBackend class to execute programs via HCL.

  • MultiQudits class to handle multi-qudit targets.

  • The set_delays method to ChannelMapper.

  • A delay setting to PhysicalChannel.

  • The host_controller attribute to Address.

Changed

  • SequencedProgram, QuantumProgram, DynamicProgram were removed in favor of Program.

  • The Program.plot_trace() method now plots the time in seconds on the x-axis.

  • The data returned by Results.get_classified and Results.get_iq is now indexed by the Channels or Qudits from which it was acquired.

  • The amplitude and duration arguments were removed from all Envelope classes and are instead specified by the DCWaveform and RFWaveform classes.

  • The implementation of flat-top envelopes from dedicated classes to static methods on RFWaveform and DCWaveform using the MaskEnvelope and Hold classes.

  • The sample_rate argument of Envelope.render() was replaced with n_samples as Envelopes are now normalized to the unit interval.

  • The DCWaveform and RFWaveform to hold a map from envelopes to amplitudes to allow linear combinations of envelopes.

  • The method of performing DRAG pulses from a custom DRAGEnvelope to a method on RFWaveform.

  • The order of the arguments for set_lo_frequencies on ChannelMapper.

  • Restricted the names of Channels to letters, numbers and underscores.

Removed

  • Logbrowser support.

  • Live plotting support.

  • Legacy classes including: TimedDictionary, WaveformDictionary, AcquisitionDictionary, WaveformFactory, SequencedProgram, QuantumProgram, DynamicProgram, Node, RelativeTiming, Sequencer, ExecuteSequence, RemoveEmpty, DependentScalar, DRAGEnvelope, FlatTopGaussianEnvelope, FlatTopSineEnvelope.

  • The get_channels_by_instrument method on ChannelMapper.

  • Dependencies on keysight-qcs1, inflection and notebook.

[2.0.17] - 2023-11-29

Fixed

  • Fixed a potential issue with colorama as a dependency.

[2.0.16] - 2023-11-23

Fixed

  • Fixed a bug where waveforms exceeding amplitudes of 1 can cause crashing on M5301 units.

[2.0.15] - 2023-11-21

Added

  • Added the ChannelMapper.set_lo_frequencies method to set the LO frequency setting on multiple channels to a user specified value. The previous method of the same name has been renamed to ChannelMapper.constrain_lo_frequencies.

  • Added validation to ExecuteSequence to ensure that all intermediate frequencies are within the appropriate bandwidth.

Fixed

  • Fixed a bug where acquisitions on virtual channels were not indexed properly.

[2.0.14] - 2023-11-03

Removed

  • Live plotting functionality.

[2.0.13] - 2023-10-20

Fixed

  • Fixed a bug with exporting multi-sweep data to the logbrowser.

[2.0.12] - 2023-10-16

Fixed

  • Fixed a bug with saving and loading ArbitraryEnvelope.

[2.0.11] - 2023-10-11

Added

  • Added the topology argument to CalibrationSet to specify connectivity with a QuditGraph, along with methods add_variable and get_variable to improve variable handling.

  • Added a GUI for editing the CalibrationSet via the edit method.

[2.0.10] - 2023-10-03

Added

  • Added the QuditGraph object to represent quantum devices as graphs.

Fixed

  • Fixed a bug where IntegrationFilter would sometimes incorrectly raise an IndexError.

[2.0.9] - 2023-09-28

Added

  • Added Results object to access and handle experimental data.

  • Added the TraceLoader and IQLoader objects.

  • Added additional IQ plotting capabilities, including scatter plots and the ability to toggle IQ magnitude and phase. These can be accessed with the Results.plot_iq method.

  • Added support for multi-dimensional swept data for the QCS Log Browser.

Changed

  • Acquisition objects are now constructed with a classifier and an integration_filter.

  • Experimental data is now accessed via a program’s results property, containing a new Results object. This is done via the get_trace, get_iq, and get_classified methods.

  • VariableSet no longer has the properties inputs and outputs. Instead, its variables represent inputs and outputs are handled via Results.

  • Arguments to objects and methods for output names, e.g., the result name in QuantumProgram.add_measurement, have been removed. These are generated by the Results object.

Deprecated

  • Deprecated the PostProcessing class and related arguments.

  • Live-plotting support in Jupyter notebooks.

[2.0.8] - 2023-09-14

Changed

  • Improved loading of old objects.

[2.0.7] - 2023-09-13

Added

  • Added repetitions and repetiton_shape properties to DynamicProgram to describe how a program is repeated or swept on execution. These properties use the new Repeat and Sweep objects.

  • Added keyword argument sweep_index to method SequencedProgram.render() to specify which sweep point of the program to render.

Changed

  • Changed how repetitions and sweeps are handled by ExecuteSequence.

  • Improved CalibrationSet guide.

  • QCS Log Broswer files are now automatically generated during execution.

Fixed

  • Fixed a bug where software demod was sometimes incorrectly applied during sweeps.

  • Fixed a bug where IQ results were sometimes incorrectly classified during sweeps.

Removed

  • Removed the add_subprogram(), add_var_mutators(), extend(), for_each(), and if_else() methods from DynamicProgram as they generated programs that are not currently supported on execution. Further, removed VariableMutators as they were solely used to implement said methods.

  • Removed DependentScalar in favor of ScalarCombination.

[2.0.6] - 2023-08-25

Added

  • Added live plotting multithreading support.

Changed

  • Improved documentation.

Fixed

  • Fixed bugs related to hardware demodulation.

  • Fixed plots blocking subsequent executions of programs.

Removed

  • Removed QuantumSubprogram.

[2.0.5] - 2023-08-18

Added

  • Added the ability to static plot IQ data via plot_iq1d.

  • Added support for static and live plotting within Python scripts.

Changed

  • Improved the live plotting visuals.

[2.0.4] - 2023-08-11

Added

  • Added qudit tags to files exported to the QCS Log Browser.

Changed

  • Improved the live plotting visuals.

  • Improved documentation.

[2.0.3] - 2023-08-10

Added

  • Added live plotting functionality with Python scripts.

Changed

  • Improved the live plotting visuals.

  • Improved documentation.

[2.0.2] - 2023-08-04

Added

  • Added convenience methods to generate common experimental protocols make_rabi, make_ramsey and make_spectroscopy.

  • Added live plotting functionality for IQ data.

  • Added the ability to export trace data into an .hdf5 file compatible with the QCS Log Browser.

[2.0.1] - 2023-07-28

QCS 2023B introduces the new QCS API.

Added

  • Adds new qubit-centric API.

  • Supports multiple representations – from gates to sequenced pulses.

  • Adds user-definable Linkers to automate compiling between different levels.

  • Supports a calibration flow using CalibrationSet and Linkers.

  • Supports 20 qubit demodulation (up from 16 qubits in 2023A).

  • Enables user customization of qubit demodulation filter supported for qubit HW demod.

  • Adds guides to documentation that are easily downloadable as Jupyter Notebooks.

  • Adds progress bar to estimate time for job completion.

On this page