Skip to content

Commit

Permalink
Revert "Filter the measurement probabilities"
Browse files Browse the repository at this point in the history
This reverts commit 0be44cf.
  • Loading branch information
BoxiLi committed Dec 9, 2022
1 parent caeed8f commit 4bcb1ef
Showing 1 changed file with 7 additions and 17 deletions.
24 changes: 7 additions & 17 deletions src/qutip_qip/circuit/circuitsimulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
expand_operator,
gate_sequence_product,
)
import qutip
from qutip import basis, ket2dm, Qobj, tensor
import warnings

Expand Down Expand Up @@ -635,13 +634,8 @@ def _apply_measurement(self, operation):
operation: :class:`.Measurement`
Measurement gate in a circuit object.
"""

states, probabilities = operation.measurement_comp_basis(self.state)
try:
# qutip-v5
measured_tol = qutip.settings.core["atol"] ** 2
except AttributeError:
# qutip-v4
measured_tol = qutip.settings.atol ** 2

if self.mode == "state_vector_simulator":
if self.measure_results:
Expand All @@ -650,19 +644,15 @@ def _apply_measurement(self, operation):
else:
probabilities = [p / sum(probabilities) for p in probabilities]
i = np.random.choice([0, 1], p=probabilities)
self.probability *= (
probabilities[i] if probabilities[i] > measured_tol else 0.0
)
self.state = states[i] if probabilities[i] > measured_tol else None
self.probability *= probabilities[i]
self.state = states[i]
if operation.classical_store is not None:
self.cbits[operation.classical_store] = i

elif self.mode == "density_matrix_simulator":
states_probabilities_zipped = [
(s, p)
for (s, p) in zip(states, probabilities)
if p > measured_tol
]
self.state = sum(p * s for s, p in states_probabilities_zipped)
states = list(filter(lambda x: x is not None, states))
probabilities = list(filter(lambda x: x != 0, probabilities))
self.state = sum(p * s for s, p in zip(states, probabilities))
else:
raise NotImplementedError(
"mode {} is not available.".format(self.mode)
Expand Down

0 comments on commit 4bcb1ef

Please sign in to comment.