Skip to content

Quantum machine learning constructors

Besides the arbitrary Hamiltonian constructors, Qadence also provides a complete set of program constructors useful for digital-analog quantum machine learning programs.

Feature maps

The feature_map function can easily create several types of data-encoding blocks. The two main types of feature maps use a Fourier basis or a Chebyshev basis.

from qadence import feature_map, BasisSet, chain
from qadence.draw import display

n_qubits = 3

fourier_fm = feature_map(n_qubits, fm_type=BasisSet.FOURIER)

chebyshev_fm = feature_map(n_qubits, fm_type=BasisSet.CHEBYSHEV)

block = chain(fourier_fm, chebyshev_fm)
%3 cluster_034ea06a73d44984a70b45ca828e3783 Constant Chebyshev FM cluster_ca011a0c06d948e281cc8a85fde00666 Constant Fourier FM 07f3659b2cc54893b925951c372ee960 0 f812f6f491684ead922d0835e01c3275 RX(phi) 07f3659b2cc54893b925951c372ee960--f812f6f491684ead922d0835e01c3275 a108dd05a9c74704a47cf24e22794a4a 1 2c1342f9d9664d2eafd902a5a98f6ba4 RX(acos(phi)) f812f6f491684ead922d0835e01c3275--2c1342f9d9664d2eafd902a5a98f6ba4 92449e418ed04872a7e530c743b7b6bb 2c1342f9d9664d2eafd902a5a98f6ba4--92449e418ed04872a7e530c743b7b6bb b82744f780d544c1851b92e0b8c11a75 c25599980c3642cbabbbe789f156c3aa RX(phi) a108dd05a9c74704a47cf24e22794a4a--c25599980c3642cbabbbe789f156c3aa 49e3a892c0664f4aa5fef4de420e008a 2 a328db6a8e264ddfb377057bfe083d4a RX(acos(phi)) c25599980c3642cbabbbe789f156c3aa--a328db6a8e264ddfb377057bfe083d4a a328db6a8e264ddfb377057bfe083d4a--b82744f780d544c1851b92e0b8c11a75 24f3d111198e49f281150e8fe0b7bb70 0ebf8925a60b45c5aeb061ec2ea83325 RX(phi) 49e3a892c0664f4aa5fef4de420e008a--0ebf8925a60b45c5aeb061ec2ea83325 51724cc8f6384793b01ea9a6d4d9bc3c RX(acos(phi)) 0ebf8925a60b45c5aeb061ec2ea83325--51724cc8f6384793b01ea9a6d4d9bc3c 51724cc8f6384793b01ea9a6d4d9bc3c--24f3d111198e49f281150e8fe0b7bb70

A custom encoding function can also be passed with sympy

from sympy import asin, Function

n_qubits = 3

# Using a pre-defined sympy Function
custom_fm_0 = feature_map(n_qubits, fm_type=asin)

# Creating a custom function
def custom_fn(x):
    return asin(x) + x**2

custom_fm_1 = feature_map(n_qubits, fm_type=custom_fn)

block = chain(custom_fm_0, custom_fm_1)
%3 cluster_9a8dfa96f50449c490e1250ad0d884a4 Constant <function custom_fn at 0x7f4f0c695e10> FM cluster_2e9e8e9c033644108b363db6c5ea821e Constant asin FM 689a11c7a58a4de8b401172aca031949 0 62b47fb056aa49a8a385c4104d2458da RX(asin(phi)) 689a11c7a58a4de8b401172aca031949--62b47fb056aa49a8a385c4104d2458da 4a3ae45c59cc45328cde54f7147973f3 1 157bbf612f354e9aa91bc07a4a0fb718 RX(phi**2 + asin(phi)) 62b47fb056aa49a8a385c4104d2458da--157bbf612f354e9aa91bc07a4a0fb718 cfedc97dc55d43699ef3b4e3f5b3f1fe 157bbf612f354e9aa91bc07a4a0fb718--cfedc97dc55d43699ef3b4e3f5b3f1fe 528042fd44f14423873ab318de081f5f d29422b6f2d7463d8ef3a2830c5396ec RX(asin(phi)) 4a3ae45c59cc45328cde54f7147973f3--d29422b6f2d7463d8ef3a2830c5396ec d383ad75ea5a4fb6833f89e57713acff 2 ee793d649c9242b39fa89ee8ab41efb3 RX(phi**2 + asin(phi)) d29422b6f2d7463d8ef3a2830c5396ec--ee793d649c9242b39fa89ee8ab41efb3 ee793d649c9242b39fa89ee8ab41efb3--528042fd44f14423873ab318de081f5f 60d897e131e0414f8c34fa38b1b42ef6 f9ca023f9b254ad2b9d3e7fbaebdd8c9 RX(asin(phi)) d383ad75ea5a4fb6833f89e57713acff--f9ca023f9b254ad2b9d3e7fbaebdd8c9 434dc626eec24e07b96bd15555bd7a0e RX(phi**2 + asin(phi)) f9ca023f9b254ad2b9d3e7fbaebdd8c9--434dc626eec24e07b96bd15555bd7a0e 434dc626eec24e07b96bd15555bd7a0e--60d897e131e0414f8c34fa38b1b42ef6

Furthermore, the reupload_scaling argument can be used to change the scaling applied to each qubit in the support of the feature map. The default scalings can be chosen from the ReuploadScaling enumeration.

from qadence import ReuploadScaling
from qadence.draw import display

n_qubits = 5

# Default constant value
fm_constant = feature_map(n_qubits, fm_type=BasisSet.FOURIER, reupload_scaling=ReuploadScaling.CONSTANT)

# Linearly increasing scaling
fm_tower = feature_map(n_qubits, fm_type=BasisSet.FOURIER, reupload_scaling=ReuploadScaling.TOWER)

# Exponentially increasing scaling
fm_exp = feature_map(n_qubits, fm_type=BasisSet.FOURIER, reupload_scaling=ReuploadScaling.EXP)

