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 ** 5
ormy_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
sympy
based implementation is moved toqupulse.expressions.sympy
and 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._program
to 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_to
method 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.
ParallelChannelPT
and
ArithmeticPT
support time dependent expressions if used with atomic pulse templates.
RenameParallelConstantChannelPT
toParallelChannelPT
to reflect this change. (#709 <https://github.com/qutech/qupulse/issues/709>
_) - Add
with_
family of helper methods toPulseTemplate
to 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
,MappedParameter
andConstantParameter
classes 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_values
andfinal_values
attributes 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_REDUCTION
to 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
ExpressionVector
hashable. (#645) -
Serializable
is now comparable via it'sget_serialized_data
.PulseTemplate
implementsHashable
via the same. (#653) -
Add an interface that uses
atsaverage.config2
. (#686 #686`_)
Bugfixes
floor
will 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_float
between fractions and gmpy2 backend behaviour (fixes issue 529).
- Unify
qupulse 0.5
-
General:
- Improve
TimeType
consistency 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
volatile
kwarg ofcreate_program
- Improve
-
Hardware:
- Add a
measure_program
method to the DAC interface. This method is used by the QCoDeS integration. - Add a
set_measurement_mask
to DAC interface. This method is used by the QCoDeS integration. - Add a
get_sample_times
util 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_mapping
is now True as a default. The default can be changed with the class variableMappingPulseTemplate.ALLOW_PARTIAL_PARAMETER_MAPPING
.- Add specializations for
map_parameters
because 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_interface
and use it to circumvent autoreload triggered isinstance fails - Add utility function
qupulse.utils.time_from_fraction
to 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.render
behaviour and return value consistent between calls withInstructionBlock
andLoop
. 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_slice
keyword argument to render() and plot()
- Add
- Add
AbstractPulseTemplate
class PointPulseTemplate
:- Fixed bug in integral evaluation
- Add
ParallelConstantChannelPulseTemplate
which 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:
ConstantParameter
now accepts aExpression
without free variables as value (given asExpression
or 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
PulseStorage
andStorageBackend
. - DEPRECATED
list_contents()
ofStorageBackend
(usecontents property
instead). - DEPRECATED:
CachingBackend
because its functionality is a subset ofPulseStorage
.
- Added functionality to easily access available content/identifiers in
-
Expressions:
-
Fixed bug in
Expression.evaluate_numeric
if result is array of numeric sympy objects
Also available on PyPi