Changelog
0.13.0 (2023-05-05)
Release Highlights
This release introduces a new acquisition protocol:
NumericalWeightedIntegrationComplex
, that allows users perform a weighted integration acquisition.The schedule library now has a new schedule that performs an NCO frequency sweep in a dark ESR experiment on an NV-center.
A lot of code that was marked as deprecated has been removed. Please checkout our deprecated code suggestions on how to modify you code to ammend any problems caused by this removal.
Many improvements and small bug fixes.
Breaking changes
Deprecation - Deprecated code that had been scheduled to be removed after version 0.12 has been removed. The deprecated code suggestions have been updated (!667).
Qblox backend - Markers will not be pulled high at the start of sequences anymore. Removed MarkerConfiguration from the Qblox backend. Moved output_map to StaticHardwareProperties, the RF output switches are controlled by the output_map. (!1081)
Qblox backend - Deprecate the
instruction_generated_pulses_enabled
hardware configuration setting, as well as theStitchedSquarePulseStrategy
andStaircasePulseStrategy
. The newly introducedStitchedPulse
, as well as the helper functions inquantify_scheduler.pulse_factories
can be used instead.SquarePulse
s with a duration >1 microsecond (a constant in the Qblox backend) are compiled to AWG offset instructions (!637).
Merged branches and closed issues
Compilation - Move
ModulationFrequencies
toCompilationConfig.hardware_options
(!660)Compilation - Update structure of
HardwareOptions
datastructure with fieldslatency_corrections: Dict[str, LatencyCorrection]
anddistortion_corrections: Dict[str, DistortionCorrection]
(!650).Compilation - Move
DistortionCorrections
toCompilationConfig.hardware_options
(!648)Compilation - Move
LatencyCorrections
toCompilationConfig.hardware_options
and use field namecorrections
instead oflatencies
(!633).Compilation -
CompilationNode
s take the fullCompilationConfig
as input (!615, #405)Deprecation - Replace
device_compile
andhardware_compile
bySerialCompiler
in NV center tests (!651)Documentation - Fix documentation generation warnings and errors (!658)
Documentation - Acquisition data format in user guide (!646)
Gettables - Clean up code syntax (!638)
Git - Change back to default merge strategy for CHANGELOG.md (!659).
Operations - Introduce the
StitchedPulse
, an Operation that can be composed of AWG offset instructions and waveforms, and theStitchedPulseBuilder
which can be used to createStitchedPulse
s (!588, !666).Additionally, helper functions
long_square_pulse
,long_ramp_pulse
andstaircase_pulse
are introduced inquantify_scheduler.pulse_factories
, to more easily generate the operations for these common use-cases.
Operations, Qblox backend - Introduce the
VoltageOffset
operation, for use in theStitchedPulse
, and modify the compilation steps to compile this operation (!588).Qblox backend - Add the
marker_debug_mode_enable
parameter to the hardware configuration, which toggles markers at the start of operations on inputs and outputs where it is set to True (!606).Qblox backend - Renamed
hw_mapping
input parameter toinstrument_cfg
inInstrumentCompiler
and up (!644).Qblox backend - Let the compiler raise an error when the waveforms specified in the schedule are too large to be uploaded to a sequencer (!625).
Qblox backend - Forbid repeated acquisition index in schedule (!655, partially revert !542)
Qblox backend - Rename the
MAX_SAMPLE_SIZE_ACQUISITIONS
constant toMAX_SAMPLE_SIZE_SCOPE_ACQUISITIONS
, and modify the docstring to clarify that this constant only refers to scope trace acquisitions (!649).Qblox backend - Forbid repeated acquisition index in schedule (!655, !657, partially revert !542)
Qblox backend -
Measure
can now use theNumericalWeightedIntegrationComplex
protocol. TheDispersiveMeasurement
has been expanded with optional weight parameters for use in this protocol (!612).Schedulables - Make name uniqueness check more efficient and readable. (!631)
Schedules - Add
nv_dark_esr_sched_nco
spectroscopy schedule using SetClockFrequency Operation to sweep the NCO frequency (!639)Tests - Move Qblox Pulsar entries from
qblox_test_mapping.json
to pytest fixtures (!632)Tests - Qblox acquisition testcases with dummy data (!654)
Typing - More lenient typehints (!640)
Visualization - Introduce the
x_range
keyword for the matplotlib backend inSchedule.plot_pulse_diagram
. This will cut off any points outside the given range when creating the plot. This can be used to reduce memory usage when plotting a small section of a long pulse sequence (!629).ZI LabOne backend - Return datasets from UHFQA instrument coordinator component (which fixes the broken backend) (#410, !623).
Compatibility info
Qblox:
qblox-instruments==0.9.0
(Cluster firmware v0.4.0) andqblox-instruments==0.10.x
(Cluster firmware v0.5.0)ZI:
zhinst==21.8.20515
zhinst-qcodes==0.1.4
zhinst-toolkit==0.1.5
0.12.3 (2023-03-09)
Merged branches and closed issues
Documentation - Replace deprecated code in the Operations and Qubits tutorial (!602)
Workflow -
ruff
andpyright
are enabled for linting the code (inpre-commit
and in CI pipeline). All existing code is added to exclusion list because it does not comply with them yet. (!614)
0.12.2 (2023-03-05)
Breaking changes
Qblox backend - Fix imaginary and real part of the acquisition by swapping them, and fix trigger count formatting (!619)
Merged branches and closed issues
Qblox backend - raise DriverVersionError when importing qblox module with incompatible qblox-instruments version (!620)
0.12.1 (2023-03-02)
Breaking changes
Qblox backend - Strictly requires v0.9.x of the
qblox-instruments
package (!616)
0.12.0 (2023-02-28)
Breaking changes
Acquisition -
InstrumentCoordinator.retrieve_acquisition
returns anxarray.Dataset
(!550, #362)Qblox backend - Set the
marker_ovr_en
QCoDeS parameter by default toFalse
before schedule execution, so that the markers are always controlled using theMarkerConfiguration
(!576)Qblox backend - Set
"downconverter_freq"
tonull
(json) orNone
to deactivate (0
no longer deactivates it) (!574)Qblox backend - The NCO is now enabled when setting
sequencer.frequency
to0
(0
no longer disables it) (!574)For baseband modules without external LO, NCO is still permanently disabled by setting
"interm_freq"
to0
in the hardware config
Visualization - Deprecate
visualization
module and its functionscircuit_diagram_matplotlib
,pulse_diagram_matplotlib
, andpulse_diagram_plotly
(!599, #397)Create
_visualization
submodule withinschedules
Make plots via
ScheduleBase
methodsMove visualization tests to
schedules
directory, and make tests forScheduleBase
plotting methods
Merged branches and closed issues
Compilation - Update
CompilationConfig
with high-level structure (!603, #332)Compilation - Add
determine_relative_latencies
that determines latencies for all port-clock combinations in the hardware config relative to the minimum latency (!566, #379)Documentation - Qblox backend reference guide overhaul and fix docs generation warnings (!587)
JSON utilities - Introduce serialization of python objects to a dotted import string, next to the already existing deserialization (
import_python_object_from_string
) (!578, #393)Serialization now happens automatically in
DataStructure
s, deserialization is implemented using Pydantic validators in the configuration models
Operations - Introduce
SetClockFrequency
operation (!575, follow-up to !539 !543)Qblox backend - Introduce
qblox.helpers.determine_clock_lo_interm_freqs
and use inQbloxBasebandModule.assign_frequencies
andQbloxRFModule.assign_frequencies
(!574)Qblox backend - Compile
SetClockFrequency
operation toset_freq
+upd_param
of 8 ns (!575, follow-up to !539 !543)Qblox backend - Fix Qblox sync reset bug following !550 (!611)
Schedules - Add fast NCO sweep schedules using
SetClockFrequency
(!542)ZI LabOne backend - Support distortion corrections (!600)
0.11.1 (2023-02-07)
Breaking changes
Qblox backend -
"input_att"
can be the property of"complex_input_0"
and"complex_output_0"
, but not both at the same time for QRM-RF (!596, !597)
0.11.0 (2023-02-03)
For help in migrating from deprecated methods, see Quantify Deprecated Code Suggestions.
Breaking changes
Installation - Instead of
requirements.txt
andrequirements_dev.txt
quantify-scheduler
uses optional requirements. Usepip install "quantify-scheduler[dev]"
to install all of them. (!592)Compilation - Raise error upon clock being used in operation that was not added as resource to the schedule or device configuration (!538)
Qblox ICCs - Replace
"acq_mapping"
by"trace_acq_channel"
in the compiled schedule (!515)Qblox backend - Replace
"input_gain<n>"
by"input_gain_<n>"
and"input_att"
is the property of"complex_input"
(!585)
Merged branches and closed issues
Acquisition - Data obtained with TriggerCount acquisition is formatted correctly (!530).
Acquisition - Fix wrong assumption in input format (!564, follow-up for !530).
Acquisition - Raise an exception if user tries to use same acquisition index and channel for different operations, and only extract data from used modules (!573)
Compilation - Can optionally provide a
QuantumDevice
toQuantifyCompiler
. This will be used as defaultCompilationConfig
inQuantifyCompiler.compile()
(!535)Compilation - Fix clock not being added to schedule from quantum device layer via new graph node
set_pulse_and_acquisition_clock
that verifies and sets clock frequency (!538, #371)Deprecation - Refactored tests to remove deprecated
qcompile
, refactored toSerialCompiler
(!529, #368)Documentation - Sphinx build now compatible with qcodes==0.36.0 (!552)
Documentation - Removed deprecated code from the Compiling to Hardware Tutorial (!582)
NV centers - Avoid python warning when parsing docstring in
nv_element.py
(!562)NV centers - Dark ESR schedule combining all prior operations (!527)
NV centers -
BasicElectronicNVElement
parameters accept physics-motivated values (!551)Qblox backend - Add preparation of acquisition settings and accompanying datastructures for NV centers (!567)
Qblox backend - Add TriggerCount to
QRMAcquisitionManager
(!556)Qblox backend - Added method for gain configuration, overriding gain now raises ValueError (!533)
Qblox backend - Provide sequencer setting to reset AWG offset and AWG gain to a known value (default 0 for offset and 1 for gain) before starting experiment (!544, #377)
Qblox backend - Remove
mix_lo
fromSequencerSettings
(!896)Qblox backend - Typecast attenuations to
int
s before assigning them (!570)QuantumDevice -
BasicTransmonElement
can now be serialized to json string and deserialized via__getstate__/__init__
(!510)Schedule Functions - Make experiment-related schedule functions available in
quantify_scheduler.schedules
(!572)Tests - Removed unused
lo0
and addedttl_acq_threshold
inqblox_test_mapping_nv_centers.json
so thatTestNVDarkESRSched
suite passes (!579, follow-up to !571)Visualization - Make box separation in circuit_diagram_matplotlib always equal to one (!589)
Waveforms - Fix
sudden_net_zero
waveform generation function misunderstandsamp_B
(!549, #390)
0.10.1 (2022-12-20)
Merged branches and closed issues
Compilation - Reinstate
add_pulse_information_transmon
device compilation backend (removed in !526) (!557)Qblox backend - Drop no key
"distortion_corrections"
supplied log message level to debug (!560)
0.10.0 (2022-12-15)
Breaking changes
Deprecation -
add_pulse_information_transmon
is removed anddevice_config
must now be of typeDeviceCompilationConfig
(!526)Qblox backend - Strictly requires v0.8.x of the
qblox-instruments
package (!512)Qblox backend, Operations - The phase of the measurement clock is set to zero at the start of each measurement by default (!434, #296)
Qblox backend -
QRMAcquisitionManager
now truncates returned acquisitions to actual lengths (!478)Qblox backend -
mix_lo
flag now specifies if IQ mixing should be applied to LO (!482)Operations - ShiftClockPhase now uses
phase_shift
as keyword instead ofphase
(!434)
Merged branches and closed issues
Deprecation - Replaced
DeprecationWarning
s withFutureWarning
s so they are shown to end-users by default (!536, counterpart to quantify-core!411)Deprecation - Remove code and test dependencies on deprecated
data
keyword inOperations
(!545, #381)Documentation - Instrument naming requirements in qblox hardware config (!531)
Documentation - Make class
__init__
docstring visible on Sphinx (!541, #314)Documentation - Improve parameter documentation for DeviceElements (!493)
Documentation - Building sphinx documentation will now raise an error if one of the code cells fails to run (!514)
Gate Library - Added Deprecation Warning for
acq_channel
Keyword in Measure (!491)Git - Changed git merge strategy to “union” for CHANGELOG.md and AUTHORS.md to reduce amount of merge conflicts (!495)
Instrument Coordinator - Check if a parameter cache is valid before lazy setting (!505, #351)
Instrument Coordinator - Changed argument of
GenericInstrumentCoordinatorComponent
fromname
toinstrument_reference
. (!497)NV centers - First operation
SpectroscopyOperation
with compilation for Qblox hardware (!471)NV centers -
Reset
operation with compilation for Qblox hardware (!485)NV centers -
Measure
operation using TriggerCount acquisition; only device compilation so far (!490)NV centers -
ChargeReset
operation only device compilation so far (!496)NV centers -
CRCount
operation using TriggerCount acquisition; only device compilation so far (!502)Qblox backend - Introduce
"sequence_to_file"
param in qblox hardware config to allow skipping writing sequence json files to disk (#108, !438)Qblox backend - Minor adjustments to
NcoPhaseShiftStrategy
to make compilation ofShiftClockPhase
compatible with qblox-instruments==0.8.0 (!481)Qblox backend -
QbloxInstrumentCoordinatorComponentBase
accepts bothInstrumentModule
andInstrumentChannel
as instrument reference to cluster module (!508)Qblox backend - Explicit error message when trying to do acquisitions on a QCM (!519)
Qblox backend - Renamed
output_mode
toio_mode
inget_operation_strategy
(!497)Qblox backend - Added
TriggerCountAcquisitionStrategy
to acquisitions, generating the Q1ASM commands. (!540)Tests - Refactored tests to remove duplicated
temp_dir
setup, and only usetmp_test_data_dir
fixture (#370, !525)Tests - Update tests to use
mock_setup_basic_transmon_with_standard_params
where needed (#369, !522)Tests - Tests refactoring, move to
mock_setup_basic_transmon_with_standard_params
and replaceqcompile
bySerialCompiler
(!516)Validation - Replaced most of the asserts with raising proper exceptions so that they are raised in production environment too (#342, !499)
Visualization - Updated
pulse_diagram_matplotlib
to be compatible with future quantify-core release (!517)Visualization - Show clock name in plotly pulse diagram (!547)
0.9.0 (2022-10-06)
Breaking changes
Deprecated methods removed:
QuantumDevice
components
->elements
get_component
->get_element
add_component
->add_element
remove_component
->remove_element
ScheduleBase
plot_circuit_diagram_mpl
->plot_circuit_diagram
plot_pulse_diagram_mpl
->plot_pulse_diagram
Compilation - Compilation is now a graph. (#305, !407)
Operations - Allow moving to
qcodes
>=0.34 (#300, !473)Disallow
"_"
inDeviceElement
names to comply with qcodes version 0.34Enforces
"_"
as the separator between device elements inEdge
namesNote: We are still on
qcodes
0.33 due to pin inquantify-core
package requirements
Operations, Resources, and Schedulables - Deprecate the use of the
data
argument (!455)Qblox ICCs - Hotfix for storing scope acquisition (broken by !432) (!470)
Qblox ICCs - Only activate markers and LOs of used outputs to prevent noise (!474)
Merged branches and closed issues
Docs - Support for
myst-nb
added (#301, !407)Docs - Sources are converted from restructured text format to MyST markdown. (!452)
Docs - Add pin on
nbclient<0.6
for Read-the-Docs to build; Remove various old temp requirement pins (!477)Docs - Added documentation and unit tests for the Rxy, X, X90, Y and Y90 unitaries (#349)
Gettables - Added a
ProfiledScheduleGettable
for profiling execution times of schedule steps. (!420, !469)Please note: Setup in need of refactoring so interface is subject to change (see #320)
Instrument Coordinator - Small fix for
search_settable_param
when scheduler is searching for qcodes parameters (!461)JSON utilities - Remove
repr
based serialization/deserialization methods (!445, #248)JSON utilities - Extend the capabilities of the
__getstate__/__setstate__
json serializer (!445, #248)Qblox ICCs - Added input/output gain/attenuation configurable hardware parameter (!458)
Structure - Pydantic-based model is now used to validate latency corrections. (!467, #333)
Zhinst backend - Raise a more understandable exception when compiling an acquisition with larger than allowed duration (!407).
0.8.0 Support for two qubit operations and basic CZ-gate implementation (2022-08-10)
Breaking changes
Operations - Pin
qcodes
package to <0.34.0 due to breakingEdge
naming (#300, !409)Qblox backend - Sequencers are now dynamically allocated. The hardware config file schema was changed. (!328)
For each instrument, the config now contains a
portclock_configs
entry, a list with a dictionary of settings per port-clock combinationSee https://quantify-quantify-scheduler.readthedocs-hosted.com/en/0.8.0/tutorials/qblox/recent.html
Qblox backend - Strictly requires v0.7.x of the
qblox-instruments
package (!449)Zhinst backend - Strictly requires v21.8.20515 of the
zhinst
package (!387)
Merged branches and closed issues
Compilation - Added
acq_protocol
optional parameter to theMeasure
gate. (!386)Compilation - Call
determine_absolute_timing
inqcompile
when nodevice_cfg
supplied. (!436)Compilation - Decrease test usage of deprecated transmon_test_config.json / add_pulse_information_transmon (!450)
DRAG Pulse - Removed an extra G_amp factor from the Q component (derivative pulse). (#298, !406)
Docs - Fix API reference pages on read-the-docs (#303, !413)
Docs - Pin sphinx to 5.0.2 due to crash in napoleon (!437)
Docs - Unpin sphinx >=5.1.1 (!445)
Docs - Fix jsonschemas not rendered on read-the-docs (!448)
Docs - Clarify port and clock concepts (!431)
Docs - New scheduler tutorials: Schedules and Pulses; Compiling to Hardware; Operations and Qubits (!336, !439)
Gettables - Added
generate_diagnostics_report
method to save the internal state ofScheduleGettable
to a zip-file. (!408)Helpers - Moved
MockLocalOscillator
definition from tests tohelpers.mock_instruments.MockLocalOscillator
(!392, !336).JSON utilities - Add JSON serialization/deserialization methods based on
__getstate__
/__setstate__
(!444)Operations - Added a
symmetric
key in thegate_info
to flag symmetric operations. (!389)Operations - Introduce basic CZ-gate via
CompositeSquareEdge
(utilizingquantify_scheduler.operations.pulse_factories.composite_square_pulse
) (!411)Replaces the incomplete
SuddenNetZeroEdge
basic CZ-gate implementation
Operations - Rxy theta rotations now fall into the domain of [-180 to 180) degrees. (!433)
QuantumDevice - Added implementation for
edges
in the quantum device config in order to support two qubit operations. (!389)The
Edge
has been added as an abstract base class for edges to be added to a device.
Qblox backend - Only add clocks to the schedule that are actually being used, avoids trying to assign frequencies for unused clocks (#278, !371)
Qblox backend - Fix for supplying negative NCO phase (!393)
Qblox backend - Fix compilation of ShiftClockPhase (!404, broken by merge of !328)
Qblox backend - Fix for outputting signals on even output paths of qblox hardware in real_output_x mode (!397)
Qblox backend - Make Qblox backend compatible with generic downconverter values in hardware_config (!418)
Qblox backend - Fix for 90 degree phase shift on even output paths as a result of the !397 hotfix. (!412)
Qblox backend - Fix cluster compatibility when converting old hwconfig to new specs (!419)
Qblox backend - Latency corrections must now be defined in top layer of hw config (!400)
Qblox backend - Fix combination of cluster and latency corrections when converting hw_configs to new specs (!417)
Qblox backend - Fix handling of composite pulses (#299, !411)
Qblox backend - Implementation of distortion correction (#285, !388)
Qblox backend - Fix incompatibility of distortion_correction parameters as numpy arrays (!426)
Qblox backend - Remove all references to the inactive
line_gain_db
param (!435)Qblox ICCs - Fix for setting
scope_acq_sequencer_select
for QRM and QRM-RF (!432, !441)Qblox ICCs - Fix
ClusterComponent.prepare
mutating the schedule (!443)Schedules - Revert rename of
trace_schedule
done in !432 and rename new schedule using gates totrace_schedule_circuit_layer
(!442)Schedules - Make
AcquisitionMetadata
a serializable class (!446)
0.7.0 Support for qblox-instruments v0.6.0, new BasicTransmonElement, change for triggers in Zhinst backend (2022-04-11)
Breaking changes
Qblox ICCs - Updated Qblox components for using the new unified-style qblox driver (see https://gitlab.com/quantify-os/quantify-scheduler/-/wikis/Qblox-ICCs:-Interface-changes-in-using-qblox-instruments-v0.6.0) (!377).
Qblox backend - Strictly requires v0.6.0 of the qblox-instruments package (!377).
Zhinst backend - Hardware config for the devices. Replaced keyword “triggers” to “trigger”, and the value type from
List[int]
toint
. E.g. old style,"triggers": [2]
, new style,"trigger": 2
(#264, !372).
Merged branches and closed issues
QuantumDevice - The
DeviceElement
has been added as an abstract base class for elements to be added to a device (#148, !374).QuantumDevice - The
BasicTransmonElement
has been added that generates a device config in a more structured manner (#246, !374).QuantumDevice - Fixed a bug in the
BasicTransmonElement
where operations had clock-frequencies (float
) specified instead of clocks (str
) (!379).QuantumDevice - The
TransmonElement
will be deprecated after version 0.8 (!374).
0.6.0 Full support for multiplexed readout, transmon element update, fixes to backends (2022-03-10)
Breaking changes
Compilation - Deprecated
add_pulse_information_transmon
in favor ofcompilation.backends.circuit_to_device.compile_circuit_to_device
(#64, #67, !339).Compilation - attempting compilation with missing values in the
DeviceCompilationConfig
configuration will now raise validation errors. Be sure to set initial values when generating a config using theQuantumDevice
object (!339)Compilation - Device compile making use of
.compile_circuit_to_device
no longer modifies the input schedule (#249, !339).Compilation - When specifying multiple timing constraints for a schedulable, the constraint specifying the latest time determines the absolute time of the shedulable (!309)
Gettables -
ScheduleGettableSingleChannel
renamed toScheduleGettable
as it now supports multiple acquisition channels (!299).Hardware config - Removed the need for a
ic_
prefix from the hardware config (!312).Instrument Coordinator - IC now adds a
GenericInstrumentCoordinatorComponent
to itself on instantiation by default (!350)Instrument Coordinator - IC stop function has an
allow_failure
parameter which allows IC components attached to it to fail to stop with warning instead of raising errors. Allows for situations when some components cannot have a stop instruction sent before the prepare stage. (!359)Operations - The internal behavior of how acquisition channels and acquisition indices are configured in the
Measure
operation has changed slightly. See #262 for details. (!339).Operations - Added “operation_type” key to the schema. (!345)
Structure -
Schedule.timing_constraints
has been renamed toSchedule.schedulables
. It now points to a dictionary of schedulables rather than a list of dicts. (!309)Structure - Pydantic-based model is now used for the data structures. (!341)
Visualization - Deprecated
plot_circuit_diagram_mpl
andplot_pulse_diagram_mpl
inScheduleBase
in favour ofplot_circuit_diagram
andplot_pulse_diagram
(!313)Qblox backend - Strictly requires v0.5.4 of the qblox-instruments package (!314)
Zhinst backend - Due to !312, the csv files used to upload the waveforms to the UHFQA no longer use the
ic_
prefix in their filenames. (!334)Zhinst backend - Fixes bug when doing SSRO experiments. No more duplicated shots. Adds support for BinMode.APPEND during compilation. (#276, !358)
Zhinst backend - Removed
latency
andline_trigger_delay
keys in the channels of the devices for the Zhinst hardware config. (!363)Zhinst backend - Added
latency_corrections
main entry in the Zhinst hardware config for latency corrections on a port-clock combination basis. (!363)
Merged branches and closed issues
Compilation - Added a new compilation backend
compilation.backends.circuit_to_device.compile_circuit_to_device
for the quantum-circuit to quantum-device layer (#64, #67, !339).Compilation - Fixed
add_pulse_information_transmon
when using “Trace” acquisition mode (!300)Compilation - Fixed the deprecation warnings from pandas
DataFrame.append
. (!347)Docs - Pinning qcodes package to <0.32.0 due to Read the Docs API reference failure (!361)
Gettables -
ScheduleGettable
now first stops all instruments in IC during initialization (!324)Schedules - Adds a multiplexing verification schedule. (!329)
Operations - Sudden Net Zero from Negirneac 2021 added to the
pulse_library
(!339)Operations - Docstrings for the X90, X, Y90, Y, and Rxy gate unitary have been aligned with literature. (#261, !305)
Operations - Adds an optional “data” argument to staircase pulse. (!335)
Pulse library - Added
ShiftClockPhase
operation that can be used to shift the phase of a clock during execution of aSchedule
(!346)Pulse library - Added a numerically defined pulse. (!157)
QuantumDevice - Unknown values are initialized as
float('nan')
(#274, !356)TransmonElement - Corrected the motzoi parameter range validator. (!351)
Visualization - Adds visualisation of acquisitions to plotly pulse diagrams (!304)
Visualization - Add
plot_pulse_diagram
andplot_circuit_diagram
to schedule for easier method names, and enable plotly visualization directly fromScheduleBase
(!313)Utilities - Migrates the utilities from quantify-core. (!357)
Generic ICC - Adds support for nested parameters. (!330)
Qblox ICCs - Stop now disables sync on all sequencers to prevent hanging during next run, where it gets re-enabled if needed (!324)
Qblox ICCs -
_QRMAcquisitionManager._get_scope_data
now has correct return type (#232, !300)Qblox ICCs - Fixed bug where QRM scope mode sequencer does not get set correctly (!342)
Qblox ICCs - Fixed reference source cluster issue when it is not being set correctly. (!323)
Qblox backend - NCO phase now gets reset every averaging loop (!337)
Qblox backend - Enables RF output switch at the start of a program. (!344)
Qblox backend - Added logic for changing the NCO phase during execution of a
Schedule
(!346)Qblox backend - Added ability to correct for latency by delaying program execution on a per sequencer basis (!325)
Qblox backend - Compilation with local oscillators changed to work with generic instrument coordinator components (!306)
Qblox backend - Refactored operation handling and greatly increased test coverage (!301).
Qblox backend - Made max duration of wait instructions (!319).
Qblox backend - Fixed an issue with the downconverter frequency correction. (!318)
Qblox backend - Temporary fix for a floating point rounding error when calculating the length of pulses. (#284, !365)
Zhinst backend - Fixed the ZI resolver return typehint. (!307)
Zhinst backend - Fixed an issue when compiling seqc programs for multiple sequencers end up overwriting the first sequencer. (!340, #260)
0.5.2 Fixes to backends, and other incremental fixes (2021-12-08)
Breaking changes
Dependency on
jsonschema
has been replaced withfastjsonschema
. (!284, !293)Zhinst hardware config json schema has changed. See the example schema. (!283)
In
hardware_compile
function, thehardware_map
is changed tohardware_cfg
parameter. (!279)Remove enum tools dependency (!270)
Merged branches and closed issues
Compilation - The
determine_absolute_scheduling
function now sorts the list of labels in the timing constraints, and then a binary search (vianp.searchsorted
) is applied. (!272, !274)Compilation - Make
device_cfg
an optional argument of qcompile(!281)Compilation - renamed the hardware_mapping argument of qcompile into hardware_cfg (#165, !279)
Compilation - Introduced the hardware_compile function to perform the hardware compilation returning a CompiledSchedule (#224, !279)
Docs - Updating user guide to mention correctly the QuantumDevice and ScheduleGettable(s) available. (!209)
Infrastructure - Adds rich package in the requirements since tutorials use it. (!276)
Operations - The
locate
function now uses thefunctools.lru_cache
to cache the result (only for python >= 3.8). For python 3.7, behaviour remains the same. (!273, !275)Operations - Resolved a minor issue where identical Rxy rotations (for angles >360) would be treated as separate operations in a schedule (!263)
Visualization - Adds a function
plot_acquisition_operations
which together with the newAcquisitionOperation
class will help highlight acquisition pulses in the pulse diagrams. (!271, !277)Zhinst backend - Large parts of the Zhinst backend have been rewritten. This should resolve a range of issues. (!263)
Calculation of the timelines for different operations now makes using of a timing table, improving code readability and debugability.
Timing issues related to triggering should be resolved (#218)
The backend can now always use the same hardware configuration file (#214)
Acquisition is now done using the StartQA instruction (#213)
error handling in the Zhinst backend has been improved catching several exceptions at compile time of the schedule instead of manifesting in unexpected results during runtime.
Local oscillators through the ZI backend uses the GenericInstrumentCoordinatorComponent. Configures other parameters other than frequency. (!283, #204)
Qblox backend - only check major and minor version when checking compatibility with the qblox_instruments package (!290)
Added support for the Qblox Downconverter (!297)
Added workaround for staircase_amplitude. (!292)
Fix looped acquisition integration time, fix acquire index offset by one (!291)
Qblox instruments version == 0.5.3 (!289)
Fix sequencer_sync_en not being reset in the qblox instrument coordinator component. (!285)
Fix rounding of time to samples in qblox backend (!282)
Fix pulse stitching at zero amplitude. (!280)
Allow instruction generated staircase with modulation (!278)
Utilities - Improve JSON validation speed (!284)
Utilities - Improve operation deserialization speed (!273)
Bugfix - For calculating the pulse area, the mathematical area is used instead of area of sampled pulse. (!242, !286)
Bugfix - Fix for plot window operations (!294)
0.5.1 Incremental fixes, refactoring, and addition of convenience methods and classes (2021-11-11)
Breaking changes
InstrumentCoordinator -
last_schedule
is now a property (!252).Structure - We have refactored the Operation and Schedule classes out of the types module and moved the different operation libraries (acquisition_library, gate_library, and pulse_library) (#217, !256).
quantify_scheduler.types.Operation
->quantify_scheduler.operations.operation.Operation
, the importquantify_scheduler.Operation
still works.quantify_scheduler.types.Schedule
->quantify_scheduler.schedules.schedule.Schedule
, the importquantify_scheduler.Schedule
still works.quantify_scheduler.types.CompiledSchedule
->quantify_scheduler.schedules.schedule.CompiledSchedule
quantify_scheduler.types.ScheduleBase
->quantify_scheduler.schedules.schedule.ScheduleBase
quantify_scheduler.types.AcquisitionMetadata
->quantify_scheduler.schedules.schedule.AcquisitionMetadata
quantify_scheduler.acquisition_library
->quantify_scheduler.operations.acquisition_library
quantify_scheduler.gate_library
->quantify_scheduler.operations.gate_library
quantify_scheduler.pulse_library
->quantify_scheduler.operations.pulse_library
Merged branches and closed issues
Control - Add option to set output port in heterodyne_spec_sched (!262)
Control - Expand SingleChannelScheduleGettable to support trace acquisitions (!248)
Control - Update create_dc_compensation_pulse behaviour and docstring. (!244)
Control - Refactor ScheduleGettableSingleChannel (!240, !249)
Control - Reduce the default init_duration of spectroscopy schedules (!237)
Generic ICC - Added a GenericInstrumentCoordinatorComponent. (!267)
ICCs - InstrumentCoordinatorComponentBase now has a
force_set_parameter
as a ManualParameter to enable the user to switch the lazy_set behaviour when setting parameters of the instruments connected to the InstrumentCoordinatorComponent. (!267)Qblox ICCs - Adds a lazy_set behaviour by default when setting parameters with the same value to an instrument connected to the Qblox ICC. (!230)
Visualization - made matplotlib schedule visualization methods accessible as methods
plot_circuit_diagram_mpl
andplot_pulse_diagram_mpl
of theSchedule
class (!253)Visualization - resolved a bug where a schedule was modified when drawing a circuit diagram (#197, !250)
Visualization - Add support for window operation to transmon backend (!245)
Infrastructure - Fix and enhance pre-commit + add to CI (!257, !265)
Infrastructure - Added prospector config file for CI. (!261)
Bugfix - Removed redundant
determine_absolute_timing
step inqcompile
. (!259)Bugfix - Ramp pulse sampling utilizing
np.linspace
behaviour changed. (!258)Docs - Adds the new Quantify logo similar to quantify_core. (!266)
Docs - Enhance documentation of public API for reimported modules [imports aliases] (!254)
Docs - Fixes the funcparserlib error in rtd. (!251)
Docs - Updated Qblox backend docs to include the new features. (!247)
0.5.0 Expanded feature sets hardware compilation backends (2021-10-25)
Breaking changes
The
schedules.timedomain_schedules.allxy_sched
function no longer accepts the string “All” as an argument to theelement_select_idx
keyword.The
QuantumDevice.cfg_nr_averages
parameter was renamed toQuantumDevice.cfg_sched_repetitions
The call signature of
gettables.ScheduleVectorAcqGettable
has been renamed togettables.ScheduleGettableSingleChannel
, and the call signature has been updated according to #36 to no longer accept several keyword arguments.Qblox Backend - The NCO phase is now reset at the start of a program (!213).
Qblox Backend - Compilation now requires qblox_instruments version 0.5.0, 0.5.1 or 0.5.2 (!214, !221).
Merged branches and closed issues
Compilation - Added the ability to specify the BinMode at the quantum-circuit layer (#183, !180).
Compilation - qcompile no longer modifies schedules (#102, !178).
Control - Added a first version of the QuantumDevice object (#148, !180).
Control - A single-qubit ScheduleGettable has been added (#36, !180).
Docs - Added bibliography with sphinxcontrib-bibtex extension (!171).
Docs - Fixed missing files in API reference (!176).
InstrumentCoordinator - CompiledSchedule class added to specify interfaces of InstrumentCoordinator and compilation functions (#174, !177).
InstrumentCoordinator - CompiledSchedule.last_schedule method added to provide access to last executed schedule (#167, !177).
Qblox Backend - Added support for qblox_instruments version 0.4.0 (new acquisition path) (!143).
Qblox Backend - Added support for real time mixer corrections rather than pre-distorting the uploaded waveforms (!192).
Qblox Backend - Waveforms are now compared using the normalized data array rather than the parameterized description (!182).
Qblox Backend - Support for append bin mode (#184, !180).
Qblox Backend - Support for using real value pulses on arbitrary outputs added (!142).
Qblox Backend - Compilation now supports 6 sequencers for both the QCM as well as the QRM (!142).
Qblox Backend - Support for a cluster, along with its QCM, QRM, QCM-RF and QRM-RF modules (!164)
Qblox Backend - Registers are now dynamically allocated during compilation (!195)
Zhinst backend - No exception is raised when an LO that is in the config is not part of a schedule. (#203, !223)
Zhinst backend - Instrument coordinator components for ZI will only be configured when the settings used to configure it have changed (#196, !227)
Zhinst backend - Solved a bug that caused single-sideband demodulation to not be configured correctly when using the UHFQA (!227)
Zhinst backend - Warnings raised during compilation of seqc programs will no longer raise an exception but will use logging.warning (!227)
Zhinst backend - resolved a bug where the instrument coordinator cannot write waveforms to the UHFQA if it has never been used before (!227)
Zhinst backend - resolved a bug where multiple identical measurements in a schedule would result in multiple integration weights being uploaded to the UFHQA (#207, !234)
Zhinst backend - resolved a bug where the UHFQA would not be triggered properly when executing a schedule with multiple samples (batched mode) (#205, !234)
Qblox ICCs - Compensated integration time for Qblox QRM IC component (!199).
Qblox ICCs - Added error handling for error flags given by
get_sequencer_state
(!215)QuantumDevice - Added docstrings to the TransmonElement parameters (!216, !218)
Qblox ICCs - QCoDeS parameters are now only set if they differ from the value in the cache (!230)
Visualization - Allow user defined axis for plotting circuit diagram (!206)
Visualization - Adds schedule plotting using matplotlib and a WindowOperation to help visualize pulse diagrams (!225, !232)
Other - Added method
sample_schedule
to sample aSchedule
(!212)Other - The
RampPulse
has an extra (optional) parameteroffset
(!211)Other - Updated existing schedules to make use of the acquisition index (#180, !180).
Other - Added a function to extract acquisition metadata from a schedule (#179, !180).
Other - The soft square waveform can now be evaluated with only one datapoint without raising an exception (!235)
Other - Added a function that generates a square pulse that compensates DC components of a sequence of pulses (!173)
0.4.0 InstrumentCoordinator and improvements to backends (2021-08-06)
Breaking changes
Change of namespace from quantify.scheduler.* to quantify_scheduler.*
Merged branches and closed issues
Changes the namespace from quantify.scheduler to quantify_scheduler (!124)
InstrumentCoordinator - Add is_running property and wait_done method. Closes #133 (!140)
InstrumentCoordinator - Add instrument coordinator reference parameter to transmon element (!152)
InstrumentCoordinator - Prefix serialized settings for ZI ControlStack components. (!149)
InstrumentCoordinator - Refactored ControlStack name to InstrumentCoordinator (!151)
InstrumentCoordinator - Make use of InstrumentRefParameters (!144)
InstrumentCoordinator - Add controlstack class (!70)
InstrumentCoordinator - Add Zurich Instruments InstrumentCoordinatorComponent. (!99)
InstrumentCoordinator - Add Qblox InstrumentCoordinatorComponent. (!112)
InstrumentCoordinator - Avoid garbage collection for instrument coordinator components (!162)
Qblox backend - Removed limit in Qblox backend that keeps the QCM sequencer count at 2 (!135)
Qblox backend - Restructured compilation using external local oscillators. (!116)
Qblox backend - Added Chirp and Staircase pulses; and efficient implementation for QD spin qubit experiments (!106)
Qblox backend - Only run
start_sequencer
on pulsar instruments which have been armed (!156)Zhinst backend - Assert current with new sequence program to skip compilation (!131)
Zhinst backend - Deserialize zhinst settings from JSON to ZISettingsBuilder (!130)
Zhinst backend - Add waveform mixer skewness corrections (!103)
Zhinst backend - Add backend option to enable Calibration mode (#103, !123)
Zhinst backend - Replace weights string array with a numerical array in JSON format (!148)
Zhinst backend - Add grouping of instrument settings (!133)
Zhinst backend - Add qcompile tests for the zurich instruments backend (!118)
Zhinst backend - Add repetitions parameter (!138)
Zhinst backend - Fixes the bug where the seqc in the datadir is not copied to the webserver location. (!165)
Fix for circuit diagram plotting failure after pulse scheduling (#157, !163)
Fixed typo in the gate_info of the Y gate in the gate_library (!155)
Add artificial detuning in Ramsey Schedule and bug fixes (!120)
Use individual loggers per python file (!134)
Recolour draw circuit diagram mpl (!96)
Fix issues with timedomain schedules (!145)
Renamed input parameters of quantify_scheduler.schedules.* functions. (!136)
Added acquisitions to circuit diagram (!93)
Add string representations to acquisition protocols of the acquisitions library (!114)
Transmon element and config generation (!75)
Rename operation_hash to operation_repr (!122)
Add types.Schedule from_json conversion (!119)
Add missing return types (!121)
Add serialization to Operations (!110)
0.3.0 Multiple backends support (2021-05-20)
Added support for both Qblox and Zurich Instrument backends.
Added convenience pylintrc configuration file.
Added examples for timedomain and spectroscopy schedules.
Breaking changes
Major refactor of the Qblox backend. (For example, it’s now
quantify_core.backends.qblox_backend
instead of the previousquantify_core.backends.pulsar_backend
)Qblox backend requires strictly v0.3.2 of the qblox-instruments package.
Merged branches and closed issues
Add mixer skewness corrections helper function. (!102)
Added Qblox backend support. (!81)
Compile backend with ZISettingsBuilder. (!87)
Add vscode IDE config files. (!100)
Add ZISettingsBuilder class. (!86)
Added representation to gates in gate library and defined equality operation. (!101)
Fix/operation duration. Fixes #107. (!89)
Feat/long pulses fix validators name. (!90)
Implemented long square pulses unrolling (for waveform-memory-limited devices). (!83)
Changed Qblox-Instruments version to 0.3.2. (!88)
Feature: Improve overall zhinst backend timing. (!77)
Plotly cleanup. (!69)
Pulsar backend version bump. (!82)
Added zhinst backend support. (!49)
Added example timedomain programs. (!71)
Added example spectroscopy programs. (!64)
Added pylintrc configuration file. (!55)
Added repetitions property to Schedule. (!56)
Added Acquisition Protocols. (!51)
Hotfix for filename sanitization pulsar backend. (!61)
Pulsar backend function sanitization. (!60)
Potential fix time-out pulsar. (!58)
Updated Pulsar backend version to v0.2.3.. (!57)
Fixed datadir related bugs. (!54)
Added Station implementation. (!52)
Pulsar backend v0.2.2 check. (!48)
Fix for issue with acq delay. (!45)
Fix for issue #52. (!44)
Add artificial detuning to Ramsey schedule (!120)
Added support for the Qblox Pulsar QCM-RF/QRM-RF devices (!158)
0.2.0 Hybrid pulse- gate-level control model (2021-01-14)
Major refactor of the scheduler resource code enabling hybrid pulse- gate-level control.
Moved quantify_scheduler.types.Resource class to a separate quantify_scheduler.resources module.
Adds a BasebandClockResource class within the newly created quantify_scheduler.resources module.
Moved QRM and QCM related classes to the quantify_scheduler.backends.pulsar_backend module.
In quantify_scheduler.compilation, rename of function ‘_determine_absolute_timing’ to ‘determine_absolute_timing’. Argument changed from clock_unit to time_unit.
In quantify_scheduler.compilation, rename of function ‘_add_pulse_information_transmon’ to ‘add_pulse_information_transmon’.
Added ramp waveform in quantify_scheduler.waveforms.
Added schemas for operation and transmon_cfg.
Added a basic hybrid visualisation for pulses using new addressing scheme.
Operations check whether an operation is a valid gate or pulse.
Refactor of visualization module. Moved quantify_scheduler.backends.visualization to quantify_scheduler.visualization module. Expect code breaking reorganization and changes to function names.
Pulsar backend version now checks for QCM and QRM drivers version 0.1.2.
Merged branches and closed issues
fix(pulse_scheme): Add tickformatstops for x-axis using SI-unit ‘seconds’. Closes #39. (!39)
Resolve “y-axis label is broken in plotly visualization after resources-refactor”. Closes #45. (!38)
Resources refactor (!28, !29, !30)
Hybrid visualisation for pulses and circuit gate operations. Closes #22 and #6. (!27)
Support Pulsar parameterisation from scheduler. Support feature for #29. (!2)
Operation properties to check if an operation is a valid gate or pulse. Closes #28 (!25)
Visualisation refactor. Closes #26. (!22)
Windows job (!20)
Changed Pulsar backend version check from 0.1.1 to 0.1.2. (!21)
0.1.0 (2020-10-21)
Refactored scheduler functionality from quantify-core into quantify-scheduler
Support for modifying Pulsar params via the sequencer #54 (!2)
Simplification of compilation through
qcompile
(!1)Qubit resources can be parameters of gates #11 (!4)
Circuit diagram visualization of operations without no pulse info raises exception #5 (!5)
Pulsar backend verifies driver and firmware versions of hardware #14 (!6)
Sequencer renamed to scheduler #15 (!7)
Documentation update to reflect refactor #8 (!8)
Refactor circuit diagram to be more usable !10 (relates to #6)
Unify API docstrings to adhere to NumpyDocstring format !11
Changes to addressing of where a pulse is played !9 (#10)
Renamed doc -docs folder for consistency #18 (!12)
Moved test folder outside of project #19 (!14)
Add copyright notices and cleanup documenation #21 (!13)
Add installation tip for plotly dependency in combination with jupyter #24 (!15)
Note
# denotes a closed issue.
! denotes a merge request.