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

Commit 82d1150

Browse files
committed
Merge branch 'qpe-naming' of github.com:Cryoris/qiskit-aqua into qpe-naming
2 parents 3b508b4 + 81ce9b4 commit 82d1150

File tree

8 files changed

+26
-20
lines changed

8 files changed

+26
-20
lines changed

qiskit/aqua/operators/converters/circuit_sampler.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,13 @@ def convert(self,
164164
Returns:
165165
The converted Operator with CircuitStateFns replaced by DictStateFns or VectorStateFns.
166166
"""
167-
if self._last_op is None or operator != self._last_op:
167+
if self._last_op is None or id(operator) != id(self._last_op):
168168
# Clear caches
169169
self._last_op = operator
170170
self._reduced_op_cache = None
171171
self._circuit_ops_cache = None
172172
self._transpiled_circ_cache = None
173+
self._transpile_before_bind = True
173174

174175
if not self._reduced_op_cache:
175176
operator_dicts_replaced = operator.to_circuit_op()

qiskit/aqua/operators/operator_globals.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"""
1818

1919
from qiskit.quantum_info import Pauli
20-
from qiskit.extensions.standard import CXGate, SGate, TGate, HGate, SwapGate, CZGate
20+
from qiskit.circuit.library import CXGate, SGate, TGate, HGate, SwapGate, CZGate
2121

2222
from .primitive_ops.primitive_op import PrimitiveOp
2323
from .state_fns.state_fn import StateFn

qiskit/aqua/operators/primitive_ops/circuit_op.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import numpy as np
2020

2121
from qiskit import QuantumCircuit, BasicAer, execute
22-
from qiskit.extensions.standard import IGate
22+
from qiskit.circuit.library import IGate
2323
from qiskit.circuit import Instruction, ParameterExpression
2424

2525
from ..operator_base import OperatorBase
@@ -47,7 +47,7 @@ def __init__(self,
4747
coeff: A coefficient multiplying the primitive
4848
4949
Raises:
50-
TypeError: invalid parameters.
50+
TypeError: Unsupported primitive, or primitive has ClassicalRegisters.
5151
"""
5252
if isinstance(primitive, Instruction):
5353
qc = QuantumCircuit(primitive.num_qubits)
@@ -58,6 +58,9 @@ def __init__(self,
5858
raise TypeError('CircuitOp can only be instantiated with '
5959
'QuantumCircuit, not {}'.format(type(primitive)))
6060

61+
if len(primitive.clbits) != 0:
62+
raise TypeError('CircuitOp does not support QuantumCircuits with ClassicalRegisters.')
63+
6164
super().__init__(primitive, coeff=coeff)
6265

6366
def primitive_strings(self) -> Set[str]:
@@ -122,11 +125,7 @@ def compose(self, other: OperatorBase) -> OperatorBase:
122125
other = other.to_circuit_op()
123126

124127
if isinstance(other, (CircuitOp, CircuitStateFn)):
125-
new_qc = QuantumCircuit(self.num_qubits)
126-
new_qc.append(other.to_instruction(), qargs=range(self.num_qubits))
127-
new_qc.append(self.to_instruction(), qargs=range(self.num_qubits))
128-
# TODO Fix, because converting to dag just to append is nuts
129-
new_qc = new_qc.decompose()
128+
new_qc = other.primitive.combine(self.primitive)
130129
if isinstance(other, CircuitStateFn):
131130
return CircuitStateFn(new_qc,
132131
is_measurement=other.is_measurement,

qiskit/aqua/operators/primitive_ops/pauli_op.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from qiskit import QuantumCircuit
2323
from qiskit.circuit import ParameterExpression, Instruction
2424
from qiskit.quantum_info import Pauli
25-
from qiskit.extensions.standard import RZGate, RYGate, RXGate, XGate, YGate, ZGate, IGate
25+
from qiskit.circuit.library import RZGate, RYGate, RXGate, XGate, YGate, ZGate, IGate
2626

2727
from ..operator_base import OperatorBase
2828
from .primitive_op import PrimitiveOp

qiskit/aqua/operators/state_fns/circuit_state_fn.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@
1818
from typing import Union, Set
1919
import numpy as np
2020

21-
from qiskit import QuantumCircuit, BasicAer, execute
21+
from qiskit import QuantumCircuit, BasicAer, execute, ClassicalRegister
2222
from qiskit.circuit import Instruction, ParameterExpression
23-
from qiskit.extensions import Initialize, IGate
23+
from qiskit.extensions import Initialize
24+
from qiskit.circuit.library import IGate
2425

2526
from ..operator_base import OperatorBase
2627
from ..list_ops.summed_op import SummedOp
@@ -46,7 +47,7 @@ def __init__(self,
4647
is_measurement: Whether the StateFn is a measurement operator.
4748
4849
Raises:
49-
TypeError: invalid parameters.
50+
TypeError: Unsupported primitive, or primitive has ClassicalRegisters.
5051
"""
5152
if isinstance(primitive, Instruction):
5253
qc = QuantumCircuit(primitive.num_qubits)
@@ -57,6 +58,9 @@ def __init__(self,
5758
raise TypeError('CircuitStateFn can only be instantiated '
5859
'with QuantumCircuit, not {}'.format(type(primitive)))
5960

61+
if len(primitive.clbits) != 0:
62+
raise TypeError('CircuitOp does not support QuantumCircuits with ClassicalRegisters.')
63+
6064
super().__init__(primitive, coeff=coeff, is_measurement=is_measurement)
6165

6266
@staticmethod
@@ -294,10 +298,10 @@ def eval(self,
294298
def to_circuit(self, meas: bool = False) -> QuantumCircuit:
295299
""" Return QuantumCircuit representing StateFn """
296300
if meas:
297-
qc = QuantumCircuit(self.num_qubits, self.num_qubits)
298-
qc.append(self.to_instruction(), qargs=range(self.primitive.num_qubits))
299-
qc.measure(qubit=range(self.num_qubits), cbit=range(self.num_qubits))
300-
return qc.decompose()
301+
meas_qc = self.primitive.copy()
302+
meas_qc.add_register(ClassicalRegister(self.num_qubits))
303+
meas_qc.measure(qubit=range(self.num_qubits), cbit=range(self.num_qubits))
304+
return meas_qc
301305
else:
302306
return self.primitive
303307

test/aqua/operators/test_op_construction.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
from qiskit import QuantumCircuit
2323
from qiskit.quantum_info.operators import Operator, Pauli
24-
from qiskit.extensions.standard import CZGate
24+
from qiskit.circuit.library import CZGate
2525

2626
from qiskit.aqua.operators import X, Y, Z, I, CX, T, H, PrimitiveOp, SummedOp, PauliOp, Minus
2727

test/aqua/operators/test_pauli_expectation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
PauliExpectation, AbelianGrouper,
2626
CircuitSampler)
2727

28-
from qiskit import BasicAer, IBMQ
28+
from qiskit import BasicAer
2929

3030

3131
# pylint: disable=invalid-name
@@ -190,6 +190,7 @@ def test_grouped_pauli_expectation(self):
190190
@unittest.skip(reason="IBMQ testing not available in general.")
191191
def test_ibmq_grouped_pauli_expectation(self):
192192
""" pauli expect op vector state vector test """
193+
from qiskit import IBMQ
193194
p = IBMQ.load_account()
194195
backend = p.get_backend('ibmq_qasm_simulator')
195196
paulis_op = ListOp([X, Y, Z, I])

test/aqua/test_vqe.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from test.aqua import QiskitAquaTestCase
1919
import numpy as np
2020
from ddt import ddt, unpack, data
21-
from qiskit import BasicAer, QuantumCircuit, IBMQ
21+
from qiskit import BasicAer, QuantumCircuit
2222
from qiskit.circuit import ParameterVector
2323

2424
from qiskit.aqua import QuantumInstance, aqua_globals, AquaError
@@ -259,6 +259,7 @@ def test_vqe_mes(self):
259259
@unittest.skip(reason="IBMQ testing not available in general.")
260260
def test_ibmq_vqe(self):
261261
""" IBMQ VQE Test """
262+
from qiskit import IBMQ
262263
provider = IBMQ.load_account()
263264
backend = provider.get_backend('ibmq_qasm_simulator')
264265
var_form = RYRZ(self.qubit_op.num_qubits)

0 commit comments

Comments
 (0)