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 ofHclBackend
. IfTrue
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 useClassifier
instead ofMinimumDistanceClassifier
.
[2.5.0] - 2025-03-27
Added
kernel_optimization()
method toIQDistributionExperiment
.More system status information when the system is not in a “Ready” state.
Data caching for calls to
get_trace
,get_iq
, orget_classified
onResults
.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
toExperiment
class.The parameter
keep_progress_bar
to the constructor ofHclBackend
. IfFalse
, 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 ofClassifier
.
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()
andget_module_temperatures()
methods toHclBackend
.
[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
Experiment
s 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
andEchoExperiment
classes to run relaxation and Hahn echo experiments.ResonatorSpectroscopy2D
andDispersiveShift
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
Array
s.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
andExperiment.plot
.
[2.2.12] - 2024-09-09
Added
The
Experiment.plot()
method that plots fitted data.The
get_updated_calibration_values()
andset_updated_calibration_values()
onCalibrationExperiment
.A
pre_processor
argument toCalibrationExperiment
to allow data to be pre-processed before fitting.A
remove
method onVariableSet
to remove variables by name.The ability to render
Acquisitions
inProgram.render
.The
plot_classified
method toProgram
andExperiment
.Examples added to
ResonatorSpectroscopy
andResonatorSpectroscopy2D
Changed
The
linker
argument toCalibrationExperiment
in favour ofoperation
.The order of arguments in
Experiment
andCalibrationExperiment
for consistency.The experiment
CalibrationSet
from a static class to a method for generatingCalibrationSet
s,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 useabsolute_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
withConditionalOperation
s.
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
, andReadoutSpectroscopy
.The
fitter
,idx
, andtargets
properties toExperiment
to allow for easily fitting experimental data and storing the results in aCalibrationSet
.Added
Experiment.configure_repetitions
to specify and update the sweep points and number of shots to use withExperiment.execute
.The
analysis
submodule, including basic fitters and estimates to store them.The
acq_index
keyword argument toget_iq
/get_classified
andplot_iq
forProgram
,Results
andExperiment
to specify the acquisition index for programs with multiple acquisitions per channel.The
repeat_reset
argument toProgram.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
to0.7.10
.Restricted the version of
pandas
to below3.0
.Changed the
blocking_timeout
argument toHclBackend.execute
toblocking
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 throughauto_save=False
). Programs will be retrieved from the database when calling theExperiment.get_*
/plot_*
methods.Targets.match
now returns anint
rather than alist[int]
of length1
. 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
andmake_spectroscopy
in favor ofRamseyExperiment
andQubitSpectroscopy
.
[2.2.8] - 2024-06-27
Added
The
set
/get_dark_theme
setting to set a dark theme for visualization and plotting.The
RabiExperiment
andIQDistributionExperiment
to the experiment library.A
channels
argument toProgram.plot_iq
/trace
/spectrum
to select which channels are to be plotted.A
reset_repetitions
method onProgram
.
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 toexperiments
.
Removed
make_rabi
in favor ofRabiExperiment
.
[2.2.7] - 2024-05-07
Changed
Increased the version of
qcs-common
to0.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 asScalarRef
s rather thanArraySlice
s 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 convertedParametricGate
s totrueq.GateFactory
s.
[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
toTrue
.A
save_path
attribute toProgram
.
Changed
Saving with
qcs.save
without having to specify afilename
as long as the object has asave_path
andname
attribute. E.g.Program
andExperiment
.
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 aProgram
on hardware.An
ip_address
property onChannelMapper
.A new plot type for
Program.plot_iq()
to plot 2D plots.The
target_variables
property toCalibrationSet
.
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 ofCalibrationSet
to automatically populate thetarget_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 onHclBackend
in favor ofip_address
onChannelMapper
.The
TagEnum
class and the correspondingtag
argument in theadd_variable
method ofCalibrationSet
.
[2.2.4a2] - 2024-04-09
Added
add_cr_gate
,add_measurement
, andadd_sq_gate
methods toCalibrationSet
and correspondingcreate_cross_resonance_gate_linker
,create_measurement_linker
andcreate_single_qudit_gate_linker
methods toParameterizedLinker
to create common linkers.A new
Classifier
class to represent multipleMinimumDistanceClassifier
s.A
name
property on operations.A
unit
property on variables.
Changed
The
classifier
property ofAcquisition
to return a single mergedClassifier
orNone
rather than a tuple ofMinimumDistanceClassifier
s.
Removed
The
set_cl
,get_cl
, andget_zl
functions fromkeysight.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 toProgram.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()
andget_trace()
/iq()
/spectrum()
where sweep values were rounded and lost precision.
[2.2.0] - 2024-03-12
Added
A
name
property forProgram
s, which is now used in place of thekey
.Addition and multiplication overloads to
DCWaveform
andRFWaveform
to construct more complex envelopes.The convenience method
add_sq_gate
toCalibrationSet
to quickly define linkers from single-qudit gates to one or more waveforms.The
activate
anddeactivate
methods toCalibrationSet
.The
PhaseIncrement
class to represent, e.g., virtualZ
gates as hardware operations.Support for loading legacy
.qcs
files. Supported versions include2.0.1
up to2.0.17
.
Changed
Increased the version of
keysight-qcs-common
.Linker
s andParametricLinker
s now raise when mapping quantum operations to quantum operations.MinimumDistanceClassifier
now takes alist
orArray
of reference points instead of a dictionary.
Fixed
A bug when averaging over trace data from the
Results
class.
Removed
The
Key
class and thekey
property forProgram
s.
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 anArray
with no value.A bug where
CalibrationSet
sometimes add extra parameters to itsvariables
.
[2.1.0] - 2024-02-02
Added
A layer-based timing model for programs.
A
draw
method toProgram
that enables users to visualize the program in a manner comparable to standard quantum circuit diagrams.The
plot_iq
andplot_trace
methods toProgram
.The
Results.get_spectrum()
,Program.get_spectrum()
andProgram.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 andMaskEnvelope
andSineEnvelope
envelopes.The
to_flattop
method to waveforms andto_drag
toRFWaveform
.The
accession_id
property toResults
.Arguments to
get_iq
andget_classified
to allow results to be re-processed with different integration filters and classifiers.The
truncate
argument toIntegrationFilter.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 toChannelMapper
.A
delay
setting toPhysicalChannel
.The
host_controller
attribute toAddress
.
Changed
SequencedProgram
,QuantumProgram
,DynamicProgram
were removed in favor ofProgram
.The
Program.plot_trace()
method now plots the time in seconds on the x-axis.The data returned by
Results.get_classified
andResults.get_iq
is now indexed by theChannels
orQudits
from which it was acquired.The
amplitude
andduration
arguments were removed from allEnvelope
classes and are instead specified by theDCWaveform
andRFWaveform
classes.The implementation of flat-top envelopes from dedicated classes to static methods on
RFWaveform
andDCWaveform
using theMaskEnvelope
andHold
classes.The
sample_rate
argument ofEnvelope.render()
was replaced withn_samples
asEnvelope
s are now normalized to the unit interval.The
DCWaveform
andRFWaveform
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 onRFWaveform
.The order of the arguments for
set_lo_frequencies
onChannelMapper
.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 onChannelMapper
.Dependencies on
keysight-qcs1
,inflection
andnotebook
.
[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 toChannelMapper.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 toCalibrationSet
to specify connectivity with aQuditGraph
, along with methodsadd_variable
andget_variable
to improve variable handling.Added a GUI for editing the
CalibrationSet
via theedit
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 anIndexError
.
[2.0.9] - 2023-09-28
Added
Added
Results
object to access and handle experimental data.Added the
TraceLoader
andIQLoader
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 aclassifier
and anintegration_filter
.Experimental data is now accessed via a program’s
results
property, containing a newResults
object. This is done via theget_trace
,get_iq
, andget_classified
methods.VariableSet
no longer has the propertiesinputs
andoutputs
. Instead, its variables representinputs
andoutputs
are handled viaResults
.Arguments to objects and methods for output names, e.g., the result name in
QuantumProgram.add_measurement
, have been removed. These are generated by theResults
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
andrepetiton_shape
properties toDynamicProgram
to describe how a program is repeated or swept on execution. These properties use the newRepeat
andSweep
objects.Added keyword argument
sweep_index
to methodSequencedProgram.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()
, andif_else()
methods fromDynamicProgram
as they generated programs that are not currently supported on execution. Further, removedVariableMutator
s as they were solely used to implement said methods.Removed
DependentScalar
in favor ofScalarCombination
.
[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
andmake_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
andLinkers
.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.