block = chain(fm_constant, fm_tower, fm_exp)
%3 cluster_69dcc7aee35d48cbb7047a27fbad1fd6 Exponential Fourier FM cluster_b34926d454f04e83893529d1f25bfadf Constant Fourier FM cluster_beabc8102d0449158d57deb301f8f2d3 Tower Fourier FM b48003e62ded4a8283a502c7b7cc6a4d 0 cb90370f1ca447b39a1615fe3396244f RX(phi) b48003e62ded4a8283a502c7b7cc6a4d--cb90370f1ca447b39a1615fe3396244f e131f4293f9d453a93c51a8b997cc174 1 022e43810d7e40d3a10415dec1faa860 RX(1.0*phi) cb90370f1ca447b39a1615fe3396244f--022e43810d7e40d3a10415dec1faa860 a96d015dd839486eb237f35819eecba2 RX(1.0*phi) 022e43810d7e40d3a10415dec1faa860--a96d015dd839486eb237f35819eecba2 9432bbb36f3d49c5b9c0b9cd1f73e7f2 a96d015dd839486eb237f35819eecba2--9432bbb36f3d49c5b9c0b9cd1f73e7f2 14ce147a089a4a28804b74b5a2abd6bb 8348fec00d4a4533b41ebe7b9831e562 RX(phi) e131f4293f9d453a93c51a8b997cc174--8348fec00d4a4533b41ebe7b9831e562 08dccbb305c840f387294342a6d29948 2 c75ad15ab1454663a085207e4582c102 RX(2.0*phi) 8348fec00d4a4533b41ebe7b9831e562--c75ad15ab1454663a085207e4582c102 c9f367a9220b4cbbad7f7b334e9109db RX(2.0*phi) c75ad15ab1454663a085207e4582c102--c9f367a9220b4cbbad7f7b334e9109db c9f367a9220b4cbbad7f7b334e9109db--14ce147a089a4a28804b74b5a2abd6bb c8e17873bc694a279c9c2f6240e21ac4 0ed1053c92e34f1a82ac72919f7d10aa RX(phi) 08dccbb305c840f387294342a6d29948--0ed1053c92e34f1a82ac72919f7d10aa 40d2e122da2148468d458b7a1e88cc52 3 039cfb109adb48afa305c58369fbcc9a RX(3.0*phi) 0ed1053c92e34f1a82ac72919f7d10aa--039cfb109adb48afa305c58369fbcc9a a8cb76157d8841f587a1c593e1f7889c RX(4.0*phi) 039cfb109adb48afa305c58369fbcc9a--a8cb76157d8841f587a1c593e1f7889c a8cb76157d8841f587a1c593e1f7889c--c8e17873bc694a279c9c2f6240e21ac4 671a4074508443769ba80231e14534de e3fef88603da42bba8dc04dce79f1dc3 RX(phi) 40d2e122da2148468d458b7a1e88cc52--e3fef88603da42bba8dc04dce79f1dc3 8386b3c6ab474c86b0c8058d79e407d1 4 54aac8414f8546178b50e1553326fee2 RX(4.0*phi) e3fef88603da42bba8dc04dce79f1dc3--54aac8414f8546178b50e1553326fee2 2f40e88297894510b6f75780277e812c RX(8.0*phi) 54aac8414f8546178b50e1553326fee2--2f40e88297894510b6f75780277e812c 2f40e88297894510b6f75780277e812c--671a4074508443769ba80231e14534de 757b0ae4777549208f17e4b1668c9bfd 5a8fd4416c6a4fad9cf5a1d463e074c5 RX(phi) 8386b3c6ab474c86b0c8058d79e407d1--5a8fd4416c6a4fad9cf5a1d463e074c5 0311ae715f574ccea9adc3ccf0c8dced RX(5.0*phi) 5a8fd4416c6a4fad9cf5a1d463e074c5--0311ae715f574ccea9adc3ccf0c8dced cddf4c4243cc49d784aa6af5cad49f9a RX(16.0*phi) 0311ae715f574ccea9adc3ccf0c8dced--cddf4c4243cc49d784aa6af5cad49f9a cddf4c4243cc49d784aa6af5cad49f9a--757b0ae4777549208f17e4b1668c9bfd

A custom scaling can also be defined with a function with an int input and int or float output.

n_qubits = 5

def custom_scaling(i: int) -> int | float:
    """Sqrt(i+1)"""
    return (i+1) ** (0.5)

# Custom scaling function
fm_custom = feature_map(n_qubits, fm_type=BasisSet.CHEBYSHEV, reupload_scaling=custom_scaling)
%3 91637b41462a43bfaa1064e71d140d4a 0 770b517435e849368b39ed345a64e7d1 RX(1.0*acos(phi)) 91637b41462a43bfaa1064e71d140d4a--770b517435e849368b39ed345a64e7d1 44975b0f983349d8828ec38cd0340ec5 1 e125c1261a4a4b2eb693d60fbf3d6270 770b517435e849368b39ed345a64e7d1--e125c1261a4a4b2eb693d60fbf3d6270 2865eaea8f0d4b57b3d6037ba6a3976e 3ef929a3a89e4773abb4c973e4f25663 RX(1.414*acos(phi)) 44975b0f983349d8828ec38cd0340ec5--3ef929a3a89e4773abb4c973e4f25663 6c3962df93c34a3fbb3364d6acc0eeb9 2 3ef929a3a89e4773abb4c973e4f25663--2865eaea8f0d4b57b3d6037ba6a3976e e9ed116beb8f4778a91880dd393aadd7 d440b50dc1174c4abaddde11ba33db5e RX(1.732*acos(phi)) 6c3962df93c34a3fbb3364d6acc0eeb9--d440b50dc1174c4abaddde11ba33db5e e0b9d11c01a34bb7883ca2a2c3c5331e 3 d440b50dc1174c4abaddde11ba33db5e--e9ed116beb8f4778a91880dd393aadd7 3667d3d78f5c4d298beb1171a2ba8eaf 28585997bb5a4b83b783bfb050588127 RX(2.0*acos(phi)) e0b9d11c01a34bb7883ca2a2c3c5331e--28585997bb5a4b83b783bfb050588127 230e3bd8ca814d2599929887d0e6a989 4 28585997bb5a4b83b783bfb050588127--3667d3d78f5c4d298beb1171a2ba8eaf 6318feb1aef74e629edc0a5eb0e8b2e0 ac578538ab704fcf9ff4a0a28f88c120 RX(2.236*acos(phi)) 230e3bd8ca814d2599929887d0e6a989--ac578538ab704fcf9ff4a0a28f88c120 ac578538ab704fcf9ff4a0a28f88c120--6318feb1aef74e629edc0a5eb0e8b2e0

To add a trainable parameter that multiplies the feature parameter inside the encoding function, simply pass a param_prefix string:

n_qubits = 5

fm_trainable = feature_map(
    n_qubits,
    fm_type=BasisSet.FOURIER,
    reupload_scaling=ReuploadScaling.EXP,
    param_prefix = "w",
)
%3 afa2c0b762ad4cc585ca1e2f4de55b9d 0 4a733435aa7240cb9868b7e1da0249f9 RX(1.0*phi*w₀) afa2c0b762ad4cc585ca1e2f4de55b9d--4a733435aa7240cb9868b7e1da0249f9 0f29b141ba8e4cdcaf34aae8feba5f75 1 d4e2a8a8a8074d26930021c09fcdd1d4 4a733435aa7240cb9868b7e1da0249f9--d4e2a8a8a8074d26930021c09fcdd1d4 50856e92672545138cc8993fdd77609e d635883dca094e9693d558618a06212d RX(2.0*phi*w₁) 0f29b141ba8e4cdcaf34aae8feba5f75--d635883dca094e9693d558618a06212d 613c8f013a5943e7b89619735568dac4 2 d635883dca094e9693d558618a06212d--50856e92672545138cc8993fdd77609e a308ff00ad7843b08a67ad9c853930e7 c169502a917047ffb29758f65b1b4667 RX(4.0*phi*w₂) 613c8f013a5943e7b89619735568dac4--c169502a917047ffb29758f65b1b4667 b2af88e47e5e44acbbdb6fe17b971530 3 c169502a917047ffb29758f65b1b4667--a308ff00ad7843b08a67ad9c853930e7 e9ac1c6e966149f5b457e056bba58cf5 4a14a8c1e7b1447fbda5fd7eb2eba5bb RX(8.0*phi*w₃) b2af88e47e5e44acbbdb6fe17b971530--4a14a8c1e7b1447fbda5fd7eb2eba5bb eed4f7fcd3cf4c1487d9364a58c2437f 4 4a14a8c1e7b1447fbda5fd7eb2eba5bb--e9ac1c6e966149f5b457e056bba58cf5 23aa9a39cae7498abdc4e86b68d3883f 9c0989a30cea4da89957d168e19d1a1a RX(16.0*phi*w₄) eed4f7fcd3cf4c1487d9364a58c2437f--9c0989a30cea4da89957d168e19d1a1a 9c0989a30cea4da89957d168e19d1a1a--23aa9a39cae7498abdc4e86b68d3883f

Note that for the Fourier feature map, the encoding function is simply \(f(x)=x\). For other cases, like the Chebyshev acos() encoding, the trainable parameter may cause the feature value to be outside the domain of the encoding function. This will eventually be fixed by adding range constraints to trainable parameters in Qadence.

