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.
Files changed (39) hide show
  1. {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/METADATA +1 -1
  2. {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/RECORD +39 -33
  3. boulderopalscaleupsdk/agent/worker.py +23 -4
  4. boulderopalscaleupsdk/common/dtypes.py +20 -1
  5. boulderopalscaleupsdk/device/controller/qblox.py +94 -26
  6. boulderopalscaleupsdk/device/device.py +5 -1
  7. boulderopalscaleupsdk/device/processor/superconducting_processor.py +23 -3
  8. boulderopalscaleupsdk/experiments/__init__.py +8 -0
  9. boulderopalscaleupsdk/experiments/chi01_scan.py +9 -7
  10. boulderopalscaleupsdk/experiments/drag_leakage_calibration.py +66 -0
  11. boulderopalscaleupsdk/experiments/fine_amplitude_calibration.py +54 -0
  12. boulderopalscaleupsdk/experiments/power_rabi.py +10 -7
  13. boulderopalscaleupsdk/experiments/power_rabi_ef.py +10 -9
  14. boulderopalscaleupsdk/experiments/ramsey.py +9 -7
  15. boulderopalscaleupsdk/experiments/readout_classifier_calibration.py +9 -3
  16. boulderopalscaleupsdk/experiments/resonator_spectroscopy.py +9 -7
  17. boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_bias.py +11 -8
  18. boulderopalscaleupsdk/experiments/resonator_spectroscopy_by_power.py +10 -9
  19. boulderopalscaleupsdk/experiments/t1.py +8 -6
  20. boulderopalscaleupsdk/experiments/t2.py +12 -10
  21. boulderopalscaleupsdk/experiments/t2_echo.py +12 -10
  22. boulderopalscaleupsdk/experiments/transmon_anharmonicity.py +13 -10
  23. boulderopalscaleupsdk/experiments/transmon_spectroscopy.py +10 -8
  24. boulderopalscaleupsdk/experiments/voltage_bias_fine_tune.py +58 -0
  25. boulderopalscaleupsdk/experiments/zz_ramsey.py +59 -0
  26. boulderopalscaleupsdk/plotting/dtypes.py +5 -3
  27. boulderopalscaleupsdk/protobuf/v1/agent_pb2.py +9 -3
  28. boulderopalscaleupsdk/protobuf/v1/agent_pb2.pyi +14 -0
  29. boulderopalscaleupsdk/protobuf/v1/agent_pb2_grpc.py +34 -0
  30. boulderopalscaleupsdk/protobuf/v1/device_pb2.py +32 -32
  31. boulderopalscaleupsdk/protobuf/v1/device_pb2.pyi +4 -2
  32. boulderopalscaleupsdk/routines/__init__.py +10 -1
  33. boulderopalscaleupsdk/routines/one_qubit_calibration.py +36 -0
  34. boulderopalscaleupsdk/routines/resonator_mapping.py +1 -1
  35. boulderopalscaleupsdk/routines/transmon_coherence.py +34 -0
  36. boulderopalscaleupsdk/routines/transmon_discovery.py +5 -9
  37. boulderopalscaleupsdk/routines/transmon_retuning.py +13 -3
  38. {boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/LICENSE +0 -0
  39. {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
- Parameters
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 = DEFAULT_SHOT_COUNT
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
- Parameters
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 = DEFAULT_RECYCLE_DELAY_NS
63
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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 10,000 ns.
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 = DEFAULT_RECYCLE_DELAY_NS
58
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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
- Parameters
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 = DEFAULT_RECYCLE_DELAY_NS
59
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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 10,000 ns.
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 = DEFAULT_RECYCLE_DELAY_NS
71
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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 = DEFAULT_DURATION_NS
62
- recycle_delay_ns: int = DEFAULT_RECYCLE_DELAY_NS
63
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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 = DEFAULT_RECYCLE_DELAY_NS
45
- shot_count: int = DEFAULT_SHOT_COUNT
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 Ramsey experiment.
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
- virtual_detuning : float
33
- The virtual detuning added between SX pulses, in Hz.
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 100,000 ns.
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
- virtual_detuning: float
47
- recycle_delay_ns: int = DEFAULT_RECYCLE_DELAY_NS
48
- shot_count: int = DEFAULT_SHOT_COUNT
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
- Parameters
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
- virtual_detuning : float
33
- The virtual detuning added between SX pulses, in Hz.
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 100,000 ns.
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
- virtual_detuning: float
47
- recycle_delay_ns: int = DEFAULT_RECYCLE_DELAY_NS
48
- shot_count: int = DEFAULT_SHOT_COUNT
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 Qubit Anharmonicity experiment.
32
+ Parameters for running a transmon anharmonicity experiment.
33
33
 
34
- Parameters
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 1,000 ns.
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 100.
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 = DEFAULT_ANHARMONICITY_GUESS
67
- recycle_delay_ns: int = DEFAULT_RECYCLE_DELAY_NS
68
- shot_count: int = DEFAULT_SHOT_COUNT
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"