def get_job_results(self, job_resource_name: str) -> List[TrialResult]: """Returns the actual results (not metadata) of a completed job. Params: job_resource_name: A string of the form `projects/project_id/programs/program_id/jobs/job_id`. Returns: An iterable over the TrialResult, one per parameter in the parameter sweep. """ response = self.service.projects().programs().jobs().getResult( parent=job_resource_name).execute() trial_results = [] for sweep_result in response['result']['sweepResults']: sweep_repetitions = sweep_result['repetitions'] key_sizes = [(m['key'], len(m['qubits'])) for m in sweep_result['measurementKeys']] for result in sweep_result['parameterizedResults']: data = base64.standard_b64decode(result['measurementResults']) measurements = unpack_results(data, sweep_repetitions, key_sizes) trial_results.append(TrialResult( params=ParamResolver( result.get('params', {}).get('assignments', {})), repetitions=sweep_repetitions, measurements=measurements)) return trial_results
def test_unpack_results(): data = make_bytes(""" 000 00 001 01 010 10 011 11 100 00 101 01 110 10 """) assert len(data) == 5 # 35 data bits + 5 padding bits results = programs.unpack_results(data, 7, [('a', 3), ('b', 2)]) assert 'a' in results assert results['a'].shape == (7, 3) np.testing.assert_array_equal( results['a'], [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0],]) assert 'b' in results assert results['b'].shape == (7, 2) np.testing.assert_array_equal( results['b'], [[0, 0], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0],])
def _get_job_results_v1(self, result: Dict[str, Any]) -> List[TrialResult]: trial_results = [] for sweep_result in result['sweepResults']: sweep_repetitions = sweep_result['repetitions'] key_sizes = [(m['key'], len(m['qubits'])) for m in sweep_result['measurementKeys']] for result in sweep_result['parameterizedResults']: data = base64.standard_b64decode(result['measurementResults']) measurements = unpack_results(data, sweep_repetitions, key_sizes) trial_results.append( TrialResult.from_single_parameter_set( params=ParamResolver( result.get('params', {}).get('assignments', {})), measurements=measurements)) return trial_results
def test_unpack_results(): data = make_bytes(""" 000 00 001 01 010 10 011 11 100 00 101 01 110 10 """) assert len(data) == 5 # 35 data bits + 5 padding bits results = programs.unpack_results(data, 7, [('a', 3), ('b', 2)]) assert 'a' in results assert results['a'].shape == (7, 3) assert results['a'].dtype == bool np.testing.assert_array_equal( results['a'], [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0],]) assert 'b' in results assert results['b'].shape == (7, 2) assert results['b'].dtype == bool np.testing.assert_array_equal( results['b'], [[0, 0], [0, 1], [1, 0], [1, 1], [0, 0], [0, 1], [1, 0],])