A full description of the remaining arguments can be found in the feature_map API reference. We provide an example below.

from qadence import RY

n_qubits = 5

# Custom scaling function
fm_full = feature_map(
    n_qubits = n_qubits,
    support = tuple(reversed(range(n_qubits))), # Reverse the qubit support to run the scaling from bottom to top
    param = "x", # Change the name of the parameter
    op = RY, # Change the rotation gate between RX, RY, RZ or PHASE
    fm_type = BasisSet.CHEBYSHEV,
    reupload_scaling = ReuploadScaling.EXP,
    feature_range = (-1.0, 2.0), # Range from which the input data comes from
    target_range = (1.0, 3.0), # Range the encoder assumes as the natural range
    multiplier = 5.0, # Extra multiplier, which can also be a Parameter
    param_prefix = "w", # Add trainable parameters
)
%3 1eb5c844ed1f4f409c196d5857143f10 0 ca82320a41a04e9388a7b1ece5a60b22 RY(80.0*acos(w₄*(0.667*x + 1.667))) 1eb5c844ed1f4f409c196d5857143f10--ca82320a41a04e9388a7b1ece5a60b22 949098f8b44946fca0e6ad48e8bbbbea 1 85d4d4ae46974a2badce33833ae173bb ca82320a41a04e9388a7b1ece5a60b22--85d4d4ae46974a2badce33833ae173bb baa46a87a8164ff69db62f7eeb10d873 8fb82491c44f4d62ad50be637c437474 RY(40.0*acos(w₃*(0.667*x + 1.667))) 949098f8b44946fca0e6ad48e8bbbbea--8fb82491c44f4d62ad50be637c437474 87c05ba7bcc84b6bacffe1ebf3161423 2 8fb82491c44f4d62ad50be637c437474--baa46a87a8164ff69db62f7eeb10d873 ba1efe46360c4746ab4debba5df71171 f6e05f55e1f14266ba8a4a5d71656b87 RY(20.0*acos(w₂*(0.667*x + 1.667))) 87c05ba7bcc84b6bacffe1ebf3161423--f6e05f55e1f14266ba8a4a5d71656b87 93a97f0207554b2d85a30fad76dfd299 3 f6e05f55e1f14266ba8a4a5d71656b87--ba1efe46360c4746ab4debba5df71171 68e1bdcb52cc49af9f7ac7456725345e 23ebf90c75b7431586eac753295a18a9 RY(10.0*acos(w₁*(0.667*x + 1.667))) 93a97f0207554b2d85a30fad76dfd299--23ebf90c75b7431586eac753295a18a9 86c6cd658195459597c9dce3a11d282c 4 23ebf90c75b7431586eac753295a18a9--68e1bdcb52cc49af9f7ac7456725345e a7634264a1ca4f1f83e76920583afb96 883c2f4878d04d379c5211911223fedb RY(5.0*acos(w₀*(0.667*x + 1.667))) 86c6cd658195459597c9dce3a11d282c--883c2f4878d04d379c5211911223fedb 883c2f4878d04d379c5211911223fedb--a7634264a1ca4f1f83e76920583afb96

Hardware-efficient ansatz

Ansatze blocks for quantum machine-learning are typically built following the Hardware-Efficient Ansatz formalism (HEA). Both fully digital and digital-analog HEAs can easily be built with the hea function. By default, the digital version is returned:

from qadence import hea
from qadence.draw import display

n_qubits = 3
depth = 2

ansatz = hea(n_qubits, depth)
%3 50476719b9bc4460bc95e0f5405f7c7b 0 05ebdf4394b34ebcb462ac2455e1880a RX(theta₀) 50476719b9bc4460bc95e0f5405f7c7b--05ebdf4394b34ebcb462ac2455e1880a 2a812a8ebfc44066aea438775c2fdb3d 1 8cea17b5ebfe481ebd7ab9490097b6f1 RY(theta₃) 05ebdf4394b34ebcb462ac2455e1880a--8cea17b5ebfe481ebd7ab9490097b6f1 ca458c2c556d459bb28a7c938947e301 RX(theta₆) 8cea17b5ebfe481ebd7ab9490097b6f1--ca458c2c556d459bb28a7c938947e301 18a12bed611548fc82b8a5fc6426cc47 ca458c2c556d459bb28a7c938947e301--18a12bed611548fc82b8a5fc6426cc47 71d04c56b1c2437584df141bf526da47 18a12bed611548fc82b8a5fc6426cc47--71d04c56b1c2437584df141bf526da47 62709b77682b42eb92b1d03ffbcfc5e6 RX(theta₉) 71d04c56b1c2437584df141bf526da47--62709b77682b42eb92b1d03ffbcfc5e6 23a673b8006f4f1e9c7b9db3ed289dd2 RY(theta₁₂) 62709b77682b42eb92b1d03ffbcfc5e6--23a673b8006f4f1e9c7b9db3ed289dd2 0a538fdf9c4646198333d8601174d687 RX(theta₁₅) 23a673b8006f4f1e9c7b9db3ed289dd2--0a538fdf9c4646198333d8601174d687 ea3b9aebade84581908627eb8ca460fe 0a538fdf9c4646198333d8601174d687--ea3b9aebade84581908627eb8ca460fe 63b44a6d752241b0817d89edbfc74584 ea3b9aebade84581908627eb8ca460fe--63b44a6d752241b0817d89edbfc74584 5b5c8e71616b4e05ae86abf22d5a0726 63b44a6d752241b0817d89edbfc74584--5b5c8e71616b4e05ae86abf22d5a0726 dd5649c6be8244528a6ce88bff548734 74092972a23740098836176ae367b248 RX(theta₁) 2a812a8ebfc44066aea438775c2fdb3d--74092972a23740098836176ae367b248 57d9dc4781fb4de6b1e5dd0d687a8b78 2 0eb16cff87954c55b5b683d920d133f9 RY(theta₄) 74092972a23740098836176ae367b248--0eb16cff87954c55b5b683d920d133f9 b5ad4505629049c7a944cb793721e281 RX(theta₇) 0eb16cff87954c55b5b683d920d133f9--b5ad4505629049c7a944cb793721e281 5812fb97300849edac8b09258395254e X b5ad4505629049c7a944cb793721e281--5812fb97300849edac8b09258395254e 5812fb97300849edac8b09258395254e--18a12bed611548fc82b8a5fc6426cc47 72966174c47d401eaea697fd22ab8b19 5812fb97300849edac8b09258395254e--72966174c47d401eaea697fd22ab8b19 c300245be64a4ce2ac41328f7bef3a4c RX(theta₁₀) 72966174c47d401eaea697fd22ab8b19--c300245be64a4ce2ac41328f7bef3a4c 31b9510f6e054d878a5d49c83e7aee3b RY(theta₁₃) c300245be64a4ce2ac41328f7bef3a4c--31b9510f6e054d878a5d49c83e7aee3b 804c33010889467683308474faea978d RX(theta₁₆) 31b9510f6e054d878a5d49c83e7aee3b--804c33010889467683308474faea978d 5afbdeff020b4620b9af1a438a746974 X 804c33010889467683308474faea978d--5afbdeff020b4620b9af1a438a746974 5afbdeff020b4620b9af1a438a746974--ea3b9aebade84581908627eb8ca460fe 27d8749a94b74a338a954653062510cf 5afbdeff020b4620b9af1a438a746974--27d8749a94b74a338a954653062510cf 27d8749a94b74a338a954653062510cf--dd5649c6be8244528a6ce88bff548734 fa931ecbe36d4b9e9f6e3994fab9f3ed 73f852532fe846a4b11e0e8ed6e6558d RX(theta₂) 57d9dc4781fb4de6b1e5dd0d687a8b78--73f852532fe846a4b11e0e8ed6e6558d abf42bb0fec9491dbc26a6b28106d84c RY(theta₅) 73f852532fe846a4b11e0e8ed6e6558d--abf42bb0fec9491dbc26a6b28106d84c 3060af5f295c48459007349af4dcfe3b RX(theta₈) abf42bb0fec9491dbc26a6b28106d84c--3060af5f295c48459007349af4dcfe3b 1962b4a1ff5e471e90668d779fac708c 3060af5f295c48459007349af4dcfe3b--1962b4a1ff5e471e90668d779fac708c 0b475dc7f550482bb2964b9ea17210b1 X 1962b4a1ff5e471e90668d779fac708c--0b475dc7f550482bb2964b9ea17210b1 0b475dc7f550482bb2964b9ea17210b1--72966174c47d401eaea697fd22ab8b19 3484c7a89f63459fa3c4df0750b470c9 RX(theta₁₁) 0b475dc7f550482bb2964b9ea17210b1--3484c7a89f63459fa3c4df0750b470c9 083a1cd76c6943519b798f05ec59086e RY(theta₁₄) 3484c7a89f63459fa3c4df0750b470c9--083a1cd76c6943519b798f05ec59086e b280b689333a418b96b7c80b1be981af RX(theta₁₇) 083a1cd76c6943519b798f05ec59086e--b280b689333a418b96b7c80b1be981af ba14966bcb9447598a668db28f14349a b280b689333a418b96b7c80b1be981af--ba14966bcb9447598a668db28f14349a 4373d0d46ead498bb3efe27db2c3ae05 X ba14966bcb9447598a668db28f14349a--4373d0d46ead498bb3efe27db2c3ae05 4373d0d46ead498bb3efe27db2c3ae05--27d8749a94b74a338a954653062510cf 4373d0d46ead498bb3efe27db2c3ae05--fa931ecbe36d4b9e9f6e3994fab9f3ed

