Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renamings in circuit/library/data_encoding #4318

Merged
merged 27 commits into from
Apr 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a274e7b
renamings
Cryoris Apr 28, 2020
325bc19
remove 'evolution' and ryrz -> ryrzansatz
Cryoris Apr 28, 2020
fc0020a
more renaming, missing: SwapRZ
Cryoris Apr 28, 2020
b52e040
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 28, 2020
0c945e6
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 28, 2020
4e3b29a
Merge branch 'master' into data-preparation-renaming
jaygambetta Apr 28, 2020
4f5dc87
Merge master
Cryoris Apr 29, 2020
131cc99
put ry/ryrz naming on hold
Cryoris Apr 29, 2020
acac6f9
Merge branch 'data-preparation-renaming' of github.com:Cryoris/qiskit…
Cryoris Apr 29, 2020
60f1191
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
a663506
Merge branch 'master' into data-preparation-renaming
kdk Apr 29, 2020
5381089
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
9e8cdc5
rename n local circuits
Cryoris Apr 29, 2020
024f40d
Merge branch 'n-local-renamings' into data-preparation-renaming
Cryoris Apr 29, 2020
7638aa8
fix test
Cryoris Apr 29, 2020
7776a43
Merge branch 'data-preparation-renaming' of github.com:Cryoris/qiskit…
Cryoris Apr 29, 2020
c15123e
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
d50444a
try to fix sphinx
Cryoris Apr 29, 2020
fe60bb0
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
8ee73d5
Merge branch 'data-preparation-renaming' of github.com:Cryoris/qiskit…
Cryoris Apr 29, 2020
7408f07
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
fcfe5e5
Merge branch 'master' into data-preparation-renaming
kdk Apr 29, 2020
cf283bc
Merge branch 'master' into data-preparation-renaming
kdk Apr 29, 2020
4ef175c
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 29, 2020
07b26ec
fix spacing??
Cryoris Apr 30, 2020
2bde119
Merge branch 'master' into data-preparation-renaming
Cryoris Apr 30, 2020
dff8528
Merge branch 'data-preparation-renaming' of github.com:Cryoris/qiskit…
Cryoris Apr 30, 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
27 changes: 14 additions & 13 deletions qiskit/circuit/library/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,9 @@

NLocal
TwoLocal
RY
RYRZ
SwapRZ
RealAmplitudes
EfficientSU2
ExcitationPreserving


Data encoding circuits
Expand All @@ -159,9 +159,10 @@
.. autosummary::
:toctree: ../stubs/

PauliExpansion
FirstOrderExpansion
SecondOrderExpansion
PauliFeatureMap
ZFeatureMap
ZZFeatureMap

"""

from .standard_gates import *
Expand Down Expand Up @@ -195,14 +196,14 @@
from .n_local import (
NLocal,
TwoLocal,
RY,
RYRZ,
SwapRZ,
RealAmplitudes,
EfficientSU2,
ExcitationPreserving,
)
from .data_encoding import (
PauliExpansion,
FirstOrderExpansion,
SecondOrderExpansion
from .data_preparation import (
PauliFeatureMap,
ZFeatureMap,
ZZFeatureMap
)
from .quantum_volume import QuantumVolume
from .fourier_checking import FourierChecking
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@

"""

from .pauli_expansion import PauliExpansion
from .first_order_expansion import FirstOrderExpansion
from .second_order_expansion import SecondOrderExpansion
from .pauli_feature_map import PauliFeatureMap
from .z_feature_map import ZFeatureMap
from .zz_feature_map import ZZFeatureMap

__all__ = [
'PauliExpansion',
'FirstOrderExpansion',
'SecondOrderExpansion',
'PauliFeatureMap',
'ZFeatureMap',
'ZZFeatureMap',
]
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from ..n_local.n_local import NLocal


