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_02815e3aadc2486c8657a94aa9d99fe9 Constant Chebyshev FM cluster_e63f249f26f442f4ae3705195b699f76 Constant Fourier FM 1c0269cddacd4c20a7340ad5b81e00e2 0 2578db71f4f143bdab77a7f558756952 RX(phi) 1c0269cddacd4c20a7340ad5b81e00e2--2578db71f4f143bdab77a7f558756952 25cd904fe43a4bd5ba1911a82e56ea24 1 a344df64292549e7b7ab950458761e94 RX(acos(phi)) 2578db71f4f143bdab77a7f558756952--a344df64292549e7b7ab950458761e94 956919ffed52437c9421975dffe9f4c2 a344df64292549e7b7ab950458761e94--956919ffed52437c9421975dffe9f4c2 4f50f156ee5e4ee58c8c11350a802e6c ebb5e9a73bca4de6beb5a67b573a6990 RX(phi) 25cd904fe43a4bd5ba1911a82e56ea24--ebb5e9a73bca4de6beb5a67b573a6990 98cb707707f747fb8384917f8d00fe2c 2 c133bcc5093c481dbffa372d9f0d662b RX(acos(phi)) ebb5e9a73bca4de6beb5a67b573a6990--c133bcc5093c481dbffa372d9f0d662b c133bcc5093c481dbffa372d9f0d662b--4f50f156ee5e4ee58c8c11350a802e6c 8bc2486704404237af322ba401a61cfc 627ad2949ea146d19e04d94deb7a46f9 RX(phi) 98cb707707f747fb8384917f8d00fe2c--627ad2949ea146d19e04d94deb7a46f9 e2ff0582e12e44749980ddb098da4f11 RX(acos(phi)) 627ad2949ea146d19e04d94deb7a46f9--e2ff0582e12e44749980ddb098da4f11 e2ff0582e12e44749980ddb098da4f11--8bc2486704404237af322ba401a61cfc

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_872c8bd4c59740c1b645e64a406f0af4 Constant <function custom_fn at 0x7fb8cf6ef880> FM cluster_0955591e4cfd492aba84198a158da328 Constant asin FM 6b36bd23a78843339938cbd549a0f88c 0 df92193df16a4d58bedb8fa098a421b5 RX(asin(phi)) 6b36bd23a78843339938cbd549a0f88c--df92193df16a4d58bedb8fa098a421b5 04cd5de0e62a44ba876810fb22afd39c 1 57952de0c7b94d3282b958ff81cbb20f RX(phi**2 + asin(phi)) df92193df16a4d58bedb8fa098a421b5--57952de0c7b94d3282b958ff81cbb20f 9af8d5b94d794e53a5636d6d59f95821 57952de0c7b94d3282b958ff81cbb20f--9af8d5b94d794e53a5636d6d59f95821 5f0e7cf063034f86bc0f2cd860f8b102 8ab4a278644a4989a8c5aba3c8d2c8c4 RX(asin(phi)) 04cd5de0e62a44ba876810fb22afd39c--8ab4a278644a4989a8c5aba3c8d2c8c4 5a9cabb27008434b937681a4ded9a893 2 2cc01e56eb8441aa91997304d85ac1cd RX(phi**2 + asin(phi)) 8ab4a278644a4989a8c5aba3c8d2c8c4--2cc01e56eb8441aa91997304d85ac1cd 2cc01e56eb8441aa91997304d85ac1cd--5f0e7cf063034f86bc0f2cd860f8b102 7520d577611e44c0be32c49b8824813b 2924f2be424e47aaa646792ddd66e85f RX(asin(phi)) 5a9cabb27008434b937681a4ded9a893--2924f2be424e47aaa646792ddd66e85f 7f29ffaeb2004cd3b0aff66bd8a00595 RX(phi**2 + asin(phi)) 2924f2be424e47aaa646792ddd66e85f--7f29ffaeb2004cd3b0aff66bd8a00595 7f29ffaeb2004cd3b0aff66bd8a00595--7520d577611e44c0be32c49b8824813b

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_e8d6cdf95060484b9a649e8bb12cc633 Exponential Fourier FM cluster_f73d4e8c75144e6eb50bc33e6f271ef0 Constant Fourier FM cluster_62985aaeb2d54c59a60c9c8715e9a655 Tower Fourier FM 44d831a660f942adb9b9ae0c7da8733a 0 e1a8f54c3f1646fb94dad5451b943863 RX(phi) 44d831a660f942adb9b9ae0c7da8733a--e1a8f54c3f1646fb94dad5451b943863 5360a8f6fe494109b01798589903cd2e 1 2e15f1b345664a2397c1475891bd80dc RX(1.0*phi) e1a8f54c3f1646fb94dad5451b943863--2e15f1b345664a2397c1475891bd80dc cf2427d469d5465992cebdc763555b40 RX(1.0*phi) 2e15f1b345664a2397c1475891bd80dc--cf2427d469d5465992cebdc763555b40 f6e28f58130a4eb4856372a58ee48279 cf2427d469d5465992cebdc763555b40--f6e28f58130a4eb4856372a58ee48279 3285fabe022f43a0bed4016717dbd6a0 8d5fae769ee647e88f38dabf10e5a39e RX(phi) 5360a8f6fe494109b01798589903cd2e--8d5fae769ee647e88f38dabf10e5a39e 35e2b0311be94505af44d8bf307d451b 2 a0ac717cc5904502a258042253249289 RX(2.0*phi) 8d5fae769ee647e88f38dabf10e5a39e--a0ac717cc5904502a258042253249289 857c22914737491bb98411e94915c86c RX(2.0*phi) a0ac717cc5904502a258042253249289--857c22914737491bb98411e94915c86c 857c22914737491bb98411e94915c86c--3285fabe022f43a0bed4016717dbd6a0 2b7a10d7af434c06812bb25b85e8d781 f47d03daec6f406087e1c39161bf2533 RX(phi) 35e2b0311be94505af44d8bf307d451b--f47d03daec6f406087e1c39161bf2533 0262be7059824fc98df15feb594ff015 3 e655d690b8f34897ae02106a8127ddb4 RX(3.0*phi) f47d03daec6f406087e1c39161bf2533--e655d690b8f34897ae02106a8127ddb4 87e168252016428ebbfd897689a32104 RX(4.0*phi) e655d690b8f34897ae02106a8127ddb4--87e168252016428ebbfd897689a32104 87e168252016428ebbfd897689a32104--2b7a10d7af434c06812bb25b85e8d781 fac88185cc8541f2bc8bbb789319d1f3 52fedfff2618431695a8c6efa8604696 RX(phi) 0262be7059824fc98df15feb594ff015--52fedfff2618431695a8c6efa8604696 f1e04b28ef8a433dbe00373249c04782 4 4e512b9381ef47e68b76135cbe1f4497 RX(4.0*phi) 52fedfff2618431695a8c6efa8604696--4e512b9381ef47e68b76135cbe1f4497 90fe3b90e0ae4146a6954fd7af206299 RX(8.0*phi) 4e512b9381ef47e68b76135cbe1f4497--90fe3b90e0ae4146a6954fd7af206299 90fe3b90e0ae4146a6954fd7af206299--fac88185cc8541f2bc8bbb789319d1f3 71f6d7c2073b40d8b230aa112638b64a c6c6c94200bf468895340bbda18ea05b RX(phi) f1e04b28ef8a433dbe00373249c04782--c6c6c94200bf468895340bbda18ea05b 8c8c431b68ac43ab901c52fc016f2fbe RX(5.0*phi) c6c6c94200bf468895340bbda18ea05b--8c8c431b68ac43ab901c52fc016f2fbe b8da3c2908364414bb037b88ac9ae001 RX(16.0*phi) 8c8c431b68ac43ab901c52fc016f2fbe--b8da3c2908364414bb037b88ac9ae001 b8da3c2908364414bb037b88ac9ae001--71f6d7c2073b40d8b230aa112638b64a

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 94df28b1a09d4a7d8cd9d6219541756c 0 16f9b6cc1ba64bd99bdae9b07de4e5c7 RX(1.0*acos(phi)) 94df28b1a09d4a7d8cd9d6219541756c--16f9b6cc1ba64bd99bdae9b07de4e5c7 ec0dc35abca64e4095d968b4efa9c417 1 3d001f25dd644d288ef860e642197122 16f9b6cc1ba64bd99bdae9b07de4e5c7--3d001f25dd644d288ef860e642197122 9ec6db455a3249deb2840608f15e93d4 1fe88b259caa40d18e9e1fedcbc6b184 RX(1.414*acos(phi)) ec0dc35abca64e4095d968b4efa9c417--1fe88b259caa40d18e9e1fedcbc6b184 ee622dadb15f4863ae0e024b4e8a0b80 2 1fe88b259caa40d18e9e1fedcbc6b184--9ec6db455a3249deb2840608f15e93d4 576f80acad124780be820031626c4e57 a8304c4829864aa3a1462895764c5d66 RX(1.732*acos(phi)) ee622dadb15f4863ae0e024b4e8a0b80--a8304c4829864aa3a1462895764c5d66 68b017e098814acdb940d6777bde1048 3 a8304c4829864aa3a1462895764c5d66--576f80acad124780be820031626c4e57 148c934f0c0d4f2082698f55ecd6124b 737ce58508d347a0997530aa0c85d233 RX(2.0*acos(phi)) 68b017e098814acdb940d6777bde1048--737ce58508d347a0997530aa0c85d233 841000534cb142c9a2f307bb8992778f 4 737ce58508d347a0997530aa0c85d233--148c934f0c0d4f2082698f55ecd6124b 75305fed851f4dea9f22e7a9f7dd8765 c9262f4b331e4669be1a122cdc840639 RX(2.236*acos(phi)) 841000534cb142c9a2f307bb8992778f--c9262f4b331e4669be1a122cdc840639 c9262f4b331e4669be1a122cdc840639--75305fed851f4dea9f22e7a9f7dd8765

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 5ce3dc31ea3e46709dcfcc33ffc77a41 0 34bb2fd7026d4fd789bf9ecea498186e RX(1.0*phi*w₀) 5ce3dc31ea3e46709dcfcc33ffc77a41--34bb2fd7026d4fd789bf9ecea498186e b129a0f3948f452c8b9e5fdb6e682044 1 b9607608cfd340de8ab28a71996a71ff 34bb2fd7026d4fd789bf9ecea498186e--b9607608cfd340de8ab28a71996a71ff ca4d78bade9b42359b149f3d1fede1f4 3c1c48cef3b947a385d21c192e0f0f1d RX(2.0*phi*w₁) b129a0f3948f452c8b9e5fdb6e682044--3c1c48cef3b947a385d21c192e0f0f1d 7602a077fcd3412f8182414786cf090a 2 3c1c48cef3b947a385d21c192e0f0f1d--ca4d78bade9b42359b149f3d1fede1f4 53c7c3caab774b26bce474b9c71bc8c0 e4e2c6adc5564d178098f616bdacce13 RX(4.0*phi*w₂) 7602a077fcd3412f8182414786cf090a--e4e2c6adc5564d178098f616bdacce13 ab0f83416ab44e41aa0bb151c21e01e0 3 e4e2c6adc5564d178098f616bdacce13--53c7c3caab774b26bce474b9c71bc8c0 8e1e9c2ed45248c88a3df41ff18bf30e b15b6c8b59f3487f8fae4cb584f168b7 RX(8.0*phi*w₃) ab0f83416ab44e41aa0bb151c21e01e0--b15b6c8b59f3487f8fae4cb584f168b7 b2806142af704dc88e09caf61919c119 4 b15b6c8b59f3487f8fae4cb584f168b7--8e1e9c2ed45248c88a3df41ff18bf30e 4ef9453cfe3042f6b525112f1edae183 df846230d1a54604ac3f1e4ec3776dc4 RX(16.0*phi*w₄) b2806142af704dc88e09caf61919c119--df846230d1a54604ac3f1e4ec3776dc4 df846230d1a54604ac3f1e4ec3776dc4--4ef9453cfe3042f6b525112f1edae183

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 ed86a982fa9c45c385d21c498148d3a6 0 8d39559781a84f6f9fb3f607b14d57fb RY(80.0*acos(w₄*(0.667*x + 1.667))) ed86a982fa9c45c385d21c498148d3a6--8d39559781a84f6f9fb3f607b14d57fb 537b310cda124a16b1ff0b124b36e2b9 1 45a96088d3c84ec0a22ee10c022a0459 8d39559781a84f6f9fb3f607b14d57fb--45a96088d3c84ec0a22ee10c022a0459 101bd6386246429d824d8aa7d237868d 8b25a712f1a843d08e60a4e60cbe3152 RY(40.0*acos(w₃*(0.667*x + 1.667))) 537b310cda124a16b1ff0b124b36e2b9--8b25a712f1a843d08e60a4e60cbe3152 e5f5d197b8cc49b2a565658867b44db4 2 8b25a712f1a843d08e60a4e60cbe3152--101bd6386246429d824d8aa7d237868d 2ff79fd31e6f4e208ee8c4ff5c75984c 864bdc62f9224e728c813d095b32a306 RY(20.0*acos(w₂*(0.667*x + 1.667))) e5f5d197b8cc49b2a565658867b44db4--864bdc62f9224e728c813d095b32a306 8171b934330a42d6b204a5aaa186ead9 3 864bdc62f9224e728c813d095b32a306--2ff79fd31e6f4e208ee8c4ff5c75984c d4590466f41d45ce9373e65822c4879f d85de62ce8824d9d8a63d2891ba4e361 RY(10.0*acos(w₁*(0.667*x + 1.667))) 8171b934330a42d6b204a5aaa186ead9--d85de62ce8824d9d8a63d2891ba4e361 39fa14f94a9b49b881f788ea14907fba 4 d85de62ce8824d9d8a63d2891ba4e361--d4590466f41d45ce9373e65822c4879f 08f16356e17148c9b8644fe0b97bff41 0527a67ecd5c4a4dae9f37a19ab2971a RY(5.0*acos(w₀*(0.667*x + 1.667))) 39fa14f94a9b49b881f788ea14907fba--0527a67ecd5c4a4dae9f37a19ab2971a 0527a67ecd5c4a4dae9f37a19ab2971a--08f16356e17148c9b8644fe0b97bff41

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 6192dade065d4226b58ff6183be0a868 0 99084eaa2b3543ed9539aa9b29015bdb RX(theta₀) 6192dade065d4226b58ff6183be0a868--99084eaa2b3543ed9539aa9b29015bdb 01dfcd8830a741bcad81ea210952b5aa 1 48657d92dfd343a8b463f9d5834bcccb RY(theta₃) 99084eaa2b3543ed9539aa9b29015bdb--48657d92dfd343a8b463f9d5834bcccb d81907a369e14dfe842aff24505fdbee RX(theta₆) 48657d92dfd343a8b463f9d5834bcccb--d81907a369e14dfe842aff24505fdbee c3cd9408ae494b61b8767af0beb1954e d81907a369e14dfe842aff24505fdbee--c3cd9408ae494b61b8767af0beb1954e 9a6f7c51f0db4ee6844821d8677517f9 c3cd9408ae494b61b8767af0beb1954e--9a6f7c51f0db4ee6844821d8677517f9 da29877775d34da480dc615c45073423 RX(theta₉) 9a6f7c51f0db4ee6844821d8677517f9--da29877775d34da480dc615c45073423 d5edf013ed9843a8b83cd462aa18dcfc RY(theta₁₂) da29877775d34da480dc615c45073423--d5edf013ed9843a8b83cd462aa18dcfc 656bd2545eb542f6a22406bc844ad406 RX(theta₁₅) d5edf013ed9843a8b83cd462aa18dcfc--656bd2545eb542f6a22406bc844ad406 46daa2222dad4d94b69c9b6488bd7aba 656bd2545eb542f6a22406bc844ad406--46daa2222dad4d94b69c9b6488bd7aba 1b1307bdb2644ad2a0793492c95d1a03 46daa2222dad4d94b69c9b6488bd7aba--1b1307bdb2644ad2a0793492c95d1a03 5f859d55951046349096131cbf3dd91a 1b1307bdb2644ad2a0793492c95d1a03--5f859d55951046349096131cbf3dd91a e7c6567b00ec425eaaa11e12aac939b9 ae82df448d4549388ca32463f6e588f4 RX(theta₁) 01dfcd8830a741bcad81ea210952b5aa--ae82df448d4549388ca32463f6e588f4 c65b6883b16a43da9eed73a54a91c1f8 2 8af109e7eb52416ba6f8d7955fded2fe RY(theta₄) ae82df448d4549388ca32463f6e588f4--8af109e7eb52416ba6f8d7955fded2fe 7e412c77b6aa4fbeb2adb39cb4c7190b RX(theta₇) 8af109e7eb52416ba6f8d7955fded2fe--7e412c77b6aa4fbeb2adb39cb4c7190b 4e6a3a705ae04a749a5383531ce46524 X 7e412c77b6aa4fbeb2adb39cb4c7190b--4e6a3a705ae04a749a5383531ce46524 4e6a3a705ae04a749a5383531ce46524--c3cd9408ae494b61b8767af0beb1954e ea69ba547a2b4532983daec7be057e76 4e6a3a705ae04a749a5383531ce46524--ea69ba547a2b4532983daec7be057e76 e8299804f08143a1baf9f4dadcf29103 RX(theta₁₀) ea69ba547a2b4532983daec7be057e76--e8299804f08143a1baf9f4dadcf29103 6ea35919b4ad49abbc390eaea15b9c75 RY(theta₁₃) e8299804f08143a1baf9f4dadcf29103--6ea35919b4ad49abbc390eaea15b9c75 f7e3d656858944d7b9ca0208157a0684 RX(theta₁₆) 6ea35919b4ad49abbc390eaea15b9c75--f7e3d656858944d7b9ca0208157a0684 bf5c1b7bdf4f40b5805c3a5f60a868ea X f7e3d656858944d7b9ca0208157a0684--bf5c1b7bdf4f40b5805c3a5f60a868ea bf5c1b7bdf4f40b5805c3a5f60a868ea--46daa2222dad4d94b69c9b6488bd7aba 434abd456a704f139e3709d4cd6b8123 bf5c1b7bdf4f40b5805c3a5f60a868ea--434abd456a704f139e3709d4cd6b8123 434abd456a704f139e3709d4cd6b8123--e7c6567b00ec425eaaa11e12aac939b9 b061cbc3921b49f28e1da48e135fe969 b5b5bdcf875d421d8096e6fa4d89d68a RX(theta₂) c65b6883b16a43da9eed73a54a91c1f8--b5b5bdcf875d421d8096e6fa4d89d68a 60e46fa888eb4d51a63f479d2f94cbc1 RY(theta₅) b5b5bdcf875d421d8096e6fa4d89d68a--60e46fa888eb4d51a63f479d2f94cbc1 720e457e56864e11939d7694756d5be7 RX(theta₈) 60e46fa888eb4d51a63f479d2f94cbc1--720e457e56864e11939d7694756d5be7 8ad0539b3c86472295cbe8194b32f885 720e457e56864e11939d7694756d5be7--8ad0539b3c86472295cbe8194b32f885 120ae78f940949f4b3878ba8d90aa421 X 8ad0539b3c86472295cbe8194b32f885--120ae78f940949f4b3878ba8d90aa421 120ae78f940949f4b3878ba8d90aa421--ea69ba547a2b4532983daec7be057e76 3fc8cee6990b4ed6be514f494025f4cd RX(theta₁₁) 120ae78f940949f4b3878ba8d90aa421--3fc8cee6990b4ed6be514f494025f4cd 3ffe3ce304de4aa6a3353f994bae66ea RY(theta₁₄) 3fc8cee6990b4ed6be514f494025f4cd--3ffe3ce304de4aa6a3353f994bae66ea 9ff32a687f824a96a4d3b7fbe334748d RX(theta₁₇) 3ffe3ce304de4aa6a3353f994bae66ea--9ff32a687f824a96a4d3b7fbe334748d f0924baaaa2e437dbc5998d68180bf30 9ff32a687f824a96a4d3b7fbe334748d--f0924baaaa2e437dbc5998d68180bf30 6edfafe4dbc34ff0b33971a97f3309f7 X f0924baaaa2e437dbc5998d68180bf30--6edfafe4dbc34ff0b33971a97f3309f7 6edfafe4dbc34ff0b33971a97f3309f7--434abd456a704f139e3709d4cd6b8123 6edfafe4dbc34ff0b33971a97f3309f7--b061cbc3921b49f28e1da48e135fe969

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 3aa8fd6b32fc47c9aac7e98696585a60 0 e9aa677655c049e790c80bda12e50bbc RX(phi₀) 3aa8fd6b32fc47c9aac7e98696585a60--e9aa677655c049e790c80bda12e50bbc 4f8e7a04a5814cc7a7821ef3d5dfe0c7 1 82dbc23ad30e4c7db97817bfebf9c023 RY(phi₃) e9aa677655c049e790c80bda12e50bbc--82dbc23ad30e4c7db97817bfebf9c023 7d83f8f319cd4284ac11e87af8d2c0bb RX(phi₆) 82dbc23ad30e4c7db97817bfebf9c023--7d83f8f319cd4284ac11e87af8d2c0bb aa66e34c54c54bd6a80743b207a7fd5f 7d83f8f319cd4284ac11e87af8d2c0bb--aa66e34c54c54bd6a80743b207a7fd5f 66212dcfc725459d93a509e6ff93f145 aa66e34c54c54bd6a80743b207a7fd5f--66212dcfc725459d93a509e6ff93f145 b4feb9df68854cc99804a5ab66fb704b RX(phi₉) 66212dcfc725459d93a509e6ff93f145--b4feb9df68854cc99804a5ab66fb704b 1c7805b17f574cc1ad3a7d30ddefc43c RY(phi₁₂) b4feb9df68854cc99804a5ab66fb704b--1c7805b17f574cc1ad3a7d30ddefc43c 6ab3146400ce4f4eb6a1cfbbeab3ca30 RX(phi₁₅) 1c7805b17f574cc1ad3a7d30ddefc43c--6ab3146400ce4f4eb6a1cfbbeab3ca30 6cd131583f6a41a6bf697c482182f951 6ab3146400ce4f4eb6a1cfbbeab3ca30--6cd131583f6a41a6bf697c482182f951 d80617ec93fd4578ba1e1714e0396542 6cd131583f6a41a6bf697c482182f951--d80617ec93fd4578ba1e1714e0396542 57a4a2b087324934b3c3f3c30e247535 d80617ec93fd4578ba1e1714e0396542--57a4a2b087324934b3c3f3c30e247535 dff130addcc34270b8e5d1655e621d7b a9f69c8c279b4a79818864c89d02f14c RX(phi₁) 4f8e7a04a5814cc7a7821ef3d5dfe0c7--a9f69c8c279b4a79818864c89d02f14c 0b1df2db952c4758a777d428c3c00aa8 2 9dd93c7390e74cff9b4e4f5001df7370 RY(phi₄) a9f69c8c279b4a79818864c89d02f14c--9dd93c7390e74cff9b4e4f5001df7370 dc895b1ea3414f128b20401c965834ba RX(phi₇) 9dd93c7390e74cff9b4e4f5001df7370--dc895b1ea3414f128b20401c965834ba 014cce7391094e298305d2433c20f02d PHASE(phi_ent₀) dc895b1ea3414f128b20401c965834ba--014cce7391094e298305d2433c20f02d 014cce7391094e298305d2433c20f02d--aa66e34c54c54bd6a80743b207a7fd5f 45be7bce2b044e2e99ee60cf5af51e4b 014cce7391094e298305d2433c20f02d--45be7bce2b044e2e99ee60cf5af51e4b a2a46fdc24d94372848cc3638a1e3d46 RX(phi₁₀) 45be7bce2b044e2e99ee60cf5af51e4b--a2a46fdc24d94372848cc3638a1e3d46 8ae508d1adf945b4ae456d12ea117ab8 RY(phi₁₃) a2a46fdc24d94372848cc3638a1e3d46--8ae508d1adf945b4ae456d12ea117ab8 a0a1a099876b473792ad7a28d7210937 RX(phi₁₆) 8ae508d1adf945b4ae456d12ea117ab8--a0a1a099876b473792ad7a28d7210937 6394f659ea594009bf90a7e283e5f094 PHASE(phi_ent₂) a0a1a099876b473792ad7a28d7210937--6394f659ea594009bf90a7e283e5f094 6394f659ea594009bf90a7e283e5f094--6cd131583f6a41a6bf697c482182f951 aeed86fc6b7341b392c3c747de734df2 6394f659ea594009bf90a7e283e5f094--aeed86fc6b7341b392c3c747de734df2 aeed86fc6b7341b392c3c747de734df2--dff130addcc34270b8e5d1655e621d7b fb6d1b23c335465685b7a3a81c040da5 d263167225c242e185c929257f899ed8 RX(phi₂) 0b1df2db952c4758a777d428c3c00aa8--d263167225c242e185c929257f899ed8 f7be7954a7524740962d0938f81a097a RY(phi₅) d263167225c242e185c929257f899ed8--f7be7954a7524740962d0938f81a097a 7e6b804da4fa4c49b254d5029543c638 RX(phi₈) f7be7954a7524740962d0938f81a097a--7e6b804da4fa4c49b254d5029543c638 d9a91f79762b4cedb17c623cc0fe588e 7e6b804da4fa4c49b254d5029543c638--d9a91f79762b4cedb17c623cc0fe588e 9e82ff9cbacc4c8ba135f3bf95264567 PHASE(phi_ent₁) d9a91f79762b4cedb17c623cc0fe588e--9e82ff9cbacc4c8ba135f3bf95264567 9e82ff9cbacc4c8ba135f3bf95264567--45be7bce2b044e2e99ee60cf5af51e4b 04d2c4b436264d0cb5d225b631ddf6d1 RX(phi₁₁) 9e82ff9cbacc4c8ba135f3bf95264567--04d2c4b436264d0cb5d225b631ddf6d1 6a87ccee20a64ec790849c4596131385 RY(phi₁₄) 04d2c4b436264d0cb5d225b631ddf6d1--6a87ccee20a64ec790849c4596131385 74aaa097f199435591b7166755202b3d RX(phi₁₇) 6a87ccee20a64ec790849c4596131385--74aaa097f199435591b7166755202b3d c73acc9fb02a4c84919b8bd2d47de091 74aaa097f199435591b7166755202b3d--c73acc9fb02a4c84919b8bd2d47de091 a9d5a764221040c98a4858508d4399e1 PHASE(phi_ent₃) c73acc9fb02a4c84919b8bd2d47de091--a9d5a764221040c98a4858508d4399e1 a9d5a764221040c98a4858508d4399e1--aeed86fc6b7341b392c3c747de734df2 a9d5a764221040c98a4858508d4399e1--fb6d1b23c335465685b7a3a81c040da5

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_274025c2d3e043ea881904413fbe332f cluster_734f2f4b9f2e4ce09b9eef05be572250 2e0bf5824582474c9a3038318fd6cd40 0 28c6f28302cf44e1a641825a0c40d6fa RX(theta₀) 2e0bf5824582474c9a3038318fd6cd40--28c6f28302cf44e1a641825a0c40d6fa 30fffb7f356b4e8fbcfed32b0d725c15 1 ed7ced9987b741e7882df8dd13e232ef RY(theta₃) 28c6f28302cf44e1a641825a0c40d6fa--ed7ced9987b741e7882df8dd13e232ef a87be5c3328f40f896a45693c96b9883 RX(theta₆) ed7ced9987b741e7882df8dd13e232ef--a87be5c3328f40f896a45693c96b9883 f0d590f16e7b4f488a476f0eef11be1c HamEvo a87be5c3328f40f896a45693c96b9883--f0d590f16e7b4f488a476f0eef11be1c 35645d1b63494010b213dea5bfa54817 RX(theta₉) f0d590f16e7b4f488a476f0eef11be1c--35645d1b63494010b213dea5bfa54817 c623f103310b4f6c93ff6f01b0ae6d9d RY(theta₁₂) 35645d1b63494010b213dea5bfa54817--c623f103310b4f6c93ff6f01b0ae6d9d 856405879bd14325ad3d91611b9d67fb RX(theta₁₅) c623f103310b4f6c93ff6f01b0ae6d9d--856405879bd14325ad3d91611b9d67fb 1013505ba2dc4fe5b0873f2316cac761 HamEvo 856405879bd14325ad3d91611b9d67fb--1013505ba2dc4fe5b0873f2316cac761 10471d2c22204ca29b91ceada8332410 1013505ba2dc4fe5b0873f2316cac761--10471d2c22204ca29b91ceada8332410 39cfff81796e4bf9be23e3c24e38087b e8af2ea59fc44773ac6c87803c9a8b78 RX(theta₁) 30fffb7f356b4e8fbcfed32b0d725c15--e8af2ea59fc44773ac6c87803c9a8b78 138ee9dbfede4bf5b129384683e70aee 2 e6087d26b2a0420d9dbdfa368b143c75 RY(theta₄) e8af2ea59fc44773ac6c87803c9a8b78--e6087d26b2a0420d9dbdfa368b143c75 7dcf6c8988094a82a7fae3653798fe2f RX(theta₇) e6087d26b2a0420d9dbdfa368b143c75--7dcf6c8988094a82a7fae3653798fe2f 90cbeaa7a1ce4f0bb2351345686b980e t = theta_t₀ 7dcf6c8988094a82a7fae3653798fe2f--90cbeaa7a1ce4f0bb2351345686b980e 95dae1b96e9845b6ab7613d804cdc824 RX(theta₁₀) 90cbeaa7a1ce4f0bb2351345686b980e--95dae1b96e9845b6ab7613d804cdc824 ff7b5032b9794bb8a852fb60d574d2b8 RY(theta₁₃) 95dae1b96e9845b6ab7613d804cdc824--ff7b5032b9794bb8a852fb60d574d2b8 5428f8e5424b4e30a5492633e22524a0 RX(theta₁₆) ff7b5032b9794bb8a852fb60d574d2b8--5428f8e5424b4e30a5492633e22524a0 f36b4ed8f3654e279bfa9cb06c68c600 t = theta_t₁ 5428f8e5424b4e30a5492633e22524a0--f36b4ed8f3654e279bfa9cb06c68c600 f36b4ed8f3654e279bfa9cb06c68c600--39cfff81796e4bf9be23e3c24e38087b 2256c34af34a40f3b8456b6f14bcbf8c 5f1cc7fbfaaf4b7fb41c3bbe5154fb71 RX(theta₂) 138ee9dbfede4bf5b129384683e70aee--5f1cc7fbfaaf4b7fb41c3bbe5154fb71 418fb16558d34205855bc865dc6134ab RY(theta₅) 5f1cc7fbfaaf4b7fb41c3bbe5154fb71--418fb16558d34205855bc865dc6134ab 07e84c15ce65432180b74e9e2d8e3c93 RX(theta₈) 418fb16558d34205855bc865dc6134ab--07e84c15ce65432180b74e9e2d8e3c93 4ce4fb9c3ed14c429574dd5697821de7 07e84c15ce65432180b74e9e2d8e3c93--4ce4fb9c3ed14c429574dd5697821de7 0af9f21f61284b1baa176eff76d0d48d RX(theta₁₁) 4ce4fb9c3ed14c429574dd5697821de7--0af9f21f61284b1baa176eff76d0d48d 087341afebfd464996655361fc2241cd RY(theta₁₄) 0af9f21f61284b1baa176eff76d0d48d--087341afebfd464996655361fc2241cd 3a033038060d4056b06404cecc90f6b9 RX(theta₁₇) 087341afebfd464996655361fc2241cd--3a033038060d4056b06404cecc90f6b9 1a4a4d95a6f4420bb6c9eced0b904999 3a033038060d4056b06404cecc90f6b9--1a4a4d95a6f4420bb6c9eced0b904999 1a4a4d95a6f4420bb6c9eced0b904999--2256c34af34a40f3b8456b6f14bcbf8c

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_d8cc8f63e8c74d2cb77e78c4055662b1 cluster_474994bb1dab446e91f1bc7fb9f93587 c628865bd0bc44a480c4416e1c8b82bf 0 eac58645fad4473691a78244511f767e RX(theta₀) c628865bd0bc44a480c4416e1c8b82bf--eac58645fad4473691a78244511f767e f417f6320d3d4120b90078cab86612ac 1 c34cf96c568b49709af3800ed1e1412a RY(theta₆) eac58645fad4473691a78244511f767e--c34cf96c568b49709af3800ed1e1412a f8411933dae14490b1757b83a7a73b2b RX(theta₁₂) c34cf96c568b49709af3800ed1e1412a--f8411933dae14490b1757b83a7a73b2b 99d3b50ef7b34d17be81633fadc722c5 f8411933dae14490b1757b83a7a73b2b--99d3b50ef7b34d17be81633fadc722c5 b5eb0517c86845b2a515adea6ccbc169 RX(theta₁₈) 99d3b50ef7b34d17be81633fadc722c5--b5eb0517c86845b2a515adea6ccbc169 51853b6b085d42d0893f81798be60ed2 RY(theta₂₄) b5eb0517c86845b2a515adea6ccbc169--51853b6b085d42d0893f81798be60ed2 730f07c1758946fb90d16c16641f1090 RX(theta₃₀) 51853b6b085d42d0893f81798be60ed2--730f07c1758946fb90d16c16641f1090 0209b2f13f5e4bb7abbedf5a3f0d6d0a 730f07c1758946fb90d16c16641f1090--0209b2f13f5e4bb7abbedf5a3f0d6d0a 6444b5c64a73402f8479921f26c64eea 0209b2f13f5e4bb7abbedf5a3f0d6d0a--6444b5c64a73402f8479921f26c64eea a8247aa1a3054cd9b43e9540099bc4d9 e1983fde5cce4fad9669f6f47f98c6df RX(theta₁) f417f6320d3d4120b90078cab86612ac--e1983fde5cce4fad9669f6f47f98c6df 6c59347984fa4f9f9847d14999a137f2 2 dbf88a86fde44d96a70740f29c0ce9b7 RY(theta₇) e1983fde5cce4fad9669f6f47f98c6df--dbf88a86fde44d96a70740f29c0ce9b7 56cd8ec9c6cf465bbd239ea228fa51e0 RX(theta₁₃) dbf88a86fde44d96a70740f29c0ce9b7--56cd8ec9c6cf465bbd239ea228fa51e0 c80fe8991edd41cca054570012546c76 56cd8ec9c6cf465bbd239ea228fa51e0--c80fe8991edd41cca054570012546c76 03ebec66d35745e8b9e229f6a36dd1ee RX(theta₁₉) c80fe8991edd41cca054570012546c76--03ebec66d35745e8b9e229f6a36dd1ee 56aaecfa816f412caf345d9091be7045 RY(theta₂₅) 03ebec66d35745e8b9e229f6a36dd1ee--56aaecfa816f412caf345d9091be7045 9ed70c7ed4fb4b18abf949ecbf48ff5c RX(theta₃₁) 56aaecfa816f412caf345d9091be7045--9ed70c7ed4fb4b18abf949ecbf48ff5c fc8a80ea8bdd4643b35b66e5c62b52a0 9ed70c7ed4fb4b18abf949ecbf48ff5c--fc8a80ea8bdd4643b35b66e5c62b52a0 fc8a80ea8bdd4643b35b66e5c62b52a0--a8247aa1a3054cd9b43e9540099bc4d9 9343501104234403b4c9f1a5276134de 69dbdf24e89243d796e37d29dd0311cf RX(theta₂) 6c59347984fa4f9f9847d14999a137f2--69dbdf24e89243d796e37d29dd0311cf 9571a7f8e6784f718e09c4cf8728edf6 3 6239972086304d80a51a18f1600c3e39 RY(theta₈) 69dbdf24e89243d796e37d29dd0311cf--6239972086304d80a51a18f1600c3e39 0b940a8920a34d5c92eb0fc93050104d RX(theta₁₄) 6239972086304d80a51a18f1600c3e39--0b940a8920a34d5c92eb0fc93050104d 79f21c392cc74953849488ef7b5076ca HamEvo 0b940a8920a34d5c92eb0fc93050104d--79f21c392cc74953849488ef7b5076ca 4121bcb3e1fb452a83b4d17eadb939ef RX(theta₂₀) 79f21c392cc74953849488ef7b5076ca--4121bcb3e1fb452a83b4d17eadb939ef 56e56d72b59f42c0ab953a19b0013ceb RY(theta₂₆) 4121bcb3e1fb452a83b4d17eadb939ef--56e56d72b59f42c0ab953a19b0013ceb a4f44ecfbebb4184bf139e66ebd4dce6 RX(theta₃₂) 56e56d72b59f42c0ab953a19b0013ceb--a4f44ecfbebb4184bf139e66ebd4dce6 fc938755db8749e99324ac2c975a1dfa HamEvo a4f44ecfbebb4184bf139e66ebd4dce6--fc938755db8749e99324ac2c975a1dfa fc938755db8749e99324ac2c975a1dfa--9343501104234403b4c9f1a5276134de 821dd4814c734cb6afad4dda387f7771 987bb2f69cac4d4da2e7416ea738ba08 RX(theta₃) 9571a7f8e6784f718e09c4cf8728edf6--987bb2f69cac4d4da2e7416ea738ba08 559aa5fb4b8147d781ae9e3d82da4641 4 921c2ce37efd45658851e89c93b40f9a RY(theta₉) 987bb2f69cac4d4da2e7416ea738ba08--921c2ce37efd45658851e89c93b40f9a 7a593a3cff304cc09975ccd96dad44a1 RX(theta₁₅) 921c2ce37efd45658851e89c93b40f9a--7a593a3cff304cc09975ccd96dad44a1 f953877fc2df4b46b5ab8e1aef4af17f t = theta_t₀ 7a593a3cff304cc09975ccd96dad44a1--f953877fc2df4b46b5ab8e1aef4af17f c0b7e4b4b77447f8850523e7018e87c1 RX(theta₂₁) f953877fc2df4b46b5ab8e1aef4af17f--c0b7e4b4b77447f8850523e7018e87c1 82c17ce2cc864d5c9b823f64bbe8b18e RY(theta₂₇) c0b7e4b4b77447f8850523e7018e87c1--82c17ce2cc864d5c9b823f64bbe8b18e cd00b61ed32e4dc7a6fa744a4807bdb6 RX(theta₃₃) 82c17ce2cc864d5c9b823f64bbe8b18e--cd00b61ed32e4dc7a6fa744a4807bdb6 75e6e7056244483c991aec15b40bad1b t = theta_t₁ cd00b61ed32e4dc7a6fa744a4807bdb6--75e6e7056244483c991aec15b40bad1b 75e6e7056244483c991aec15b40bad1b--821dd4814c734cb6afad4dda387f7771 9c88bde7f2084f7b82cdedfb368f7770 44b808430f1345248a698cda3cadc37e RX(theta₄) 559aa5fb4b8147d781ae9e3d82da4641--44b808430f1345248a698cda3cadc37e 083bc3fc50ee49c886c08ea410657df4 5 26e2ab7810834fb6903a8dc7ec57d6e4 RY(theta₁₀) 44b808430f1345248a698cda3cadc37e--26e2ab7810834fb6903a8dc7ec57d6e4 af4dac695343465dacd613367b20ff94 RX(theta₁₆) 26e2ab7810834fb6903a8dc7ec57d6e4--af4dac695343465dacd613367b20ff94 43fafb7c6d8d45068c417d0c1287c3d3 af4dac695343465dacd613367b20ff94--43fafb7c6d8d45068c417d0c1287c3d3 8467107654214094afd61d76d623b358 RX(theta₂₂) 43fafb7c6d8d45068c417d0c1287c3d3--8467107654214094afd61d76d623b358 6c06c34fd7a74554882d24fc5e50f416 RY(theta₂₈) 8467107654214094afd61d76d623b358--6c06c34fd7a74554882d24fc5e50f416 06a55c21a2314f81b9b3f1bf575736dd RX(theta₃₄) 6c06c34fd7a74554882d24fc5e50f416--06a55c21a2314f81b9b3f1bf575736dd 7a7d156786254b7fbd9241a87e4e4166 06a55c21a2314f81b9b3f1bf575736dd--7a7d156786254b7fbd9241a87e4e4166 7a7d156786254b7fbd9241a87e4e4166--9c88bde7f2084f7b82cdedfb368f7770 b25f2e8b01ac43fb9a3ad08e0b02a83b 7c8a0dd9b1ad44f389f3d71136052212 RX(theta₅) 083bc3fc50ee49c886c08ea410657df4--7c8a0dd9b1ad44f389f3d71136052212 0df08e42b4f24d2fb9dead3560535f42 RY(theta₁₁) 7c8a0dd9b1ad44f389f3d71136052212--0df08e42b4f24d2fb9dead3560535f42 817f8fbf2ac54aad9deffedb1d570938 RX(theta₁₇) 0df08e42b4f24d2fb9dead3560535f42--817f8fbf2ac54aad9deffedb1d570938 91ebe5c0b8f34f33b78f5a377a9bf097 817f8fbf2ac54aad9deffedb1d570938--91ebe5c0b8f34f33b78f5a377a9bf097 37df2806a6874f258b017fac76ec8766 RX(theta₂₃) 91ebe5c0b8f34f33b78f5a377a9bf097--37df2806a6874f258b017fac76ec8766 b91bf7bc057a4a1bb79242d89e2f93c3 RY(theta₂₉) 37df2806a6874f258b017fac76ec8766--b91bf7bc057a4a1bb79242d89e2f93c3 f87c2e1e7fc747578c4eb80e2442f89c RX(theta₃₅) b91bf7bc057a4a1bb79242d89e2f93c3--f87c2e1e7fc747578c4eb80e2442f89c d33604476d6342d7917cd90892b9465b f87c2e1e7fc747578c4eb80e2442f89c--d33604476d6342d7917cd90892b9465b d33604476d6342d7917cd90892b9465b--b25f2e8b01ac43fb9a3ad08e0b02a83b

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_769a408a36284a598fc588d093e57abc BPMA-1 cluster_7c20ec08d39f46f1acd887a6659e485d BPMA-0 e707e724cc01408587620e58883af2fd 0 19b840d01f984dca9871515e6a1e9f02 RX(iia_α₀₀) e707e724cc01408587620e58883af2fd--19b840d01f984dca9871515e6a1e9f02 63ba5b4d2c7d497c808675c8af384683 1 cac99e3f799b4c298130fc8ad926bbba RY(iia_α₀₃) 19b840d01f984dca9871515e6a1e9f02--cac99e3f799b4c298130fc8ad926bbba cb065d3e29fc4269b83311db4c7d8a1c cac99e3f799b4c298130fc8ad926bbba--cb065d3e29fc4269b83311db4c7d8a1c 1a86d5d2b3d144b2b7719b35af4cb7b5 cb065d3e29fc4269b83311db4c7d8a1c--1a86d5d2b3d144b2b7719b35af4cb7b5 97afdfd7bad8400db0607dd4df082af4 RX(iia_γ₀₀) 1a86d5d2b3d144b2b7719b35af4cb7b5--97afdfd7bad8400db0607dd4df082af4 82860f6f3d714463983d3736e54235ce 97afdfd7bad8400db0607dd4df082af4--82860f6f3d714463983d3736e54235ce b9c81e3484014f76918502d42e3d9ce9 82860f6f3d714463983d3736e54235ce--b9c81e3484014f76918502d42e3d9ce9 eb756d91c825446498986e974ed0fb53 RY(iia_β₀₃) b9c81e3484014f76918502d42e3d9ce9--eb756d91c825446498986e974ed0fb53 413fe8de2a834927a1ba3627e82a0a12 RX(iia_β₀₀) eb756d91c825446498986e974ed0fb53--413fe8de2a834927a1ba3627e82a0a12 5a038d1bcbc34d83b274e2fea5d8897b RX(iia_α₁₀) 413fe8de2a834927a1ba3627e82a0a12--5a038d1bcbc34d83b274e2fea5d8897b 3082066b07244ab3a8063205e24501d3 RY(iia_α₁₃) 5a038d1bcbc34d83b274e2fea5d8897b--3082066b07244ab3a8063205e24501d3 def18baa058d422e9ac9aa5a1e570939 3082066b07244ab3a8063205e24501d3--def18baa058d422e9ac9aa5a1e570939 aa6c46487bbc4185a8fb90f44780d98f def18baa058d422e9ac9aa5a1e570939--aa6c46487bbc4185a8fb90f44780d98f a2994740a3b64469a4efeddba70eb059 RX(iia_γ₁₀) aa6c46487bbc4185a8fb90f44780d98f--a2994740a3b64469a4efeddba70eb059 74c91b59e6684c219224fddd82f52442 a2994740a3b64469a4efeddba70eb059--74c91b59e6684c219224fddd82f52442 f797adfbb3e64fb88d8a6105f21a96fb 74c91b59e6684c219224fddd82f52442--f797adfbb3e64fb88d8a6105f21a96fb 38680c368be4447f816cedd361ba2feb RY(iia_β₁₃) f797adfbb3e64fb88d8a6105f21a96fb--38680c368be4447f816cedd361ba2feb 07befe84a7cf400196d5d7c9fb0eb6d8 RX(iia_β₁₀) 38680c368be4447f816cedd361ba2feb--07befe84a7cf400196d5d7c9fb0eb6d8 402a2c6b87424902bc33aba5392993d2 07befe84a7cf400196d5d7c9fb0eb6d8--402a2c6b87424902bc33aba5392993d2 e8d188d63a38460991fc1f3b9be52d93 ed2bf6894d70450588c7652de1b612a3 RX(iia_α₀₁) 63ba5b4d2c7d497c808675c8af384683--ed2bf6894d70450588c7652de1b612a3 4d98a00520c241b18c36af5c8f016b00 2 1f209f4cf8e74d559260449b73c440c9 RY(iia_α₀₄) ed2bf6894d70450588c7652de1b612a3--1f209f4cf8e74d559260449b73c440c9 b85098731a1e40e88d5fd4f1fb32b37e X 1f209f4cf8e74d559260449b73c440c9--b85098731a1e40e88d5fd4f1fb32b37e b85098731a1e40e88d5fd4f1fb32b37e--cb065d3e29fc4269b83311db4c7d8a1c e8b85e298b124e579620b4b4010049dc b85098731a1e40e88d5fd4f1fb32b37e--e8b85e298b124e579620b4b4010049dc b277a7ed3505440990567f6075601f68 RX(iia_γ₀₁) e8b85e298b124e579620b4b4010049dc--b277a7ed3505440990567f6075601f68 5b90815b26134ccc8525a25670315d64 b277a7ed3505440990567f6075601f68--5b90815b26134ccc8525a25670315d64 fe8850e632a04af986c59aad1ba3fafd X 5b90815b26134ccc8525a25670315d64--fe8850e632a04af986c59aad1ba3fafd fe8850e632a04af986c59aad1ba3fafd--b9c81e3484014f76918502d42e3d9ce9 48516fb229744f7ba21913a84caeb776 RY(iia_β₀₄) fe8850e632a04af986c59aad1ba3fafd--48516fb229744f7ba21913a84caeb776 b4a04caf4c9e40a681cd510200e838da RX(iia_β₀₁) 48516fb229744f7ba21913a84caeb776--b4a04caf4c9e40a681cd510200e838da 57e88aea4c0c4f44be0cc85f27853e8f RX(iia_α₁₁) b4a04caf4c9e40a681cd510200e838da--57e88aea4c0c4f44be0cc85f27853e8f 425dd181e033401685b9434166363e5f RY(iia_α₁₄) 57e88aea4c0c4f44be0cc85f27853e8f--425dd181e033401685b9434166363e5f a7e7e760877c487aa3b75f3d36f6b786 X 425dd181e033401685b9434166363e5f--a7e7e760877c487aa3b75f3d36f6b786 a7e7e760877c487aa3b75f3d36f6b786--def18baa058d422e9ac9aa5a1e570939 5c23c49211c146a9b50e7ffd8e45029a a7e7e760877c487aa3b75f3d36f6b786--5c23c49211c146a9b50e7ffd8e45029a edc4b8031da544d19336d54cba943e7d RX(iia_γ₁₁) 5c23c49211c146a9b50e7ffd8e45029a--edc4b8031da544d19336d54cba943e7d 95463356b2444a498e3218f9c3147619 edc4b8031da544d19336d54cba943e7d--95463356b2444a498e3218f9c3147619 c88752a3dd074d0599d8915e8776ceb1 X 95463356b2444a498e3218f9c3147619--c88752a3dd074d0599d8915e8776ceb1 c88752a3dd074d0599d8915e8776ceb1--f797adfbb3e64fb88d8a6105f21a96fb aec834a3205e4a59989ccec429ea20fb RY(iia_β₁₄) c88752a3dd074d0599d8915e8776ceb1--aec834a3205e4a59989ccec429ea20fb 5a65d3e9abfd4aca83b5cc5c613141dc RX(iia_β₁₁) aec834a3205e4a59989ccec429ea20fb--5a65d3e9abfd4aca83b5cc5c613141dc 5a65d3e9abfd4aca83b5cc5c613141dc--e8d188d63a38460991fc1f3b9be52d93 6f7118189f074b0491638678262e0664 a5f36a16933642ebbe9d8e576a7f99a4 RX(iia_α₀₂) 4d98a00520c241b18c36af5c8f016b00--a5f36a16933642ebbe9d8e576a7f99a4 53a2107443b5441b932de0633a0743b2 RY(iia_α₀₅) a5f36a16933642ebbe9d8e576a7f99a4--53a2107443b5441b932de0633a0743b2 248c5e39c2b146609a9dd424d957d33b 53a2107443b5441b932de0633a0743b2--248c5e39c2b146609a9dd424d957d33b a1d1ad3d4dec4b27aa9597203f0e16a6 X 248c5e39c2b146609a9dd424d957d33b--a1d1ad3d4dec4b27aa9597203f0e16a6 a1d1ad3d4dec4b27aa9597203f0e16a6--e8b85e298b124e579620b4b4010049dc 62103ced9bc24f95bec30908b2bc1755 RX(iia_γ₀₂) a1d1ad3d4dec4b27aa9597203f0e16a6--62103ced9bc24f95bec30908b2bc1755 a343daf4fb834f6eba1d0c0243454e15 X 62103ced9bc24f95bec30908b2bc1755--a343daf4fb834f6eba1d0c0243454e15 a343daf4fb834f6eba1d0c0243454e15--5b90815b26134ccc8525a25670315d64 153b1309abc24f4a84ff47c1fa13b53c a343daf4fb834f6eba1d0c0243454e15--153b1309abc24f4a84ff47c1fa13b53c 8fd1e304c700473188bd3185c99adc5e RY(iia_β₀₅) 153b1309abc24f4a84ff47c1fa13b53c--8fd1e304c700473188bd3185c99adc5e 3de73e0cde85443f940762bc1826bcc9 RX(iia_β₀₂) 8fd1e304c700473188bd3185c99adc5e--3de73e0cde85443f940762bc1826bcc9 c9264dd90ab94b4986434728d5b5a345 RX(iia_α₁₂) 3de73e0cde85443f940762bc1826bcc9--c9264dd90ab94b4986434728d5b5a345 544cb570a76447e7a911751a628f45b8 RY(iia_α₁₅) c9264dd90ab94b4986434728d5b5a345--544cb570a76447e7a911751a628f45b8 7fb727a2e67f4430a1e787ec3f5a34bc 544cb570a76447e7a911751a628f45b8--7fb727a2e67f4430a1e787ec3f5a34bc c0e83ef00a67488b89a4a5cbed5f253b X 7fb727a2e67f4430a1e787ec3f5a34bc--c0e83ef00a67488b89a4a5cbed5f253b c0e83ef00a67488b89a4a5cbed5f253b--5c23c49211c146a9b50e7ffd8e45029a 3e6de01ed24b4d4db08d68193f7f8ef5 RX(iia_γ₁₂) c0e83ef00a67488b89a4a5cbed5f253b--3e6de01ed24b4d4db08d68193f7f8ef5 e945314ccb5b41c08555b8afd58c4a93 X 3e6de01ed24b4d4db08d68193f7f8ef5--e945314ccb5b41c08555b8afd58c4a93 e945314ccb5b41c08555b8afd58c4a93--95463356b2444a498e3218f9c3147619 a42c1b0aa09d479092d16ad25c40b505 e945314ccb5b41c08555b8afd58c4a93--a42c1b0aa09d479092d16ad25c40b505 6a8b2c9d5a7b4f4b98a40b80dd089e87 RY(iia_β₁₅) a42c1b0aa09d479092d16ad25c40b505--6a8b2c9d5a7b4f4b98a40b80dd089e87 b6ba163d82ce4d6fbbb1cb6af688d90d RX(iia_β₁₂) 6a8b2c9d5a7b4f4b98a40b80dd089e87--b6ba163d82ce4d6fbbb1cb6af688d90d b6ba163d82ce4d6fbbb1cb6af688d90d--6f7118189f074b0491638678262e0664