As seen above, the rotation layers are automatically parameterized, and the prefix "theta" can be changed with the param_prefix argument.

Furthermore, both the single-qubit rotations and the two-qubit entangler can be customized with the operations and entangler argument. The operations can be passed as a list of single-qubit rotations, while the entangler should be either CNOT, CZ, CRX, CRY, CRZ or CPHASE.

from qadence import RX, RY, CPHASE

ansatz = hea(
    n_qubits=n_qubits,
    depth=depth,
    param_prefix="phi",
    operations=[RX, RY, RX],
    entangler=CPHASE
)
%3 79f3c0ccaa78442d8c52873faa110c8d 0 329e8e8705a44a6a9240d16eaad0ca02 RX(phi₀) 79f3c0ccaa78442d8c52873faa110c8d--329e8e8705a44a6a9240d16eaad0ca02 35a97c0ed2ee4291b6dd2e2fa3ec8422 1 499655cf234d47ada6f5c88d2583ce1a RY(phi₃) 329e8e8705a44a6a9240d16eaad0ca02--499655cf234d47ada6f5c88d2583ce1a 9983cf61501a46c480dfe217a123e2da RX(phi₆) 499655cf234d47ada6f5c88d2583ce1a--9983cf61501a46c480dfe217a123e2da a04b311666a444a5928fe271dca37ab3 9983cf61501a46c480dfe217a123e2da--a04b311666a444a5928fe271dca37ab3 b40e20b58a7a41e4966c051356743081 a04b311666a444a5928fe271dca37ab3--b40e20b58a7a41e4966c051356743081 2fa42d424a10411aad0792fd065c3145 RX(phi₉) b40e20b58a7a41e4966c051356743081--2fa42d424a10411aad0792fd065c3145 dc8af393bc9647bc817e0f88848b0e41 RY(phi₁₂) 2fa42d424a10411aad0792fd065c3145--dc8af393bc9647bc817e0f88848b0e41 196ddab0d5084df1b746280f10ffb7b6 RX(phi₁₅) dc8af393bc9647bc817e0f88848b0e41--196ddab0d5084df1b746280f10ffb7b6 8506109226724275b2c44963872e4df4 196ddab0d5084df1b746280f10ffb7b6--8506109226724275b2c44963872e4df4 138099aec7b04af9b040d7b7f9598d4c 8506109226724275b2c44963872e4df4--138099aec7b04af9b040d7b7f9598d4c 256d337613cc4d1fa701ee596a742fc9 138099aec7b04af9b040d7b7f9598d4c--256d337613cc4d1fa701ee596a742fc9 234115a5ee214167a98cdb18d4576763 3f8951d025004dc7afe589debe0fb0f1 RX(phi₁) 35a97c0ed2ee4291b6dd2e2fa3ec8422--3f8951d025004dc7afe589debe0fb0f1 12319a0416b34c6ebfd9d2d0831f3203 2 8a2be3d184c04708a4cb666ee5819ad0 RY(phi₄) 3f8951d025004dc7afe589debe0fb0f1--8a2be3d184c04708a4cb666ee5819ad0 d065b289672d4749960d25e68bb1c8bc RX(phi₇) 8a2be3d184c04708a4cb666ee5819ad0--d065b289672d4749960d25e68bb1c8bc 6f0cfe004a384d8d8f154a8cee93f5fd PHASE(phi_ent₀) d065b289672d4749960d25e68bb1c8bc--6f0cfe004a384d8d8f154a8cee93f5fd 6f0cfe004a384d8d8f154a8cee93f5fd--a04b311666a444a5928fe271dca37ab3 9d92d7c2744a4a498a06827f5f4ac4db 6f0cfe004a384d8d8f154a8cee93f5fd--9d92d7c2744a4a498a06827f5f4ac4db 244550c304714f0cb24c184479c0864d RX(phi₁₀) 9d92d7c2744a4a498a06827f5f4ac4db--244550c304714f0cb24c184479c0864d 0e32bbfee38242b690fc962a42d6bbd7 RY(phi₁₃) 244550c304714f0cb24c184479c0864d--0e32bbfee38242b690fc962a42d6bbd7 0b0d0b68b01d4124b8301889b854b7c5 RX(phi₁₆) 0e32bbfee38242b690fc962a42d6bbd7--0b0d0b68b01d4124b8301889b854b7c5 90203bfaa154402b8632a78856075fe6 PHASE(phi_ent₂) 0b0d0b68b01d4124b8301889b854b7c5--90203bfaa154402b8632a78856075fe6 90203bfaa154402b8632a78856075fe6--8506109226724275b2c44963872e4df4 c6db30a9132d4dc08ff850607a8eaf02 90203bfaa154402b8632a78856075fe6--c6db30a9132d4dc08ff850607a8eaf02 c6db30a9132d4dc08ff850607a8eaf02--234115a5ee214167a98cdb18d4576763 c88b366dd0d74f2db7b079d91403f717 34cf9678340c4789a67eb65f9ed6d58f RX(phi₂) 12319a0416b34c6ebfd9d2d0831f3203--34cf9678340c4789a67eb65f9ed6d58f e907395dc53e4854a89ab65678bdbeec RY(phi₅) 34cf9678340c4789a67eb65f9ed6d58f--e907395dc53e4854a89ab65678bdbeec e0feec8912e34aab94855091cec98ff2 RX(phi₈) e907395dc53e4854a89ab65678bdbeec--e0feec8912e34aab94855091cec98ff2 084a7b518bae41e3aa4ef6fdbb6eebd4 e0feec8912e34aab94855091cec98ff2--084a7b518bae41e3aa4ef6fdbb6eebd4 e0b8744765074e9f883c954340fd8782 PHASE(phi_ent₁) 084a7b518bae41e3aa4ef6fdbb6eebd4--e0b8744765074e9f883c954340fd8782 e0b8744765074e9f883c954340fd8782--9d92d7c2744a4a498a06827f5f4ac4db 36ba9f3c024b4f029c07f6d71ddcc15f RX(phi₁₁) e0b8744765074e9f883c954340fd8782--36ba9f3c024b4f029c07f6d71ddcc15f 6ed0eccc27684934ac31979e437ed052 RY(phi₁₄) 36ba9f3c024b4f029c07f6d71ddcc15f--6ed0eccc27684934ac31979e437ed052 af5fc6e2873946839bc66b398d820386 RX(phi₁₇) 6ed0eccc27684934ac31979e437ed052--af5fc6e2873946839bc66b398d820386 b121b01673bf47d7a1f7734cf6d0fd1d af5fc6e2873946839bc66b398d820386--b121b01673bf47d7a1f7734cf6d0fd1d 07e1a8aa64cc413ea3fda1ad7ff030a9 PHASE(phi_ent₃) b121b01673bf47d7a1f7734cf6d0fd1d--07e1a8aa64cc413ea3fda1ad7ff030a9 07e1a8aa64cc413ea3fda1ad7ff030a9--c6db30a9132d4dc08ff850607a8eaf02 07e1a8aa64cc413ea3fda1ad7ff030a9--c88b366dd0d74f2db7b079d91403f717