class PauliExpansion(NLocal):
class PauliFeatureMap(NLocal):
r"""The Pauli Expansion circuit.

The Pauli Expansion circuit is a data encoding circuit that transforms input data
Expand Down Expand Up @@ -60,39 +60,39 @@ class PauliExpansion(NLocal):
┤ H ├┤ U1(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
└───┘└──────────────┘└──────────┘└───┘└─────────────────────────────────┘└───┘└───────────┘

Please refer to :class:`FirstOrderExpansion` for the case :math:`k = 1`, :math:`P_0 = Z`
and to :class:`SecondOrderExpansion` for the case :math:`k = 2`, :math:`P_0 = Z` and
Please refer to :class:`ZFeatureMap` for the case :math:`k = 1`, :math:`P_0 = Z`
and to :class:`ZZFeatureMap` for the case :math:`k = 2`, :math:`P_0 = Z` and
:math:`P_{0,1} = ZZ`.

Examples:

>>> prep = PauliExpansion(2, reps=1, paulis=['ZZ'])
>>> prep = PauliFeatureMap(2, reps=1, paulis=['ZZ'])
>>> print(prep)
┌───┐
q_0: ┤ H ├──■───────────────────────────────────────■──
├───┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐
q_1: ┤ H ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
└───┘└───┘└─────────────────────────────────┘└───┘

>>> prep = PauliExpansion(2, reps=1, paulis=['Z', 'XX'])
>>> prep = PauliFeatureMap(2, reps=1, paulis=['Z', 'XX'])
>>> print(prep)
┌───┐┌──────────────┐┌───┐ ┌───┐
q_0: ┤ H ├┤ U1(2.0*x[0]) ├┤ H ├──■───────────────────────────────────────■──┤ H ├
├───┤├──────────────┤├───┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐├───┤
q_1: ┤ H ├┤ U1(2.0*x[1]) ├┤ H ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
└───┘└──────────────┘└───┘└───┘└─────────────────────────────────┘└───┘└───┘

>>> prep = PauliExpansion(2, reps=1, paulis=['ZY'])
>>> prep = PauliFeatureMap(2, reps=1, paulis=['ZY'])
>>> print(prep)
┌───┐┌──────────┐ ┌───────────┐
q_0: ┤ H ├┤ RX(pi/2) ├──■───────────────────────────────────────■──┤ RX(-pi/2) ├
├───┤└──────────┘┌─┴─┐┌─────────────────────────────────┐┌─┴─┐└───────────┘
q_1: ┤ H ├────────────┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
└───┘ └───┘└─────────────────────────────────┘└───┘

>>> from qiskit.circuit.library import RYRZ
>>> prep = PauliExpansion(3, reps=3, paulis=['Z', 'YY', 'ZXZ'])
>>> wavefunction = RYRZ(3, entanglement_blocks='cx')
>>> from qiskit.circuit.library import EfficientSU2
>>> prep = PauliFeatureMap(3, reps=3, paulis=['Z', 'YY', 'ZXZ'])
>>> wavefunction = EfficientSU2(3)
>>> classifier = prep.compose(wavefunction
>>> classifier.num_parameters
27
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
from typing import Callable, Optional
import numpy as np

from .pauli_expansion import PauliExpansion
from .pauli_feature_map import PauliFeatureMap


class FirstOrderExpansion(PauliExpansion):
class ZFeatureMap(PauliFeatureMap):
"""The first order Pauli Z-evolution circuit.

On 3 qubits and with 2 repetitions the circuit is represented by:
Expand All @@ -35,13 +35,13 @@ class FirstOrderExpansion(PauliExpansion):
┤ H ├┤ U1(2.0*x[2]) ├┤ H ├┤ U1(2.0*x[2]) ├
└───┘└──────────────┘└───┘└──────────────┘

This is a sub-class of :class:`~qiskit.circuit.library.PauliExpansion` where the Pauli
This is a sub-class of :class:`~qiskit.circuit.library.PauliFeatureMap` where the Pauli
strings are fixed as `['Z']`. As a result the first order expansion will be a circuit without
entangling gates.

Examples:

