class PulseHamiltonianSchema(BaseSchema): """Schema for PulseHamiltonian.""" # Required properties. h_str = fields.List(fields.String(), validate=Length(min=1), required=True) dim_osc = fields.List(fields.Integer(validate=Range(min=1)), required=True) dim_qub = fields.List(fields.Integer(validate=Range(min=2)), required=True) vars = fields.Dict(validate=PatternProperties( {Regexp('^([a-z0-9])+$'): fields.InstructionParameter()}), required=True)
class PulseDefaultsSchema(BaseSchema): """Schema for PulseDefaults.""" # Required properties. qubit_freq_est = fields.List(fields.Number(), required=True, validate=Length(min=1)) meas_freq_est = fields.List(fields.Number(), required=True, validate=Length(min=1)) buffer = fields.Integer(required=True, validate=Range(min=0)) pulse_library = fields.Nested(PulseLibraryItemSchema, required=True, many=True) cmd_def = fields.Nested(CommandSchema, many=True, required=True) # Optional properties. meas_kernel = fields.Nested(MeasurementKernelSchema) discriminator = fields.Nested(DiscriminatorSchema)
class GateConfigSchema(BaseSchema): """Schema for GateConfig.""" # Required properties. name = fields.String(required=True) parameters = fields.List(fields.String(), required=True) qasm_def = fields.String(required=True) # Optional properties. coupling_map = fields.List(fields.List(fields.Integer(), validate=Length(min=1)), validate=Length(min=1)) latency_map = fields.List(fields.List( fields.Integer(validate=OneOf([0, 1])), validate=Length(min=1)), validate=Length(min=1)) conditional = fields.Boolean() description = fields.String()
class CommandSchema(BaseSchema): """Schema for Command.""" # Required properties. name = fields.String(required=True) # Optional properties. qubits = fields.List(fields.Integer(validate=Range(min=0)), validate=Length(min=1)) sequence = fields.Nested(PulseQobjInstructionSchema, many=True)
class GateSchema(BaseSchema): """Schema for Gate.""" # Required properties. qubits = fields.List(fields.Integer(), required=True, validate=Length(min=1)) gate = fields.String(required=True) parameters = fields.Nested(NduvSchema, required=True, many=True, validate=Length(min=1))
class BackendConfigurationSchema(BaseSchema): """Schema for BackendConfiguration.""" # Required properties. backend_name = fields.String(required=True) backend_version = fields.String(required=True, validate=Regexp("[0-9]+.[0-9]+.[0-9]+$")) n_qubits = fields.Integer(required=True, validate=Range(min=1)) basis_gates = fields.List(fields.String(), required=True) gates = fields.Nested(GateConfigSchema, required=True, many=True) local = fields.Boolean(required=True) simulator = fields.Boolean(required=True) conditional = fields.Boolean(required=True) open_pulse = fields.Boolean(required=True) memory = fields.Boolean(required=True) max_shots = fields.Integer(required=True, validate=Range(min=1)) coupling_map = fields.List(fields.List(fields.Integer(), validate=Length(min=1)), validate=Length(min=1), allow_none=True, required=True) # Optional properties. max_experiments = fields.Integer(validate=Range(min=1)) sample_name = fields.String() n_registers = fields.Integer(validate=Range(min=1)) register_map = fields.List(fields.List( fields.Integer(validate=OneOf([0, 1])), validate=Length(min=1)), validate=Length(min=1)) configurable = fields.Boolean() credits_required = fields.Boolean() online_date = fields.DateTime() display_name = fields.String() description = fields.String() tags = fields.List(fields.String())
class BackendPropertiesSchema(BaseSchema): """Schema for BackendProperties.""" # Required properties. backend_name = fields.String(required=True) backend_version = fields.String(required=True, validate=Regexp("[0-9]+.[0-9]+.[0-9]+$")) last_update_date = fields.DateTime(required=True) qubits = fields.List(fields.Nested(NduvSchema, many=True, validate=Length(min=1)), required=True, validate=Length(min=1)) gates = fields.Nested(GateSchema, required=True, many=True, validate=Length(min=1)) general = fields.Nested(NduvSchema, required=True, many=True)
class PulseBackendConfigurationSchema(QasmBackendConfigurationSchema): """Schema for pulse backend""" # Required properties. open_pulse = fields.Boolean(required=True, validate=OneOf([True])) n_uchannels = fields.Integer(required=True, validate=Range(min=0)) u_channel_lo = fields.List( fields.Nested(UchannelLOSchema, validate=Length(min=1), required=True, many=True)) meas_levels = fields.List(fields.Integer(), validate=Length(min=1), required=True) qubit_lo_range = fields.List(fields.List( fields.Float(validate=Range(min=0)), validate=Length(equal=2)), required=True) meas_lo_range = fields.List(fields.List( fields.Float(validate=Range(min=0)), validate=Length(equal=2)), required=True) dt = fields.Float(required=True, validate=Range(min=0)) # pylint: disable=invalid-name dtm = fields.Float(required=True, validate=Range(min=0)) rep_times = fields.List(fields.Integer(validate=Range(min=0)), required=True) meas_kernels = fields.List(fields.String(), required=True) discriminators = fields.List(fields.String(), required=True) # Optional properties. meas_map = fields.List( fields.List(fields.Integer(), validate=Length(min=1))) channel_bandwidth = fields.List( fields.List(fields.Float(), validate=Length(equal=2))) acquisition_latency = fields.List(fields.List(fields.Integer())) conditional_latency = fields.List(fields.List(fields.Integer())) hamiltonian = PulseHamiltonianSchema()