Having a truly hardware-efficient ansatz means that the entangling operation can be chosen according to each device's native interactions. Besides digital operations, in Qadence it is also possible to build digital-analog HEAs with the entanglement produced by the natural evolution of a set of interacting qubits, as natively implemented in neutral atom devices. As with other digital-analog functions, this can be controlled with the strategy argument which can be chosen from the Strategy enum type. Currently, only Strategy.DIGITAL and Strategy.SDAQC are available. By default, calling strategy = Strategy.SDAQC will use a global entangling Hamiltonian with Ising-like \(NN\) interactions and constant interaction strength,

from qadence import Strategy

ansatz = hea(
    n_qubits,
    depth=depth,
    strategy=Strategy.SDAQC
)
%3 cluster_4dfba951b85d4a18943ca3321531ad15 cluster_afe23695d9e64f5086bf98e4d86a2991 58667e61d92742a79a783cab6a223113 0 8aa61308400b48e29bb41679b396f7b4 RX(theta₀) 58667e61d92742a79a783cab6a223113--8aa61308400b48e29bb41679b396f7b4 0211bd5d82db45fe97033b8831063861 1 d30e820677c845f6ac47ac1cbd153b68 RY(theta₃) 8aa61308400b48e29bb41679b396f7b4--d30e820677c845f6ac47ac1cbd153b68 ad54ad089b1c4499a6ef55ebc2d33123 RX(theta₆) d30e820677c845f6ac47ac1cbd153b68--ad54ad089b1c4499a6ef55ebc2d33123 ecd336e495d94c07b403407364b2f324 HamEvo ad54ad089b1c4499a6ef55ebc2d33123--ecd336e495d94c07b403407364b2f324 76adc4e307e64de08b411112ade50a53 RX(theta₉) ecd336e495d94c07b403407364b2f324--76adc4e307e64de08b411112ade50a53 2366e23dddc34f94b174e8952a4a064b RY(theta₁₂) 76adc4e307e64de08b411112ade50a53--2366e23dddc34f94b174e8952a4a064b daa77e1ad9444d81a90790f053b7e218 RX(theta₁₅) 2366e23dddc34f94b174e8952a4a064b--daa77e1ad9444d81a90790f053b7e218 62ef348fc850407e9d3b709ca7bbdab8 HamEvo daa77e1ad9444d81a90790f053b7e218--62ef348fc850407e9d3b709ca7bbdab8 3ce88939aef24446997152fb6412d177 62ef348fc850407e9d3b709ca7bbdab8--3ce88939aef24446997152fb6412d177 510d5aa1ded140499b4766acd09fcc12 0bcce0b786584a3281f87f087e630add RX(theta₁) 0211bd5d82db45fe97033b8831063861--0bcce0b786584a3281f87f087e630add 2f74d2cfb8b248808a13899c286fbec2 2 3f1cae81d4a84e40ae4629fa2462dec5 RY(theta₄) 0bcce0b786584a3281f87f087e630add--3f1cae81d4a84e40ae4629fa2462dec5 bff5d240719a4f24b2c9239611723853 RX(theta₇) 3f1cae81d4a84e40ae4629fa2462dec5--bff5d240719a4f24b2c9239611723853 985841c51a4c4318b4aff7b2fd6d262a t = theta_t₀ bff5d240719a4f24b2c9239611723853--985841c51a4c4318b4aff7b2fd6d262a 41356851f35f4da4bdc73588b131f0b3 RX(theta₁₀) 985841c51a4c4318b4aff7b2fd6d262a--41356851f35f4da4bdc73588b131f0b3 983a9fa3e4c540bca06638f29c94941f RY(theta₁₃) 41356851f35f4da4bdc73588b131f0b3--983a9fa3e4c540bca06638f29c94941f 64d9312b41554c9a9870af9e901f7ab1 RX(theta₁₆) 983a9fa3e4c540bca06638f29c94941f--64d9312b41554c9a9870af9e901f7ab1 ca307dbb98244f52a873e4c65391317e t = theta_t₁ 64d9312b41554c9a9870af9e901f7ab1--ca307dbb98244f52a873e4c65391317e ca307dbb98244f52a873e4c65391317e--510d5aa1ded140499b4766acd09fcc12 1c7a680987d64092ba91af5c3b2fc2dc aacffe7527cb4f378214e0f8f2a1bf67 RX(theta₂) 2f74d2cfb8b248808a13899c286fbec2--aacffe7527cb4f378214e0f8f2a1bf67 32ecfb8ecc80418a8c31495af201dd09 RY(theta₅) aacffe7527cb4f378214e0f8f2a1bf67--32ecfb8ecc80418a8c31495af201dd09 1512c1ee3a114f6ca6ce1f0520c65d3f RX(theta₈) 32ecfb8ecc80418a8c31495af201dd09--1512c1ee3a114f6ca6ce1f0520c65d3f 3c4883cd5cdc448a829aa2d6118d2243 1512c1ee3a114f6ca6ce1f0520c65d3f--3c4883cd5cdc448a829aa2d6118d2243 cc41a9593ef347209c0f8c2cc90619c3 RX(theta₁₁) 3c4883cd5cdc448a829aa2d6118d2243--cc41a9593ef347209c0f8c2cc90619c3 7e6daf9f97d84d20830a861d41e959d6 RY(theta₁₄) cc41a9593ef347209c0f8c2cc90619c3--7e6daf9f97d84d20830a861d41e959d6 1c6677702521457a90904e060a088a50 RX(theta₁₇) 7e6daf9f97d84d20830a861d41e959d6--1c6677702521457a90904e060a088a50 0f8109a022824b1eb17fea229f75f2aa 1c6677702521457a90904e060a088a50--0f8109a022824b1eb17fea229f75f2aa 0f8109a022824b1eb17fea229f75f2aa--1c7a680987d64092ba91af5c3b2fc2dc

Note that, by default, only the time-parameter is automatically parameterized when building a digital-analog HEA. However, as described in the Hamiltonians tutorial, arbitrary interaction Hamiltonians can be easily built with the hamiltonian_factory function, with both customized or fully parameterized interactions, and these can be directly passed as the entangler for a customizable digital-analog HEA.

from qadence import hamiltonian_factory, Interaction, N, Register, hea

