|
17 | 17 | from .quantum import QuOperator, identity |
18 | 18 | from .simplify import _full_light_cone_cancel |
19 | 19 | from .basecircuit import BaseCircuit |
| 20 | +from .pulse import DefcalBuilder, Param, Frame |
20 | 21 |
|
21 | 22 | Gate = gates.Gate |
22 | 23 | Tensor = Any |
@@ -128,7 +129,7 @@ def def_calibration( |
128 | 129 | }) |
129 | 130 |
|
130 | 131 | def add_calibration( |
131 | | - self, builder: "DefcalBuilder", parameters: List[str] |
| 132 | + self, builder: DefcalBuilder, parameters: List[str] |
132 | 133 | ) -> None: |
133 | 134 | self.calibration_invokes.append({ |
134 | 135 | "name": builder.name, |
@@ -1084,51 +1085,3 @@ def expectation( |
1084 | 1085 | else: |
1085 | 1086 | den = 1.0 |
1086 | 1087 | return num / den |
1087 | | - |
1088 | | -class Param: |
1089 | | - def __init__(self, name: str): |
1090 | | - self.name = name |
1091 | | - |
1092 | | -class Frame: |
1093 | | - def __init__(self, name: str): |
1094 | | - self.name = name |
1095 | | - |
1096 | | -class DefcalBuilder: |
1097 | | - def __init__(self, circuit, name: str, parameters: List["Param"]): |
1098 | | - self.circuit = circuit |
1099 | | - self.name = name |
1100 | | - self.parameters = parameters |
1101 | | - self.instructions = [] |
1102 | | - |
1103 | | - def new_frame(self, frame_name: str, param: "Param"): |
1104 | | - frame = Frame(frame_name) |
1105 | | - self.instructions.append({ |
1106 | | - "type": "frame", |
1107 | | - "frame": frame, |
1108 | | - "qubit": param.name, |
1109 | | - }) |
1110 | | - return frame |
1111 | | - |
1112 | | - def play(self, frame: Frame, waveform: Any, start_time: int = None): |
1113 | | - if not hasattr(waveform, "__dataclass_fields__"): |
1114 | | - raise TypeError("Unsupported waveform type") |
1115 | | - |
1116 | | - waveform_type = waveform.qasm_name() |
1117 | | - args = waveform.to_args() |
1118 | | - if start_time is not None: |
1119 | | - args = [start_time] + args |
1120 | | - |
1121 | | - self.instructions.append({ |
1122 | | - "type": "play", |
1123 | | - "frame": frame.name, |
1124 | | - "waveform_type": waveform_type, |
1125 | | - "args": args, |
1126 | | - }) |
1127 | | - return self |
1128 | | - |
1129 | | - def build(self): |
1130 | | - self.circuit.def_calibration( |
1131 | | - name=self.name, |
1132 | | - parameters=[p.name for p in self.parameters], |
1133 | | - instructions=self.instructions, |
1134 | | - ) |
0 commit comments