Example #1
0
    def calibration_results(self):
        """Returns the results of a run_calibration() call.

        This function will fail if any other type of results were returned
        by the Engine.
        """
        import cirq_google.engine.engine as engine_base

        if not self._calibration_results:
            result = self._wait_for_result()
            result_type = result.type_url[len(engine_base.TYPE_PREFIX):]
            if result_type != 'cirq.google.api.v2.FocusedCalibrationResult':
                raise ValueError(
                    f'Did not find calibration results, instead found: {result_type}'
                )
            parsed_val = v2.calibration_pb2.FocusedCalibrationResult.FromString(
                result.value)
            cal_results = []
            for layer in parsed_val.results:
                metrics = calibration.Calibration(layer.metrics)
                message = layer.error_message or None
                token = layer.token or None
                if layer.valid_until_ms > 0:
                    ts = datetime.datetime.fromtimestamp(layer.valid_until_ms /
                                                         1000)
                else:
                    ts = None
                cal_results.append(
                    CalibrationResult(layer.code, message, token, ts, metrics))
            self._calibration_results = cal_results
        return self._calibration_results
Example #2
0
 def get_calibration(self) -> Optional[calibration.Calibration]:
     """Returns the recorded calibration at the time when the job was run, if
     one was captured, else None."""
     status = self._inner_job().execution_status
     if not status.calibration_name:
         return None
     ids = engine_client._ids_from_calibration_name(status.calibration_name)
     response = self.context.client.get_calibration(*ids)
     metrics = v2.metrics_pb2.MetricsSnapshot.FromString(response.data.value)
     return calibration.Calibration(metrics)
Example #3
0
def _create_perfect_calibration(
        device: cirq.Device) -> calibration.Calibration:
    all_metrics: calibration.ALL_METRICS = {}
    if device.metadata is None:
        raise ValueError(
            'Devices for noiseless Virtual Engine must have qubits')
    qubit_set = device.metadata.qubit_set
    qubits = [cast(cirq.GridQubit, q) for q in qubit_set]
    for name in METRICS_1Q:
        all_metrics[name] = {(q, ): [0.0] for q in qubits}
    for name in METRICS_2Q:
        metric_dict: calibration.METRIC_DICT = {}
        if device.metadata is not None:
            for pair in device.metadata.nx_graph.edges():
                qubits = [cast(cirq.GridQubit, q) for q in pair]
                metric_dict[(qubits[0], qubits[1])] = [0.0]
        all_metrics[name] = metric_dict
    all_metrics[T1_METRIC_NAME] = {(q, ): [PERFECT_T1_VALUE] for q in qubits}
    snapshot = v2.metrics_pb2.MetricsSnapshot()
    snapshot.timestamp_ms = int(time.time() * 1000)
    return calibration.Calibration(calibration=snapshot, metrics=all_metrics)
def test_get_programs():
    program1 = NothingProgram([cirq.Circuit()], None)
    job1 = NothingJob(
        job_id='test3', processor_id='proc', parent_program=program1, repetitions=100, sweeps=[]
    )
    program1.add_job('jerb', job1)
    job1.add_labels({'color': 'blue'})

    program2 = NothingProgram([cirq.Circuit()], None)
    job2 = NothingJob(
        job_id='test4', processor_id='crop', parent_program=program2, repetitions=100, sweeps=[]
    )
    program2.add_job('jerb2', job2)
    job2.add_labels({'color': 'red'})

    processor1 = ProgramDictProcessor(programs={'prog1': program1}, processor_id='proc')
    processor2 = ProgramDictProcessor(programs={'prog2': program2}, processor_id='crop')
    engine = NothingEngine([processor1, processor2])

    assert engine.get_program('prog1') == program1

    with pytest.raises(KeyError, match='does not exist'):
        engine.get_program('invalid_id')

    assert set(engine.list_programs()) == {program1, program2}
    assert set(engine.list_jobs()) == {job1, job2}
    assert engine.list_jobs(has_labels={'color': 'blue'}) == [job1]
    assert engine.list_jobs(has_labels={'color': 'red'}) == [job2]

    program3 = NothingProgram([cirq.Circuit()], engine)
    assert program3.engine() == engine

    job3 = NothingJob(
        job_id='test5', processor_id='crop', parent_program=program3, repetitions=100, sweeps=[]
    )
    assert job3.program() == program3
    assert job3.engine() == engine
    assert job3.get_processor() == processor2
    assert job3.get_calibration() == calibration.Calibration()
Example #5
0
def _to_calibration(
        calibration_any: qtypes.any_pb2.Any) -> calibration.Calibration:
    metrics = v2.metrics_pb2.MetricsSnapshot.FromString(calibration_any.value)
    return calibration.Calibration(metrics)
 def get_latest_calibration(self, timestamp: int) -> Optional[calibration.Calibration]:
     return calibration.Calibration()