# Build a parameterized neutral-atom Hamiltonian following a honeycomb_lattice:
register = Register.honeycomb_lattice(1, 1)

entangler = hamiltonian_factory(
    register,
    interaction=Interaction.NN,
    detuning=N,
    interaction_strength="e",
    detuning_strength="n"
)

# Build a fully parameterized Digital-Analog HEA:
n_qubits = register.n_qubits
depth = 2

ansatz = hea(
    n_qubits=register.n_qubits,
    depth=depth,
    operations=[RX, RY, RX],
    entangler=entangler,
    strategy=Strategy.SDAQC
)
%3 cluster_885b0ee8ecee44a79e7c850e511b831a cluster_5069aacf79224211a00703e5e1b95cdb 0377128be36a4d74bee160dc5f9e60ce 0 37344accd4ab436bb08ea398608decb1 RX(theta₀) 0377128be36a4d74bee160dc5f9e60ce--37344accd4ab436bb08ea398608decb1 d15c241d34524aecb7dddf581997c9de 1 31d40b6444b54b49829ab0d4e90a6308 RY(theta₆) 37344accd4ab436bb08ea398608decb1--31d40b6444b54b49829ab0d4e90a6308 7a19d1a7bbed4485879ad72fd3862d50 RX(theta₁₂) 31d40b6444b54b49829ab0d4e90a6308--7a19d1a7bbed4485879ad72fd3862d50 62a987bbc40a4782a6553a7a617e302d 7a19d1a7bbed4485879ad72fd3862d50--62a987bbc40a4782a6553a7a617e302d 95192ead56e64941b6da56832d4f3e07 RX(theta₁₈) 62a987bbc40a4782a6553a7a617e302d--95192ead56e64941b6da56832d4f3e07 007869a661c84a54a0c7bb897d6df1ef RY(theta₂₄) 95192ead56e64941b6da56832d4f3e07--007869a661c84a54a0c7bb897d6df1ef 9b0b9a2d84874be0afb1913dc98ea3b4 RX(theta₃₀) 007869a661c84a54a0c7bb897d6df1ef--9b0b9a2d84874be0afb1913dc98ea3b4 0551512be9ac4c44ae0ac3c2bd285f45 9b0b9a2d84874be0afb1913dc98ea3b4--0551512be9ac4c44ae0ac3c2bd285f45 045dcd82f95c4a648dad4359b2e693d2 0551512be9ac4c44ae0ac3c2bd285f45--045dcd82f95c4a648dad4359b2e693d2 b001ef83ae3e40bdb9a7961f1922e613 2e36953d7e6c474eae7022f324cafed3 RX(theta₁) d15c241d34524aecb7dddf581997c9de--2e36953d7e6c474eae7022f324cafed3 4ea6c01d72f74dd6b4d0ba36e98bfb05 2 a9e8d175965341439855de25294b9e07 RY(theta₇) 2e36953d7e6c474eae7022f324cafed3--a9e8d175965341439855de25294b9e07 f0c4538d400f46ecb66e1123eebd30a0 RX(theta₁₃) a9e8d175965341439855de25294b9e07--f0c4538d400f46ecb66e1123eebd30a0 679644abf4d1464089a7f9b33d3d5187 f0c4538d400f46ecb66e1123eebd30a0--679644abf4d1464089a7f9b33d3d5187 93a8a7478b824e158f8b40b4208ef0e2 RX(theta₁₉) 679644abf4d1464089a7f9b33d3d5187--93a8a7478b824e158f8b40b4208ef0e2 b70e7756f7b24d98b9e99f2a938a851a RY(theta₂₅) 93a8a7478b824e158f8b40b4208ef0e2--b70e7756f7b24d98b9e99f2a938a851a a26a4875308b4e8ba44901f8eca5e0a1 RX(theta₃₁) b70e7756f7b24d98b9e99f2a938a851a--a26a4875308b4e8ba44901f8eca5e0a1 312a2fb9cd824c0dbe5ad25fd9d30089 a26a4875308b4e8ba44901f8eca5e0a1--312a2fb9cd824c0dbe5ad25fd9d30089 312a2fb9cd824c0dbe5ad25fd9d30089--b001ef83ae3e40bdb9a7961f1922e613 06710c0d334846b3a221aa5a2039b94c d26fcaa336e943e08d4996874cb529a0 RX(theta₂) 4ea6c01d72f74dd6b4d0ba36e98bfb05--d26fcaa336e943e08d4996874cb529a0 0d7c174994ef43b9b4dd19c6fe35d6b8 3 82c659c547bf46a59b5e848974f5931b RY(theta₈) d26fcaa336e943e08d4996874cb529a0--82c659c547bf46a59b5e848974f5931b 8b5c836b38734af1955469a3ee643bfc RX(theta₁₄) 82c659c547bf46a59b5e848974f5931b--8b5c836b38734af1955469a3ee643bfc b80a850fc94245608607f7d91b30c388 HamEvo 8b5c836b38734af1955469a3ee643bfc--b80a850fc94245608607f7d91b30c388 a7391082cd964e2dbe2fd722a09f154e RX(theta₂₀) b80a850fc94245608607f7d91b30c388--a7391082cd964e2dbe2fd722a09f154e 5162943cb43746a0b2536b58b7a3c4be RY(theta₂₆) a7391082cd964e2dbe2fd722a09f154e--5162943cb43746a0b2536b58b7a3c4be 9632d18f00da4b2e9c530b2a236ed2e3 RX(theta₃₂) 5162943cb43746a0b2536b58b7a3c4be--9632d18f00da4b2e9c530b2a236ed2e3 66ce33a5b7ab4674a7ec1219bcd007af HamEvo 9632d18f00da4b2e9c530b2a236ed2e3--66ce33a5b7ab4674a7ec1219bcd007af 66ce33a5b7ab4674a7ec1219bcd007af--06710c0d334846b3a221aa5a2039b94c 8359527e19984ee68a2cc57e09a253d3 2aa2dd70270f48798fc25c1e1f161bd5 RX(theta₃) 0d7c174994ef43b9b4dd19c6fe35d6b8--2aa2dd70270f48798fc25c1e1f161bd5 ba5783319c32455e92701ea938f18e1f 4 4457774fafea4a79b8cb32bdfc5c4e05 RY(theta₉) 2aa2dd70270f48798fc25c1e1f161bd5--4457774fafea4a79b8cb32bdfc5c4e05 b01a1794f18b4861ab3755431cb38d37 RX(theta₁₅) 4457774fafea4a79b8cb32bdfc5c4e05--b01a1794f18b4861ab3755431cb38d37 052b9e530cc54a698baa4d2622d5d5c7 t = theta_t₀ b01a1794f18b4861ab3755431cb38d37--052b9e530cc54a698baa4d2622d5d5c7 ec6f51c22c684195a9d6270c59da8bae RX(theta₂₁) 052b9e530cc54a698baa4d2622d5d5c7--ec6f51c22c684195a9d6270c59da8bae 52109197ee094d3d8b86965cb16b2f14 RY(theta₂₇) ec6f51c22c684195a9d6270c59da8bae--52109197ee094d3d8b86965cb16b2f14 9f3d23b7cadb4bcd997f1d0ca85aee3f RX(theta₃₃) 52109197ee094d3d8b86965cb16b2f14--9f3d23b7cadb4bcd997f1d0ca85aee3f 5adc08e5b68847ac9798673ee462e7a6 t = theta_t₁ 9f3d23b7cadb4bcd997f1d0ca85aee3f--5adc08e5b68847ac9798673ee462e7a6 5adc08e5b68847ac9798673ee462e7a6--8359527e19984ee68a2cc57e09a253d3 2bd9fb3741bc4095bd333758dbedf3e5 c809d665de1d459882b712405253ac83 RX(theta₄) ba5783319c32455e92701ea938f18e1f--c809d665de1d459882b712405253ac83 6ee72a52e35f4d46a175efcbbc2977ef 5 d3addc3c31e24128ae682fb794969435 RY(theta₁₀) c809d665de1d459882b712405253ac83--d3addc3c31e24128ae682fb794969435 b6fb8814df284c818683c52a097cc2ff RX(theta₁₆) d3addc3c31e24128ae682fb794969435--b6fb8814df284c818683c52a097cc2ff 3ba59cda1b904b2082d41ccc59713efe b6fb8814df284c818683c52a097cc2ff--3ba59cda1b904b2082d41ccc59713efe 0867ccc3fe5d4af694749002a3815f8d RX(theta₂₂) 3ba59cda1b904b2082d41ccc59713efe--0867ccc3fe5d4af694749002a3815f8d e9354749c25b448b9dce0154624378ac RY(theta₂₈) 0867ccc3fe5d4af694749002a3815f8d--e9354749c25b448b9dce0154624378ac e66807378b8c478aabd5ac1e8ca85df5 RX(theta₃₄) e9354749c25b448b9dce0154624378ac--e66807378b8c478aabd5ac1e8ca85df5 3f33dc1d52cc47f6b24d91a4b119901f e66807378b8c478aabd5ac1e8ca85df5--3f33dc1d52cc47f6b24d91a4b119901f 3f33dc1d52cc47f6b24d91a4b119901f--2bd9fb3741bc4095bd333758dbedf3e5 22803fc9a72c407d92cb07f93ff8f32a 6e25f3f36ac74bc0af0292badc7bac48 RX(theta₅) 6ee72a52e35f4d46a175efcbbc2977ef--6e25f3f36ac74bc0af0292badc7bac48 575dc51c2253479c91ab025b44e17d51 RY(theta₁₁) 6e25f3f36ac74bc0af0292badc7bac48--575dc51c2253479c91ab025b44e17d51 e719b08a580b4685962360125329eb41 RX(theta₁₇) 575dc51c2253479c91ab025b44e17d51--e719b08a580b4685962360125329eb41 ee853b7f7c004895920c38dd2c488bd4 e719b08a580b4685962360125329eb41--ee853b7f7c004895920c38dd2c488bd4 d8798e94342e4971beff2211d8517cb8 RX(theta₂₃) ee853b7f7c004895920c38dd2c488bd4--d8798e94342e4971beff2211d8517cb8 c1622658b35e40ddb5c4b0a4ca508099 RY(theta₂₉) d8798e94342e4971beff2211d8517cb8--c1622658b35e40ddb5c4b0a4ca508099 40433b44c12a48c5ba5ab9e95b9087e5 RX(theta₃₅) c1622658b35e40ddb5c4b0a4ca508099--40433b44c12a48c5ba5ab9e95b9087e5 f273d98437b947d0a61c9e553f52ca4e 40433b44c12a48c5ba5ab9e95b9087e5--f273d98437b947d0a61c9e553f52ca4e f273d98437b947d0a61c9e553f52ca4e--22803fc9a72c407d92cb07f93ff8f32a

