Source code for braket.device_schema.pulse.native_gate_calibrations_v1

from typing import Any, Dict, List, Optional, Tuple, Union

from pydantic.v1 import BaseModel, Field

from braket.schema_common import BraketSchemaBase, BraketSchemaHeader


[docs] class InstructionArgument(BaseModel): """ Defines an Instruction argument Attributes: name: The argument name value: The value of the argument type: The string name of the argument's value type optional: The boolean to represent if argument is optional or not """ name: str value: Any type: str optional: bool = False
[docs] class Instruction(BaseModel): """ Defines a Native Gate Calibration Instruction Attributes: instructionName: The name of the instruction arguments: List of instruction's argument """ name: str arguments: Optional[List[InstructionArgument]]
[docs] class PulseFunctionArgument(BaseModel): """ Defines a pulse function argument Attributes: name: The argument name value: The value of the argument type: The string name of the argument's value type optional: The boolean to represent if argumenet is optional or not """ name: str value: Any type: str optional: bool = False
[docs] class PulseFunction(BaseModel): """ Defines a pulse function used in native gate calibrations Attributes: name: The name of the pulse function arguments: List of the pulse function's arguments """ name: str arguments: List[PulseFunctionArgument]
[docs] class NativeGate(BaseModel): """ Defines a native gate Attributes: name: The name of the native gate qubits: The name of qubits that the gate acts on arguments: The list of the native gate's argument calibrations: List of instructions/pulse functions """ name: str qubits: List[str] arguments: List[str] calibrations: List[Union[Instruction, PulseFunction]]
[docs] class TemplateWaveformArgument(BaseModel): """ Defines a template waveform's argument Attributes: name: The name of the template waveform's argument value: The value of the argument type: The string name of the argument's value type optional: The boolean to represent if argumenet is optional or not """ name: str value: Any type: str optional: bool = False
[docs] class Waveform(BaseModel): """ Defines the base type for waveforms Attributes: waveformId: Id to uniquely identify waveforms """ waveformId: str
[docs] class TemplateWaveform(Waveform): """ Defines a template waveform Attributes: name: The name of the template waveform arguments: List of waveform's arguments """ name: str arguments: List[TemplateWaveformArgument]
[docs] class ArbitraryWaveform(Waveform): """ Defines a arbitrary waveform Attributes: waveformId: The unique identifier for the waveform amplitudes: List of Tuple containg two floats to denote the real and imaginary part of a complex number """ amplitudes: List[Tuple[float, float]]
[docs] class NativeGateCalibrations(BraketSchemaBase): """ Defines the structure of how native gates will be represented Attributes: gates: Nested dictionary with an outer and inner key. Outer key will be the qubit and inner key will be the gate name. waveforms: Dictionary that holds waveform ID as the key and waveform as the value Examples: >>> input_json = { ... "braketSchemaHeader": { ... "name": "braket.device_schema.pulse.native_gate_calibrations", ... "version": "1", ... }, ... "gates": ... { ... "0": { ... "rx": [{"name": "rx", "qubits": ["0"], "arguments": ["-1.5707963267948966"], "calibrations": [ ... {"name": "barrier", "arguments": [{"name": "qubit", "value": "0", "type": "string"}]}, ... {"name": "play", "arguments": [{"name": "frame", "value": "q0_rf_frame", "type": "frame"}, ... {"name": "waveform", "value": "wf_drag_gaussian_0", "type": "waveform"}]}, ... {"name": "barrier", "arguments": [{"name": "qubit", "value": "0", "type": "string"}] ... }, ... . ... . ... }, ... . ... . ... . ... }, ... "waveforms": { ... "q0_q1_cz_CZ": {"waveformId": "q0_q1_cz_CZ", "amplitudes": [[0.0, 0.0], [0.0, 0.0], ...]}, ... "wf_drag_gaussian_0": {"waveformId": "wf_drag_gaussian_0", "name": "drag_gaussian" , "arguments": [ ... {"name": "length", "value": 6.000000000000001e-08, "type": "float"}, ... {"name": "sigma", "value": 6.369913502160144e-09, "type": "float"}, ... {"name": "amplitude", "value": -0.4549282253548838, "type": "float"}, ... {"name": "beta", "value": 7.494904522022295e-10, "type": "float"}]} ... . ... . ... . ... } ... } >>> NativeGateCalibrations.parse_raw_schema(json.dumps(input_json)) """ # noqa: E501 _PROGRAM_HEADER = BraketSchemaHeader( name="braket.device_schema.pulse.native_gate_calibrations", version="1" ) braketSchemaHeader: BraketSchemaHeader = Field(default=_PROGRAM_HEADER, const=_PROGRAM_HEADER) gates: Dict[str, Dict[str, List[NativeGate]]] waveforms: Dict[str, Union[TemplateWaveform, ArbitraryWaveform]]