Quantum Control Solution Changelog#
[2.6.2] - 2025-10-02#
Changed#
Documentation styling to use a new theme.
Documentation content to be focused on using the experiment library
[2.6.1] - 2025-09-26#
Removed#
The ability to generate waveform markers due to critical issues.
Fixed#
Amplitude estimation in
RabiExperiment.get_updated_calibration_values()
Unwanted warnings in
Experiment.fit()
andExperiment.plot()
.
[2.6.0] - 2025-09-22#
Added#
Support for live plotting for One-Dimensional and Two-Dimensional hardware sweeps.
FanoResonance
fitter for asymmetric resonance responses.An option to pass the name of the executing experiment in
Experiment.execute()
.fit()
,plot()
andget_t2()
functions,detune_frequency
option for RamseyExperiment class.An option to specify bounds, optimization method and loss function in
BaseFitter
andComplexFitter
.fit()
,plot()
andget_updated_calibration_values()
for CrossResonance class.fit()
,plot()
for 2D sweeps by specifyingsecond_sweep_name
parameter.channels
andvariable_list
properties toCalibrationSet()
andProgram
to ease access to the virtual channels and variables used.Functionality to access the virtual channels via
ChannelMapper
attributes.ChannelMapper.<name>
.Optional
plot_density
parameter toExperiment.plot()
, allowing finer interpolation of x_values for smoother visualization of fitted models.Support averaging option for up to 2D sweeps with fpga_postprocessing using
HclBackend.averaging=True
andHclBackend.num_averages=<number>
.Fetch cumulative averaged data from DB for up to 2D sweeps with fpga_postprocessing when avg=True.
fit()
,plot()
, andget_fidelity()
methods toIQDistributionExperiment
, including rotation-based Gaussian fitting of IQ clouds and interactive visualization of readout fidelity.Introducing Waveform markers to generate an external trigger signal.
Support for the M9614A and M9615A SMU modules. Voltage and Current can be set through operations
Program
s as well as throughHclBackend
. See the “Source Measure Unit (SMUs)” section of “Tutorials” for more information.QASMConverter
to convert and run QASM 2.0 programs.HclBackend(..., keep_progress_bar: bool = True)
as an argument. 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.qcs.concat(programs: list[Program]) -> Program
that concatenates Programs together into a single Program.add_delay
method toProgram
.set_log_level()
andget_log_level()
methods toHclBackend
.RY gate linker in
make_calibration_set()
.create_dc_flattop
toDCWaveform
,create_rf_flattop
toRFWaveform
, andcreate_rf_drag_flattop
toRFWaveform
.Interactive widget for updating the guess used in the fitting in
Experiment.plot()
by settinginteractive
toTrue
.An option to pass the name of the executing experiment in
Experiment.execute()
.
Changed#
Modify
get_iq
,get_trace
,get_classified
to use commons methods with multiple channels to get the data for multiple channels at once.Render arbitrary envelopes with their end points.
get_iq
,get_trace
,get_classified
functions are using the new memory copy methodto_np
for faster data retrieval from C# tensors if data is not slices. Functions using these methods (e.g. plot_iq) also will benefit from the performance increase.
Deprecated#
to_flattop
onBaseWaveform
. Usecreate_dc_flattop
,create_rf_flattop
, andcreate_rf_drag_flattop
instead. Without using the new methods, programs may error when submitted for execution, See “tutorials/Upgrading SDK software version from 2.5.0 to 2.6.0” for more information.qcs.utils.as_simple_type
. Useqcs.load
with the file name or if absolutely necessary useqcs.utils.load_json_dict
to maintain the exact same functionality.hw_demod
parameter name is changed tofpga_postprocessing
inHclBackend(fpga_postprocessing=True)
,Experiment.execute(fpga_postprocessing=True)
,TrueQExperiment.execute(fpga_postprocessing=True)
.kernel_optimization
,get_optimized_parameters
andupdate_measurement_operation
fromIQDistributionExperiment
are no longer supported.
Fixed#
Mock data logic to handle channels compiled from gates.
Bugfix for xArray datatype and get_iq_array(avg=True) case.
An issue where the first few data points were sometimes missing in the live plotted views.
RabiExperiment.get_updated_calibration_values()
,ResonatorSpectroscopy.get_updated_calibration_values()
,QubitSpectroscopy.get_updated_calibration_values()
returning only one value even for multiple qubits.Submit init-time to
HclBackend
using doubles rather than int.CalibrationExperiment.set_updated_calibration_set()
failing for single-qubit experiments for qubits with label different from 0.
Removed#
M3202AWG
fromInstrumentEnum
.Unused Delay setting from
DownconverterChannelSettings
.
[2.5.5] - 2025-06-12#
Fixed#
Usage of mock_data in Experiment classes for Python 3.9.
Time delay observed between operations for some multi qubit objects in CR calibration experiment.
[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.