Skip to content

Releases: qua-platform/quam

v0.3.8

29 Nov 12:01
Compare
Choose a tag to compare

Added

  • Added time tagging to channels
  • Added support for Python 3.12

Removed

  • Removed support for Python 3.8
  • Added Pulse.play() method

Fixed

  • Change location of port feedforward and feedback filters in config
  • Convert port crosstalk to dict in config, fixing deepcopy issues

GitHub Merged Pull Requests

Full Changelog: v0.3.7...v0.3.8

v0.3.7

01 Nov 13:02
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.3.6...v0.3.7

v0.3.6

11 Oct 17:27
Compare
Choose a tag to compare

What's Changed

  • Abstraction for LO frequency to MWChannel that matches the IQChannel by @deanpoulos in #75

Full Changelog: v0.3.5...v0.3.6

v0.3.5

10 Oct 12:58
a11b104
Compare
Choose a tag to compare

Added

  • Added ports for different hardware. As a consequence we now also support the LF-FEM and MW-FEM
  • Added DragCosinePulse.
  • Added support for sticky channels through the StickyChannelAddon (see documentation)
  • Added Channel.thread, which defaults to None
  • QUAM can now be installed through PyPi

Changed

  • Channel is now an abstract base class.
  • Moved intermediate_frequency to Channel from SingleChannel/IQChannel.
    The default is None. A consequence of this is that SingleChannel no longer adds
    intermediate_frequency to the config if it's not set.

What's Changed on GitHub

Full Changelog: v0.3.4...v0.3.5

v0.3.4

10 Oct 12:16
261a23c
Compare
Choose a tag to compare

Added

  • Added Channel.frame_rotation_2pi to allow for frame rotation in multiples of 2pi
  • Added Channel.update_frequency to allow for updating the frequency of a channel
  • Added OctaveOld.connectivity as it was needed for (deprecated) compatibility with multiple OPX instruments

Changed

  • Allow QuamBase.get_reference(attr) to return a reference of one of its attributes
  • Octave RF input 2 has LO_source = "external" by default
  • Rename DragPulse -> DragGaussianPulse, deprecate DragPulse

Fixed

  • Fix quam object instantiation error when a parameter type uses pipe operator
  • Allow int keys to be serialised / loaded in QuAM using JSONSerialiser
  • Fix type OctaveUpconverter.triggered_reersed -> OctaveUpconverter.triggered_reversed
  • Fix tuples not being instantiated properly in specific circumstances
  • Fix filter_fir/iir_taps being passed as QuamList when generating config, resulting in an error due to parent reassignment
  • Fix warning messages in QuamComponent instantiation

GitHub changes

New Contributors

Full Changelog: v0.3.3-beta...v0.3.4

v0.3.3-beta

16 May 13:24
Compare
Choose a tag to compare
v0.3.3-beta Pre-release
Pre-release

[0.3.3]

Added

  • Added the following parameters to IQChannel: RF_frequency, LO_frequency, intermediate_frequency
  • Added the following properties to IQChannel: inferred_RF_frequency, inferred_LO_frequency, inferred_intermediate_frequency
    These properties can be attached to the relevant parameters to infer the frequency from the remaining two parameters.
  • Added IQChannel.inferred_RF/LO/intermediate_frequency
    These can be used to infer the frequency from the remaining two frequencies

Changed

  • Deprecated the rf_frequency property in favor of the RF_frequency parameter in IQChannel
  • Added channel types: InSingleChannel, InIQChannel, InSingleOutIQChannel, InIQOutSingleChannel
  • Restructured channels to allow for other channel types.
  • IQChannel now has all three frequency parameters: RF_frequency, LO_frequency, intermediate_frequency
  • Deprecated IQChannel.rf_frequency in favor of IQChannel.RF_frequency

Fixed

  • Fixed dataclass ClassVar parameters being wrongly classified as optional or required dataclass args
  • Made ConstantReadoutPulse a dataclass, and removed some wrong docstring

v0.3.2-beta

07 May 19:45
Compare
Choose a tag to compare

v0.3.2 marks the beta release of QuAM!

Added

  • Added full QuAM documentation, including web hosting
  • Added BasicQuAM to QuAM components

Fixed

  • Fix error where a numpy array of integration weights raises an error
  • Fix instantiation of a dictionary where the value is a reference
  • Fix optional parameters of a quam component parent class were sometimes categorized as a required parameter (ReadoutPulse)

v0.3.1-alpha

19 Apr 12:54
Compare
Choose a tag to compare
v0.3.1-alpha Pre-release
Pre-release

[0.3.1]

Added

  • Add optional config_settings property to quam components indicating that they should be called before/after other components when generating QUA configuration
  • Added InOutIQChannel.measure_accumulated/sliced
  • Added ReadoutPulse. All readout pulses can now be created simply by inheriting from the ReadoutPulse and the non-readout variant.
  • Added Channel.set_dc_offset

Changed

  • Pulses with pulse.axis_angle = None are now compatible with an IQChannel as all signal on the I port.

Fixed

  • Switched channel RF_inputs and RF_outputs for Octave
  • Loading QuAM components when the expected type is a union or the actual type is a list
    no longer raises an error
  • The qua config entries from OctaveUpConverter entries I/Q_connection were of type
    QuamList, resulting in errors during deepcopy. Converted to tuple

Processed most breaking changes + new Octave support

14 Mar 18:13
Compare
Choose a tag to compare

[0.3.0]

Added

  • Added InOutSingleChannel
  • Added optional config_settings property to quam components indicating that they should be called before/after other components when generating QUA configuration
  • Added support for the new Octave API.
  • Added support for Literal types in QuAM

Changed

  • Changed InOutIQChannel.input_offset_I/Q to InOutIQChannel.opx_input_offset_I/Q
  • Renamed SingleChannel.output_offset -> SingleChannel.opx_output_offset
  • Pulse behaviour modifications to allow pulses to be attached to objects other than channels. Changes conist of following components
    • Added pulse.channel, which returns None if both its parent & grandparent is not a Channel
    • Rename Pulse.full_name -> Pulse.name.
      Raises error if Pulse.channel is None
      TODO Check if this causes issues
    • Pulse.apply_to_config does nothing if pulse has no channel
  • Raise AttributeError if channel doesn't have a well-defined name.
    This happens if channel.id is not set, and channel.parent does not have a name either
  • Pulse.axis_angle is now in radians instead of degrees.
  • Channel offsets (e.g. SingleChannel.opx_output_offset) is None by default (see note in Fixed)
  • Pulse.id is now an instance variable instead of a class variable
  • Channel frequency converter default types are now BaseFrequencyConverter which has fewer attributes than FrequencyConverter. This is to make it compatible with the new Octave API.

Fixed

  • Don't raise instantiation error when required_type is not a class
  • Add support for QuAM component sublist type: List[List[...]]
  • Channel offsets (e.g. SingleChannel.opx_output_offset) are ensured to be unique, otherwise a warning is raised
    • Previously the offset could be overwritten when two channels share the same port
    • Default values are None, and they're only added if nonzero
    • If the offset is not specified in config at the end, it's manually added to be 0.0
  • JSON serializer doesn't break if an item is added to ignore that isn't part of QuAM
  • Allow QuamDict keys to be integers