Beispiel #1
0
    def _serialize_run_context(
        self,
        sweeps: List[study.Sweep],
        repetitions: int,
    ) -> Dict[str, Any]:
        proto_version = self.proto_version
        if proto_version == ProtoVersion.V1:
            context_descriptor = v1.program_pb2.RunContext.DESCRIPTOR
            context_dict = {}  # type: Dict[str, Any]
            context_dict['@type'] = TYPE_PREFIX + context_descriptor.full_name
            context_dict['parameter_sweeps'] = [
                v1.sweep_to_proto_dict(sweep, repetitions) for sweep in sweeps
            ]
            return context_dict
        elif proto_version == ProtoVersion.V2:
            run_context = v2.run_context_pb2.RunContext()
            for sweep in sweeps:
                sweep_proto = run_context.parameter_sweeps.add()
                sweep_proto.repetitions = repetitions
                v2.sweep_to_proto(sweep, out=sweep_proto.sweep)

            return _any_dict_from_msg(run_context)
        else:
            raise ValueError(
                'invalid run context proto version: {}'.format(proto_version))
Beispiel #2
0
    def _serialize_program_v1(
            self, program: Program, sweeps: List[Sweep],
            repetitions: int) -> Tuple[Dict[str, Any], Dict[str, Any]]:
        schedule = self.program_as_schedule(program)
        schedule.device.validate_schedule(schedule)

        program_descriptor = v1.program_pb2.Program.DESCRIPTOR
        program_dict = {}  # type: Dict[str, Any]
        program_dict['@type'] = TYPE_PREFIX + program_descriptor.full_name
        program_dict['operations'] = [
            op for op in api_v1.schedule_to_proto_dicts(schedule)
        ]

        context_descriptor = v1.program_pb2.RunContext.DESCRIPTOR
        context_dict = {}  # type: Dict[str, Any]
        context_dict['@type'] = TYPE_PREFIX + context_descriptor.full_name
        context_dict['parameter_sweeps'] = [
            api_v1.sweep_to_proto_dict(sweep, repetitions) for sweep in sweeps
        ]
        return program_dict, context_dict