in src/braket/default_simulator/density_matrix_simulation.py [0:0]
def apply_observables(self, observables: List[Observable]) -> None:
"""Applies the diagonalizing matrices of the given observables
to the state of the simulation.
This method can only be called once.
Args:
observables (List[Observable]): The observables to apply
Raises:
RuntimeError: If this method is called more than once
"""
if self._post_observables is not None:
raise RuntimeError("Observables have already been applied.")
operations = list(
sum(
[observable.diagonalizing_gates(self._qubit_count) for observable in observables],
(),
)
)
self._post_observables = DensityMatrixSimulation._apply_operations(
self._density_matrix, self._qubit_count, operations
)