Quantum Control Solution Changelog

[2.2.14]

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.

Fixed

  • Amplitude Scaling of DRAG waveforms.

[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