>>> prep = FirstOrderExpansion(3, reps=3, insert_barriers=True)
>>> prep = ZFeatureMap(3, reps=3, insert_barriers=True)
>>> print(prep)
┌───┐ ░ ┌──────────────┐ ░ ┌───┐ ░ ┌──────────────┐ ░ ┌───┐ ░ ┌──────────────┐
q_0: ┤ H ├─░─┤ U1(2.0*x[0]) ├─░─┤ H ├─░─┤ U1(2.0*x[0]) ├─░─┤ H ├─░─┤ U1(2.0*x[0]) ├
Expand All @@ -52,7 +52,7 @@ class FirstOrderExpansion(PauliExpansion):
└───┘ ░ └──────────────┘ ░ └───┘ ░ └──────────────┘ ░ └───┘ ░ └──────────────┘

>>> data_map = lambda x: x[0]*x[0] + 1 # note: input is an array
>>> prep = FirstOrderExpansion(3, reps=1, data_map_func=data_map)
>>> prep = ZFeatureMap(3, reps=1, data_map_func=data_map)
>>> print(prep)
┌───┐┌───────────────────────┐
q_0: ┤ H ├┤ U1(2.0*x[0]**2 + 2.0) ├
Expand All @@ -62,7 +62,7 @@ class FirstOrderExpansion(PauliExpansion):
q_2: ┤ H ├┤ U1(2.0*x[2]**2 + 2.0) ├
└───┘└───────────────────────┘

>>> classifier = FirstOrderExpansion(3, reps=1) + RY(3, reps=1)
>>> classifier = ZFeatureMap(3, reps=1) + RY(3, reps=1)
>>> print(classifier)
┌───┐┌──────────────┐┌──────────┐ ┌──────────┐
q_0: ┤ H ├┤ U1(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

from typing import Callable, List, Union, Optional
import numpy as np
from .pauli_expansion import PauliExpansion
from .pauli_feature_map import PauliFeatureMap


class SecondOrderExpansion(PauliExpansion):
class ZZFeatureMap(PauliFeatureMap):
"""Second-order Pauli-Z evolution circuit.

For 3 qubits and 1 repetition and linear entanglement the circuit is represented by:
Expand All @@ -39,19 +39,19 @@ class SecondOrderExpansion(PauliExpansion):

Examples:

>>> prep = SecondOrderExpansion(2, reps=2)
>>> prep = ZZFeatureMap(2, reps=2)
>>> print(prep)
┌───┐┌──────────────┐
q_0: ┤ H ├┤ U1(2.0*x[0]) ├──■───────────────────────────────────────■──
├───┤├──────────────┤┌─┴─┐┌─────────────────────────────────┐┌─┴─┐
q_1: ┤ H ├┤ U1(2.0*x[1]) ├┤ X ├┤ U1(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
└───┘└──────────────┘└───┘└─────────────────────────────────┘└───┘

>>> from qiskit.circuit.library import RYRZ
>>> classifier = SecondOrderExpansion(3) + RYRZ(3)
>>> from qiskit.circuit.library import EfficientSU2
>>> classifier = ZZFeatureMap(3) + EfficientSU2(3)
>>> classifier.num_parameters
15
>>> classifier.parameters # 'x' for the data preparation, 'θ' for the RYRZ parameters
>>> classifier.parameters # 'x' for the data preparation, 'θ' for the SU2 parameters
{Parameter(θ[9]), Parameter(θ[4]), Parameter(θ[6]), Parameter(θ[1]), Parameter(x[2]),
Parameter(θ[7]), Parameter(x[1]), Parameter(θ[8]), Parameter(θ[2]), Parameter(θ[10]),
Parameter(θ[5]), Parameter(θ[0]), Parameter(θ[3]), Parameter(x[0]), Parameter(θ[11])}
Expand Down
12 changes: 6 additions & 6 deletions qiskit/circuit/library/n_local/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@

from .n_local import NLocal
from .two_local import TwoLocal
from .ry import RY
from .ryrz import RYRZ
from .swaprz import SwapRZ
from .real_amplitudes import RealAmplitudes
from .efficient_su2 import EfficientSU2
from .excitation_preserving import ExcitationPreserving

__all__ = [
'NLocal',
'TwoLocal',
'RY',
'RYRZ',
'SwapRZ'
'RealAmplitudes',
'EfficientSU2',
'ExcitationPreserving'
]
Loading