boulder-opal-scale-up-sdk 1.0.6__py3-none-any.whl → 1.0.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/METADATA +4 -6
- {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/RECORD +46 -39
- boulderopalscaleupsdk/common/dtypes.py +36 -10
- boulderopalscaleupsdk/device/controller/qblox.py +159 -54
- boulderopalscaleupsdk/device/device.py +0 -1
- boulderopalscaleupsdk/device/processor/superconducting_processor.py +21 -1
- boulderopalscaleupsdk/experiments/chi01_scan.py +1 -1
- boulderopalscaleupsdk/experiments/cz_spectroscopy_by_bias.py +29 -48
- boulderopalscaleupsdk/experiments/drag_leakage_calibration.py +1 -4
- boulderopalscaleupsdk/experiments/fine_amplitude_calibration.py +4 -3
- boulderopalscaleupsdk/experiments/power_rabi.py +3 -3
- boulderopalscaleupsdk/experiments/power_rabi_ef.py +3 -3
- boulderopalscaleupsdk/experiments/ramsey.py +1 -1
- boulderopalscaleupsdk/experiments/ramsey_ef.py +1 -1
- boulderopalscaleupsdk/experiments/readout_classifier.py +2 -2
- boulderopalscaleupsdk/experiments/readout_optimization.py +3 -3
- boulderopalscaleupsdk/experiments/resonator_spectroscopy.py +1 -1
- boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_bias.py +3 -3
- boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_power.py +1 -1
- boulderopalscaleupsdk/experiments/t1.py +1 -1
- boulderopalscaleupsdk/experiments/t2.py +2 -2
- boulderopalscaleupsdk/experiments/t2_echo.py +1 -1
- boulderopalscaleupsdk/experiments/transmon_anharmonicity.py +1 -1
- boulderopalscaleupsdk/experiments/transmon_spectroscopy.py +2 -2
- boulderopalscaleupsdk/experiments/voltage_bias_fine_tune.py +7 -5
- boulderopalscaleupsdk/experiments/waveforms.py +15 -0
- boulderopalscaleupsdk/experiments/zz_ramsey.py +8 -14
- boulderopalscaleupsdk/plotting/dtypes.py +1 -1
- boulderopalscaleupsdk/protobuf/v1/device_pb2.py +33 -39
- boulderopalscaleupsdk/protobuf/v1/device_pb2.pyi +10 -18
- boulderopalscaleupsdk/protobuf/v1/device_pb2_grpc.py +0 -34
- boulderopalscaleupsdk/protobuf/v1/resource_pb2.py +40 -0
- boulderopalscaleupsdk/protobuf/v1/resource_pb2.pyi +52 -0
- boulderopalscaleupsdk/protobuf/v1/resource_pb2_grpc.py +104 -0
- boulderopalscaleupsdk/routines/__init__.py +2 -0
- boulderopalscaleupsdk/routines/coupler_discovery.py +37 -0
- boulderopalscaleupsdk/routines/one_qubit_calibration.py +4 -0
- boulderopalscaleupsdk/routines/resonator_mapping.py +1 -1
- boulderopalscaleupsdk/routines/transmon_retuning.py +0 -4
- boulderopalscaleupsdk/solutions/__init__.py +22 -0
- boulderopalscaleupsdk/solutions/common.py +23 -0
- boulderopalscaleupsdk/solutions/placeholder_solution.py +28 -0
- boulderopalscaleupsdk/third_party/quantum_machines/__init__.py +15 -0
- boulderopalscaleupsdk/third_party/quantum_machines/config.py +0 -3
- {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/LICENSE +0 -0
- {boulder_opal_scale_up_sdk-1.0.6.dist-info → boulder_opal_scale_up_sdk-1.0.8.dist-info}/WHEEL +0 -0
@@ -142,6 +142,14 @@ class Coupler(Component[Literal["tunable"]]):
|
|
142
142
|
default=ComponentParameter(value=0.0),
|
143
143
|
json_schema_extra={"display": {"label": "bias_period", "unit": "V", "scale": 1}},
|
144
144
|
)
|
145
|
+
freq_01: FloatComponentParameter = Field(
|
146
|
+
default=ComponentParameter(value=(0.0)),
|
147
|
+
json_schema_extra={"display": {"label": "freq_01", "unit": "MHz", "scale": 1e-6}},
|
148
|
+
)
|
149
|
+
anharm: FloatComponentParameter = Field(
|
150
|
+
default=ComponentParameter(value=0.0),
|
151
|
+
json_schema_extra={"display": {"label": "anharm", "unit": "MHz", "scale": 1e-6}},
|
152
|
+
)
|
145
153
|
|
146
154
|
|
147
155
|
class Port(Component[Literal["drive", "readout", "flux"]]):
|
@@ -151,10 +159,19 @@ class Port(Component[Literal["drive", "readout", "flux"]]):
|
|
151
159
|
)
|
152
160
|
|
153
161
|
|
162
|
+
# TODO: [SCUP-2169] Rename Filter to PurcellFilter
|
154
163
|
class Filter(Component[Literal["filter"]]):
|
155
164
|
dtype: Literal["filter"] = "filter"
|
156
165
|
traits: list = Field(default=[])
|
157
166
|
|
167
|
+
# TODO: [SCUP-2167] Move resonator filter parameters to Filter/PurcellFilter class
|
168
|
+
# TODO: Use better name for this field. "Center Frequency"?
|
169
|
+
# TODO: Handle the same rename in the SDK
|
170
|
+
frequency: FloatComponentParameter = Field(
|
171
|
+
default=ComponentParameter(value=0.0),
|
172
|
+
json_schema_extra={"display": {"label": "frequency", "unit": "MHz", "scale": 1}},
|
173
|
+
)
|
174
|
+
|
158
175
|
|
159
176
|
class Feedline(Component[Literal["feedline"]]):
|
160
177
|
dtype: Literal["feedline"] = "feedline"
|
@@ -201,6 +218,7 @@ class ProcessorTemplate(BaseModel):
|
|
201
218
|
|
202
219
|
|
203
220
|
class SuperconductingProcessorTemplate(BaseModel):
|
221
|
+
qpu_model: str
|
204
222
|
build: list[TemplateParam]
|
205
223
|
templates: dict[str, ProcessorTemplate]
|
206
224
|
device_parameters: dict[str, SuperconductingComponentType] = Field(
|
@@ -209,12 +227,14 @@ class SuperconductingProcessorTemplate(BaseModel):
|
|
209
227
|
|
210
228
|
|
211
229
|
class SuperconductingProcessor(BaseModel):
|
230
|
+
# TODO: Fast5, remove default after SCUP-2205
|
231
|
+
qpu_model: str = Field(default="quantware-soprano-a")
|
212
232
|
nodes: dict[ComponentRef, SuperconductingComponentType]
|
213
233
|
edges: list[Edge]
|
214
234
|
|
215
235
|
@staticmethod
|
216
236
|
def from_template(template: SuperconductingProcessorTemplate) -> "SuperconductingProcessor":
|
217
|
-
_qpu = SuperconductingProcessor(nodes={}, edges=[])
|
237
|
+
_qpu = SuperconductingProcessor(qpu_model=template.qpu_model, nodes={}, edges=[])
|
218
238
|
for build in template.build:
|
219
239
|
qpu_template = template.templates[build.template]
|
220
240
|
for idx, subs in build.vars.items():
|
@@ -45,7 +45,7 @@ class Chi01Scan(Experiment):
|
|
45
45
|
measure_waveform : ConstantWaveform or None, optional
|
46
46
|
The waveform to use for the measurement pulse.
|
47
47
|
Defaults to the measurement defcal.
|
48
|
-
run_mixer_calibration: bool
|
48
|
+
run_mixer_calibration: bool, optional
|
49
49
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
50
50
|
update : "auto" or "off" or "prompt", optional
|
51
51
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -15,70 +15,51 @@ from typing import Literal
|
|
15
15
|
|
16
16
|
from pydantic import PrivateAttr
|
17
17
|
|
18
|
-
from .common import Experiment
|
19
|
-
|
20
|
-
DEFAULT_PREP_PADDING_NS = 16
|
21
|
-
DEFAULT_MEASUREMENT_PADDING_NS = 16
|
22
|
-
DEFAULT_MIN_DURATION_NS = 16
|
23
|
-
DEFAULT_MAX_DURATION_NS = 200
|
24
|
-
DEFAULT_TIME_STEP_NS = 8
|
25
|
-
DEFAULT_RECYCLE_DELAY_NS = 500_000
|
26
|
-
DEFAULT_SHOT_COUNT = 200
|
18
|
+
from .common import Experiment, LinspaceIterable, RangeIterable
|
27
19
|
|
28
20
|
|
29
21
|
class CZSpectroscopyByBias(Experiment):
|
30
22
|
"""
|
31
|
-
Parameters for running a
|
23
|
+
Parameters for running a CZ spectroscopy by bias experiment.
|
32
24
|
|
33
|
-
|
25
|
+
Attributes
|
34
26
|
----------
|
35
27
|
control_transmon : str
|
36
|
-
The
|
28
|
+
The reference for the transmon to use as control.
|
37
29
|
target_transmon : str
|
38
|
-
The
|
39
|
-
|
40
|
-
The
|
41
|
-
|
42
|
-
The
|
43
|
-
|
44
|
-
The
|
45
|
-
|
46
|
-
|
47
|
-
max_duration_ns : int
|
48
|
-
The maximum duration for the pulse in the experiment, in nanoseconds.
|
49
|
-
duration_step_ns : int
|
50
|
-
The step size for the duration, in nanoseconds.
|
51
|
-
prep_padding_ns : int
|
30
|
+
The reference for the transmon to use as target.
|
31
|
+
vps : LinspaceIterable
|
32
|
+
The voltage points to sample, in volts.
|
33
|
+
coupler_flux_vp : float
|
34
|
+
The flux voltage point for the coupler, in volts.
|
35
|
+
durations_ns : RangeIterable, optional
|
36
|
+
The pulse durations to sample, in nanoseconds.
|
37
|
+
Defaults to RangeIterable(start=16, stop=200, step=8).
|
38
|
+
prep_padding_ns : int, optional
|
52
39
|
The padding to apply before the CZ pulse, in nanoseconds.
|
53
|
-
|
40
|
+
Defaults to 16 ns.
|
41
|
+
measurement_padding_ns : int, optional
|
54
42
|
The padding to apply after the CZ pulse, in nanoseconds.
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
43
|
+
Defaults to 16 ns.
|
44
|
+
recycle_delay_ns : float, optional
|
45
|
+
The delay between consecutive shots, in nanoseconds.
|
46
|
+
Defaults to 500,000 ns.
|
47
|
+
shot_count : int, optional
|
48
|
+
The number of shots to take.
|
60
49
|
Defaults to 200.
|
61
|
-
|
62
|
-
|
63
|
-
spectroscopy_waveform : ConstantWaveform
|
64
|
-
The waveform to use in the spectroscopy pulse.
|
50
|
+
update : "auto" or "off" or "prompt", optional
|
51
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
65
52
|
"""
|
66
53
|
|
67
54
|
_experiment_name: str = PrivateAttr("cz_spectroscopy_by_bias")
|
68
55
|
|
69
56
|
control_transmon: str
|
70
57
|
target_transmon: str
|
71
|
-
|
72
|
-
min_vp: float
|
73
|
-
max_vp: float
|
74
|
-
num_vp: int
|
58
|
+
vps: LinspaceIterable
|
75
59
|
coupler_flux_vp: float
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
recycle_delay_ns: int = DEFAULT_RECYCLE_DELAY_NS
|
82
|
-
shot_count: int = DEFAULT_SHOT_COUNT
|
83
|
-
batch_analysis: bool = False
|
60
|
+
durations_ns: RangeIterable = RangeIterable(start=16, stop=200, step=8)
|
61
|
+
prep_padding_ns: int = 16
|
62
|
+
measurement_padding_ns: int = 16
|
63
|
+
recycle_delay_ns: int = 500_000
|
64
|
+
shot_count: int = 200
|
84
65
|
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -27,7 +27,7 @@ class DragLeakageCalibration(Experiment):
|
|
27
27
|
----------
|
28
28
|
transmon : str
|
29
29
|
The reference for the transmon to target.
|
30
|
-
recycle_delay_ns : int
|
30
|
+
recycle_delay_ns : int, optional
|
31
31
|
The delay between consecutive shots, in nanoseconds. Defaults to 10,000 ns.
|
32
32
|
shot_count : int, optional
|
33
33
|
The number of shots to take. Defaults to 1,000.
|
@@ -40,8 +40,6 @@ class DragLeakageCalibration(Experiment):
|
|
40
40
|
anharmonicity : float or None, optional
|
41
41
|
The anharmonicity of the transmon, in Hz.
|
42
42
|
Defaults to None, in which case the anharmonicity of the transmon will be used.
|
43
|
-
drag_guess : float
|
44
|
-
Initial guess for the DRAG parameter.
|
45
43
|
update : "auto" or "off" or "prompt", optional
|
46
44
|
How the device should be updated after an experiment run. Defaults to auto.
|
47
45
|
"""
|
@@ -55,7 +53,6 @@ class DragLeakageCalibration(Experiment):
|
|
55
53
|
repetitions: list[int]
|
56
54
|
gate: Literal["x", "sx"]
|
57
55
|
anharmonicity: float | None = None
|
58
|
-
drag_guess: float
|
59
56
|
update: Literal["auto", "off", "prompt"] = "auto"
|
60
57
|
|
61
58
|
@field_validator("alphas")
|
@@ -30,12 +30,13 @@ class FineAmplitudeCalibration(Experiment):
|
|
30
30
|
The reference for the transmon to target.
|
31
31
|
gate : Literal["sx", "x"]
|
32
32
|
The gate to be calibrated.
|
33
|
-
repetitions : list[int]
|
33
|
+
repetitions : list[int], optional
|
34
34
|
List of repetition counts for the calibration experiment.
|
35
|
-
|
35
|
+
Defaults to every fourth number from 0 to 100.
|
36
|
+
recycle_delay_ns : int, optional
|
36
37
|
The delay between consecutive shots, in nanoseconds. Defaults to 10,000 ns.
|
37
38
|
shot_count : int, optional
|
38
|
-
The number of shots to take. Defaults to
|
39
|
+
The number of shots to take. Defaults to 1,000.
|
39
40
|
measure_waveform : ConstantWaveform or None, optional
|
40
41
|
The waveform to use for the measurement pulse.
|
41
42
|
Defaults to the measurement defcal.
|
@@ -39,16 +39,16 @@ class PowerRabi(Experiment):
|
|
39
39
|
If None, a default scan will be used.
|
40
40
|
drive_waveform : Waveform
|
41
41
|
The waveform to use for the drive pulse.
|
42
|
-
recycle_delay_ns : int
|
42
|
+
recycle_delay_ns : int, optional
|
43
43
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
44
44
|
shot_count : int, optional
|
45
45
|
The number of shots to take. Defaults to 400.
|
46
46
|
pulse_vp : float, optional
|
47
|
-
The voltage per pulse, in
|
47
|
+
The voltage per pulse, in volts. Defaults to the amplitude of the X gate.
|
48
48
|
measure_waveform : ConstantWaveform or None, optional
|
49
49
|
The waveform to use for the measurement pulse.
|
50
50
|
Defaults to the measurement defcal.
|
51
|
-
run_mixer_calibration: bool
|
51
|
+
run_mixer_calibration: bool, optional
|
52
52
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
53
53
|
update : "auto" or "off" or "prompt", optional
|
54
54
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -39,16 +39,16 @@ class PowerRabiEF(Experiment):
|
|
39
39
|
If None, a default scan will be used.
|
40
40
|
drive_waveform : Waveform
|
41
41
|
The waveform to use for the drive pulse.
|
42
|
-
recycle_delay_ns : int
|
42
|
+
recycle_delay_ns : int, optional
|
43
43
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
44
44
|
shot_count : int, optional
|
45
45
|
The number of shots to take. Defaults to 400.
|
46
46
|
pulse_vp : float, optional
|
47
|
-
The voltage per pulse, in
|
47
|
+
The voltage per pulse, in volts. Defaults to the amplitude of the X gate.
|
48
48
|
measure_waveform : ConstantWaveform or None, optional
|
49
49
|
The waveform to use for the measurement pulse.
|
50
50
|
Defaults to the measurement defcal.
|
51
|
-
run_mixer_calibration: bool
|
51
|
+
run_mixer_calibration: bool, optional
|
52
52
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
53
53
|
update : "auto" or "off" or "prompt", optional
|
54
54
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -42,7 +42,7 @@ class Ramsey(Experiment):
|
|
42
42
|
measure_waveform : ConstantWaveform or None, optional
|
43
43
|
The waveform to use for the measurement pulse.
|
44
44
|
Defaults to the measurement defcal.
|
45
|
-
run_mixer_calibration: bool
|
45
|
+
run_mixer_calibration: bool, optional
|
46
46
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
47
47
|
update : "auto" or "off" or "prompt", optional
|
48
48
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -31,14 +31,14 @@ class ReadoutClassifier(Experiment):
|
|
31
31
|
----------
|
32
32
|
transmon : str
|
33
33
|
The reference for the transmon to target.
|
34
|
-
recycle_delay_ns : int
|
34
|
+
recycle_delay_ns : int, optional
|
35
35
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
36
36
|
shot_count : int, optional
|
37
37
|
The number of shots to take. Defaults to 5,000.
|
38
38
|
measure_waveform : ConstantWaveform or None, optional
|
39
39
|
The waveform to use for the measurement pulse.
|
40
40
|
Defaults to the measurement defcal.
|
41
|
-
run_mixer_calibration: bool
|
41
|
+
run_mixer_calibration: bool, optional
|
42
42
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
43
43
|
update : "auto" or "off" or "prompt", optional
|
44
44
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -28,7 +28,7 @@ class ReadoutOptimization(Experiment):
|
|
28
28
|
"""
|
29
29
|
Parameters for optimizing the readout classifier.
|
30
30
|
|
31
|
-
|
31
|
+
Attributes
|
32
32
|
----------
|
33
33
|
transmon : str
|
34
34
|
The reference for the transmon to target.
|
@@ -36,11 +36,11 @@ class ReadoutOptimization(Experiment):
|
|
36
36
|
The readout frequencies to sweep, in Hz.
|
37
37
|
amplitudes : list[float]
|
38
38
|
The readout amplitudes to sweep.
|
39
|
-
recycle_delay_ns : int
|
39
|
+
recycle_delay_ns : int, optional
|
40
40
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
41
41
|
shot_count : int, optional
|
42
42
|
The number of shots to take. Defaults to 5,000.
|
43
|
-
run_mixer_calibration: bool
|
43
|
+
run_mixer_calibration: bool, optional
|
44
44
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
45
45
|
update : "auto" or "off", optional
|
46
46
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -44,7 +44,7 @@ class ResonatorSpectroscopy(Experiment):
|
|
44
44
|
measure_waveform : ConstantWaveform or None, optional
|
45
45
|
The waveform to use for the measurement pulse.
|
46
46
|
Defaults to the measurement defcal.
|
47
|
-
run_mixer_calibration: bool
|
47
|
+
run_mixer_calibration: bool, optional
|
48
48
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
49
49
|
update : "auto" or "off" or "prompt", optional
|
50
50
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -27,7 +27,7 @@ from .waveforms import ConstantWaveform
|
|
27
27
|
|
28
28
|
class ResonatorSpectroscopyByBias(Experiment):
|
29
29
|
"""
|
30
|
-
Parameters for running a resonator spectroscopy by
|
30
|
+
Parameters for running a resonator spectroscopy by bias experiment.
|
31
31
|
|
32
32
|
Attributes
|
33
33
|
----------
|
@@ -42,7 +42,7 @@ class ResonatorSpectroscopyByBias(Experiment):
|
|
42
42
|
Defaults to a scan around the readout frequency.
|
43
43
|
biases : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
44
44
|
or HypIterable, optional
|
45
|
-
The biases at which to scan, in
|
45
|
+
The biases at which to scan, in volts.
|
46
46
|
Defaults to 21 points between -0.49 and 0.49.
|
47
47
|
recycle_delay_ns : int, optional
|
48
48
|
The delay between consecutive shots, in nanoseconds. Defaults to 1,000 ns.
|
@@ -51,7 +51,7 @@ class ResonatorSpectroscopyByBias(Experiment):
|
|
51
51
|
measure_waveform : ConstantWaveform or None, optional
|
52
52
|
The waveform to use for the measurement pulse.
|
53
53
|
Defaults to the measurement defcal.
|
54
|
-
run_mixer_calibration: bool
|
54
|
+
run_mixer_calibration: bool, optional
|
55
55
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
56
56
|
update : "auto" or "off" or "prompt", optional
|
57
57
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -45,7 +45,7 @@ class ResonatorSpectroscopyByPower(Experiment):
|
|
45
45
|
The delay between consecutive shots, in nanoseconds. Defaults to 1,000 ns.
|
46
46
|
shot_count : int, optional
|
47
47
|
The number of shots to take. Defaults to 100.
|
48
|
-
run_mixer_calibration: bool
|
48
|
+
run_mixer_calibration: bool, optional
|
49
49
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
50
50
|
update : "auto" or "off" or "prompt", optional
|
51
51
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -32,7 +32,7 @@ class T1(Experiment):
|
|
32
32
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
33
33
|
shot_count : int, optional
|
34
34
|
The number of shots to take. Defaults to 400.
|
35
|
-
run_mixer_calibration: bool
|
35
|
+
run_mixer_calibration: bool, optional
|
36
36
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
37
37
|
update : "auto" or "off" or "prompt", optional
|
38
38
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -22,7 +22,7 @@ class T2(Experiment):
|
|
22
22
|
"""
|
23
23
|
Parameters for running a T2 experiment.
|
24
24
|
|
25
|
-
|
25
|
+
Attributes
|
26
26
|
----------
|
27
27
|
transmon : str
|
28
28
|
The reference for the transmon to target.
|
@@ -34,7 +34,7 @@ class T2(Experiment):
|
|
34
34
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
35
35
|
shot_count : int, optional
|
36
36
|
The number of shots to take. Defaults to 400.
|
37
|
-
run_mixer_calibration: bool
|
37
|
+
run_mixer_calibration: bool, optional
|
38
38
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
39
39
|
update : "auto" or "off" or "prompt", optional
|
40
40
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -34,7 +34,7 @@ class T2Echo(Experiment):
|
|
34
34
|
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
35
35
|
shot_count : int, optional
|
36
36
|
The number of shots to take. Defaults to 400.
|
37
|
-
run_mixer_calibration: bool
|
37
|
+
run_mixer_calibration: bool, optional
|
38
38
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
39
39
|
update : "auto" or "off" or "prompt", optional
|
40
40
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -51,7 +51,7 @@ class TransmonAnharmonicity(Experiment):
|
|
51
51
|
measure_waveform : ConstantWaveform or None, optional
|
52
52
|
The waveform to use for the measurement pulse.
|
53
53
|
Defaults to the measurement defcal.
|
54
|
-
run_mixer_calibration: bool
|
54
|
+
run_mixer_calibration: bool, optional
|
55
55
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
56
56
|
update : "auto" or "off" or "prompt", optional
|
57
57
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -40,13 +40,13 @@ class TransmonSpectroscopy(Experiment):
|
|
40
40
|
recycle_delay_ns : int, optional
|
41
41
|
The delay between consecutive shots, in nanoseconds. Defaults to 50,000 ns.
|
42
42
|
shot_count : int, optional
|
43
|
-
The number of shots to take. Defaults to
|
43
|
+
The number of shots to take. Defaults to 400.
|
44
44
|
spectroscopy_waveform : ConstantWaveform
|
45
45
|
The waveform to use in the spectroscopy pulse.
|
46
46
|
measure_waveform : ConstantWaveform or None, optional
|
47
47
|
The waveform to use for the measurement pulse.
|
48
48
|
Defaults to the measurement defcal.
|
49
|
-
run_mixer_calibration: bool
|
49
|
+
run_mixer_calibration: bool, optional
|
50
50
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
51
51
|
update : "auto" or "off" or "prompt", optional
|
52
52
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -25,7 +25,7 @@ class VoltageBiasFineTune(Experiment):
|
|
25
25
|
Attributes
|
26
26
|
----------
|
27
27
|
transmon : str
|
28
|
-
The reference for the transmon to XY drive
|
28
|
+
The reference for the transmon to XY drive.
|
29
29
|
delays_ns : list[int] or RangeIterable
|
30
30
|
The delay times, in nanoseconds.
|
31
31
|
flux_count : int
|
@@ -35,14 +35,16 @@ class VoltageBiasFineTune(Experiment):
|
|
35
35
|
virtual_detuning : float
|
36
36
|
The difference between the drive signal frequency and the qubit frequency, in Hz.
|
37
37
|
bias_transmon : str or None, optional
|
38
|
-
The reference for the transmon to flux tune
|
38
|
+
The reference for the transmon to flux tune.
|
39
39
|
Defaults to transmon.
|
40
40
|
recycle_delay_ns : int, optional
|
41
|
-
The delay
|
42
|
-
Defaults to
|
41
|
+
The delay between consecutive shots, in nanoseconds.
|
42
|
+
Defaults to 100,000 ns.
|
43
43
|
shot_count : int, optional
|
44
|
-
The number of shots to
|
44
|
+
The number of shots to take.
|
45
45
|
Defaults to 400.
|
46
|
+
update : "auto" or "off" or "prompt", optional
|
47
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
46
48
|
"""
|
47
49
|
|
48
50
|
_experiment_name: str = PrivateAttr("voltage_bias_fine_tune")
|
@@ -29,6 +29,9 @@ class ConstantWaveform(_Waveform): # pragma: no cover
|
|
29
29
|
amplitude: float
|
30
30
|
waveform_type: Literal["Constant"] = "Constant"
|
31
31
|
|
32
|
+
def __str__(self):
|
33
|
+
return f"ConstantWaveform(duration_ns={self.duration_ns}, amplitude={self.amplitude})"
|
34
|
+
|
32
35
|
|
33
36
|
@dataclass
|
34
37
|
class GaussianWaveform(_Waveform): # pragma: no cover
|
@@ -37,6 +40,12 @@ class GaussianWaveform(_Waveform): # pragma: no cover
|
|
37
40
|
sigma: float
|
38
41
|
waveform_type: Literal["Gaussian"] = "Gaussian"
|
39
42
|
|
43
|
+
def __str__(self):
|
44
|
+
return (
|
45
|
+
f"GaussianWaveform(duration_ns={self.duration_ns}, "
|
46
|
+
f"amplitude={self.amplitude}, sigma={self.sigma})"
|
47
|
+
)
|
48
|
+
|
40
49
|
|
41
50
|
@dataclass
|
42
51
|
class DragCosineWaveform(_Waveform): # pragma: no cover
|
@@ -47,6 +56,12 @@ class DragCosineWaveform(_Waveform): # pragma: no cover
|
|
47
56
|
center: float
|
48
57
|
waveform_type: Literal["DragCosineWaveform"] = "DragCosineWaveform"
|
49
58
|
|
59
|
+
def __str__(self):
|
60
|
+
return (
|
61
|
+
f"DragCosineWaveform(duration_ns={self.duration_ns}, amplitude={self.amplitude}, "
|
62
|
+
f"drag={self.drag}, buffer_ns={self.buffer_ns}, center={self.center})"
|
63
|
+
)
|
64
|
+
|
50
65
|
|
51
66
|
Waveform = Annotated[
|
52
67
|
ConstantWaveform | GaussianWaveform | DragCosineWaveform,
|
@@ -15,7 +15,7 @@ from typing import Literal
|
|
15
15
|
|
16
16
|
from pydantic import PrivateAttr
|
17
17
|
|
18
|
-
from .common import Experiment
|
18
|
+
from .common import Experiment, RangeIterable
|
19
19
|
|
20
20
|
|
21
21
|
class ZZRamsey(Experiment):
|
@@ -25,22 +25,18 @@ class ZZRamsey(Experiment):
|
|
25
25
|
Attributes
|
26
26
|
----------
|
27
27
|
control_transmon : str
|
28
|
-
The
|
28
|
+
The reference for the transmon to use as control.
|
29
29
|
target_transmon : str
|
30
|
-
The
|
31
|
-
|
32
|
-
The
|
33
|
-
min_delay_ns : int
|
34
|
-
The minimum delay time, in nanoseconds.
|
35
|
-
delay_step_ns : int
|
36
|
-
The step for generating the list of delays, in nanoseconds.
|
30
|
+
The reference for the transmon to use as target.
|
31
|
+
delays_ns : RangeIterable
|
32
|
+
The delay times, in nanoseconds.
|
37
33
|
virtual_detuning : float
|
38
34
|
The difference between the drive signal frequency and the qubit frequency, in Hz.
|
39
35
|
recycle_delay_ns : int, optional
|
40
|
-
The delay
|
36
|
+
The delay between consecutive shots, in nanoseconds.
|
41
37
|
Defaults to 10,000 ns.
|
42
38
|
shot_count : int, optional
|
43
|
-
The number of shots to
|
39
|
+
The number of shots to take.
|
44
40
|
Defaults to 400.
|
45
41
|
update : "auto" or "off" or "prompt", optional
|
46
42
|
How the device should be updated after an experiment run. Defaults to auto.
|
@@ -50,9 +46,7 @@ class ZZRamsey(Experiment):
|
|
50
46
|
|
51
47
|
control_transmon: str
|
52
48
|
target_transmon: str
|
53
|
-
|
54
|
-
min_delay_ns: int
|
55
|
-
delay_step_ns: int
|
49
|
+
delays_ns: RangeIterable
|
56
50
|
virtual_detuning: float
|
57
51
|
recycle_delay_ns: int = 10_000
|
58
52
|
shot_count: int = 400
|