diff --git a/Quantum-Control-Applications/README.md b/Quantum-Control-Applications/README.md
index 59e99c129..6f7d24ab6 100644
--- a/Quantum-Control-Applications/README.md
+++ b/Quantum-Control-Applications/README.md
@@ -1,34 +1,45 @@
# Quantum Control Applications
-This folder contains scripts and examples for different qubits types, all the way from basic to advanced protocols.
+This folder contains scripts and examples for different qubits types, all the way from basic to advanced protocols.
It also includes various examples and results from labs as listed below.
Note that for them to work, you would need to download the latest version of the [py-qua-tools](https://github.com/qua-platform/py-qua-tools#installation).
## Superconducting Qubits
-### [Two flux tunable transmons](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Transmons)
+### [Two flux tunable transmons](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Coupled-Transmons)
These files showcase various experiments that can be done on a several flux-tunable transmons using the [standard configuration](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Transmons/Standard%20Configuration#two-flux-tunable-transmons-with-the-standard-configuration).
#### Advanced use-cases:
-* [SWAP spectroscopy improved with predistortion digital filters](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Transmons/Use%20Case%201%20-%20Two%20qubit%20gate%20optimization%20with%20cryoscope#two-qubit-swap-spectroscopy-improved-with-pre-distortion-digital-filters).
-* [Two-qubit randomized benchmarking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Transmons/Use%20Case%202%20-%20Two-Qubit-Randomized-Benchmarking#two-qubit-randomized-benchmarking).
-* [Two-qubit cross-entropy benchmarking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Transmons/Use%20Case%203%20-%20Two-Qubit%20Cross-Entropy%20Benchmarking).
+* [SWAP spectroscopy improved with predistortion digital filters](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Coupled-Transmons/Use%20Case%201%20-%20Two%20qubit%20gate%20optimization%20with%20cryoscope).
+* [Two-qubit randomized benchmarking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Coupled-Transmons/Use%20Case%202%20-%20Two-Qubit-Randomized-Benchmarking).
+* [Two-qubit cross-entropy benchmarking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Coupled-Transmons/Use%20Case%203%20-%20Two-Qubit%20Cross-Entropy%20Benchmarking).
* [Single- and Two-Qubit State and Process Tomography](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Flux-Tunable-Coupled-Transmons/Use%20Case%204%20-%20Single-%20and%20Two-Qubit%20State%20and%20Process%20Tomography)
-### [Single fixed frequency transmon](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon#single-fixed-transmon-superconducting-qubit)
-These files showcase various experiments that can be done on a single fixed-frequency transmon.
+### [Two fixed coupled transmons](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons)
+These files showcase various experiments that can be done on two fixed coupled transmons.
#### Advanced use-cases:
-* [Qubit Frequency Tracking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon/Use%20Case%201%20-%20Schuster%20Lab%20-%20Qubit%20Frequency%20Tracking#qubit-frequency-tracking)
- performed in the lab of Prof. David Schuster in the University of Chicago.
-* [Optimized readout with optimal weights](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon/Use%20Case%202%20-%20Optimized%20readout%20with%20optimal%20weights#optimized-readout-with-optimal-weights).
+* [Two qubit RB with cross-resonance gates](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use%20Case%201%20Two%20qubit%20RB%20without%20baking).
-### [Single flux tunable transmon](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon#single-flux-tunable-transmon)
+### [Single flux tunable transmon](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon)
These files showcase various experiments that can be done on a single flux-tunable transmon.
#### Advanced use-cases:
-* [Parametric Drive between flux-tunable-qubit and qubit-coupler](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%203%20-%20Ma%20Lab%20-%20Parametric%20Drive%20iSWAP#parametric-drive-between-flux-tunable-qubit-and-qubit-coupler)
+* [Parametric Drive between flux-tunable-qubit and qubit-coupler](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%203%20-%20Ma%20Lab%20-%20Parametric%20Drive%20iSWAP#parametric-drive-between-flux-tunable-qubit-and-qubit-coupler)
performed in the lab of Prof. Alex Ma at Purdue University.
-* [Cryoscope](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%201%20-%20Paraoanu%20Lab%20-%20Cryoscope#cryoscope)
+* [Cryoscope](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%201%20-%20Paraoanu%20Lab%20-%20Cryoscope#cryoscope)
performed in the lab of Prof. Sorin Paraoanu in Aalto University.
* [DRAG Pulse Calibration](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%202%20-%20DRAG%20coefficient%20calibration#derivative-removal-by-adiabatic-gate-drag-and-ac-stark-shift-calibration).
+* [Robust qubit control using phase-modulated pulses](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Flux-Tunable-Transmon/Use%20Case%204%20-%20Paraoanu%20Lab%20-%20Robust%20qubit%20control%20using%20phase-modulated%20pulses)
+ performed in the lab of Prof. Sorin Paraoanu in Aalto University.
+
+### [Single fixed frequency transmon](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon)
+These files showcase various experiments that can be done on a single fixed-frequency transmon.
+#### Advanced use-cases:
+* [Qubit Frequency Tracking](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon/Use%20Case%201%20-%20Schuster%20Lab%20-%20Qubit%20Frequency%20Tracking#qubit-frequency-tracking)
+ performed in the lab of Prof. David Schuster in the University of Chicago.
+* [Optimized readout with optimal weights](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/Single-Fixed-Transmon/Use%20Case%202%20-%20Optimized%20readout%20with%20optimal%20weights#optimized-readout-with-optimal-weights).
+
+
+### [3D storage cavity](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Superconducting/3D-storage-cavity)
+These files showcase various experiments that can be done on a qubit coupled to a 3d storage cavity.
## [AMO Qubits](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/AMO)
### Rydberg Arrays
@@ -40,7 +51,7 @@ These files showcase various experiments that can be done on a single flux-tunab
## Optically addressable spin qubits
### [Cryogenic nanophotonic cavity](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Optically%20addressable%20spin%20qubits/Cryogenic%20nanophotonic%20cavity#single-yb-center-in-a-cyrogenic-nanophotonic-cavity)
-These files showcase various experiments that can be done on a Yb center (also works for other rare-earth ions) in a
+These files showcase various experiments that can be done on a Yb center (also works for other rare-earth ions) in a
cryogenic nanophotonic cavity with a SNSPD and an AOM which is controlled via a digital channel.
#### Advanced use-cases:
* [High resolution time-tagging](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Optically%20addressable%20spin%20qubits/Cryogenic%20nanophotonic%20cavity/Use%20case%201%20-%20Faraon%20Lab%20-%20sub-ns%20timetagging#high-resolution-time-tagging)
@@ -56,11 +67,11 @@ These files showcase various experiments that can be done on an NV center in a c
which is controlled via a digital channel.
## Quantum-dots
-### [Single Spin with EDSR](https://github.com/qua-platform/qua-libs/blob/main/Quantum-Control-Applications/Quantum-Dots/Single_Spin_EDSR/README.md)
+### [Single Spin with EDSR](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Quantum-Dots/Single_Spin_EDSR)
These files showcase various experiments that can be done on a single spin driven by Electric Dipole Spin Resonance (EDSR).
Set-ups including the Octave and/or QDAC2 are also supported.
-### [Singlet-Triplet qubit](https://github.com/qua-platform/qua-libs/blob/main/Quantum-Control-Applications/Quantum-Dots/Singlet_Triplet_Qubit/README.md)
+### [Singlet-Triplet qubit](https://github.com/qua-platform/qua-libs/tree/main/Quantum-Control-Applications/Quantum-Dots/Singlet_Triplet_Qubit)
These files showcase various experiments that can be done on a singlet-triplet qubit.
Set-ups including the QDAC2 are also supported.
@@ -69,8 +80,8 @@ Set-ups including the QDAC2 are also supported.
performed in the lab of Prof. Natalia Ares in the University of Oxford.
# Convert the files to ipynb
-If you wish to work with Jupyter notebooks, then you will need to convert the .py files into .ipynb files.
-To do so you can either do it manually or install the `ipynb-py-convert` package that can then be called from Jupyter
+If you wish to work with Jupyter notebooks, then you will need to convert the .py files into .ipynb files.
+To do so you can either do it manually or install the `ipynb-py-convert` package that can then be called from Jupyter
notebook cell or python file as in:
```python
import os
@@ -86,8 +97,8 @@ for filename in os.listdir():
ipynb_py_convert.convert(f, f[:-2]+"ipynb")
```
-Moreover, in order to be able to change the parameters in the configuration.py file and update the jupyter kernel, you will need
-to replace in all the files the line ``from configuration import *`` by
+Moreover, in order to be able to change the parameters in the configuration.py file and update the jupyter kernel, you will need
+to replace in all the files the line ``from configuration import *`` by
``` python
from importlib import reload
import configuration
@@ -96,7 +107,7 @@ from configuration import *
```
This can be done easily by typing `Ctrl + shift + F` in VS Code or `Ctrl + shift + R` in PyCharm.
-Finally, if you wish to benefit from the live plotting feature, then we advise you to work with the qt backend that can
+Finally, if you wish to benefit from the live plotting feature, then we advise you to work with the qt backend that can
be enabled in a given notebook by adding the magic line `%matplotlib qt`.
To do it in all files, you can replace the line `import matplotlib.pyplot as plt` by
``` python
diff --git a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/TwoQ_RB_Sequence_Generation_CNOT_CR.py b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/TwoQ_RB_Sequence_Generation_CNOT_CR.py
index 795a8ce6c..917ca2810 100644
--- a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/TwoQ_RB_Sequence_Generation_CNOT_CR.py
+++ b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/TwoQ_RB_Sequence_Generation_CNOT_CR.py
@@ -5,7 +5,6 @@
def instruct_to_integer(instruct):
-
"""
input:
instruct: a list of instructions such as [('x90', 0), ('I', 1), ('CNOT', 01)]
@@ -55,7 +54,6 @@ def instruct_to_integer(instruct):
def generate_sequence_list(depth):
-
"""
for a given depth, generate ONE random sequence containing 2q clifford gates at a certain depth
input:
@@ -106,7 +104,6 @@ def generate_sequence_list(depth):
def generate_sequence_list_interleaved(depth):
-
"""
for a given depth, generate ONE random sequence containing 2q clifford gates at a certain depth
interleaved by CNOT
diff --git a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/configuration.py b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/configuration.py
index 90cba9cb1..01d63c9b2 100644
--- a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/configuration.py
+++ b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/configuration.py
@@ -27,7 +27,7 @@ def IQ_imbalance(g, phi):
"""
c = np.cos(phi)
s = np.sin(phi)
- N = 1 / ((1 - g ** 2) * (2 * c ** 2 - 1))
+ N = 1 / ((1 - g**2) * (2 * c**2 - 1))
return [float(N * x) for x in [(1 - g) * c, (1 + g) * s, (1 - g) * s, (1 + g) * c]]
@@ -364,7 +364,9 @@ def IQ_imbalance(g, phi):
5: {"offset": 0.0}, # I readout line
6: {"offset": 0.0}, # Q readout line
},
- "digital_outputs": {1: {},},
+ "digital_outputs": {
+ 1: {},
+ },
"analog_inputs": {
1: {"offset": 0.0, "gain_db": 0}, # I from down-conversion
2: {"offset": 0.0, "gain_db": 0}, # Q from down-conversion
@@ -380,10 +382,16 @@ def IQ_imbalance(g, phi):
"mixer": "mixer_resonator",
},
"intermediate_frequency": resonator_IF_q1, # in Hz [-350e6, +350e6]
- "outputs": {"out1": ("con1", 1), "out2": ("con1", 2),},
+ "outputs": {
+ "out1": ("con1", 1),
+ "out2": ("con1", 2),
+ },
"time_of_flight": time_of_flight,
"smearing": 0,
- "operations": {"cw": "const_pulse", "readout": "readout_pulse_q1",},
+ "operations": {
+ "cw": "const_pulse",
+ "readout": "readout_pulse_q1",
+ },
},
"rr2": {
"mixInputs": {
@@ -393,13 +401,24 @@ def IQ_imbalance(g, phi):
"mixer": "mixer_resonator",
},
"intermediate_frequency": resonator_IF_q2, # in Hz [-350e6, +350e6]
- "outputs": {"out1": ("con1", 1), "out2": ("con1", 2),},
+ "outputs": {
+ "out1": ("con1", 1),
+ "out2": ("con1", 2),
+ },
"time_of_flight": time_of_flight,
"smearing": 0,
- "operations": {"cw": "const_pulse", "readout": "readout_pulse_q2",},
+ "operations": {
+ "cw": "const_pulse",
+ "readout": "readout_pulse_q2",
+ },
},
"q1_xy": {
- "mixInputs": {"I": ("con1", 1), "Q": ("con1", 2), "lo_frequency": qubit_LO_q1, "mixer": "mixer_qubit_q1",},
+ "mixInputs": {
+ "I": ("con1", 1),
+ "Q": ("con1", 2),
+ "lo_frequency": qubit_LO_q1,
+ "mixer": "mixer_qubit_q1",
+ },
"intermediate_frequency": qubit_IF_q1, # in Hz
"operations": {
"cw": "const_pulse",
@@ -412,7 +431,12 @@ def IQ_imbalance(g, phi):
},
},
"q2_xy": {
- "mixInputs": {"I": ("con1", 3), "Q": ("con1", 4), "lo_frequency": qubit_LO_q2, "mixer": "mixer_qubit_q2",},
+ "mixInputs": {
+ "I": ("con1", 3),
+ "Q": ("con1", 4),
+ "lo_frequency": qubit_LO_q2,
+ "mixer": "mixer_qubit_q2",
+ },
"intermediate_frequency": qubit_IF_q2, # in Hz
"operations": {
"cw": "const_pulse",
@@ -425,7 +449,12 @@ def IQ_imbalance(g, phi):
},
},
"cr_drive_c1t2": {
- "mixInputs": {"I": ("con1", 1), "Q": ("con1", 2), "lo_frequency": qubit_LO_q1, "mixer": "mixer_qubit_q1",},
+ "mixInputs": {
+ "I": ("con1", 1),
+ "Q": ("con1", 2),
+ "lo_frequency": qubit_LO_q1,
+ "mixer": "mixer_qubit_q1",
+ },
"intermediate_frequency": cr_drive_IF_c1t2, # in Hz
"operations": {
"cw": "const_pulse",
@@ -436,7 +465,12 @@ def IQ_imbalance(g, phi):
},
},
"cr_drive_c2t1": {
- "mixInputs": {"I": ("con1", 3), "Q": ("con1", 4), "lo_frequency": qubit_LO_q2, "mixer": "mixer_qubit_q2",},
+ "mixInputs": {
+ "I": ("con1", 3),
+ "Q": ("con1", 4),
+ "lo_frequency": qubit_LO_q2,
+ "mixer": "mixer_qubit_q2",
+ },
"intermediate_frequency": cr_drive_IF_c2t1, # in Hz
"operations": {
"cw": "const_pulse",
@@ -447,7 +481,12 @@ def IQ_imbalance(g, phi):
},
},
"cr_cancel_c1t2": {
- "mixInputs": {"I": ("con1", 3), "Q": ("con1", 4), "lo_frequency": qubit_LO_q1, "mixer": "mixer_qubit_q1",},
+ "mixInputs": {
+ "I": ("con1", 3),
+ "Q": ("con1", 4),
+ "lo_frequency": qubit_LO_q1,
+ "mixer": "mixer_qubit_q1",
+ },
"intermediate_frequency": cr_cancel_IF_c1t2, # in Hz
"operations": {
"cw": "const_pulse",
@@ -458,7 +497,12 @@ def IQ_imbalance(g, phi):
},
},
"cr_cancel_c2t1": {
- "mixInputs": {"I": ("con1", 1), "Q": ("con1", 2), "lo_frequency": qubit_LO_q2, "mixer": "mixer_qubit_q2",},
+ "mixInputs": {
+ "I": ("con1", 1),
+ "Q": ("con1", 2),
+ "lo_frequency": qubit_LO_q2,
+ "mixer": "mixer_qubit_q2",
+ },
"intermediate_frequency": cr_cancel_IF_c2t1, # in Hz
"operations": {
"cw": "const_pulse",
@@ -470,41 +514,69 @@ def IQ_imbalance(g, phi):
},
},
"pulses": {
- "const_pulse": {"operation": "control", "length": const_len, "waveforms": {"I": "const_wf", "Q": "zero_wf",},},
+ "const_pulse": {
+ "operation": "control",
+ "length": const_len,
+ "waveforms": {
+ "I": "const_wf",
+ "Q": "zero_wf",
+ },
+ },
"x90_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "x90_I_wf_q1", "Q": "x90_Q_wf_q1",},
+ "waveforms": {
+ "I": "x90_I_wf_q1",
+ "Q": "x90_Q_wf_q1",
+ },
},
"x180_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "x180_I_wf_q1", "Q": "x180_Q_wf_q1",},
+ "waveforms": {
+ "I": "x180_I_wf_q1",
+ "Q": "x180_Q_wf_q1",
+ },
},
"-x90_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "minus_x90_I_wf_q1", "Q": "minus_x90_Q_wf_q1",},
+ "waveforms": {
+ "I": "minus_x90_I_wf_q1",
+ "Q": "minus_x90_Q_wf_q1",
+ },
},
"y90_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "y90_I_wf_q1", "Q": "y90_Q_wf_q1",},
+ "waveforms": {
+ "I": "y90_I_wf_q1",
+ "Q": "y90_Q_wf_q1",
+ },
},
"y180_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "y180_I_wf_q1", "Q": "y180_Q_wf_q1",},
+ "waveforms": {
+ "I": "y180_I_wf_q1",
+ "Q": "y180_Q_wf_q1",
+ },
},
"-y90_pulse_q1": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "minus_y90_I_wf_q1", "Q": "minus_y90_Q_wf_q1",},
+ "waveforms": {
+ "I": "minus_y90_I_wf_q1",
+ "Q": "minus_y90_Q_wf_q1",
+ },
},
"readout_pulse_q1": {
"operation": "measurement",
"length": readout_len,
- "waveforms": {"I": "readout_wf_q1", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "readout_wf_q1",
+ "Q": "zero_wf",
+ },
"integration_weights": {
"cos": "cosine_weights",
"sin": "sine_weights",
@@ -521,85 +593,130 @@ def IQ_imbalance(g, phi):
"x90_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "x90_I_wf_q2", "Q": "x90_Q_wf_q2",},
+ "waveforms": {
+ "I": "x90_I_wf_q2",
+ "Q": "x90_Q_wf_q2",
+ },
},
"x180_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "x180_I_wf_q2", "Q": "x180_Q_wf_q2",},
+ "waveforms": {
+ "I": "x180_I_wf_q2",
+ "Q": "x180_Q_wf_q2",
+ },
},
"-x90_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "minus_x90_I_wf_q2", "Q": "minus_x90_Q_wf_q2",},
+ "waveforms": {
+ "I": "minus_x90_I_wf_q2",
+ "Q": "minus_x90_Q_wf_q2",
+ },
},
"y90_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "y90_I_wf_q2", "Q": "y90_Q_wf_q2",},
+ "waveforms": {
+ "I": "y90_I_wf_q2",
+ "Q": "y90_Q_wf_q2",
+ },
},
"y180_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "y180_I_wf_q2", "Q": "y180_Q_wf_q2",},
+ "waveforms": {
+ "I": "y180_I_wf_q2",
+ "Q": "y180_Q_wf_q2",
+ },
},
"-y90_pulse_q2": {
"operation": "control",
"length": pi_len,
- "waveforms": {"I": "minus_y90_I_wf_q2", "Q": "minus_y90_Q_wf_q2",},
+ "waveforms": {
+ "I": "minus_y90_I_wf_q2",
+ "Q": "minus_y90_Q_wf_q2",
+ },
},
"flattop_blackman_pulse_cr_drive_c1t2": {
"operation": "control",
"length": total_length_cr_drive_c1t2,
- "waveforms": {"I": "flattop_blackman_wf_cr_drive_c1t2", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_drive_c1t2",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_negative_drive_c1t2": {
"operation": "control",
"length": total_length_cr_negative_drive_c1t2,
- "waveforms": {"I": "flattop_blackman_wf_cr_negative_drive_c1t2", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_negative_drive_c1t2",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_cancel_c1t2": {
"operation": "control",
"length": total_length_cr_cancel_c1t2,
- "waveforms": {"I": "flattop_blackman_wf_cr_cancel_c1t2", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_cancel_c1t2",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_negative_cancel_c1t2": {
"operation": "control",
"length": total_length_cr_negative_cancel_c1t2,
- "waveforms": {"I": "flattop_blackman_wf_cr_negative_cancel_c1t2", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_negative_cancel_c1t2",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_drive_c2t1": {
"operation": "control",
"length": total_length_cr_drive_c2t1,
- "waveforms": {"I": "flattop_blackman_wf_cr_drive_c2t1", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_drive_c2t1",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_negative_drive_c2t1": {
"operation": "control",
"length": total_length_cr_negative_drive_c2t1,
- "waveforms": {"I": "flattop_blackman_wf_cr_negative_drive_c2t1", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_negative_drive_c2t1",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_cancel_c2t1": {
"operation": "control",
"length": total_length_cr_cancel_c2t1,
- "waveforms": {"I": "flattop_blackman_wf_cr_cancel_c2t1", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_cancel_c2t1",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"flattop_blackman_pulse_cr_negative_cancel_c2t1": {
"operation": "control",
"length": total_length_cr_negative_cancel_c2t1,
- "waveforms": {"I": "flattop_blackman_wf_cr_negative_cancel_c2t1", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "flattop_blackman_wf_cr_negative_cancel_c2t1",
+ "Q": "zero_wf",
+ },
"digital_marker": "ON",
},
"readout_pulse_q2": {
"operation": "measurement",
"length": readout_len,
- "waveforms": {"I": "readout_wf_q2", "Q": "zero_wf",},
+ "waveforms": {
+ "I": "readout_wf_q2",
+ "Q": "zero_wf",
+ },
"integration_weights": {
"cos": "cosine_weights",
"sin": "sine_weights",
@@ -719,11 +836,22 @@ def IQ_imbalance(g, phi):
"square_positive_wf_cr_cancel_c2t1": {"type": "constant", "sample": cr_cancel_square_amp_c2t1},
"square_negative_wf_cr_cancel_c2t1": {"type": "constant", "sample": -cr_cancel_square_amp_c2t1},
},
- "digital_waveforms": {"ON": {"samples": [(1, 0)]},},
+ "digital_waveforms": {
+ "ON": {"samples": [(1, 0)]},
+ },
"integration_weights": {
- "cosine_weights": {"cosine": [(1.0, readout_len)], "sine": [(0.0, readout_len)],},
- "sine_weights": {"cosine": [(0.0, readout_len)], "sine": [(1.0, readout_len)],},
- "minus_sine_weights": {"cosine": [(0.0, readout_len)], "sine": [(-1.0, readout_len)],},
+ "cosine_weights": {
+ "cosine": [(1.0, readout_len)],
+ "sine": [(0.0, readout_len)],
+ },
+ "sine_weights": {
+ "cosine": [(0.0, readout_len)],
+ "sine": [(1.0, readout_len)],
+ },
+ "minus_sine_weights": {
+ "cosine": [(0.0, readout_len)],
+ "sine": [(-1.0, readout_len)],
+ },
"rotated_cosine_weights_q1": {
"cosine": [(np.cos(rotation_angle_q1), readout_len)],
"sine": [(np.sin(rotation_angle_q1), readout_len)],
@@ -748,12 +876,30 @@ def IQ_imbalance(g, phi):
"cosine": [(np.sin(rotation_angle_q2), readout_len)],
"sine": [(-np.cos(rotation_angle_q2), readout_len)],
},
- "opt_cosine_weights_q1": {"cosine": opt_weights_real_q1, "sine": opt_weights_minus_imag_q1,},
- "opt_sine_weights_q1": {"cosine": opt_weights_imag_q1, "sine": opt_weights_real_q1,},
- "opt_minus_sine_weights_q1": {"cosine": opt_weights_minus_imag_q1, "sine": opt_weights_minus_real_q1,},
- "opt_cosine_weights_q2": {"cosine": opt_weights_real_q2, "sine": opt_weights_minus_imag_q2,},
- "opt_sine_weights_q2": {"cosine": opt_weights_imag_q2, "sine": opt_weights_real_q2,},
- "opt_minus_sine_weights_q2": {"cosine": opt_weights_minus_imag_q2, "sine": opt_weights_minus_real_q2,},
+ "opt_cosine_weights_q1": {
+ "cosine": opt_weights_real_q1,
+ "sine": opt_weights_minus_imag_q1,
+ },
+ "opt_sine_weights_q1": {
+ "cosine": opt_weights_imag_q1,
+ "sine": opt_weights_real_q1,
+ },
+ "opt_minus_sine_weights_q1": {
+ "cosine": opt_weights_minus_imag_q1,
+ "sine": opt_weights_minus_real_q1,
+ },
+ "opt_cosine_weights_q2": {
+ "cosine": opt_weights_real_q2,
+ "sine": opt_weights_minus_imag_q2,
+ },
+ "opt_sine_weights_q2": {
+ "cosine": opt_weights_imag_q2,
+ "sine": opt_weights_real_q2,
+ },
+ "opt_minus_sine_weights_q2": {
+ "cosine": opt_weights_minus_imag_q2,
+ "sine": opt_weights_minus_real_q2,
+ },
},
"mixers": {
"mixer_qubit_q1": [
diff --git a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/macros.py b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/macros.py
index 9b7a0c32f..01a979de4 100644
--- a/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/macros.py
+++ b/Quantum-Control-Applications/Superconducting/Two-Fixed-Coupled-Transmons/Use_Case_1_Two_qubit_RB_without_baking/macros.py
@@ -127,7 +127,7 @@ def active_reset(threshold: float, qubit: str, resonator: str, max_tries=1, Ig=N
if (max_tries < 1) or (not float(max_tries).is_integer()):
raise Exception("max_count must be an integer >= 1.")
# Initialize Ig to be > threshold
- assign(Ig, threshold + 2 ** -28)
+ assign(Ig, threshold + 2**-28)
# Number of tries for active reset
counter = declare(int)
# Reset the number of tries
@@ -139,7 +139,10 @@ def active_reset(threshold: float, qubit: str, resonator: str, max_tries=1, Ig=N
with while_((Ig > threshold) & (counter < max_tries)):
# Measure the resonator
measure(
- "readout", resonator, None, dual_demod.full("rotated_cos", "rotated_sin", Ig),
+ "readout",
+ resonator,
+ None,
+ dual_demod.full("rotated_cos", "rotated_sin", Ig),
)
# Play a pi pulse to get back to the ground state
play("x180", qubit, condition=(Ig > threshold))