in src/braket/tasks/gate_model_quantum_task_result.py [0:0]
def _from_object_internal_computational_basis_sampling(cls, result: GateModelTaskResult):
task_metadata = result.taskMetadata
additional_metadata = result.additionalMetadata
if result.measurements:
measurements = np.asarray(result.measurements, dtype=int)
m_counts = GateModelQuantumTaskResult.measurement_counts_from_measurements(measurements)
m_probs = GateModelQuantumTaskResult.measurement_probabilities_from_measurement_counts(
m_counts
)
measurements_copied_from_device = True
m_counts_copied_from_device = False
m_probabilities_copied_from_device = False
elif result.measurementProbabilities:
shots = task_metadata.shots
m_probs = result.measurementProbabilities
measurements = GateModelQuantumTaskResult.measurements_from_measurement_probabilities(
m_probs, shots
)
m_counts = GateModelQuantumTaskResult.measurement_counts_from_measurements(measurements)
measurements_copied_from_device = False
m_counts_copied_from_device = False
m_probabilities_copied_from_device = True
else:
raise ValueError(
'One of "measurements" or "measurementProbabilities" must be populated in',
" the result obj",
)
measured_qubits = result.measuredQubits
if len(measured_qubits) != measurements.shape[1]:
raise ValueError(
f"Measured qubits {measured_qubits} is not equivalent to number of qubits "
+ f"{measurements.shape[1]} in measurements"
)
result_types = GateModelQuantumTaskResult._calculate_result_types(
additional_metadata.action.json(), measurements, measured_qubits
)
values = [rt.value for rt in result_types]
return cls(
task_metadata=task_metadata,
additional_metadata=additional_metadata,
result_types=result_types,
values=values,
measurements=measurements,
measured_qubits=measured_qubits,
measurement_counts=m_counts,
measurement_probabilities=m_probs,
measurements_copied_from_device=measurements_copied_from_device,
measurement_counts_copied_from_device=m_counts_copied_from_device,
measurement_probabilities_copied_from_device=m_probabilities_copied_from_device,
)