Identity-initialized ansatz

It is widely known that parametrized quantum circuits are characterized by barren plateaus, where the gradient becomes exponentially small in the number of qubits. Here we include one of many techniques that have been proposed in recent years to mitigate this effect and facilitate QNNs training: Grant et al. showed that initializing the weights of a QNN so that each block of the circuit evaluates to identity reduces the effect of barren plateaus in the initial stage of training. In a similar fashion to hea, such circuit can be created via calling the associated function, identity_initialized_ansatz:

from qadence.constructors import identity_initialized_ansatz
from qadence.draw import display

n_qubits = 3
depth = 2

ansatz = identity_initialized_ansatz(n_qubits, depth)
%3 cluster_fb46eaf4bbfc496fb2548091240ed02d BPMA-1 cluster_8b0e6d89b390401382d0bbe416f5e7a8 BPMA-0 ec28785fdd7e4c56b6678506768fcc42 0 5968fb4f883f45ed86b1ce148196d472 RX(iia_α₀₀) ec28785fdd7e4c56b6678506768fcc42--5968fb4f883f45ed86b1ce148196d472 267840f413bd4dbb8cb6460cd1286892 1 7f56e31d5c734a02ba439b5e2144562f RY(iia_α₀₃) 5968fb4f883f45ed86b1ce148196d472--7f56e31d5c734a02ba439b5e2144562f 4a9a75338590496b9d2837d9b3c69de2 7f56e31d5c734a02ba439b5e2144562f--4a9a75338590496b9d2837d9b3c69de2 ea34f77f91c14db5859299e5c0a0328f 4a9a75338590496b9d2837d9b3c69de2--ea34f77f91c14db5859299e5c0a0328f 3194b2fad9a342d19936a1a2197a77c0 RX(iia_γ₀₀) ea34f77f91c14db5859299e5c0a0328f--3194b2fad9a342d19936a1a2197a77c0 96d7097979204986a01cf6ee9b114bcf 3194b2fad9a342d19936a1a2197a77c0--96d7097979204986a01cf6ee9b114bcf f4c66d2e1fef44b7ab4019c4e0b807cd 96d7097979204986a01cf6ee9b114bcf--f4c66d2e1fef44b7ab4019c4e0b807cd 521d97bdb2b14b87be27fcf1e9b8cb6e RY(iia_β₀₃) f4c66d2e1fef44b7ab4019c4e0b807cd--521d97bdb2b14b87be27fcf1e9b8cb6e 094db9746a98424e9a1beeb26fe99efa RX(iia_β₀₀) 521d97bdb2b14b87be27fcf1e9b8cb6e--094db9746a98424e9a1beeb26fe99efa 39bfb947196a4c9e9e5c023f358122c6 RX(iia_α₁₀) 094db9746a98424e9a1beeb26fe99efa--39bfb947196a4c9e9e5c023f358122c6 d983b33dbd6347929f529d5ff1dca490 RY(iia_α₁₃) 39bfb947196a4c9e9e5c023f358122c6--d983b33dbd6347929f529d5ff1dca490 fc2e334119b3478a926d38b765021ff5 d983b33dbd6347929f529d5ff1dca490--fc2e334119b3478a926d38b765021ff5 c0e46864410b40a98959d51b4e073704 fc2e334119b3478a926d38b765021ff5--c0e46864410b40a98959d51b4e073704 1be07372a9864bbbaabeb82e26e2602a RX(iia_γ₁₀) c0e46864410b40a98959d51b4e073704--1be07372a9864bbbaabeb82e26e2602a f9120d4ba97a4902b8a587c30b8708f6 1be07372a9864bbbaabeb82e26e2602a--f9120d4ba97a4902b8a587c30b8708f6 268d60a5de01429f85f05748cad1eb83 f9120d4ba97a4902b8a587c30b8708f6--268d60a5de01429f85f05748cad1eb83 44c7ff7b2f104a2ea3ce8b9c4114d590 RY(iia_β₁₃) 268d60a5de01429f85f05748cad1eb83--44c7ff7b2f104a2ea3ce8b9c4114d590 71e124d57ab04d82b5d1c98af1b71cb6 RX(iia_β₁₀) 44c7ff7b2f104a2ea3ce8b9c4114d590--71e124d57ab04d82b5d1c98af1b71cb6 3411fcd493914f9493d543648a73ebf4 71e124d57ab04d82b5d1c98af1b71cb6--3411fcd493914f9493d543648a73ebf4 204dbf038b0a48f7bc52d3d7560efd0b d9584cbc795248a0a224fc6e125ce921 RX(iia_α₀₁) 267840f413bd4dbb8cb6460cd1286892--d9584cbc795248a0a224fc6e125ce921 4ba4dcb54bb24ad8b0ffe6060842749d 2 7ba2749b2fe74a34ae3c39f7ed40fe6c RY(iia_α₀₄) d9584cbc795248a0a224fc6e125ce921--7ba2749b2fe74a34ae3c39f7ed40fe6c 5b2cebfd64db48fea7514c331a2fa9bd X 7ba2749b2fe74a34ae3c39f7ed40fe6c--5b2cebfd64db48fea7514c331a2fa9bd 5b2cebfd64db48fea7514c331a2fa9bd--4a9a75338590496b9d2837d9b3c69de2 764fc2ff73934dc4a033ccee654442b4 5b2cebfd64db48fea7514c331a2fa9bd--764fc2ff73934dc4a033ccee654442b4 a373c996c8a849e199a72a6a8a0d5fd3 RX(iia_γ₀₁) 764fc2ff73934dc4a033ccee654442b4--a373c996c8a849e199a72a6a8a0d5fd3 d13574f5836149b4801c27d6aad71b42 a373c996c8a849e199a72a6a8a0d5fd3--d13574f5836149b4801c27d6aad71b42 f7fd7dc72d884f5fb172039e1d69b555 X d13574f5836149b4801c27d6aad71b42--f7fd7dc72d884f5fb172039e1d69b555 f7fd7dc72d884f5fb172039e1d69b555--f4c66d2e1fef44b7ab4019c4e0b807cd 76d50060416a40f08ed5c4a9b550f658 RY(iia_β₀₄) f7fd7dc72d884f5fb172039e1d69b555--76d50060416a40f08ed5c4a9b550f658 6322e8b19b4740ef9f3fd12b3c492bb5 RX(iia_β₀₁) 76d50060416a40f08ed5c4a9b550f658--6322e8b19b4740ef9f3fd12b3c492bb5 378ec851807046f79518fcfc85e7aa78 RX(iia_α₁₁) 6322e8b19b4740ef9f3fd12b3c492bb5--378ec851807046f79518fcfc85e7aa78 593e999ab4dc46789ccf9bb192d3e3cf RY(iia_α₁₄) 378ec851807046f79518fcfc85e7aa78--593e999ab4dc46789ccf9bb192d3e3cf 54cc8f279c8b4853a6203b2e55417360 X 593e999ab4dc46789ccf9bb192d3e3cf--54cc8f279c8b4853a6203b2e55417360 54cc8f279c8b4853a6203b2e55417360--fc2e334119b3478a926d38b765021ff5 476c0923619341669e33fe6eb50049f9 54cc8f279c8b4853a6203b2e55417360--476c0923619341669e33fe6eb50049f9 02f7b000a743433f955ced4fb98ee079 RX(iia_γ₁₁) 476c0923619341669e33fe6eb50049f9--02f7b000a743433f955ced4fb98ee079 86157dce4a2c4e4e92801f5176bf1233 02f7b000a743433f955ced4fb98ee079--86157dce4a2c4e4e92801f5176bf1233 3e3735f4e4674166b3438d409a677e77 X 86157dce4a2c4e4e92801f5176bf1233--3e3735f4e4674166b3438d409a677e77 3e3735f4e4674166b3438d409a677e77--268d60a5de01429f85f05748cad1eb83 b2dc6d2643fe4aeb8790c54f86fc2f7d RY(iia_β₁₄) 3e3735f4e4674166b3438d409a677e77--b2dc6d2643fe4aeb8790c54f86fc2f7d 54b1aa89961140ec93bbaeac2c462afe RX(iia_β₁₁) b2dc6d2643fe4aeb8790c54f86fc2f7d--54b1aa89961140ec93bbaeac2c462afe 54b1aa89961140ec93bbaeac2c462afe--204dbf038b0a48f7bc52d3d7560efd0b d1edff0c970f4434849fe47d618ae1de a4975739847a4ecda3320cc71fbc81bb RX(iia_α₀₂) 4ba4dcb54bb24ad8b0ffe6060842749d--a4975739847a4ecda3320cc71fbc81bb a66fb1ad05cf4ae8b02369253e0e4142 RY(iia_α₀₅) a4975739847a4ecda3320cc71fbc81bb--a66fb1ad05cf4ae8b02369253e0e4142 e873ae2f6256445abf5ee7659cd97db8 a66fb1ad05cf4ae8b02369253e0e4142--e873ae2f6256445abf5ee7659cd97db8 e4d7be71a6d246498819289d7a597319 X e873ae2f6256445abf5ee7659cd97db8--e4d7be71a6d246498819289d7a597319 e4d7be71a6d246498819289d7a597319--764fc2ff73934dc4a033ccee654442b4 41293b172bf64e17bdad33e76c72a999 RX(iia_γ₀₂) e4d7be71a6d246498819289d7a597319--41293b172bf64e17bdad33e76c72a999 349a0fee955d45c69a4647948711b45f X 41293b172bf64e17bdad33e76c72a999--349a0fee955d45c69a4647948711b45f 349a0fee955d45c69a4647948711b45f--d13574f5836149b4801c27d6aad71b42 d9f3c648b9ad4c429af8a82cd5f9de11 349a0fee955d45c69a4647948711b45f--d9f3c648b9ad4c429af8a82cd5f9de11 cb9e021c3f454cfd8bf24093af4346d1 RY(iia_β₀₅) d9f3c648b9ad4c429af8a82cd5f9de11--cb9e021c3f454cfd8bf24093af4346d1 787d53da850841c6ba6b8d331b122872 RX(iia_β₀₂) cb9e021c3f454cfd8bf24093af4346d1--787d53da850841c6ba6b8d331b122872 e57fbc89a2204cc9af41f9cd49cb1ffa RX(iia_α₁₂) 787d53da850841c6ba6b8d331b122872--e57fbc89a2204cc9af41f9cd49cb1ffa a296cf0fee6543d7bb279bedf93d535d RY(iia_α₁₅) e57fbc89a2204cc9af41f9cd49cb1ffa--a296cf0fee6543d7bb279bedf93d535d ea9cd8b056a64063bc86cf140b627cfe a296cf0fee6543d7bb279bedf93d535d--ea9cd8b056a64063bc86cf140b627cfe c84ac7b049784da3850380dcdac3628c X ea9cd8b056a64063bc86cf140b627cfe--c84ac7b049784da3850380dcdac3628c c84ac7b049784da3850380dcdac3628c--476c0923619341669e33fe6eb50049f9 fd618d52675b41f981f0f72ca20c216a RX(iia_γ₁₂) c84ac7b049784da3850380dcdac3628c--fd618d52675b41f981f0f72ca20c216a 9a498126dad540db9a8a24ed36254290 X fd618d52675b41f981f0f72ca20c216a--9a498126dad540db9a8a24ed36254290 9a498126dad540db9a8a24ed36254290--86157dce4a2c4e4e92801f5176bf1233 e37565f127e649bfa3d1d3badd234fe8 9a498126dad540db9a8a24ed36254290--e37565f127e649bfa3d1d3badd234fe8 0e8068155c1d43529fcccfec85e716de RY(iia_β₁₅) e37565f127e649bfa3d1d3badd234fe8--0e8068155c1d43529fcccfec85e716de 799d04693d8941868302686623a901de RX(iia_β₁₂) 0e8068155c1d43529fcccfec85e716de--799d04693d8941868302686623a901de 799d04693d8941868302686623a901de--d1edff0c970f4434849fe47d618ae1de