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
@@ -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,24 +24,21 @@ 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 TransmonSpectroscopy(Experiment):
|
30
29
|
"""
|
31
30
|
Parameters for running a transmon spectroscopy experiment.
|
32
31
|
|
33
|
-
|
32
|
+
Attributes
|
34
33
|
----------
|
35
34
|
transmon : str
|
36
35
|
The reference for the transmon 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
|
Default to a scan around the transmon frequency.
|
41
40
|
recycle_delay_ns : int, optional
|
42
|
-
The delay between consecutive shots, in nanoseconds. Defaults to
|
41
|
+
The delay between consecutive shots, in nanoseconds. Defaults to 50,000 ns.
|
43
42
|
shot_count : int, optional
|
44
43
|
The number of shots to take. Defaults to 100.
|
45
44
|
spectroscopy_waveform : ConstantWaveform
|
@@ -49,6 +48,8 @@ class TransmonSpectroscopy(Experiment):
|
|
49
48
|
Defaults to the measurement defcal.
|
50
49
|
run_mixer_calibration: bool
|
51
50
|
Whether to run mixer calibrations before running a program. Defaults to False.
|
51
|
+
update : "auto" or "off" or "prompt", optional
|
52
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
52
53
|
"""
|
53
54
|
|
54
55
|
_experiment_name: str = PrivateAttr("transmon_spectroscopy")
|
@@ -57,8 +58,9 @@ class TransmonSpectroscopy(Experiment):
|
|
57
58
|
frequencies: list[int] | LinspaceIterable | RangeIterable | CWSIterable | HypIterable | None = (
|
58
59
|
None
|
59
60
|
)
|
60
|
-
recycle_delay_ns: int =
|
61
|
-
shot_count: int =
|
61
|
+
recycle_delay_ns: int = 50_000
|
62
|
+
shot_count: int = 400
|
62
63
|
spectroscopy_waveform: ConstantWaveform
|
63
64
|
measure_waveform: ConstantWaveform | None = None
|
64
65
|
run_mixer_calibration: bool = False
|
66
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -0,0 +1,58 @@
|
|
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 PrivateAttr
|
17
|
+
|
18
|
+
from .common import Experiment, RangeIterable
|
19
|
+
|
20
|
+
|
21
|
+
class VoltageBiasFineTune(Experiment):
|
22
|
+
"""
|
23
|
+
Parameters for running voltage bias fine-tune experiment.
|
24
|
+
|
25
|
+
Attributes
|
26
|
+
----------
|
27
|
+
transmon : str
|
28
|
+
The reference for the transmon to XY drive in the experiment.
|
29
|
+
delays_ns : list[int] or RangeIterable
|
30
|
+
The delay times, in nanoseconds.
|
31
|
+
flux_count : int
|
32
|
+
Number of flux bias points to sample around the current bias offset.
|
33
|
+
flux_delta : float
|
34
|
+
Flux difference between flux points, in units of the voltage period.
|
35
|
+
virtual_detuning : float
|
36
|
+
The difference between the drive signal frequency and the qubit frequency, in Hz.
|
37
|
+
bias_transmon : str or None, optional
|
38
|
+
The reference for the transmon to flux tune in the experiment.
|
39
|
+
Defaults to transmon.
|
40
|
+
recycle_delay_ns : int, optional
|
41
|
+
The delay time between consecutive shots of the experiment, in nanoseconds.
|
42
|
+
Defaults to 100_000 ns.
|
43
|
+
shot_count : int, optional
|
44
|
+
The number of shots to be taken in the experiment.
|
45
|
+
Defaults to 400.
|
46
|
+
"""
|
47
|
+
|
48
|
+
_experiment_name: str = PrivateAttr("voltage_bias_fine_tune")
|
49
|
+
|
50
|
+
transmon: str
|
51
|
+
delays_ns: list[int] | RangeIterable
|
52
|
+
flux_count: int
|
53
|
+
flux_delta: float
|
54
|
+
virtual_detuning: float
|
55
|
+
bias_transmon: str | None = None
|
56
|
+
recycle_delay_ns: int = 100_000
|
57
|
+
shot_count: int = 400
|
58
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -0,0 +1,59 @@
|
|
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 PrivateAttr
|
17
|
+
|
18
|
+
from .common import Experiment
|
19
|
+
|
20
|
+
|
21
|
+
class ZZRamsey(Experiment):
|
22
|
+
"""
|
23
|
+
Parameters for running a ZZ Ramsey experiment.
|
24
|
+
|
25
|
+
Attributes
|
26
|
+
----------
|
27
|
+
control_transmon : str
|
28
|
+
The control transmon to target in the experiment.
|
29
|
+
target_transmon : str
|
30
|
+
The target transmon to pair with the control transmon.
|
31
|
+
max_delay_ns : int
|
32
|
+
The maximum delay time, in nanoseconds.
|
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.
|
37
|
+
virtual_detuning : float
|
38
|
+
The difference between the drive signal frequency and the qubit frequency, in Hz.
|
39
|
+
recycle_delay_ns : int, optional
|
40
|
+
The delay time between consecutive shots of the experiment, in nanoseconds.
|
41
|
+
Defaults to 10,000 ns.
|
42
|
+
shot_count : int, optional
|
43
|
+
The number of shots to be taken in the experiment.
|
44
|
+
Defaults to 400.
|
45
|
+
update : "auto" or "off" or "prompt", optional
|
46
|
+
How the device should be updated after an experiment run. Defaults to auto.
|
47
|
+
"""
|
48
|
+
|
49
|
+
_experiment_name: str = PrivateAttr("zz_ramsey")
|
50
|
+
|
51
|
+
control_transmon: str
|
52
|
+
target_transmon: str
|
53
|
+
max_delay_ns: int
|
54
|
+
min_delay_ns: int
|
55
|
+
delay_step_ns: int
|
56
|
+
virtual_detuning: float
|
57
|
+
recycle_delay_ns: int = 10_000
|
58
|
+
shot_count: int = 400
|
59
|
+
update: Literal["auto", "off", "prompt"] = "auto"
|
@@ -28,9 +28,8 @@ from pydantic.dataclasses import dataclass
|
|
28
28
|
|
29
29
|
def _array_validator(value: Any) -> np.ndarray:
|
30
30
|
if isinstance(value, dict):
|
31
|
-
|
32
|
-
|
33
|
-
)
|
31
|
+
shape = [int(s) for s in value["shape"]]
|
32
|
+
array = np.frombuffer(base64.b64decode(value["data"]), dtype=value["dtype"]).reshape(shape)
|
34
33
|
else:
|
35
34
|
array = np.asarray(value, order="C")
|
36
35
|
|
@@ -82,6 +81,7 @@ class PlotConfig(BaseModel):
|
|
82
81
|
x_ticks: Ticks | None = None
|
83
82
|
y_ticks: Ticks | None = None
|
84
83
|
|
84
|
+
axes_ratio: float | None = None
|
85
85
|
reverse_yaxis: bool = False
|
86
86
|
|
87
87
|
report: PlotReport | None = None
|
@@ -93,6 +93,7 @@ class PlotData1D:
|
|
93
93
|
y: _SerializableArray
|
94
94
|
|
95
95
|
style: Literal["dash", "solid", "scatter"]
|
96
|
+
color_index: int | None = None
|
96
97
|
|
97
98
|
x_error: _SerializableArray | None = None
|
98
99
|
y_error: _SerializableArray | None = None
|
@@ -167,6 +168,7 @@ class HistogramData:
|
|
167
168
|
data: _SerializableArray
|
168
169
|
label: str | None = None
|
169
170
|
opacity: float = 0.7
|
171
|
+
color_index: int | None = None
|
170
172
|
|
171
173
|
def __post_init__(self):
|
172
174
|
if self.data.ndim != 1:
|
@@ -17,7 +17,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
|
|
17
17
|
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
18
18
|
|
19
19
|
|
20
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-boulderopalscaleupsdk/protobuf/v1/agent.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x85\x01\n\x11RunProgramRequest\x12\'\n\x0f\x63ontroller_type\x18\x01 \x01(\tR\x0e\x63ontrollerType\x12\x18\n\x07program\x18\x02 \x01(\tR\x07program\x12-\n\x12\x63\x61librate_elements\x18\x03 \x03(\tR\x11\x63\x61librateElements\"H\n\x12RunProgramResponse\x12\x32\n\x08raw_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07rawData\"_\n)RunQuantumMachinesMixerCalibrationRequest\x12\x1a\n\x08\x65lements\x18\x01 \x03(\tR\x08\x65lements\x12\x16\n\x06\x63onfig\x18\x02 \x01(\tR\x06\x63onfig\"k\n*RunQuantumMachinesMixerCalibrationResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x19\n\x05\x65rror\x18\x02 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"G\n\x15\x44isplayResultsRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x14\n\x05plots\x18\x02 \x03(\tR\x05plots\"F\n\x16\x44isplayResultsResponse\x12,\n\x05\x65mpty\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyR\x05\
|
20
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-boulderopalscaleupsdk/protobuf/v1/agent.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\"\x85\x01\n\x11RunProgramRequest\x12\'\n\x0f\x63ontroller_type\x18\x01 \x01(\tR\x0e\x63ontrollerType\x12\x18\n\x07program\x18\x02 \x01(\tR\x07program\x12-\n\x12\x63\x61librate_elements\x18\x03 \x03(\tR\x11\x63\x61librateElements\"H\n\x12RunProgramResponse\x12\x32\n\x08raw_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07rawData\"_\n)RunQuantumMachinesMixerCalibrationRequest\x12\x1a\n\x08\x65lements\x18\x01 \x03(\tR\x08\x65lements\x12\x16\n\x06\x63onfig\x18\x02 \x01(\tR\x06\x63onfig\"k\n*RunQuantumMachinesMixerCalibrationResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\x12\x19\n\x05\x65rror\x18\x02 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error\"G\n\x15\x44isplayResultsRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x14\n\x05plots\x18\x02 \x03(\tR\x05plots\"F\n\x16\x44isplayResultsResponse\x12,\n\x05\x65mpty\x18\x01 \x01(\x0b\x32\x16.google.protobuf.EmptyR\x05\x65mpty\"\\\n\nAskRequest\x12\x18\n\x07message\x18\x01 \x01(\tR\x07message\x12\x34\n\x16\x65xpected_response_type\x18\x02 \x01(\tR\x14\x65xpectedResponseType\")\n\x0b\x41skResponse\x12\x1a\n\x08response\x18\x01 \x01(\tR\x08response2\xd0\x05\n\x0c\x41gentService\x12\x9b\x01\n\nRunProgram\x12\x34.boulderopalscaleupsdk.protobuf.v1.RunProgramRequest\x1a\x35.boulderopalscaleupsdk.protobuf.v1.RunProgramResponse\" \x82\xd3\xe4\x93\x02\x1a\"\x15/v1/agent/run_program:\x01*\x12\xf3\x01\n\"RunQuantumMachinesMixerCalibration\x12L.boulderopalscaleupsdk.protobuf.v1.RunQuantumMachinesMixerCalibrationRequest\x1aM.boulderopalscaleupsdk.protobuf.v1.RunQuantumMachinesMixerCalibrationResponse\"0\x82\xd3\xe4\x93\x02*\"%/v1/agent/run_qua_calibration_program:\x01*\x12\xab\x01\n\x0e\x44isplayResults\x12\x38.boulderopalscaleupsdk.protobuf.v1.DisplayResultsRequest\x1a\x39.boulderopalscaleupsdk.protobuf.v1.DisplayResultsResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/v1/agent/display_results:\x01*\x12~\n\x03\x41sk\x12-.boulderopalscaleupsdk.protobuf.v1.AskRequest\x1a..boulderopalscaleupsdk.protobuf.v1.AskResponse\"\x18\x82\xd3\xe4\x93\x02\x12\"\r/v1/agent/ask:\x01*B\xa9\x02\n%com.boulderopalscaleupsdk.protobuf.v1B\nAgentProtoP\x01ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\xa2\x02\x03\x42PX\xaa\x02!Boulderopalscaleupsdk.Protobuf.V1\xca\x02!Boulderopalscaleupsdk\\Protobuf\\V1\xe2\x02-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\xea\x02#Boulderopalscaleupsdk::Protobuf::V1b\x06proto3')
|
21
21
|
|
22
22
|
_globals = globals()
|
23
23
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -31,6 +31,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
31
31
|
_globals['_AGENTSERVICE'].methods_by_name['RunQuantumMachinesMixerCalibration']._serialized_options = b'\202\323\344\223\002*\"%/v1/agent/run_qua_calibration_program:\001*'
|
32
32
|
_globals['_AGENTSERVICE'].methods_by_name['DisplayResults']._loaded_options = None
|
33
33
|
_globals['_AGENTSERVICE'].methods_by_name['DisplayResults']._serialized_options = b'\202\323\344\223\002\036\"\031/v1/agent/display_results:\001*'
|
34
|
+
_globals['_AGENTSERVICE'].methods_by_name['Ask']._loaded_options = None
|
35
|
+
_globals['_AGENTSERVICE'].methods_by_name['Ask']._serialized_options = b'\202\323\344\223\002\022\"\r/v1/agent/ask:\001*'
|
34
36
|
_globals['_RUNPROGRAMREQUEST']._serialized_start=174
|
35
37
|
_globals['_RUNPROGRAMREQUEST']._serialized_end=307
|
36
38
|
_globals['_RUNPROGRAMRESPONSE']._serialized_start=309
|
@@ -43,6 +45,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
43
45
|
_globals['_DISPLAYRESULTSREQUEST']._serialized_end=660
|
44
46
|
_globals['_DISPLAYRESULTSRESPONSE']._serialized_start=662
|
45
47
|
_globals['_DISPLAYRESULTSRESPONSE']._serialized_end=732
|
46
|
-
_globals['
|
47
|
-
_globals['
|
48
|
+
_globals['_ASKREQUEST']._serialized_start=734
|
49
|
+
_globals['_ASKREQUEST']._serialized_end=826
|
50
|
+
_globals['_ASKRESPONSE']._serialized_start=828
|
51
|
+
_globals['_ASKRESPONSE']._serialized_end=869
|
52
|
+
_globals['_AGENTSERVICE']._serialized_start=872
|
53
|
+
_globals['_AGENTSERVICE']._serialized_end=1592
|
48
54
|
# @@protoc_insertion_point(module_scope)
|
@@ -53,3 +53,17 @@ class DisplayResultsResponse(_message.Message):
|
|
53
53
|
EMPTY_FIELD_NUMBER: _ClassVar[int]
|
54
54
|
empty: _empty_pb2.Empty
|
55
55
|
def __init__(self, empty: _Optional[_Union[_empty_pb2.Empty, _Mapping]] = ...) -> None: ...
|
56
|
+
|
57
|
+
class AskRequest(_message.Message):
|
58
|
+
__slots__ = ("message", "expected_response_type")
|
59
|
+
MESSAGE_FIELD_NUMBER: _ClassVar[int]
|
60
|
+
EXPECTED_RESPONSE_TYPE_FIELD_NUMBER: _ClassVar[int]
|
61
|
+
message: str
|
62
|
+
expected_response_type: str
|
63
|
+
def __init__(self, message: _Optional[str] = ..., expected_response_type: _Optional[str] = ...) -> None: ...
|
64
|
+
|
65
|
+
class AskResponse(_message.Message):
|
66
|
+
__slots__ = ("response",)
|
67
|
+
RESPONSE_FIELD_NUMBER: _ClassVar[int]
|
68
|
+
response: str
|
69
|
+
def __init__(self, response: _Optional[str] = ...) -> None: ...
|
@@ -30,6 +30,11 @@ class AgentServiceStub(object):
|
|
30
30
|
request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.DisplayResultsRequest.SerializeToString,
|
31
31
|
response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.DisplayResultsResponse.FromString,
|
32
32
|
)
|
33
|
+
self.Ask = channel.unary_unary(
|
34
|
+
'/boulderopalscaleupsdk.protobuf.v1.AgentService/Ask',
|
35
|
+
request_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskRequest.SerializeToString,
|
36
|
+
response_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskResponse.FromString,
|
37
|
+
)
|
33
38
|
|
34
39
|
|
35
40
|
class AgentServiceServicer(object):
|
@@ -57,6 +62,13 @@ class AgentServiceServicer(object):
|
|
57
62
|
context.set_details('Method not implemented!')
|
58
63
|
raise NotImplementedError('Method not implemented!')
|
59
64
|
|
65
|
+
def Ask(self, request, context):
|
66
|
+
"""Ask user for input.
|
67
|
+
"""
|
68
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
69
|
+
context.set_details('Method not implemented!')
|
70
|
+
raise NotImplementedError('Method not implemented!')
|
71
|
+
|
60
72
|
|
61
73
|
def add_AgentServiceServicer_to_server(servicer, server):
|
62
74
|
rpc_method_handlers = {
|
@@ -75,6 +87,11 @@ def add_AgentServiceServicer_to_server(servicer, server):
|
|
75
87
|
request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.DisplayResultsRequest.FromString,
|
76
88
|
response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.DisplayResultsResponse.SerializeToString,
|
77
89
|
),
|
90
|
+
'Ask': grpc.unary_unary_rpc_method_handler(
|
91
|
+
servicer.Ask,
|
92
|
+
request_deserializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskRequest.FromString,
|
93
|
+
response_serializer=boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskResponse.SerializeToString,
|
94
|
+
),
|
78
95
|
}
|
79
96
|
generic_handler = grpc.method_handlers_generic_handler(
|
80
97
|
'boulderopalscaleupsdk.protobuf.v1.AgentService', rpc_method_handlers)
|
@@ -136,3 +153,20 @@ class AgentService(object):
|
|
136
153
|
boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.DisplayResultsResponse.FromString,
|
137
154
|
options, channel_credentials,
|
138
155
|
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
156
|
+
|
157
|
+
@staticmethod
|
158
|
+
def Ask(request,
|
159
|
+
target,
|
160
|
+
options=(),
|
161
|
+
channel_credentials=None,
|
162
|
+
call_credentials=None,
|
163
|
+
insecure=False,
|
164
|
+
compression=None,
|
165
|
+
wait_for_ready=None,
|
166
|
+
timeout=None,
|
167
|
+
metadata=None):
|
168
|
+
return grpc.experimental.unary_unary(request, target, '/boulderopalscaleupsdk.protobuf.v1.AgentService/Ask',
|
169
|
+
boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskRequest.SerializeToString,
|
170
|
+
boulderopalscaleupsdk_dot_protobuf_dot_v1_dot_agent__pb2.AskResponse.FromString,
|
171
|
+
options, channel_credentials,
|
172
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
@@ -16,7 +16,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
|
|
16
16
|
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
17
17
|
|
18
18
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.boulderopalscaleupsdk/protobuf/v1/device.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\"-\n\x14GetJobSummaryRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"Z\n\x15GetJobSummaryResponse\x12\x41\n\x10job_summary_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0ejobSummaryData\"&\n\rGetJobRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"D\n\x0eGetJobResponse\x12\x32\n\x08job_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07jobData\"\x96\x01\n\x0fListJobsRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x19\n\x08job_name\x18\x02 \x01(\tR\x07jobName\x12\x12\n\x04page\x18\x03 \x01(\x05R\x04page\x12\x14\n\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x1d\n\nsort_order\x18\x05 \x01(\x05R\tsortOrder\"
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n.boulderopalscaleupsdk/protobuf/v1/device.proto\x12!boulderopalscaleupsdk.protobuf.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\"-\n\x14GetJobSummaryRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"Z\n\x15GetJobSummaryResponse\x12\x41\n\x10job_summary_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x0ejobSummaryData\"&\n\rGetJobRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"D\n\x0eGetJobResponse\x12\x32\n\x08job_data\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x07jobData\"\x96\x01\n\x0fListJobsRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\x12\x19\n\x08job_name\x18\x02 \x01(\tR\x07jobName\x12\x12\n\x04page\x18\x03 \x01(\x05R\x04page\x12\x14\n\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x1d\n\nsort_order\x18\x05 \x01(\x05R\tsortOrder\"`\n\x10ListJobsResponse\x12+\n\x04jobs\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\x04jobs\x12\x1f\n\x0btotal_pages\x18\x02 \x01(\x05R\ntotalPages\"\x85\x01\n\rCreateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12\x38\n\x0b\x64\x65vice_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\ndeviceData\"$\n\x0e\x43reateResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"]\n\x0b\x43opyRequest\x12(\n\x10\x66rom_device_name\x18\x01 \x01(\tR\x0e\x66romDeviceName\x12$\n\x0eto_device_name\x18\x02 \x01(\tR\x0ctoDeviceName\"\"\n\x0c\x43opyResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"L\n\x0eGetDataRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"\xc6\x01\n\x0fGetDataResponse\x12>\n\x0eprocessor_data\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\x12\x31\n\x07\x64\x65\x66\x63\x61ls\x18\x04 \x03(\x0b\x32\x17.google.protobuf.StructR\x07\x64\x65\x66\x63\x61ls\"\x8b\x01\n\rUpdateRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\"\x92\x01\n\x0eUpdateResponse\x12>\n\x0eprocessor_data\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\rprocessorData\x12@\n\x0f\x63ontroller_data\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x0e\x63ontrollerData\"K\n\rDeleteRequest\x12\x19\n\x08\x61pp_name\x18\x01 \x01(\tR\x07\x61ppName\x12\x1f\n\x0b\x64\x65vice_name\x18\x02 \x01(\tR\ndeviceName\"$\n\x0e\x44\x65leteResponse\x12\x12\n\x04\x64one\x18\x01 \x01(\x08R\x04\x64one\"5\n\x12GetMetadataRequest\x12\x1f\n\x0b\x64\x65vice_name\x18\x01 \x01(\tR\ndeviceName\"J\n\x13GetMetadataResponse\x12\x33\n\x08metadata\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\x1e\n\x1cGetAllDevicesMetadataRequest\"V\n\x1dGetAllDevicesMetadataResponse\x12\x35\n\tmetadatas\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\tmetadatas2\xb0\x0c\n\x14\x44\x65viceManagerService\x12\x8b\x01\n\x06\x43reate\x12\x30.boulderopalscaleupsdk.protobuf.v1.CreateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.CreateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/create:\x01*\x12\x83\x01\n\x04\x43opy\x12..boulderopalscaleupsdk.protobuf.v1.CopyRequest\x1a/.boulderopalscaleupsdk.protobuf.v1.CopyResponse\"\x1a\x82\xd3\xe4\x93\x02\x14\"\x0f/v1/device/copy:\x01*\x12\x97\x01\n\x07GetData\x12\x31.boulderopalscaleupsdk.protobuf.v1.GetDataRequest\x1a\x32.boulderopalscaleupsdk.protobuf.v1.GetDataResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1/device/get_device_data:\x01*\x12\x8b\x01\n\x06Update\x12\x30.boulderopalscaleupsdk.protobuf.v1.UpdateRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.UpdateResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/update:\x01*\x12\x8b\x01\n\x06\x44\x65lete\x12\x30.boulderopalscaleupsdk.protobuf.v1.DeleteRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.DeleteResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/device/delete:\x01*\x12\x94\x01\n\x08ListJobs\x12\x32.boulderopalscaleupsdk.protobuf.v1.ListJobsRequest\x1a\x33.boulderopalscaleupsdk.protobuf.v1.ListJobsResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x14/v1/device/list_jobs:\x01*\x12\x8c\x01\n\x06GetJob\x12\x30.boulderopalscaleupsdk.protobuf.v1.GetJobRequest\x1a\x31.boulderopalscaleupsdk.protobuf.v1.GetJobResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/device/get_job:\x01*\x12\xa9\x01\n\rGetJobSummary\x12\x37.boulderopalscaleupsdk.protobuf.v1.GetJobSummaryRequest\x1a\x38.boulderopalscaleupsdk.protobuf.v1.GetJobSummaryResponse\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/v1/device/get_job_summary:\x01*\x12\xa7\x01\n\x0bGetMetadata\x12\x35.boulderopalscaleupsdk.protobuf.v1.GetMetadataRequest\x1a\x36.boulderopalscaleupsdk.protobuf.v1.GetMetadataResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/device/get_device_metadata:\x01*\x12\xd1\x01\n\x15GetAllDevicesMetadata\x12?.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataRequest\x1a@.boulderopalscaleupsdk.protobuf.v1.GetAllDevicesMetadataResponse\"5\x82\xd3\xe4\x93\x02/\"*/v1/device/get_all_devices_metadata_by_org:\x01*B\xaa\x02\n%com.boulderopalscaleupsdk.protobuf.v1B\x0b\x44\x65viceProtoP\x01ZNgithub.com/qctrl/boulder-opal-scale-up/proto/boulderopalscaleupsdk/protobuf/v1\xa2\x02\x03\x42PX\xaa\x02!Boulderopalscaleupsdk.Protobuf.V1\xca\x02!Boulderopalscaleupsdk\\Protobuf\\V1\xe2\x02-Boulderopalscaleupsdk\\Protobuf\\V1\\GPBMetadata\xea\x02#Boulderopalscaleupsdk::Protobuf::V1b\x06proto3')
|
20
20
|
|
21
21
|
_globals = globals()
|
22
22
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
@@ -55,35 +55,35 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
55
55
|
_globals['_LISTJOBSREQUEST']._serialized_start=395
|
56
56
|
_globals['_LISTJOBSREQUEST']._serialized_end=545
|
57
57
|
_globals['_LISTJOBSRESPONSE']._serialized_start=547
|
58
|
-
_globals['_LISTJOBSRESPONSE']._serialized_end=
|
59
|
-
_globals['_CREATEREQUEST']._serialized_start=
|
60
|
-
_globals['_CREATEREQUEST']._serialized_end=
|
61
|
-
_globals['_CREATERESPONSE']._serialized_start=
|
62
|
-
_globals['_CREATERESPONSE']._serialized_end=
|
63
|
-
_globals['_COPYREQUEST']._serialized_start=
|
64
|
-
_globals['_COPYREQUEST']._serialized_end=
|
65
|
-
_globals['_COPYRESPONSE']._serialized_start=
|
66
|
-
_globals['_COPYRESPONSE']._serialized_end=
|
67
|
-
_globals['_GETDATAREQUEST']._serialized_start=
|
68
|
-
_globals['_GETDATAREQUEST']._serialized_end=
|
69
|
-
_globals['_GETDATARESPONSE']._serialized_start=
|
70
|
-
_globals['_GETDATARESPONSE']._serialized_end=
|
71
|
-
_globals['_UPDATEREQUEST']._serialized_start=
|
72
|
-
_globals['_UPDATEREQUEST']._serialized_end=
|
73
|
-
_globals['_UPDATERESPONSE']._serialized_start=
|
74
|
-
_globals['_UPDATERESPONSE']._serialized_end=
|
75
|
-
_globals['_DELETEREQUEST']._serialized_start=
|
76
|
-
_globals['_DELETEREQUEST']._serialized_end=
|
77
|
-
_globals['_DELETERESPONSE']._serialized_start=
|
78
|
-
_globals['_DELETERESPONSE']._serialized_end=
|
79
|
-
_globals['_GETMETADATAREQUEST']._serialized_start=
|
80
|
-
_globals['_GETMETADATAREQUEST']._serialized_end=
|
81
|
-
_globals['_GETMETADATARESPONSE']._serialized_start=
|
82
|
-
_globals['_GETMETADATARESPONSE']._serialized_end=
|
83
|
-
_globals['_GETALLDEVICESMETADATAREQUEST']._serialized_start=
|
84
|
-
_globals['_GETALLDEVICESMETADATAREQUEST']._serialized_end=
|
85
|
-
_globals['_GETALLDEVICESMETADATARESPONSE']._serialized_start=
|
86
|
-
_globals['_GETALLDEVICESMETADATARESPONSE']._serialized_end=
|
87
|
-
_globals['_DEVICEMANAGERSERVICE']._serialized_start=
|
88
|
-
_globals['_DEVICEMANAGERSERVICE']._serialized_end=
|
58
|
+
_globals['_LISTJOBSRESPONSE']._serialized_end=643
|
59
|
+
_globals['_CREATEREQUEST']._serialized_start=646
|
60
|
+
_globals['_CREATEREQUEST']._serialized_end=779
|
61
|
+
_globals['_CREATERESPONSE']._serialized_start=781
|
62
|
+
_globals['_CREATERESPONSE']._serialized_end=817
|
63
|
+
_globals['_COPYREQUEST']._serialized_start=819
|
64
|
+
_globals['_COPYREQUEST']._serialized_end=912
|
65
|
+
_globals['_COPYRESPONSE']._serialized_start=914
|
66
|
+
_globals['_COPYRESPONSE']._serialized_end=948
|
67
|
+
_globals['_GETDATAREQUEST']._serialized_start=950
|
68
|
+
_globals['_GETDATAREQUEST']._serialized_end=1026
|
69
|
+
_globals['_GETDATARESPONSE']._serialized_start=1029
|
70
|
+
_globals['_GETDATARESPONSE']._serialized_end=1227
|
71
|
+
_globals['_UPDATEREQUEST']._serialized_start=1230
|
72
|
+
_globals['_UPDATEREQUEST']._serialized_end=1369
|
73
|
+
_globals['_UPDATERESPONSE']._serialized_start=1372
|
74
|
+
_globals['_UPDATERESPONSE']._serialized_end=1518
|
75
|
+
_globals['_DELETEREQUEST']._serialized_start=1520
|
76
|
+
_globals['_DELETEREQUEST']._serialized_end=1595
|
77
|
+
_globals['_DELETERESPONSE']._serialized_start=1597
|
78
|
+
_globals['_DELETERESPONSE']._serialized_end=1633
|
79
|
+
_globals['_GETMETADATAREQUEST']._serialized_start=1635
|
80
|
+
_globals['_GETMETADATAREQUEST']._serialized_end=1688
|
81
|
+
_globals['_GETMETADATARESPONSE']._serialized_start=1690
|
82
|
+
_globals['_GETMETADATARESPONSE']._serialized_end=1764
|
83
|
+
_globals['_GETALLDEVICESMETADATAREQUEST']._serialized_start=1766
|
84
|
+
_globals['_GETALLDEVICESMETADATAREQUEST']._serialized_end=1796
|
85
|
+
_globals['_GETALLDEVICESMETADATARESPONSE']._serialized_start=1798
|
86
|
+
_globals['_GETALLDEVICESMETADATARESPONSE']._serialized_end=1884
|
87
|
+
_globals['_DEVICEMANAGERSERVICE']._serialized_start=1887
|
88
|
+
_globals['_DEVICEMANAGERSERVICE']._serialized_end=3471
|
89
89
|
# @@protoc_insertion_point(module_scope)
|
@@ -46,10 +46,12 @@ class ListJobsRequest(_message.Message):
|
|
46
46
|
def __init__(self, device_name: _Optional[str] = ..., job_name: _Optional[str] = ..., page: _Optional[int] = ..., limit: _Optional[int] = ..., sort_order: _Optional[int] = ...) -> None: ...
|
47
47
|
|
48
48
|
class ListJobsResponse(_message.Message):
|
49
|
-
__slots__ = ("jobs",)
|
49
|
+
__slots__ = ("jobs", "total_pages")
|
50
50
|
JOBS_FIELD_NUMBER: _ClassVar[int]
|
51
|
+
TOTAL_PAGES_FIELD_NUMBER: _ClassVar[int]
|
51
52
|
jobs: _containers.RepeatedCompositeFieldContainer[_struct_pb2.Struct]
|
52
|
-
|
53
|
+
total_pages: int
|
54
|
+
def __init__(self, jobs: _Optional[_Iterable[_Union[_struct_pb2.Struct, _Mapping]]] = ..., total_pages: _Optional[int] = ...) -> None: ...
|
53
55
|
|
54
56
|
class CreateRequest(_message.Message):
|
55
57
|
__slots__ = ("app_name", "device_name", "device_data")
|
@@ -13,9 +13,18 @@
|
|
13
13
|
|
14
14
|
"""Routine library."""
|
15
15
|
|
16
|
-
__all__ = [
|
16
|
+
__all__ = [
|
17
|
+
"OneQubitCalibration",
|
18
|
+
"ResonatorMapping",
|
19
|
+
"Routine",
|
20
|
+
"TransmonCoherence",
|
21
|
+
"TransmonDiscovery",
|
22
|
+
"TransmonRetuning",
|
23
|
+
]
|
17
24
|
|
18
25
|
from .common import Routine
|
26
|
+
from .one_qubit_calibration import OneQubitCalibration
|
19
27
|
from .resonator_mapping import ResonatorMapping
|
28
|
+
from .transmon_coherence import TransmonCoherence
|
20
29
|
from .transmon_discovery import TransmonDiscovery
|
21
30
|
from .transmon_retuning import TransmonRetuning
|
@@ -0,0 +1,36 @@
|
|
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 PrivateAttr
|
17
|
+
|
18
|
+
from .common import Routine
|
19
|
+
|
20
|
+
|
21
|
+
class OneQubitCalibration(Routine):
|
22
|
+
"""
|
23
|
+
Parameters for running one qubit calibration routine.
|
24
|
+
|
25
|
+
Attributes
|
26
|
+
----------
|
27
|
+
transmon : str
|
28
|
+
The reference for the transmon to target.
|
29
|
+
gate : "sx" or "x"
|
30
|
+
The gate to calibrate.
|
31
|
+
"""
|
32
|
+
|
33
|
+
_routine_name: str = PrivateAttr("one_qubit_calibration")
|
34
|
+
|
35
|
+
transmon: str
|
36
|
+
gate: Literal["x", "sx"]
|
@@ -0,0 +1,34 @@
|
|
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 pydantic import PrivateAttr
|
15
|
+
|
16
|
+
from .common import Routine
|
17
|
+
|
18
|
+
|
19
|
+
class TransmonCoherence(Routine):
|
20
|
+
"""
|
21
|
+
Parameters for running a transmon coherence routine.
|
22
|
+
|
23
|
+
Attributes
|
24
|
+
----------
|
25
|
+
transmon : str
|
26
|
+
The reference for the transmon to target.
|
27
|
+
run_mixer_calibration : bool, optional
|
28
|
+
Whether to run mixer calibrations before running each program. Defaults to False.
|
29
|
+
"""
|
30
|
+
|
31
|
+
_routine_name: str = PrivateAttr("transmon_coherence")
|
32
|
+
|
33
|
+
transmon: str
|
34
|
+
run_mixer_calibration: bool = False
|
@@ -22,24 +22,20 @@ class TransmonDiscovery(Routine):
|
|
22
22
|
"""
|
23
23
|
Parameters for running a transmon discovery routine.
|
24
24
|
|
25
|
-
|
25
|
+
Attributes
|
26
26
|
----------
|
27
27
|
transmon : str
|
28
28
|
The reference for the transmon to target.
|
29
|
-
recycle_delay_ns : int, optional
|
30
|
-
The delay between consecutive shots, in nanoseconds. Defaults to 100,000.
|
31
|
-
readout_waveform : ConstantWaveform or None, optional
|
32
|
-
The readout pulse used in transmon spectroscopy.
|
33
|
-
Defaults to a constant waveform with a duration of 10,000 ns
|
34
|
-
and an amplitude of 0.01.
|
35
29
|
spectroscopy_waveform : ConstantWaveform or None, optional
|
36
30
|
The drive pulse used during transmon spectroscopy and transmon anharmonicity.
|
37
31
|
Defaults to a 10,000 ns pulse whose amplitude is defined by the logic of the experiment.
|
32
|
+
force_rerun : bool, optional
|
33
|
+
Whether to rerun the entire routine regardless transmon's current calibration status.
|
34
|
+
Defaults to False.
|
38
35
|
"""
|
39
36
|
|
40
37
|
_routine_name: str = PrivateAttr("transmon_discovery")
|
41
38
|
|
42
39
|
transmon: str
|
43
|
-
recycle_delay_ns: int = 100_000
|
44
|
-
readout_waveform: ConstantWaveform | None = None
|
45
40
|
spectroscopy_waveform: ConstantWaveform | None = None
|
41
|
+
force_rerun: bool = False
|
@@ -11,21 +11,31 @@
|
|
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
|
-
|
15
14
|
from pydantic import PrivateAttr
|
16
15
|
|
17
|
-
from boulderopalscaleupsdk.
|
16
|
+
from boulderopalscaleupsdk.experiments import ConstantWaveform
|
17
|
+
|
18
|
+
from .common import Routine
|
18
19
|
|
19
20
|
|
20
21
|
class TransmonRetuning(Routine):
|
21
22
|
"""
|
22
23
|
Parameters for running a transmon retuning routine.
|
23
24
|
|
24
|
-
|
25
|
+
Attributes
|
25
26
|
----------
|
26
27
|
transmon : str
|
27
28
|
The reference for the transmon to target.
|
29
|
+
spectroscopy_waveform : ConstantWaveform or None, optional
|
30
|
+
The drive pulse used during transmon spectroscopy.
|
31
|
+
Defaults to a 10,000 ns pulse whose amplitude is defined by the logic of the experiment.
|
32
|
+
force_rerun : bool, optional
|
33
|
+
Whether to rerun the entire routine regardless transmon's current calibration status.
|
34
|
+
Defaults to False.
|
28
35
|
"""
|
29
36
|
|
30
37
|
_routine_name: str = PrivateAttr("transmon_retuning")
|
38
|
+
|
31
39
|
transmon: str
|
40
|
+
spectroscopy_waveform: ConstantWaveform | None = None
|
41
|
+
force_rerun: bool = False
|
{boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/LICENSE
RENAMED
File without changes
|
{boulder_opal_scale_up_sdk-1.0.4.dist-info → boulder_opal_scale_up_sdk-1.0.5.dist-info}/WHEEL
RENAMED
File without changes
|