Releases: qutech/qupulse
qupulse 0.10
Features
- Move HDAWG driver to qupulse-hdawg-legacy to disentangle driver version from qupulse version. The new HDAWG driver will be published under qupulse-hdawg. (#779)
- Add the ProgramBuilder interface pattern to make the generated program of PulseTemplate.create_program easily customizable. (#781)
- Measurement windows can now automatically shrank in case of overlap to counteract small numeric errors. (#791)
Bugfixes
Release 0.9
Features
- Add
__pow__as a repetition shortcut. This means you can domy_pulse_template ** 5ormy_pulse_template ** 'my_repetition_count'. (#692) - Promote qupulse.expression to a subpackage and create qupulse.expression.protocol with protocol classes that define the expression interface that is supposed to be used by qupulse. The
sympybased implementation is moved toqupulse.expressions.sympyand imported inqupulse.expressions. - The intended use is to be able to use less powerful but faster implementations of the Expression protocol where appropriate. In this first iteration, qupulse still relies on internals of the sympy based implementation in many places which is to be removed in the future. (#750)
- Promote parts of the private subpackage
qupulse._programto the public subpackagequpulse.program, i.e. loop, volatile, transformation and waveforms. This allows external packages/drivers to rely on stability of the Loop class. (#779) - Add
PulseTemplate.pad_tomethod to help padding to minimal lengths or multiples of given durations. (#801)
Misc
- Fix Loop repr #771
Release 0.8
qupulse 0.8 (2023-03-28)
Features
- New two dimensional plotting function
qupulse.pulses.plotting.plot_2d. (#703 <https://github.com/qutech/qupulse/issues/703>_) - Add support for time dependent expressions for arithmetics with atomic pulse templates i.e.
ParallelChannelPTand
ArithmeticPTsupport time dependent expressions if used with atomic pulse templates.
RenameParallelConstantChannelPTtoParallelChannelPTto reflect this change. (#709 <https://github.com/qutech/qupulse/issues/709>_) - Add
with_family of helper methods toPulseTemplateto allow convinient and easily discoverable pulse template
combination. (#710 <https://github.com/qutech/qupulse/issues/710>_) - The plotting module is now located at
qupulse.plotting. There is a legacy alias atqupulse.pulses.plotting. (#735 <https://github.com/qutech/qupulse/issues/735>_)
Deprecations and Removals
- Remove the
Parameter,MappedParameterandConstantParameterclasses that where deprecated in version 0.5. (#512 <https://github.com/qutech/qupulse/issues/512>_) - Drop support for python version 3.7. (
#760 <https://github.com/qutech/qupulse/issues/760>_)
qupulse 0.7
qupulse 0.7 (2022-10-05)
Features
-
Add optional numba uses in some cases. (#501)
-
Add
initial_valuesandfinal_valuesattributes toPulseTemplate.This allows pulse template construction that depends on features of arbitrary existing pulses i.e. like extension until
a certain length. (#549) -
Support sympy 1.9 (#615)
-
Add option to automatically reduce the sample rate of HDAWG playback for piecewise constant pulses.
Usequpulse._program.seqc.WaveformPlayback.ENABLE_DYNAMIC_RATE_REDUCTIONto enable it. (#622) -
Add a TimeReversalPT. (#635)
-
Add specialied parameter Scope for ForLoopPT. This increases performance by roughly a factor of 3 for long ranges! (#642)
-
Add sympy 1.10 support and make
ExpressionVectorhashable. (#645) -
Serializableis now comparable via it'sget_serialized_data.PulseTemplateimplementsHashablevia the same. (#653) -
Add an interface that uses
atsaverage.config2. (#686 #686`_)
Bugfixes
floorwill now return an integer in lambda expressions with numpy to allow usage in ForLoopPT range expression. (#612)
Deprecations and Removals
qupulse 0.6
qupulse 0.6 (2021-07-08)
Features
- Add [evaluate_with_exact_rationals]{.title-ref} method to
[ExpressionScalar]{.title-ref}
(#546) - New feature based AWG abstraction. Can be found in
[qupulse.hardware.feature_awg]{.title-ref}. Allows easier code reuse
across awg drivers.
(#557) - Add ConstantPulseTemplate
(#565) - Add interface to use [atsaverage]{.title-ref} auto rearm
(#566) - Adds the methods [is_constant]{.title-ref},
[constant_value_dict]{.title-ref} and [constant_value]{.title-ref}
to Waveform class to allow more efficient AWG usage.
(#588)
Bugfixes
-
Fix TimeType comparisons with non-finite floats (inf, -inf, NaN)
(#536)
Improve alazar usability:
: - Do not touch the default config when arming a measurement
- Keep current config in a seperate field
- Extend record to a multiple of a configurable value (4KB by
default)
([\#571](https://github.com/qutech/qupulse/issues/571))
-
Replace pytabor and teawg with tabor_control to support
newer(>=1.11) pyvisa versions
(#599) -
Fix [repr]{.title-ref} of [ExpressionScalar]{.title-ref} when
constructed from a sympy expression. Also replace
[Expression]{.title-ref} with [ExpressionScalar]{.title-ref} in
[repr]{.title-ref}.
(#604)
Deprecations and Removals
- Deprecate HashableNumpyArray due to its inconsistency.
(#408) - Drop support for python 3.5
(#504) - Remove deprecated [external_parameters]{.title-ref} keyword argument
from SequencePT and AtomicMultiChannelPT
(#592) - Deprecate boolean [duration]{.title-ref} argument of
[AtomicMultiChannelPulseTemplate]{.title-ref} and remove duration
check in [__init__]{.title-ref}.
(#593)
qupulse 0.5.1
Maintainance release.
- General:
- Unify
TimeType.from_floatbetween fractions and gmpy2 backend behaviour (fixes issue 529).
- Unify
qupulse 0.5
-
General:
- Improve
TimeTypeconsistency by leveraging str(float) for rounding by default. - Add support for sympy==1.5
- Add volatile parameters. Repetition counts can now be changed at runtime in some cases (useful for DNP). See
volatilekwarg ofcreate_program
- Improve
-
Hardware:
- Add a
measure_programmethod to the DAC interface. This method is used by the QCoDeS integration. - Add a
set_measurement_maskto DAC interface. This method is used by the QCoDeS integration. - Add a
get_sample_timesutil method to share code for exact and fast sample time calculation - Add a driver for Tektronix AWG5000/7000
- Add a driver for Zurich Instruments HDAWG
- Warn the user if waveforms need to be concatenated to be compatible with hardware requirements.
- Add a
-
Pulse Templates:
- Add
__repr__and__format__for easier inspection MappingPulseTemplate:allow_partial_parameter_mappingis now True as a default. The default can be changed with the class variableMappingPulseTemplate.ALLOW_PARTIAL_PARAMETER_MAPPING.- Add specializations for
map_parametersbecause the auto-inference of the return type did not work for empty input. - Channels mapped to None are now dropped
- Add simple arithmetic operations for pulse templates
- offset and scaling with scalars
- addition with atomic pulse templates
- Add
-
Expressions:
- Expressions can now be formatted as floats if they do not have free variables
-
Parameters:
- Replace Parameter class with Scope
- Parameter class is now deprecated
-
Backward incompatible changes:
- Removed deprecated classes:
- Sequencer: Replaced by PulseTemplate.create_program method
- Condition: Never used
- InstructionBlock: Old representation of programs. Replaced by Loop
- MultiChannelProgram: Was required in the instruction block framework
- Removed deprecated classes:
qupulse 0.4
-
General:
- Add utility function
qupulse.utils.types.has_type_interfaceand use it to circumvent autoreload triggered isinstance fails - Add utility function
qupulse.utils.time_from_fractionto make creation from numerator and denominator obvious.
- Add utility function
-
Pulse Templates:
MappingPulseTemplate:- Raise a ValueError if more than one inner channel is mapped to the same outer channel
- Plotting:
- Make
plotting.renderbehaviour and return value consistent between calls withInstructionBlockandLoop. Render now always returns 3 arguments.
- Make
Also available on PyPi
qupulse 0.3
-
General:
- Introduce qupulse.utils.isclose (an alias for math.isclose if available)
- Dropped support for Python 3.4 in setup.py due to incompatible syntax in qupulse.
- Official support for Python 3.7 has begun.
-
Pulse Templates:
AtomicMultichannelPulseTemplate:- Add duration keyword argument & example (see MultiChannelTemplates notebook)
- Make duration equality check approximate (numeric tolerance)
- Plotting:
- Add
time_slicekeyword argument to render() and plot()
- Add
- Add
AbstractPulseTemplateclass PointPulseTemplate:- Fixed bug in integral evaluation
- Add
ParallelConstantChannelPulseTemplatewhich allows adding a constant valued channel to an arbitrary pulse template
-
Expressions:
- Make ExpressionScalar hashable
- Fix bug that prevented evaluation of expressions containing some special functions (
erfc,factorial, etc.)
-
Parameters:
ConstantParameternow accepts aExpressionwithout free variables as value (given asExpressionor string)
Also available on PyPi
qupulse 0.2
-
General:
- officially removed support for Python 3.3 (qupulse and dependencies are not compatible anymore)
-
Serialization / Storage:
- Added functionality to easily access available content/identifiers in
PulseStorageandStorageBackend. - DEPRECATED
list_contents()ofStorageBackend(usecontents propertyinstead). - DEPRECATED:
CachingBackendbecause its functionality is a subset ofPulseStorage.
- Added functionality to easily access available content/identifiers in
-
Expressions:
-
Fixed bug in
Expression.evaluate_numericif result is array of numeric sympy objects
Also available on PyPi