Skip to content

Commit

Permalink
Move EvolvedOperatorAnsatz to NLocal directory (#11385)
Browse files Browse the repository at this point in the history
* Move EvolvedOperatorAnsatz

* add release note fix import

* fix import

* add doc string to function

* fix imports

* Add tests for Moved Class

* update library init

* Fix library init imports

* Add deprecation to old class

* update formatting

* Fix tests

* fix import

* Move EvolvedOperatorAnsatz

* add release note fix import

* fix import

* add doc string to function

* fix imports

* Add tests for Moved Class

* update library init

* Fix library init imports

* Add deprecation to old class

* update formatting

* Fix tests

* fix import

* Change deprecation to upgrade

* Fix init doc

---------

Co-authored-by: Shelly Garion <46566946+ShellyGarion@users.noreply.github.com>
  • Loading branch information
Ca1eb3 and ShellyGarion committed Jan 8, 2024
1 parent 4b3316d commit 733e2a3
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 7 deletions.
4 changes: 2 additions & 2 deletions qiskit/circuit/library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,6 @@
PhaseEstimation
GroverOperator
PhaseOracle
EvolvedOperatorAnsatz
PauliEvolutionGate
HamiltonianGate
UnitaryOverlap
Expand All @@ -352,6 +351,7 @@
PauliTwoDesign
RealAmplitudes
EfficientSU2
EvolvedOperatorAnsatz
ExcitationPreserving
QAOAAnsatz
Expand Down Expand Up @@ -559,6 +559,7 @@
PauliTwoDesign,
RealAmplitudes,
EfficientSU2,
EvolvedOperatorAnsatz,
ExcitationPreserving,
QAOAAnsatz,
)
Expand All @@ -577,5 +578,4 @@
from .phase_estimation import PhaseEstimation
from .grover_operator import GroverOperator
from .phase_oracle import PhaseOracle
from .evolved_operator_ansatz import EvolvedOperatorAnsatz
from .overlap import UnitaryOverlap
2 changes: 2 additions & 0 deletions qiskit/circuit/library/n_local/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .pauli_two_design import PauliTwoDesign
from .real_amplitudes import RealAmplitudes
from .efficient_su2 import EfficientSU2
from .evolved_operator_ansatz import EvolvedOperatorAnsatz
from .excitation_preserving import ExcitationPreserving
from .qaoa_ansatz import QAOAAnsatz

Expand All @@ -26,6 +27,7 @@
"RealAmplitudes",
"PauliTwoDesign",
"EfficientSU2",
"EvolvedOperatorAnsatz",
"ExcitationPreserving",
"QAOAAnsatz",
]
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@

import numpy as np

from qiskit.circuit.library.pauli_evolution import PauliEvolutionGate
from qiskit.circuit.parameter import Parameter
from qiskit.circuit.quantumregister import QuantumRegister
from qiskit.circuit.quantumcircuit import QuantumCircuit
from qiskit.quantum_info import Operator, Pauli, SparsePauliOp
from qiskit.synthesis.evolution import LieTrotter

from .pauli_evolution import PauliEvolutionGate
from .n_local.n_local import NLocal
from .n_local import NLocal


class EvolvedOperatorAnsatz(NLocal):
Expand Down Expand Up @@ -98,6 +98,11 @@ def _check_configuration(self, raise_on_failure: bool = True) -> bool:

@property
def num_qubits(self) -> int:
"""Returns the number of qubits in this circuit.
Returns:
The number of qubits.
"""
if self.operators is None:
return 0

Expand Down
3 changes: 2 additions & 1 deletion qiskit/circuit/library/n_local/qaoa_ansatz.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,13 @@

import numpy as np

from qiskit.circuit.library.evolved_operator_ansatz import EvolvedOperatorAnsatz, _is_pauli_identity
from qiskit.circuit.parametervector import ParameterVector
from qiskit.circuit.quantumcircuit import QuantumCircuit
from qiskit.circuit.quantumregister import QuantumRegister
from qiskit.quantum_info import SparsePauliOp

from .evolved_operator_ansatz import EvolvedOperatorAnsatz, _is_pauli_identity


class QAOAAnsatz(EvolvedOperatorAnsatz):
"""A generalized QAOA quantum circuit with a support of custom initial states and mixers.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
upgrade:
- |
The class :class:`.EvolvedOperatorAnsatz` has been migrated from
:mod:`qiskit.circuit.library` to :mod:`qiskit.circuit.library.n_local` to match
the location of its base class. This move has not affected the usual import path
of the class: ``from qiskit.circuit.library import EvolvedOperatorAnsatz``, but
now it is also accessible doing ``from qiskit.circuit.library.n_local import
EvolvedOperatorAnsatz``.
6 changes: 4 additions & 2 deletions test/python/circuit/library/test_evolved_op_ansatz.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
from qiskit.circuit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp, Operator, Pauli

from qiskit.circuit.library import EvolvedOperatorAnsatz, HamiltonianGate
from qiskit.circuit.library import HamiltonianGate
from qiskit.circuit.library.n_local import EvolvedOperatorAnsatz
from qiskit.synthesis.evolution import MatrixExponential
from qiskit.test import QiskitTestCase

Expand Down Expand Up @@ -51,11 +52,11 @@ def test_custom_evolution(self):
reference.append(HamiltonianGate(matrix, parameters[0]), [0, 1, 2])

decomposed = evo.decompose().decompose()

self.assertEqual(decomposed, reference)

def test_changing_operators(self):
"""Test rebuilding after the operators changed."""

ops = [Pauli("X"), Pauli("Y"), Pauli("Z")]
evo = EvolvedOperatorAnsatz(ops)
evo.operators = [Pauli("X"), Pauli("Y")]
Expand All @@ -79,6 +80,7 @@ def test_insert_barriers(self):
for parameter in evo.parameters:
ref.rz(2.0 * parameter, 0)
ref.barrier()

self.assertEqual(evo.decompose(reps=2), ref)

def test_empty_build_fails(self):
Expand Down

0 comments on commit 733e2a3

Please sign in to comment.