*********
Changelog
*********
.. warning::
This is the documentation for the old Vivace API. For the newer API
compatible with both the Vivace and the Presto microwave platforms, `see
here `_.
Version 1.4.4
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fix a bug in :meth:`setup_long_drive ` that caused a crash when using the
`output_marker` parameter.
....
Version 1.4.3
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Partially revert a change to :meth:`perform_measurement ` that allowed for
"infinite" template-matching data (:meth:`match `), as that limited the functionality of
having averaged data (:meth:`store `) at the same time.
....
Version 1.4.2
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* It is now possible to run :meth:`perform_measurement ` without any
:meth:`store `, i.e. with only :meth:`match `. Raise error
when requesting more averaged data (`store`) than supported.
* Reverted in later release: increased the amount to template-matching data (`match`) to potentially infinite, as long
as the host computer has enough memory and the network connection can keep up.
lockin module: :mod:`vivace.lockin`
-----------------------------------
MixLockin class: :class:`vivace.lockin.MixLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Simplify and clarify usage of :meth:`configure_mixer `. New method
signature!
....
Version 1.4.1
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* To abort a measurement started with :meth:`perform_measurement
`, simply hit `Ctrl + C`.
* Method :meth:`setup_long_drive ` checks
for validity of `rise_time` and `fall_time` and raises a :obj:`ValueError`
exception if needed.
* Fix bug in :meth:`update_flat_duration
`.
lockin module: :mod:`vivace.lockin`
-----------------------------------
MixLockin class: :class:`vivace.lockin.MixLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fix bug in :meth:`configure_mixer `
when setting an even Nyquist zone.
....
Version 1.4.0
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* New method :meth:`output_digital_marker
` allows the user to program the
digital output ports during the experiment to mark some event.
* :meth:`setup_long_drive ` and
:meth:`setup_template ` have a new
optional argument `output_marker`. Use it to output a marker from a digital
output any time the pulse is output from an RF port.
lockin module: :mod:`vivace.lockin`
-----------------------------------
MixLockin class: :class:`vivace.lockin.MixLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* New method :meth:`configure_mixer `
replaces :meth:`set_mixer_frequency
` and :meth:`set_nyquist_zone
` (now deprecated). The new method
correctly handles changes in the up/downconverted spectrum due to operation in
different Nyquist bands.
....
Version 1.3.0
=============
General remarks
---------------
* The input- and output-port numbers in the API have been reversed. They now
match the numbers printed on the new front panel of Vivace.
* It is now possible to specify the server port number, in addition to address,
for :class:`Pulsed `, :class:`DirectLockin
` and :class:`MixLockin
`. Useful when accessing multiple Vivace behind a
NAT.
lockin module: :mod:`vivace.lockin`
-----------------------------------
MixLockin class: :class:`vivace.lockin.MixLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* It is now possible to run the DAC at 6.0 GSamples/s: set the `dac_freq`
parameter in the class constructor to `6.0`. The previous settings of `5.0`
(default) and `4.0` are still available.
....
Version 1.2.0
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The class constructor will check the firmware :meth:`version
` is compatible with the API
:meth:`version `, and raise a
:obj:`RuntimeError` otherwise.
* Method :meth:`setup_template_matching_pair
`:
* It is now possible to compare the match of a pair of templates either from
the same port or from two adjacent ports.
* Modified functionality of comparison between the two matches: a matching
comparison is considered True (i.e. the trigger is active) if the first
match result plus the second match result if greater or equal than the
threshold. Previously the comparison was True if the first match minus the
second was greater or equal than zero. To obtain the same behavior as
before, set the threshold to zero (default) and invert the sign of
`template2`.
* New optional argument `threshold`.
* New optional argument `compare_next_port`.
* Extended docstring to include description of new arguments.
* Method :meth:`setup_condition `:
* It is now possible to output a template when a matching condition is
unsuccessful. Combined with the previous behavior, this enables to output
different pulses based on whether the outcome of a single matching
comparison was above or below threshold.
* Parameters `output_templates` renamed to `output_templates_true`.
* New optional parameter `output_templates_false`.
* New method :meth:`setup_HL_readout ` to
conveniently set up a high/low sideband measurement across a pair of input
ports.
* Method :meth:`enable_output` renamed to :meth:`blank_output
`, the first argument is changed from
`state` to `blank`, with opposite meaning.
lockin module: :mod:`vivace.lockin`
-----------------------------------
DirectLockin class: :class:`vivace.lockin.DirectLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The class constructor will check the firmware :meth:`version
` is compatible with the API
:meth:`version `, and raise a
:obj:`RuntimeError` otherwise.
* Method :meth:`enable_output` renamed to :meth:`blank_output
`, the first argument is changed from
`state` to `blank`, with opposite meaning.
utils module: :mod:`vivace.utils`
---------------------------------
* New method :meth:`templates_for_IQ_readout
` to conveniently create a pair of
input templates for IQ demodulation.
....
Version 1.1.0
=============
version module: :mod:`vivace.version`
-------------------------------------
New module to obtain version information. The `vivace` package now also has the
`__version__` attribute.
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Method removed :meth:`output_carrier `.
All carriers for all channels are now automatically started at the beginning
of a measurement, and they are free running. The user does not need to start
and stop them manually to match the output envelopes. The carriers are free
running, so they will remain phase coherent until the user sets a particular
frequency/phase with :meth:`select_frequency
` or :meth:`next_frequency
`.
* New methods:
* :meth:`set_output_bias `
* :meth:`enable_output ` (renamed to
:meth:`blank_output ` in a later release)
lockin module: :mod:`vivace.lockin`
-----------------------------------
DirectLockin class: :class:`vivace.lockin.DirectLockin`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* New methods:
* :meth:`set_output_bias `
* :meth:`enable_output ` (renamed to
:meth:`blank_output ` in a later release)
utils module: :mod:`vivace.utils`
---------------------------------
New methods for easier SSH access through Python.
OBS: require third-party package `Fabric `_.
* :meth:`ssh_connect `
* :meth:`ssh_execute `
* :meth:`ssh_reboot `
* :meth:`ssh_upload `
* :meth:`ssh_download `
....
Version 1.0.2
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Method :meth:`perform_measurement `
* Bug fix setting up carrier for templates
LongDrive class: :class:`vivace.pulsed.LongDrive`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Class constructor :mod:`__init__ `
* Bug fix assertion when use_scale
....
Version 1.0.1
=============
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
New features:
* Each output channel now has two sine-wave generators.
* It is now possible to jump to a given location of the frequency and scale
look-up tables, rather than just stepping sequentially.
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Class constructor :mod:`__init__ `
* added optional parameter `address` to specify the IP address or hostname of
the Vivace to connect to.
* Method :meth:`setup_freq_lut `
* new required parameter `carrier`.
* Method :meth:`setup_long_drive `
* new required parameter `carrier`.
* Method :meth:`setup_template `
* type of parameter `envelope` changed to :class:`int`, default to `0`;
this parameter now controls which of the two carriers should be used for
the template.
* Method :meth:`perform_measurement `
* return two empty :class:`numpy.ndarray` in case `dry_run` is `True`.
* New methods:
* :meth:`select_frequency `
* :meth:`select_scale `
....
Version 1.0.0
=============
General remarks
---------------
* The API is now in its own package called :mod:`vivace`. If you install the
package with *pip*\/*pip3*, you can import it from anywhere with ``import
vivace``, no more ``sys.path.append`` nonsense!
* The classes :class:`Pulsed `, :class:`DirectLockin
` and :class:`MixLockin `
configure the clocking circuits and the firmware on the hardware when
initialized, no need to do it manually through SSH or add-hoc scripts anymore!
* When designing an experiment sequence with the class :class:`Pulsed
`, you can now start from time zero. No need to manually
add some safety dead time at the start of your sequence!
vivace package: :mod:`vivace`
-----------------------------
* The module *simpleq* is renamed to *pulsed*.
* The modules *simple_lockin* and *mix45_lockin* are merged into *lockin*.
* New module *vivace.utils*.
* Modules *rflockin*, *generate_lockin_stimuli* and *generate_quantum_stimuli*
are made private and should not be accessed by API users.
pulsed module: :mod:`vivace.pulsed`
-----------------------------------
* The class *SimpleQ* is renamed to *Pulsed*.
* New classes *TrigEvent* and *LongDrive* used as return types by methods of
*Pulsed*.
Pulsed class: :class:`vivace.pulsed.Pulsed`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Class constructor :mod:`__init__ `
* configures the clocking circuits and the firmware on the hardware when
initialized;
* new optional parameters `ext_ref_clk` and `force_reload`.
* Method :meth:`setup_freq_lut `
* the frequency LUT can be configured for multiple ports at the same time by
passing a list to `output_ports`.
* parameter `output_index` renamed to `output_ports`;
* parameter `frequency_lut` renamed to `frequencies`;
* parameter `phase_lut` renamed to `phases`;
* parameter `repeat_count` is now optional;
* Method :meth:`setup_scale_lut `
* the scale LUT can be configured for multiple ports at the same time by
passing a list to `output_ports`.
* parameter `output_index` renamed to `output_ports`;
* parameter `scale` renamed to `scales`;
* parameter `repeat_count` is now optional;
* Method :meth:`setup_long_drive `
* the beginning and end of the pulse can now be smoothed using *rise_time* and
*fall_time*;
* parameter `template_amp` renamed to `amplitude`;
* new optional parameters `rise_time` and `fall_time`;
* new return type: :class:`LongDrive `, use its
methods to change the length of the pulse.
* Method :meth:`setup_template `
* raises an exception when the template is out of scale, rather than printing
a warning to stdout;
* new return type: list of :class:`TrigEvent `.
* Method :meth:`perform_measurement `
* automatically adds some set time at the start of the sequence to account for
FPGA reset (~20 ns);
* prints also data tranfer time;
* raises exceptions when `period` is too short or too long.
* Method :meth:`output_pulse `
* can now take either a single pulse or a list of pulses to be output at the
same time;
* parameter `templates` renamed to `pulse_info`.
* Method :meth:`output_carrier `
* parameter `port_list` renamed to `output_ports`.
* Method :meth:`set_store_ports `
* parameter `store_ports` renamed to `input_ports`.
* Method :meth:`next_frequency `
* parameter `out_port_list` renamed to `output_ports`.
* Method :meth:`next_scale `
* parameter `out_port_list` renamed to `output_ports`.
* New methods:
* :meth:`setup_template_matching_pair `
* :meth:`setup_condition `
* :meth:`match `
* :meth:`get_template_matching_data `