Python Package (qm-qua) Releases¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
1.1.5.1 - 2023-10-30¶
Fixed
- Saving timestamps directly to a string will now not mess up adc saving
- Fix serialization for timestamps in some cases
- Downgrading from this version will not break the Octave (Introduced in 1.1.5)
1.1.5 - 2023-10-22 - Yanked¶
Fixed
- Fixed simulations with negative IF frequency (in mixer).
- Deprecation warnings will now be shown for imports in IPython
- Improved octave calibration algorithm.
Added
- Added new API for octave configuration, through the QUA config dict (except for the octave's IP and port)
Deprecation
- All the functions that config octave through the OctaveConfig object
- All the functions that config the octave through the QMOctave object
1.1.4 - 2023-09-07¶
Deprecation
- Starting from version 1.2.0,
QuantumMachinesMananger.version()will have a different return type. ServerDetails.qop_versionhas been renamed toServerDetails.server_version.
Added
- Added
QuantumMachinesMananger.version_dict()which returns a dict with two keysqm-quaandQOP. - Two new keys were added to the dict returned by
QuantumMachinesMananger.version():qm-quaandQOP.
Fixed
- Fixed missing import of
ClockMode. - Fixed simulations with negative IF frequency (in mixer).
- Fixed simulations with the new sticky API.
- Fixed conversion back to ns of the sticky duration for the config received from the OPX.
- Fixed rare cases in which the octave failed to boot.
- Fixed the serialization for a list in a
.maps(FUNCTION.average(list))call in the stream processing. - Serialization will now not give an error if it fails to generate a config with the QMM configuration.
- Intermediate frequency returns with the same sign as it was set in te config.
- Deprecation warnings are now shown by default.
Changed
- If no port is given to
QuantumMachinesManager, and there isn't a saved configuration file, it will default to80(instead of80&9510)
1.1.3 - 2023-05-29¶
Fixed
- Fixed negative IF freq handling in config builder
- Sticky Element duration is to be given in ns and not clock cycles
- Fixed a bug that prevents opening many QMMs/QMs due to thread exhaustion when creating Octave clients.
- The deprecated
strictandflagsarguments now work but give a deprecation warning. - Fixed the version of typing-extensions, to prevent import-error
1.1.2 - 2023-05-11¶
Deprecation
- Moved
qm.QuantumMachinesManager.QuantumMachinesManagerpath toqm.quantum_machines_manager.QuantumMachinesManager. Old path will be removed in 1.2.0
Added
- Added
qmm.validate_qua_config()for config validation without opening a qm - Added support for getting clusters by name in
QuantumMachinesManager - Added a
py.typedfile, that marks the package as supporting type-hints. - Added a default (minimal) duration for sticky elements
- Added
qm.get_job(job_id)to retreieve previously ran jobs
Fixed
- Fixed creating credentials for authentication in gRPC
- Removed redundant entry from element generated class (
up_converted) - Float frequency support - fixed the creation of config classes so integer frequency will always exist
- Fixed creating a mixer dict-config from protobuf class instance
- Fixed error raised when fetching saved data in the backwards compatible
- Fixed creating a digital port dict-config from protobuf class instance
- Fixed event-loop Windows bug of creating multiple instances of QuantumMachine
1.1.1 - 2023-03-20¶
Fixed
- Fixed long delay while waiting for values
1.1.0 - 2023-03-16¶
- Note, this version (and all future versions) does not support QOP 2.0.0 or 2.0.1
Deprecation
- The
hold_offsetentry in the config is deprecated and is replaced by a newstickyentry with an improved API - Moved
_Programpath toqm.program.program.Program. Old path will be removed in 1.2.0 - Moved
QmJobpath toqm.jobs.qm_job.QmJob. Old path will be removed in 1.2.0 - Moved
QmPendingJobpath toqm.jobs.pending_job.QmPendingJob. Old path will be removed in 1.2.0 - Moved
QmQueuepath toqm.jobs.job_queue.QmQueue. Old path will be removed in 1.2.0 - Renamed
JobResultsintoStreamingResultFetcher. Old name will be removed in 1.2.0 - Moved
StreamingResultFetcherpath toqm.results.StreamingResultFetcher. QmJob.id()is deprecated, useQmJob.idinstead, will be removed in 1.2.0QmJobno longer hasmanagerpropertyQmPendingJob.id()is deprecated, useQmPendingJob.idinstead, will be removed in 1.2.0QuantumMachineno longer hasmanagerpropertyQuantumMachine.peekis removed (was never implemented)QuantumMachine.pokeis removed (was never implemented)IsInt()function for qua variables is deprecated, useis_int()instead, will be removed in 1.2.0IsFixed()function for qua variables is deprecated, useis_fixed()instead, will be removed in 1.2.0IsBool()function for qua variables is deprecated, useis_bool()instead, will be removed in 1.2.0set_clockmethod of the octave changed API, old API will be removed in 1.2.0.- Deprecated the
strictandflagskwargs arguments in theexecuteandsimulatefunctions.
Added
- Added autocorrection for config dict in IDEs, when creating a config, add the following:
config: DictQuaConfig = {...}. - Added the option to invert the digital markers in a quantum machine by indicating it in the config.
- Support
fast_frame_rotation, a frame rotation with a cosine and sine rotation matrix rather than an angle. - Added support for floating point numbers in the
intermediate_frequencyfield ofelement. - Conditional
playis extended to both the digital pulse if defined for operation. - Extended the sticky capability to include the digital pulse (optional)
- Added option to validate QUA config with protobuf instead of marshmallow. It is usually faster when working with large configs, to use this feature, set
validate_with_protobuf=Truewhile opening a quantum machine. - Added type hinting for all
quafunctions and programs - Added another way of getting results from job results:
job.result_handles["result_name"].` - Octave reset request command added to "Octave manager".
- Added support for octave configuration inside the QUA-config dictionary, this will later deprecate the
OctaveConfigobject, which is still supported - Added objects that reflects the elements in the
QuantumMachineinstance.
Changed
- Updated
playdocstrings to reflect that the changes to conditional digital pulse. - Changed octave's
set_clockAPI. - Changed and improved internal grpc infrastructure
- Changed and improved async infrastructure
1.0.2 - 2023-01-01¶
- Note, this version (and all future versions) does not support QOP 2.0.0 or 2.0.1
Removed
- Removed deprecated
mathlibrary (use {class}~qm.qua.lib.Mathinstead). - Removed deprecated
qrun_context manager (use {func}~qm.qua._dsl.strict_timing_instead).
Added
- Better exception error printing.
- An api to add more information to error printing
activate_verbose_errors - Add support for OPD (Please check the OPD documentation for more details).
- Added timestamps for {func}
~qm.qua._dsl.playand {func}~qm.qua._dsl.measurestatements. - Support for numpy float128.
- Added the function {func}
qm.user_config.create_new_user_configto create a configuration file with the QOP host IP & Port to allow opening {func}~qm.QuantumMachinesManager.QuantumMachinesManagerwithout inputs. - Added infrastructure for anonymous log sending (by default, no logs are sent).
Fixed
- Serializer - Added support for averaging on different axes.
- Serializer - Remove false message about lacking
play(ramp()...)support. - Serializer - Fixed the serialization when
.length()is used. - Serializer - Fixed cases in which the serializer did not deal with
adc_trace=trueproperly. - Serializer - The serializer does not report failed serialization when the only difference is the streams' order.
- Serializer - The serializer now correctly serialize the configuration when an element's name has a
'.
1.0.1 - 2022-09-22¶
Changed
- Octave - Added a flag to not close all the quantum machines in {func}
~qm.octave.qm_octave.QmOctave.calibrate_element. - Octave - The quantum machine doing the calibrations will be closed after the calibration is done.
1.0.0 - 2022-09-04¶
- Removed deprecated entries from the configuration schema
- Removed dependency in
quapackage
Fixed
- QuantumMachineManager - Fixed a bug where you could not connect using SSL on python version 3.10+
- Serializer - Fixed
declare_stream()withadc_true=True
Changed
- Update betterproto version.
- OctaveConfig: changed
set_device_infoname toadd_device_info - OctaveConfig: changed
add_opx_connectionsname toadd_opx_octave_port_mapping - OctaveConfig: changed
get_opx_octave_connectionsname toget_opx_octave_port_mapping
Added
- API to control Octave - an up-conversion and down-conversion module with built-in Local Oscillator (LO) sources.
- Support Numpy as input - Support numpy scalars and arrays as valid input. Numpy object can now be used interchangeably with python scalars and lists. This applies to all statements imported with
from qm.qua import * - Serializer - Added support for legacy save
0.3.8 - 2022-07-10¶
Fixed
- Serializer - Fixed a bug which caused binary expression to fail
Changed
- QuantumMachineManager will try to connect to 80 before 9510 if the user did not specify a port.
- QuantumMachineManager will give an error if no host is given and config file does not contain one.
- QRun - Change qrun to strict_timing
- Input Stream - Fixed API for input stream
Added
- Serializer - add strict_timing to serializer
- Logger - Can now add an environment variable to disable the output to stdout
0.3.7 - 2022-05-31¶
Fixed
- Serializer - Fixed a bug which caused the serializer to fail when given completely arbitrary integration weights
- Serializer - Fixed a bug which caused the serializer to fail when given a list of correction matrices
- Serializer - Added support for "pass" inside blocks (if, for, etc). "pass" inside "else" is not supported.
Added
- play - Add support for continue chirp feature
- High Resolution Time Tagging - Add support for high resolution time-tagging measure process
- Input Stream - Add support for streaming data from the computer to the program
- OPD - Added missing OPD timetagging function
Changed
- set_dc_offset - 2nd input for function was renamed from
input_referencetoelement_input - QuantumMachineManager will try to connect to ports 9510 and 80 if the user did not specify a port.
- set_output_dc_offset_by_element - can now accept a tuple of ports and offsets
signalPolarityin the timetagging parameters (outputPulseParametersin configuration) now acceptAboveandBelowinstead ofRisingandFalling, which better represent it's meaning.
0.3.6 - 2022-01-23¶
Added
signalPolarityin the timetagging parameters (outputPulseParametersin configuration) now accept alsoRisingandFalling, which better represent it's meaning.derivativePolarityin the timetagging parameters (outputPulseParametersin configuration) now accept alsoAboveandBelow, which better represent it's meaning.- Add unsafe switch to
generate_qua_configfunction. - Add library functions and
amp()in measure statement togenerate_qua_configfunction.
Changed
- Better error for library functions as save source
0.3.5 - 2021-12-27¶
Added
- Raises an error when using Python logical operators
- Add elif statement to
generate_qua_configfunction
Changed
- Fix indentation problem on the end of for_each block in
generate_qua_configfunction - The
generate_qua_confignow compresses lists to make the resulting file smaller and more readable
0.3.4 - 2021-12-05¶
Added
- Define multiple elements with shared oscillator.
- Define an analog port with channel weights.
- Add measure and play features to
generate_qua_configfunction - format
generate_qua_configfunction output - improve
wait_for_all_valuesexecution time
0.3.3 - 2021-10-24¶
Added
- Define an analog port with delay.
- New
set_dc_offset()statement that can change the DC offset of element input in real time. - New input stream capabilities facilitating data transfer from job to QUA.
- New flag for stream processing fft operator to control output type.
- Add information about demod on a tuple.
- Added best practice guide.
Changed
- Validate that element has one and only one of the available input type QMQUA-26
0.3.2 - 2021-10-03¶
Added
- QuantumMachinesManager health check shows errors and warnings.
- Fetching job results indicates if there were execution errors.
- Define an element with multiple input ports.
- Stream processing demod now supports named argument
integrate. IfFalseis provided the demod will not sum the items, but only multiply by weights.
Changed
- Documentation structure and content.
0.3.1 - 2021-09-13¶
Fixed
- Fixed serialization of IO values.
- Support running
QuantumMachinesManagerinside ipython or jupyter notebook.
Changed
- Removing deprecation notice from
with_timestampsmethod on result streams. - Setting
time_of_flightorsmearingare required if element hasoutputsand must not appear if it does not.
0.3.0 - 2021-09-03¶
Changed
- Support for result fetching of both versions of QM Server.
- Now the SDK supports all version of QM server.
0.2.1 - 2021-09-01¶
Changed
- Default port when creating new
QuantumMachineManageris now80and user config file is ignored.
0.2.0 - 2021-08-31¶
Added
- The original QM SDK for QOP 2.
0.1.0 - 2021-08-31¶
Added
- The original QM SDK for QOP 1.