boulder-opal-scale-up-sdk 1.0.4__py3-none-any.whl → 1.0.5__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.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/METADATA +1 -1
- {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/RECORD +39 -33
- boulderopalscaleupsdk/agent/worker.py +23 -4
- boulderopalscaleupsdk/common/dtypes.py +20 -1
- boulderopalscaleupsdk/device/controller/qblox.py +94 -26
- boulderopalscaleupsdk/device/device.py +5 -1
- boulderopalscaleupsdk/device/processor/superconducting_processor.py +23 -3
- boulderopalscaleupsdk/experiments/__init__.py +8 -0
- boulderopalscaleupsdk/experiments/chi01_scan.py +9 -7
- boulderopalscaleupsdk/experiments/drag_leakage_calibration.py +66 -0
- boulderopalscaleupsdk/experiments/fine_amplitude_calibration.py +54 -0
- boulderopalscaleupsdk/experiments/power_rabi.py +10 -7
- boulderopalscaleupsdk/experiments/power_rabi_ef.py +10 -9
- boulderopalscaleupsdk/experiments/ramsey.py +9 -7
- boulderopalscaleupsdk/experiments/readout_classifier_calibration.py +9 -3
- boulderopalscaleupsdk/experiments/resonator_spectroscopy.py +9 -7
- boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_bias.py +11 -8
- boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_power.py +10 -9
- boulderopalscaleupsdk/experiments/t1.py +8 -6
- boulderopalscaleupsdk/experiments/t2.py +12 -10
- boulderopalscaleupsdk/experiments/t2_echo.py +12 -10
- boulderopalscaleupsdk/experiments/transmon_anharmonicity.py +13 -10
- boulderopalscaleupsdk/experiments/transmon_spectroscopy.py +10 -8
- boulderopalscaleupsdk/experiments/voltage_bias_fine_tune.py +58 -0
- boulderopalscaleupsdk/experiments/zz_ramsey.py +59 -0
- boulderopalscaleupsdk/plotting/dtypes.py +5 -3
- boulderopalscaleupsdk/protobuf/v1/agent_pb2.py +9 -3
- boulderopalscaleupsdk/protobuf/v1/agent_pb2.pyi +14 -0
- boulderopalscaleupsdk/protobuf/v1/agent_pb2_grpc.py +34 -0
- boulderopalscaleupsdk/protobuf/v1/device_pb2.py +32 -32
- boulderopalscaleupsdk/protobuf/v1/device_pb2.pyi +4 -2
- boulderopalscaleupsdk/routines/__init__.py +10 -1
- boulderopalscaleupsdk/routines/one_qubit_calibration.py +36 -0
- boulderopalscaleupsdk/routines/resonator_mapping.py +1 -1
- boulderopalscaleupsdk/routines/transmon_coherence.py +34 -0
- boulderopalscaleupsdk/routines/transmon_discovery.py +5 -9
- boulderopalscaleupsdk/routines/transmon_retuning.py +13 -3
- {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/LICENSE +0 -0
- {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/WHEEL +0 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
# Copyright 2025 Q-CTRL. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Q-CTRL Terms of service (the "License"). Unauthorized
|
4
|
+
# copying or use of this file, via any medium, is strictly prohibited.
|
5
|
+
# Proprietary and confidential. You may not use this file except in compliance
|
6
|
+
# with the License. You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# https://q-ctrl.com/terms
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
|
+
# License for the specific language.
|
13
|
+
|
14
|
+
from typing import Literal
|
15
|
+
|
16
|
+
from pydantic import Field, PrivateAttr
|
17
|
+
|
18
|
+
from .common import Experiment
|
19
|
+
from .waveforms import ConstantWaveform
|
20
|
+
|
21
|
+
|
22
|
+
class FineAmplitudeCalibration(Experiment):
|
23
|
+
"""
|
24
|
+
Parameters for running a fine amplitude calibration experiment for
|
25
|
+
a specified gate on a transmon.
|
26
|
+
|
27
|
+
Attributes
|
28
|
+
----------
|
29
|
+
transmon : str
|
30
|
+
The reference for the transmon to target.
|
31
|
+
gate : Literal["sx", "x"]
|
32
|
+
The gate to be calibrated.
|
33
|
+
repetitions : list[int]
|
34
|
+
List of repetition counts for the calibration experiment.
|
35
|
+
recycle_delay_ns : int
|
36
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 10,000 ns.
|
37
|
+
shot_count : int, optional
|
38
|
+
The number of shots to take. Defaults to 1000.
|
39
|
+
measure_waveform : ConstantWaveform or None, optional
|
40
|
+
The waveform to use for the measurement pulse.
|
41
|
+
Defaults to the measurement defcal.
|
42
|
+
update : "auto" or "off" or "prompt", optional
|
43
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
44
|
+
"""
|
45
|
+
|
46
|
+
_experiment_name: str = PrivateAttr("fine_amplitude_calibration")
|
47
|
+
|
48
|
+
transmon: str
|
49
|
+
gate: Literal["sx", "x"]
|
50
|
+
repetitions: list[int] = Field(default=list(range(0, 100, 4)))
|
51
|
+
recycle_delay_ns: int = 10_000
|
52
|
+
shot_count: int = 1000
|
53
|
+
measure_waveform: ConstantWaveform | None = None
|
54
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -22,25 +24,23 @@ from .common import (
|
|
22
24
|
)
|
23
25
|
from .waveforms import ConstantWaveform, Waveform
|
24
26
|
|
25
|
-
DEFAULT_SHOT_COUNT = 400
|
26
|
-
|
27
27
|
|
28
28
|
class PowerRabi(Experiment):
|
29
29
|
"""
|
30
30
|
Parameters for running a Power Rabi experiment.
|
31
31
|
|
32
|
-
|
32
|
+
Attributes
|
33
33
|
----------
|
34
34
|
transmon : str
|
35
35
|
The reference for the transmon to target.
|
36
|
-
scales : list[float] or LinspaceIterable or RangeIterable
|
36
|
+
scales : list[float] or LinspaceIterable or RangeIterable \
|
37
37
|
or CWSIterable or HypIterable or None, optional
|
38
38
|
The scaling factors for the drive pulse amplitude.
|
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
42
|
recycle_delay_ns : int
|
43
|
-
The delay between consecutive shots, in nanoseconds.
|
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
|
@@ -50,6 +50,8 @@ class PowerRabi(Experiment):
|
|
50
50
|
Defaults to the measurement defcal.
|
51
51
|
run_mixer_calibration: bool
|
52
52
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
53
|
+
update : "auto" or "off" or "prompt", optional
|
54
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
53
55
|
"""
|
54
56
|
|
55
57
|
_experiment_name: str = PrivateAttr("power_rabi")
|
@@ -57,8 +59,9 @@ class PowerRabi(Experiment):
|
|
57
59
|
transmon: str
|
58
60
|
scales: list[float] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable | None = None
|
59
61
|
drive_waveform: Waveform
|
60
|
-
recycle_delay_ns: int
|
61
|
-
shot_count: int =
|
62
|
+
recycle_delay_ns: int = 200_000
|
63
|
+
shot_count: int = 400
|
62
64
|
pulse_vp: float | None = None
|
63
65
|
measure_waveform: ConstantWaveform | None = None
|
64
66
|
run_mixer_calibration: bool = False
|
67
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -22,27 +24,23 @@ from .common import (
|
|
22
24
|
)
|
23
25
|
from .waveforms import ConstantWaveform, Waveform
|
24
26
|
|
25
|
-
DEFAULT_RECYCLE_DELAY_NS = 200_000
|
26
|
-
DEFAULT_SHOT_COUNT = 400
|
27
|
-
DEFAULT_DURATION_NS = 2_000
|
28
|
-
|
29
27
|
|
30
28
|
class PowerRabiEF(Experiment):
|
31
29
|
"""
|
32
30
|
Parameters for running a Power Rabi EF experiment.
|
33
31
|
|
34
|
-
|
32
|
+
Attributes
|
35
33
|
----------
|
36
34
|
transmon : str
|
37
35
|
The reference for the transmon to target.
|
38
|
-
scales : list[float] or LinspaceIterable or RangeIterable
|
36
|
+
scales : list[float] or LinspaceIterable or RangeIterable \
|
39
37
|
or CWSIterable or HypIterable or None, optional
|
40
38
|
The scaling factors for the drive pulse amplitude.
|
41
39
|
If None, a default scan will be used.
|
42
40
|
drive_waveform : Waveform
|
43
41
|
The waveform to use for the drive pulse.
|
44
42
|
recycle_delay_ns : int
|
45
|
-
The delay between consecutive shots, in nanoseconds.
|
43
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
46
44
|
shot_count : int, optional
|
47
45
|
The number of shots to take. Defaults to 400.
|
48
46
|
pulse_vp : float, optional
|
@@ -52,6 +50,8 @@ class PowerRabiEF(Experiment):
|
|
52
50
|
Defaults to the measurement defcal.
|
53
51
|
run_mixer_calibration: bool
|
54
52
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
53
|
+
update : "auto" or "off" or "prompt", optional
|
54
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
55
55
|
"""
|
56
56
|
|
57
57
|
_experiment_name: str = PrivateAttr("power_rabi_ef")
|
@@ -59,8 +59,9 @@ class PowerRabiEF(Experiment):
|
|
59
59
|
transmon: str
|
60
60
|
scales: list[float] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable | None = None
|
61
61
|
drive_waveform: Waveform
|
62
|
-
recycle_delay_ns: int =
|
63
|
-
shot_count: int =
|
62
|
+
recycle_delay_ns: int = 200_000
|
63
|
+
shot_count: int = 400
|
64
64
|
pulse_vp: float | None = None
|
65
65
|
measure_waveform: ConstantWaveform | None = None
|
66
66
|
run_mixer_calibration: bool = False
|
67
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,20 +11,19 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import Experiment
|
17
19
|
from .waveforms import ConstantWaveform
|
18
20
|
|
19
|
-
DEFAULT_RECYCLE_DELAY_NS = 10_000
|
20
|
-
DEFAULT_SHOT_COUNT = 400
|
21
|
-
|
22
21
|
|
23
22
|
class Ramsey(Experiment):
|
24
23
|
"""
|
25
24
|
Parameters for running a Ramsey experiment.
|
26
25
|
|
27
|
-
|
26
|
+
Attributes
|
28
27
|
----------
|
29
28
|
transmon : str
|
30
29
|
The reference for the transmon to target.
|
@@ -37,7 +36,7 @@ class Ramsey(Experiment):
|
|
37
36
|
virtual_detuning : float
|
38
37
|
The virtual detuning added between SX pulses, in Hz.
|
39
38
|
recycle_delay_ns : int, optional
|
40
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
39
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
41
40
|
shot_count : int, optional
|
42
41
|
The number of shots to take. Defaults to 400.
|
43
42
|
measure_waveform : ConstantWaveform or None, optional
|
@@ -45,6 +44,8 @@ class Ramsey(Experiment):
|
|
45
44
|
Defaults to the measurement defcal.
|
46
45
|
run_mixer_calibration: bool
|
47
46
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
47
|
+
update : "auto" or "off" or "prompt", optional
|
48
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
48
49
|
"""
|
49
50
|
|
50
51
|
_experiment_name: str = PrivateAttr("ramsey")
|
@@ -54,7 +55,8 @@ class Ramsey(Experiment):
|
|
54
55
|
max_delay_ns: int
|
55
56
|
delay_step_ns: int
|
56
57
|
virtual_detuning: float
|
57
|
-
recycle_delay_ns: int =
|
58
|
-
shot_count: int =
|
58
|
+
recycle_delay_ns: int = 200_000
|
59
|
+
shot_count: int = 400
|
59
60
|
measure_waveform: ConstantWaveform | None = None
|
60
61
|
run_mixer_calibration: bool = False
|
62
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import Experiment
|
@@ -21,12 +23,12 @@ class ReadoutClassifierCalibration(Experiment):
|
|
21
23
|
"""
|
22
24
|
Parameters for running calibration of readout classifier for a transmon.
|
23
25
|
|
24
|
-
|
26
|
+
Attributes
|
25
27
|
----------
|
26
28
|
transmon : str
|
27
29
|
The reference for the transmon to target.
|
28
30
|
recycle_delay_ns : int
|
29
|
-
The delay between consecutive shots, in nanoseconds.
|
31
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
30
32
|
shot_count : int, optional
|
31
33
|
The number of shots to take. Defaults to 5,000.
|
32
34
|
measure_waveform : ConstantWaveform or None, optional
|
@@ -34,11 +36,15 @@ class ReadoutClassifierCalibration(Experiment):
|
|
34
36
|
Defaults to the measurement defcal.
|
35
37
|
run_mixer_calibration: bool
|
36
38
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
39
|
+
update : "auto" or "off" or "prompt", optional
|
40
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
37
41
|
"""
|
38
42
|
|
39
43
|
_experiment_name: str = PrivateAttr("readout_classifier_calibration")
|
44
|
+
|
40
45
|
transmon: str
|
41
|
-
recycle_delay_ns: int
|
46
|
+
recycle_delay_ns: int = 200_000
|
42
47
|
shot_count: int = 5000
|
43
48
|
measure_waveform: ConstantWaveform | None = None
|
44
49
|
run_mixer_calibration: bool = False
|
50
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -22,19 +24,16 @@ from .common import (
|
|
22
24
|
)
|
23
25
|
from .waveforms import ConstantWaveform
|
24
26
|
|
25
|
-
DEFAULT_RECYCLE_DELAY_NS = 1000 # ns
|
26
|
-
DEFAULT_SHOT_COUNT = 100
|
27
|
-
|
28
27
|
|
29
28
|
class ResonatorSpectroscopy(Experiment):
|
30
29
|
"""
|
31
30
|
Parameters for running a resonator spectroscopy experiment.
|
32
31
|
|
33
|
-
|
32
|
+
Attributes
|
34
33
|
----------
|
35
34
|
resonator : str
|
36
35
|
The reference for the resonator to target.
|
37
|
-
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable
|
36
|
+
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
38
37
|
or HypIterable or None, optional
|
39
38
|
The frequencies at which to scan, in Hz.
|
40
39
|
Defaults to a scan around the readout frequency.
|
@@ -47,6 +46,8 @@ class ResonatorSpectroscopy(Experiment):
|
|
47
46
|
Defaults to the measurement defcal.
|
48
47
|
run_mixer_calibration: bool
|
49
48
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
49
|
+
update : "auto" or "off" or "prompt", optional
|
50
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
50
51
|
"""
|
51
52
|
|
52
53
|
_experiment_name: str = PrivateAttr("resonator_spectroscopy")
|
@@ -55,7 +56,8 @@ class ResonatorSpectroscopy(Experiment):
|
|
55
56
|
frequencies: list[int] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable | None = (
|
56
57
|
None
|
57
58
|
)
|
58
|
-
recycle_delay_ns: int =
|
59
|
-
shot_count: int =
|
59
|
+
recycle_delay_ns: int = 1_000
|
60
|
+
shot_count: int = 100
|
60
61
|
measure_waveform: ConstantWaveform | None = None
|
61
62
|
run_mixer_calibration: bool = False
|
63
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -22,8 +24,6 @@ from .common import (
|
|
22
24
|
)
|
23
25
|
from .waveforms import ConstantWaveform
|
24
26
|
|
25
|
-
DEFAULT_SHOT_COUNT = 100
|
26
|
-
DEFAULT_RECYCLE_DELAY_NS = 10_000
|
27
27
|
DEFAULT_BIASES = LinspaceIterable(start=-0.49, stop=0.49, count=21)
|
28
28
|
|
29
29
|
|
@@ -31,23 +31,23 @@ class ResonatorSpectroscopyByBias(Experiment):
|
|
31
31
|
"""
|
32
32
|
Parameters for running a resonator spectroscopy by power experiment.
|
33
33
|
|
34
|
-
|
34
|
+
Attributes
|
35
35
|
----------
|
36
36
|
resonator : str
|
37
37
|
The reference for the resonator to target.
|
38
38
|
bias_transmons : list[str] or None, optional
|
39
39
|
The references for the transmons to bias.
|
40
40
|
Defaults to transmon coupled to the resonator.
|
41
|
-
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable
|
41
|
+
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
42
42
|
or HypIterable or None, optional
|
43
43
|
The frequencies at which to scan, in Hz.
|
44
44
|
Defaults to a scan around the readout frequency.
|
45
|
-
biases : list[int] or LinspaceIterable or RangeIterable or CWSIterable
|
45
|
+
biases : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
46
46
|
or HypIterable, optional
|
47
47
|
The biases at which to scan, in Volts.
|
48
48
|
Defaults to 21 points between -0.49 and 0.49.
|
49
49
|
recycle_delay_ns : int, optional
|
50
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
50
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 1,000 ns.
|
51
51
|
shot_count : int, optional
|
52
52
|
The number of shots to take. Defaults to 100.
|
53
53
|
measure_waveform : ConstantWaveform or None, optional
|
@@ -55,6 +55,8 @@ class ResonatorSpectroscopyByBias(Experiment):
|
|
55
55
|
Defaults to the measurement defcal.
|
56
56
|
run_mixer_calibration: bool
|
57
57
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
58
|
+
update : "auto" or "off" or "prompt", optional
|
59
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
58
60
|
"""
|
59
61
|
|
60
62
|
_experiment_name: str = PrivateAttr("resonator_spectroscopy_by_bias")
|
@@ -67,7 +69,8 @@ class ResonatorSpectroscopyByBias(Experiment):
|
|
67
69
|
biases: list[float] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable = (
|
68
70
|
DEFAULT_BIASES
|
69
71
|
)
|
70
|
-
recycle_delay_ns: int =
|
71
|
-
shot_count: int =
|
72
|
+
recycle_delay_ns: int = 1_000
|
73
|
+
shot_count: int = 100
|
72
74
|
measure_waveform: ConstantWaveform | None = None
|
73
75
|
run_mixer_calibration: bool = False
|
76
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -21,20 +23,16 @@ from .common import (
|
|
21
23
|
RangeIterable,
|
22
24
|
)
|
23
25
|
|
24
|
-
DEFAULT_DURATION_NS = 2000 # ns
|
25
|
-
DEFAULT_RECYCLE_DELAY_NS = 1000 # ns
|
26
|
-
DEFAULT_SHOT_COUNT = 100
|
27
|
-
|
28
26
|
|
29
27
|
class ResonatorSpectroscopyByPower(Experiment):
|
30
28
|
"""
|
31
29
|
Parameters for running a resonator spectroscopy by power experiment.
|
32
30
|
|
33
|
-
|
31
|
+
Attributes
|
34
32
|
----------
|
35
33
|
resonator : str
|
36
34
|
The reference for the resonator to target.
|
37
|
-
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable
|
35
|
+
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
38
36
|
or HypIterable or None, optional
|
39
37
|
The frequencies at which to scan, in Hz.
|
40
38
|
Defaults to a scan around the readout frequency.
|
@@ -49,6 +47,8 @@ class ResonatorSpectroscopyByPower(Experiment):
|
|
49
47
|
The number of shots to take. Defaults to 100.
|
50
48
|
run_mixer_calibration: bool
|
51
49
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
50
|
+
update : "auto" or "off" or "prompt", optional
|
51
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
52
52
|
"""
|
53
53
|
|
54
54
|
_experiment_name: str = PrivateAttr("resonator_spectroscopy_by_power")
|
@@ -58,7 +58,8 @@ class ResonatorSpectroscopyByPower(Experiment):
|
|
58
58
|
None
|
59
59
|
)
|
60
60
|
powers_dbm: list[float] | None = None
|
61
|
-
duration_ns: int =
|
62
|
-
recycle_delay_ns: int =
|
63
|
-
shot_count: int =
|
61
|
+
duration_ns: int = 2_000
|
62
|
+
recycle_delay_ns: int = 1_000
|
63
|
+
shot_count: int = 100
|
64
64
|
run_mixer_calibration: bool = False
|
65
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,19 +11,18 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import Experiment, LogspaceIterable
|
17
19
|
|
18
|
-
DEFAULT_RECYCLE_DELAY_NS = 200_000
|
19
|
-
DEFAULT_SHOT_COUNT = 400
|
20
|
-
|
21
20
|
|
22
21
|
class T1(Experiment):
|
23
22
|
"""
|
24
23
|
Parameters for running a T1 experiment.
|
25
24
|
|
26
|
-
|
25
|
+
Attributes
|
27
26
|
----------
|
28
27
|
transmon : str
|
29
28
|
The reference for the transmon to target.
|
@@ -35,12 +34,15 @@ class T1(Experiment):
|
|
35
34
|
The number of shots to take. Defaults to 400.
|
36
35
|
run_mixer_calibration: bool
|
37
36
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
37
|
+
update : "auto" or "off" or "prompt", optional
|
38
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
38
39
|
"""
|
39
40
|
|
40
41
|
_experiment_name: str = PrivateAttr("t1")
|
41
42
|
|
42
43
|
transmon: str
|
43
44
|
delays_ns: LogspaceIterable
|
44
|
-
recycle_delay_ns: int =
|
45
|
-
shot_count: int =
|
45
|
+
recycle_delay_ns: int = 200_000
|
46
|
+
shot_count: int = 400
|
46
47
|
run_mixer_calibration: bool = False
|
48
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,17 +11,16 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import Experiment, RangeIterable
|
17
19
|
|
18
|
-
DEFAULT_RECYCLE_DELAY_NS = 100_000
|
19
|
-
DEFAULT_SHOT_COUNT = 400
|
20
|
-
|
21
20
|
|
22
21
|
class T2(Experiment):
|
23
22
|
"""
|
24
|
-
Parameters for running a
|
23
|
+
Parameters for running a T2 experiment.
|
25
24
|
|
26
25
|
Parameters
|
27
26
|
----------
|
@@ -29,21 +28,24 @@ class T2(Experiment):
|
|
29
28
|
The reference for the transmon to target.
|
30
29
|
delays_ns : list[int] or RangeIterable
|
31
30
|
The delay times, in nanoseconds.
|
32
|
-
|
33
|
-
The
|
31
|
+
oscillation_count : int, optional
|
32
|
+
The target number of oscillations to expect. Defaults to 10.
|
34
33
|
recycle_delay_ns : int, optional
|
35
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
34
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
36
35
|
shot_count : int, optional
|
37
36
|
The number of shots to take. Defaults to 400.
|
38
37
|
run_mixer_calibration: bool
|
39
38
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
39
|
+
update : "auto" or "off" or "prompt", optional
|
40
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
40
41
|
"""
|
41
42
|
|
42
43
|
_experiment_name: str = PrivateAttr("t2")
|
43
44
|
|
44
45
|
transmon: str
|
45
46
|
delays_ns: list[int] | RangeIterable
|
46
|
-
|
47
|
-
recycle_delay_ns: int =
|
48
|
-
shot_count: int =
|
47
|
+
oscillation_count: int = 10
|
48
|
+
recycle_delay_ns: int = 200_000
|
49
|
+
shot_count: int = 400
|
49
50
|
run_mixer_calibration: bool = False
|
51
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,39 +11,41 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import Experiment, RangeIterable
|
17
19
|
|
18
|
-
DEFAULT_RECYCLE_DELAY_NS = 100_000
|
19
|
-
DEFAULT_SHOT_COUNT = 400
|
20
|
-
|
21
20
|
|
22
21
|
class T2Echo(Experiment):
|
23
22
|
"""
|
24
23
|
Parameters for running a T2 echo experiment.
|
25
24
|
|
26
|
-
|
25
|
+
Attributes
|
27
26
|
----------
|
28
27
|
transmon : str
|
29
28
|
The reference for the transmon to target.
|
30
29
|
delays_ns : list[int] or RangeIterable
|
31
30
|
The delay times, in nanoseconds.
|
32
|
-
|
33
|
-
The
|
31
|
+
oscillation_count : int, optional
|
32
|
+
The target number of oscillations to expect. Defaults to 10.
|
34
33
|
recycle_delay_ns : int, optional
|
35
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
34
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 200,000 ns.
|
36
35
|
shot_count : int, optional
|
37
36
|
The number of shots to take. Defaults to 400.
|
38
37
|
run_mixer_calibration: bool
|
39
38
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
39
|
+
update : "auto" or "off" or "prompt", optional
|
40
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
40
41
|
"""
|
41
42
|
|
42
43
|
_experiment_name: str = PrivateAttr("t2_echo")
|
43
44
|
|
44
45
|
transmon: str
|
45
46
|
delays_ns: list[int] | RangeIterable
|
46
|
-
|
47
|
-
recycle_delay_ns: int =
|
48
|
-
shot_count: int =
|
47
|
+
oscillation_count: int = 10
|
48
|
+
recycle_delay_ns: int = 200_000
|
49
|
+
shot_count: int = 400
|
49
50
|
run_mixer_calibration: bool = False
|
51
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -11,6 +11,8 @@
|
|
11
11
|
# distributed under the License is distributed on an "AS IS" BASIS. See the
|
12
12
|
# License for the specific language.
|
13
13
|
|
14
|
+
from typing import Literal
|
15
|
+
|
14
16
|
from pydantic import PrivateAttr
|
15
17
|
|
16
18
|
from .common import (
|
@@ -23,19 +25,17 @@ from .common import (
|
|
23
25
|
from .waveforms import ConstantWaveform
|
24
26
|
|
25
27
|
DEFAULT_RECYCLE_DELAY_NS = 1_000 # ns
|
26
|
-
DEFAULT_SHOT_COUNT = 100
|
27
|
-
DEFAULT_ANHARMONICITY_GUESS = -200e6 # Hz, typical anharmonicity for transmons
|
28
28
|
|
29
29
|
|
30
30
|
class TransmonAnharmonicity(Experiment):
|
31
31
|
"""
|
32
|
-
Parameters for running a
|
32
|
+
Parameters for running a transmon anharmonicity experiment.
|
33
33
|
|
34
|
-
|
34
|
+
Attributes
|
35
35
|
----------
|
36
36
|
transmon : str
|
37
37
|
The reference for the transmon to target.
|
38
|
-
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable
|
38
|
+
frequencies : list[int] or LinspaceIterable or RangeIterable or CWSIterable \
|
39
39
|
or HypIterable or None, optional
|
40
40
|
The frequencies at which to scan, in Hz.
|
41
41
|
Defaults to a scan based on the transmon's frequency and anharmonicity.
|
@@ -43,9 +43,9 @@ class TransmonAnharmonicity(Experiment):
|
|
43
43
|
The guessed anharmonicity of the transmon, in Hz.
|
44
44
|
Used to determine the scan frequencies if not provided. Defaults to -200 MHz.
|
45
45
|
recycle_delay_ns : int, optional
|
46
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
46
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 10,000 ns.
|
47
47
|
shot_count : int, optional
|
48
|
-
The number of shots to take. Defaults to
|
48
|
+
The number of shots to take. Defaults to 400.
|
49
49
|
spectroscopy_waveform : ConstantWaveform or None, optional
|
50
50
|
The waveform to use in the spectroscopy pulse.
|
51
51
|
Defaults to a constant waveform with a duration of 2,000 ns
|
@@ -55,6 +55,8 @@ class TransmonAnharmonicity(Experiment):
|
|
55
55
|
Defaults to the measurement defcal.
|
56
56
|
run_mixer_calibration: bool
|
57
57
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
58
|
+
update : "auto" or "off" or "prompt", optional
|
59
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
58
60
|
"""
|
59
61
|
|
60
62
|
_experiment_name: str = PrivateAttr("transmon_anharmonicity")
|
@@ -63,9 +65,10 @@ class TransmonAnharmonicity(Experiment):
|
|
63
65
|
frequencies: list[int] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable | None = (
|
64
66
|
None
|
65
67
|
)
|
66
|
-
anharmonicity: float =
|
67
|
-
recycle_delay_ns: int =
|
68
|
-
shot_count: int =
|
68
|
+
anharmonicity: float = -200e6
|
69
|
+
recycle_delay_ns: int = 10_000
|
70
|
+
shot_count: int = 400
|
69
71
|
spectroscopy_waveform: ConstantWaveform | None = None
|
70
72
|
measure_waveform: ConstantWaveform | None = None
|
71
73
|
run_mixer_calibration: bool = False
|
74
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|