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()
class NduvSchema(BaseSchema): """Schema for name-date-unit-value.""" # Required properties. date = fields.DateTime(required=True) name = fields.String(required=True) unit = fields.String(required=True) value = fields.Number(required=True)
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 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 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 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 BookSchema(BaseSchema): """Example Book schema.""" title = fields.String(required=True) date = fields.Date() author = fields.Nested(PersonSchema, required=True)
class PersonSchema(BaseSchema): """Example Person schema.""" name = fields.String(required=True) birth_date = fields.Date() email = fields.Email()
class DiscriminatorSchema(BaseSchema): """Schema for Discriminator.""" # Optional properties. name = fields.String() params = fields.Nested(ObjSchema)
class MeasurementKernelSchema(BaseSchema): """Schema for MeasurementKernel.""" # Optional properties. name = fields.String() params = fields.Nested(ObjSchema)