-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into cr_sequences
- Loading branch information
Showing
163 changed files
with
5,775 additions
and
10,212 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
## Changes in `main` | ||
After merging [#990](https://github.com/qiboteam/qibocal/pull/990), Qibocal is now compatible with Qibolab 0.2.1. | ||
For this reason, a small internal refactoring and some breaking changes were required. | ||
The main differences concern the acquisition functions and the protocol parameters: | ||
- The amplitudes are no longer relative to the values defined in the platform, but to | ||
the maximum value the instruments reach (internally stored in `Qibolab`). | ||
It implies renaming the amplitude parameters and converting the new amplitude level accordingly. | ||
- The platform parameters that were previously in the `parameters.json` | ||
but required by `Qibolab` to execute circuits and pulse sequences (like $E_J$, $T_1$ and $T_2$), | ||
are moved to the `calibration.json` stored inside each platform folder. | ||
- In the Rabi and flipping experiment, Qibocal provides the possibility to calibrate the $RX(\pi/2)$. | ||
- Small changes in the report template. | ||
- Some protocols are not supported anymore(https://github.com/qiboteam/qibocal/pull/990#issue-2559341729 | ||
for a list of them). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
This file was deleted.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
CPMG sequence | ||
============= | ||
|
||
In this section we show how to run the dynamical decoupling sequence CPMG. | ||
|
||
The CPMG sequence consists in applying N equally spaced :math:`\pi` pulses | ||
within two :math:`\pi / 2` pulses. By increasing the number of :math:`\pi` pulses :math:`T_2` | ||
should increase since the estimation is less sensitive to noises of the type :math:`1/f` | ||
eventually reaching the :math:`2 T_1` limit. | ||
|
||
|
||
The fit is again a dumped exponential of the following form: | ||
|
||
.. math:: | ||
p_e(t) = A + B e^{ - t / T^{(N)}_2} | ||
Parameters | ||
^^^^^^^^^^ | ||
|
||
.. autoclass:: qibocal.protocols.coherence.cpmg.CpmgParameters | ||
:noindex: | ||
|
||
Example | ||
^^^^^^^ | ||
|
||
A possible runcard to launch a CPMG experiment could be the following: | ||
|
||
.. code-block:: yaml | ||
- id: CPMG | ||
operation: cpmg | ||
parameters: | ||
delay_between_pulses_end: 100000 | ||
delay_between_pulses_start: 4 | ||
delay_between_pulses_step: 1000 | ||
n: 10 | ||
nshots: 1000 | ||
The expected output is the following: | ||
|
||
.. image:: cpmg.png | ||
|
||
:math:`T_2` is determined by fitting the output signal using | ||
the formula presented above. | ||
|
||
Requirements | ||
^^^^^^^^^^^^ | ||
|
||
- :ref:`single-shot` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
DRAG experiments | ||
================ | ||
|
||
In this section we show how to run DRAG experiments using Qibocal | ||
|
||
.. _drag: | ||
|
||
|
||
DRAG :cite:p:`Motzoi_2009, Gambetta_2011`: pulses can be used to lower both phase and leakage errors. | ||
It consists of adding a quadrature component to the pulse which is proportional | ||
to the time derivative of the in-phase component. Given a pulse with an in-phase component :math:`\Omega_x` | ||
the quadrature component :math:`\Omega_y` is evaluated as | ||
|
||
.. math:: | ||
\Omega_y (t) = \beta \frac{d\Omega_x}{dt} , | ||
where :math:`\beta` is a scaling parameter. | ||
|
||
Qibocal provides two separate protocols to calibrate :math:`\beta`. | ||
|
||
|
||
Method 1 | ||
-------- | ||
|
||
:math:`\beta` can be extracted by playing the pulse sequence composed of | ||
:math:`[R_X(\pi) - R_X(-\pi)]^N` for different values of :math:`\beta` as shown in :cite:p:`Sheldon_2016`. | ||
The post-processing consists of measuring the probability of :math:`\ket{0}` for every :math:`\beta` | ||
and fitting the curve with a cosine. The correct :math:`\beta` value is the one which maximizes | ||
the curve. | ||
|
||
Parameters | ||
^^^^^^^^^^ | ||
|
||
.. autoclass:: qibocal.protocols.drag.DragTuningParameters | ||
:noindex: | ||
|
||
Example | ||
^^^^^^^ | ||
|
||
.. code-block:: yaml | ||
- id: drag tuning | ||
operation: drag_tuning | ||
parameters: | ||
beta_start: -1 | ||
beta_end: 1 | ||
beta_step: 0.1 | ||
nflips: 5 | ||
unrolling: true | ||
Running this protocol you should get something like this: | ||
|
||
.. image:: drag_tuning.png | ||
|
||
|
||
Method 2 | ||
-------- | ||
|
||
The second method consists of playing two different sequences | ||
:math:`R_Y(\pi) R_X(\pi/2)` and :math:`R_X(\pi) R_Y(\pi/2)`. These are two | ||
of the AllXY sequences which exhibit opposite sign of phase error as highlighted | ||
in :cite:p:`reed2013entanglementquantumerrorcorrection`. | ||
The post-processing consists of measuring the probability of :math:`\ket{1}` for every :math:`\beta` | ||
and performing a linear fit for both sequences. The correct :math:`\beta` value is the one where the two lines | ||
cross. | ||
|
||
Parameters | ||
^^^^^^^^^^ | ||
|
||
.. autoclass:: qibocal.protocols.drag_simple.DragTuningSimpleParameters | ||
:noindex: | ||
|
||
Example | ||
^^^^^^^ | ||
|
||
.. code-block:: yaml | ||
- id: drag simple | ||
operation: drag_simple | ||
parameters: | ||
beta_start: -1 | ||
beta_end: 1 | ||
beta_step: 0.1 | ||
unrolling: true | ||
.. image:: drag_simple.png | ||
|
||
|
||
Requirements | ||
^^^^^^^^^^^^ | ||
|
||
- :ref:`single-shot` |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.