Skip to content
This repository has been archived by the owner on Dec 7, 2021. It is now read-only.

Setting is_measurement for converted state functions and backend arg required to CircuitSampler #1344

Merged
merged 26 commits into from
Oct 15, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
246dbe9
Merge pull request #1 from Qiskit/master
molar-volume Jul 4, 2020
b01af1c
Merge branch 'master' of github.com:Qiskit/qiskit-aqua
molar-volume Jul 15, 2020
e7666d7
Merge branch 'master' of github.com:Qiskit/qiskit-aqua
molar-volume Jul 18, 2020
0235fed
Merge github.com:Qiskit/qiskit-aqua
molar-volume Jul 25, 2020
04b660c
Merge github.com:Qiskit/qiskit-aqua
molar-volume Aug 4, 2020
b3bbf91
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Aug 23, 2020
1f64c2d
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Sep 25, 2020
7099fe6
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Sep 27, 2020
088c3fc
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Oct 4, 2020
6d3e30f
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Oct 8, 2020
36dff6c
Merge https://github.com/Qiskit/qiskit-aqua
molar-volume Oct 13, 2020
2037c50
1) backend arg required to CircuitSampler
molar-volume Oct 13, 2020
d4b445e
Merge branch 'master' into issue_1338
molar-volume Oct 13, 2020
1b5320d
Merge branch 'master' into issue_1338
woodsp-ibm Oct 14, 2020
b8d2397
Merge branch 'master' into issue_1338
molar-volume Oct 14, 2020
ac6f33e
Merge branch 'master' into issue_1338
woodsp-ibm Oct 15, 2020
5ccdf7a
Merge branch 'master' into issue_1338
molar-volume Oct 15, 2020
303fd4a
test if is_measurement correctly propagated in CircuitSampler
molar-volume Oct 15, 2020
84e306b
Merge branch 'master' into issue_1338
molar-volume Oct 15, 2020
480392e
Merge branch 'issue_1338' of https://github.com/molar-volume/qiskit-a…
molar-volume Oct 15, 2020
a926b9a
test_is_measurement_correctly_propagated simplified
molar-volume Oct 15, 2020
318895b
release note added
molar-volume Oct 15, 2020
642c971
Merge branch 'master' into issue_1338
molar-volume Oct 15, 2020
706ecc8
Update releasenotes/notes/fix-is-measurements-in-circuit-sampler-1867…
Cryoris Oct 15, 2020
d619f23
fix linting
molar-volume Oct 15, 2020
3e5819c
Merge branch 'issue_1338' of https://github.com/molar-volume/qiskit-a…
molar-volume Oct 15, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions qiskit/aqua/operators/converters/circuit_sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
from qiskit.aqua import QuantumInstance
from qiskit.aqua.utils.backend_utils import is_aer_provider, is_statevector_backend
from qiskit.aqua.operators.operator_base import OperatorBase
from qiskit.aqua.operators.operator_globals import Zero
from qiskit.aqua.operators.list_ops.list_op import ListOp
from qiskit.aqua.operators.state_fns.state_fn import StateFn
from qiskit.aqua.operators.state_fns.circuit_state_fn import CircuitStateFn
from qiskit.aqua.operators.state_fns.dict_state_fn import DictStateFn
from qiskit.aqua.operators.converters.converter_base import ConverterBase

logger = logging.getLogger(__name__)
Expand All @@ -49,7 +49,7 @@ class CircuitSampler(ConverterBase):
"""

def __init__(self,
backend: Union[Backend, BaseBackend, QuantumInstance] = None,
backend: Union[Backend, BaseBackend, QuantumInstance],
statevector: Optional[bool] = None,
param_qobj: bool = False,
attach_results: bool = False) -> None:
Expand Down Expand Up @@ -306,13 +306,16 @@ def sample_circuits(self,
avg = avg[0] + 1j * avg[1]
# Will be replaced with just avg when eval is called later
num_qubits = circuit_sfns[0].num_qubits
result_sfn = (Zero ^ num_qubits).adjoint() * avg
result_sfn = DictStateFn('0' * num_qubits,
is_measurement=op_c.is_measurement) * avg
elif self._statevector:
result_sfn = StateFn(op_c.coeff * results.get_statevector(circ_index))
result_sfn = StateFn(op_c.coeff * results.get_statevector(circ_index),
is_measurement=op_c.is_measurement)
else:
shots = self.quantum_instance._run_config.shots
result_sfn = StateFn({b: (v / shots) ** 0.5 * op_c.coeff
for (b, v) in results.get_counts(circ_index).items()})
for (b, v) in results.get_counts(circ_index).items()},
is_measurement=op_c.is_measurement)
if self._attach_results:
result_sfn.execution_results = circ_results
c_statefns.append(result_sfn)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
fixes:
- |
Fix CircuitSampler.convert, so that the ``is_measurement`` property is propagated to converted StateFns.
9 changes: 8 additions & 1 deletion test/aqua/operators/test_state_op_meas_evals.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@


# pylint: disable=invalid-name

class TestStateOpMeasEvals(QiskitAquaTestCase):
"""Tests of evals of Meas-Operator-StateFn combos."""

Expand Down Expand Up @@ -79,6 +78,14 @@ def test_coefficients_correctly_propagated(self):
sampler = CircuitSampler(q_instance).convert(~StateFn(op) @ state)
self.assertAlmostEqual(sampler.eval(), 1+0j)

def test_is_measurement_correctly_propagated(self):
"""Test if is_measurement property of StateFn is propagated to converted StateFn."""
backend = Aer.get_backend('qasm_simulator')
q_instance = QuantumInstance(backend) # no seeds needed since no values are compared
state = Plus
sampler = CircuitSampler(q_instance).convert(~state @ state)
self.assertTrue(sampler.oplist[0].is_measurement)


if __name__ == '__main__':
unittest.main()