diff --git a/grove/pyvqe/vqe.py b/grove/pyvqe/vqe.py index fdad79e..0eae6ca 100644 --- a/grove/pyvqe/vqe.py +++ b/grove/pyvqe/vqe.py @@ -225,21 +225,7 @@ def expectation(pyquil_prog: Program, pauli_sum = PauliSum([pauli_sum]) if samples is None: - operator_progs = [] - operator_coeffs = [] - for p_term in pauli_sum.terms: - op_prog = Program() - for qindex, op in p_term: - op_prog.inst(STANDARD_GATES[op](qindex)) - operator_progs.append(op_prog) - operator_coeffs.append(p_term.coefficient) - - result_overlaps = WavefunctionSimulator().expectation(pyquil_prog, pauli_sum.terms) - result_overlaps = list(result_overlaps) - assert len(result_overlaps) == len(operator_progs),\ - """Somehow we didn't get the correct number of results back from the QVM""" - expectation = sum(list(map(lambda x: x[0] * x[1], - zip(result_overlaps, operator_coeffs)))) + expectation = WavefunctionSimulator().expectation(pyquil_prog, pauli_sum) return expectation.real else: if not isinstance(samples, int): @@ -263,11 +249,11 @@ def expectation(pyquil_prog: Program, elif gate == 'Y': meas_basis_change.inst(RX(np.pi / 2, index)) - meas_outcome = \ - expectation_from_sampling(pyquil_prog + meas_basis_change, - qubits_to_measure, - qc, - samples) + meas_outcome = \ + expectation_from_sampling(pyquil_prog + meas_basis_change, + qubits_to_measure, + qc, + samples) expectation += term.coefficient * meas_outcome