Releases: qua-platform/quam
Releases · qua-platform/quam
v0.3.8
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
- Fix: feedforward and feedback filter locations in config by @nulinspiratie in #79
- Feat: Add time tagging to channels by @nulinspiratie in #81
- Feat: Add Pulse.play by @nulinspiratie in #83
- Updated python versions between 3.9 and 3.12 by @nulinspiratie in #84
- Hotfix: Convert port crosstalk to dict in config by @nulinspiratie in #86
Full Changelog: v0.3.7...v0.3.8
v0.3.7
What's Changed
- Feat: Add arbitrary waveform pulse by @nulinspiratie in #80
Full Changelog: v0.3.6...v0.3.7
v0.3.6
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
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
toChannel
fromSingleChannel/IQChannel
.
The default isNone
. A consequence of this is thatSingleChannel
no longer adds
intermediate_frequency
to the config if it's not set.
What's Changed on GitHub
- feat: Add DragCosinePulse and rename DragPulse to DragGaussianPulse by @nulinspiratie in #70
- feat/Add sticky channel option by @nulinspiratie in #6
- Fix/Add all MW channel properties by @nulinspiratie in #72
- Fix syntax for MW channel attributes. by @deanpoulos in #73
- Fix: Remove upsampling mode for LFFEMAnalogOutputPort by @nulinspiratie in #76
- Add CI for publishing to PyPI (test) on publish release by @maxim-v4s in #77
- Release package to PyPI by @maxim-v4s in #78
Full Changelog: v0.3.4...v0.3.5
v0.3.4
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
, deprecateDragPulse
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
- Feat: add frame_rotation_2pi by @nulinspiratie in #38
- Feat/update frequency by @nulinspiratie in #39
- Feat:
get_reference(attr)
returns reference to a component's attribute by @nulinspiratie in #40 - Feature/add opy by @yonatanrqm in #42
- Fix: Add final action for setting offset of LF-FEM analog output port. by @deanpoulos in #45
- add converter for int keys by @nulinspiratie in #48
- feat: Add support for instantiating union types by @nulinspiratie in #47
- fix dict instantiation by @nulinspiratie in #41
- Fix: Convert QuAM keys to ints for folders by @nulinspiratie in #49
- Feat: Add hardware ports and MW-FEM support by @nulinspiratie in #44
- Fix: Octave.Upconverter.triggered_reersed by @nulinspiratie in #52
- Fix: Allow list tuples within Union to be instantiated properly by @nulinspiratie in #60
- Update README.md by @nulinspiratie in #64
- feat: Fix issue with filter taps in SingleChannel configuration by @nulinspiratie in #65
- Fix: Add "connectivity" to OctaveOld by @nulinspiratie in #67
- Fix: Ignore warnings of failed references in _quam_patched_dataclass by @nulinspiratie in #68
- Fix: Set default LO_source for Octave RF input 2 to "external" by @nulinspiratie in #69
- ci: create draft release on push tag by @maxim-v4s in #61
- feat: Add DragCosinePulse and rename DragPulse to DragGaussianPulse by @nulinspiratie in #70
- feat/Add sticky channel option by @nulinspiratie in #6
- Fix/Add all MW channel properties by @nulinspiratie in #72
- Fix syntax for MW channel attributes. by @deanpoulos in #73
- Fix: Remove upsampling mode for LFFEMAnalogOutputPort by @nulinspiratie in #76
New Contributors
- @yonatanrqm made their first contribution in #42
- @deanpoulos made their first contribution in #45
- @maxim-v4s made their first contribution in #61
Full Changelog: v0.3.3-beta...v0.3.4
v0.3.3-beta
[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 theRF_frequency
parameter inIQChannel
- 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 ofIQChannel.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
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
[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 theReadoutPulse
and the non-readout variant. - Added
Channel.set_dc_offset
Changed
- Pulses with
pulse.axis_angle = None
are now compatible with anIQChannel
as all signal on the I port.
Fixed
- Switched channel
RF_inputs
andRF_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
[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
toInOutIQChannel.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 aChannel
- Rename
Pulse.full_name
->Pulse.name
.
Raises error ifPulse.channel
is None
TODO Check if this causes issues Pulse.apply_to_config
does nothing if pulse has no channel
- Added
- 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 thanFrequencyConverter
. 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