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_06f49c1441b64c688263f869512aca29 Constant Chebyshev FM cluster_204f749a976549c7b6840fad18312792 Constant Fourier FM 02f4947c7fbb47c5bdfba3514cc54e7c 0 df83de08d7bc4db8a77e2b928b03be6d RX(phi) 02f4947c7fbb47c5bdfba3514cc54e7c--df83de08d7bc4db8a77e2b928b03be6d b2378aaf37004705839abf73072ed882 1 99f53f1134174e18a4b68bc1308f3c3e RX(acos(phi)) df83de08d7bc4db8a77e2b928b03be6d--99f53f1134174e18a4b68bc1308f3c3e 3fa61505fefa41baae346e8919801c4f 99f53f1134174e18a4b68bc1308f3c3e--3fa61505fefa41baae346e8919801c4f fa868d4ffa994d5fa93b8a992c4f3b30 ecf85b59fed942769b8e351fa84c17b2 RX(phi) b2378aaf37004705839abf73072ed882--ecf85b59fed942769b8e351fa84c17b2 63a3223a90d1475ca8b74e6818dbe34b 2 9134de866eb04562ae84e6f04c9241f4 RX(acos(phi)) ecf85b59fed942769b8e351fa84c17b2--9134de866eb04562ae84e6f04c9241f4 9134de866eb04562ae84e6f04c9241f4--fa868d4ffa994d5fa93b8a992c4f3b30 6ebd88f8860545cf894c904526c4e334 202f8a3463dd444d85dc6a7ee3d7f6d4 RX(phi) 63a3223a90d1475ca8b74e6818dbe34b--202f8a3463dd444d85dc6a7ee3d7f6d4 cab5ee74bd7243068fbd7debf5cd26ec RX(acos(phi)) 202f8a3463dd444d85dc6a7ee3d7f6d4--cab5ee74bd7243068fbd7debf5cd26ec cab5ee74bd7243068fbd7debf5cd26ec--6ebd88f8860545cf894c904526c4e334

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_90be046c1e0a4663b412ba4a78cc0bf5 Constant <function custom_fn at 0x7f9696ba0e50> FM cluster_7798dfee267b4bd1b9e58c210af66c99 Constant asin FM 9d48708216f1482d8410a87384503959 0 a545a1e4ffff44488075d753812b319b RX(asin(phi)) 9d48708216f1482d8410a87384503959--a545a1e4ffff44488075d753812b319b 8022199fb7114e5593e015abceb38d05 1 86f6135cf9b3475baea5002a78c7ef6d RX(phi**2 + asin(phi)) a545a1e4ffff44488075d753812b319b--86f6135cf9b3475baea5002a78c7ef6d 31d1347985e94939bcbf934175104820 86f6135cf9b3475baea5002a78c7ef6d--31d1347985e94939bcbf934175104820 62e57ea7a65649b9a41caf207320de0f 9570598f50494888ad4b9545fba212c4 RX(asin(phi)) 8022199fb7114e5593e015abceb38d05--9570598f50494888ad4b9545fba212c4 9a2a8f39e0c34f79bf86fb0f5148f45c 2 37e26089264e46389c665fede0fe5e6e RX(phi**2 + asin(phi)) 9570598f50494888ad4b9545fba212c4--37e26089264e46389c665fede0fe5e6e 37e26089264e46389c665fede0fe5e6e--62e57ea7a65649b9a41caf207320de0f cfeafd317ea94af885b258477c91f04a 4edfe228712f4bbcb1cac3f4d6a6977a RX(asin(phi)) 9a2a8f39e0c34f79bf86fb0f5148f45c--4edfe228712f4bbcb1cac3f4d6a6977a 871a3f7000c540268daab582205656d4 RX(phi**2 + asin(phi)) 4edfe228712f4bbcb1cac3f4d6a6977a--871a3f7000c540268daab582205656d4 871a3f7000c540268daab582205656d4--cfeafd317ea94af885b258477c91f04a

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_bf9e9f6486ca4bf8a4e4a3f3172e286c Exponential Fourier FM cluster_30abb6a71ebc42f0b1d25ea50d7de87a Constant Fourier FM cluster_633b8cfa0d9a4f478e90f76e02583783 Tower Fourier FM 17d0e30ac20c4de484f1ab3f099758f9 0 abbe5bf8ccf4459eb36cc930bf3bd281 RX(phi) 17d0e30ac20c4de484f1ab3f099758f9--abbe5bf8ccf4459eb36cc930bf3bd281 f5847c3e96a34e3a93201f30435aae5c 1 99168c7433ff4e629b12762c495b8358 RX(1.0*phi) abbe5bf8ccf4459eb36cc930bf3bd281--99168c7433ff4e629b12762c495b8358 17534fa9a802469481b20952636bac7e RX(1.0*phi) 99168c7433ff4e629b12762c495b8358--17534fa9a802469481b20952636bac7e a8bf4189c4ce4997a1f540307b238bbe 17534fa9a802469481b20952636bac7e--a8bf4189c4ce4997a1f540307b238bbe 46375d2fda9d41569be512242ed33be5 2acb5e7be157495fa9df3b7b33d2d46d RX(phi) f5847c3e96a34e3a93201f30435aae5c--2acb5e7be157495fa9df3b7b33d2d46d a83819dea73249c482980b818a81f6c9 2 d26fe344e6bf45e5932eca11af4104e7 RX(2.0*phi) 2acb5e7be157495fa9df3b7b33d2d46d--d26fe344e6bf45e5932eca11af4104e7 dd133e0d633e4717ac5010d15a0d5ea0 RX(2.0*phi) d26fe344e6bf45e5932eca11af4104e7--dd133e0d633e4717ac5010d15a0d5ea0 dd133e0d633e4717ac5010d15a0d5ea0--46375d2fda9d41569be512242ed33be5 268cfc92236c41d68b2343345cde62aa 4dff4f166570488bbc1ccf94c00ef480 RX(phi) a83819dea73249c482980b818a81f6c9--4dff4f166570488bbc1ccf94c00ef480 550237fba0d14043a0d5a30cec4de549 3 16a0e9e300c9467481707f1c8a2b6ba4 RX(3.0*phi) 4dff4f166570488bbc1ccf94c00ef480--16a0e9e300c9467481707f1c8a2b6ba4 896dd024c83b4f62aad799f987a7f8ff RX(4.0*phi) 16a0e9e300c9467481707f1c8a2b6ba4--896dd024c83b4f62aad799f987a7f8ff 896dd024c83b4f62aad799f987a7f8ff--268cfc92236c41d68b2343345cde62aa 216c891a405a4805a2aeaf0c84a39314 52c4f336145d4229a0a8741b4998dc0d RX(phi) 550237fba0d14043a0d5a30cec4de549--52c4f336145d4229a0a8741b4998dc0d bcf9951bba704732a07e657558fc7b83 4 80d7ea44d85a4bb38cd577b89c980c1e RX(4.0*phi) 52c4f336145d4229a0a8741b4998dc0d--80d7ea44d85a4bb38cd577b89c980c1e ff1facf891f84226a0493c3191a325a1 RX(8.0*phi) 80d7ea44d85a4bb38cd577b89c980c1e--ff1facf891f84226a0493c3191a325a1 ff1facf891f84226a0493c3191a325a1--216c891a405a4805a2aeaf0c84a39314 f8097757092c40ef800ab00ead51d649 7191e178f5ae43d98d2872d919a277b9 RX(phi) bcf9951bba704732a07e657558fc7b83--7191e178f5ae43d98d2872d919a277b9 9fe5fbba8cde4a2eba6d3a696b2225e4 RX(5.0*phi) 7191e178f5ae43d98d2872d919a277b9--9fe5fbba8cde4a2eba6d3a696b2225e4 bdc1258fcb5b4ed3b7f927a7c12f17a4 RX(16.0*phi) 9fe5fbba8cde4a2eba6d3a696b2225e4--bdc1258fcb5b4ed3b7f927a7c12f17a4 bdc1258fcb5b4ed3b7f927a7c12f17a4--f8097757092c40ef800ab00ead51d649

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 23109b8331474df59310970893c8d428 0 f294e86e45d94ed890d3c21d5a4932fb RX(1.0*acos(phi)) 23109b8331474df59310970893c8d428--f294e86e45d94ed890d3c21d5a4932fb 8a90aeda62a74ce6b836126a41ad4deb 1 fe1fc9a0b18e4c2a840a3b570d326504 f294e86e45d94ed890d3c21d5a4932fb--fe1fc9a0b18e4c2a840a3b570d326504 556df0eaab7b4cf8b1c15839d1ad6d98 bf94f7444ecb424390d00704a87a1a07 RX(1.414*acos(phi)) 8a90aeda62a74ce6b836126a41ad4deb--bf94f7444ecb424390d00704a87a1a07 607cb037c1994fe3a065a66f7433ea54 2 bf94f7444ecb424390d00704a87a1a07--556df0eaab7b4cf8b1c15839d1ad6d98 a549c2877bea49b2b39eb2d4ccabd31b 2edeefe1490443efb15be8fe7f339947 RX(1.732*acos(phi)) 607cb037c1994fe3a065a66f7433ea54--2edeefe1490443efb15be8fe7f339947 f907c860bf2c43a88a4a066e5e15fd36 3 2edeefe1490443efb15be8fe7f339947--a549c2877bea49b2b39eb2d4ccabd31b cbe2e88a07ab4b85974398a8bed5a713 fb71056ef8764decbe98238a51e09681 RX(2.0*acos(phi)) f907c860bf2c43a88a4a066e5e15fd36--fb71056ef8764decbe98238a51e09681 dd535dbfa2444e16b4708afa21ae760e 4 fb71056ef8764decbe98238a51e09681--cbe2e88a07ab4b85974398a8bed5a713 18b955f10fa143a0bc695fb53e8eefb2 242617e53cd24a70a324828942759df8 RX(2.236*acos(phi)) dd535dbfa2444e16b4708afa21ae760e--242617e53cd24a70a324828942759df8 242617e53cd24a70a324828942759df8--18b955f10fa143a0bc695fb53e8eefb2

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 70d0bf7a6a3c4714b5cbf96bf61a140b 0 afe1171b1a114f49bb7bb3f770bbf39e RX(1.0*phi*w₀) 70d0bf7a6a3c4714b5cbf96bf61a140b--afe1171b1a114f49bb7bb3f770bbf39e e97a1eaab96e42ce8e6a90c37dad45e9 1 d575896f1903499193d3ce2a613b1048 afe1171b1a114f49bb7bb3f770bbf39e--d575896f1903499193d3ce2a613b1048 383f230f166d4a938887bb9081356569 3093eb177d2b4beebf2216982b8defc5 RX(2.0*phi*w₁) e97a1eaab96e42ce8e6a90c37dad45e9--3093eb177d2b4beebf2216982b8defc5 a776a0dd21804302a3fbf4e4b9ffd99f 2 3093eb177d2b4beebf2216982b8defc5--383f230f166d4a938887bb9081356569 6168dffac4a54633a50344c16afec8af eb54b57dd12248bdb666758d9ba6c8c2 RX(4.0*phi*w₂) a776a0dd21804302a3fbf4e4b9ffd99f--eb54b57dd12248bdb666758d9ba6c8c2 d952c8238f98403a8906216f9a27e274 3 eb54b57dd12248bdb666758d9ba6c8c2--6168dffac4a54633a50344c16afec8af 8ca114f06c244f94ac28e7609b915882 6ec9a606ac88499abfc55da45622766d RX(8.0*phi*w₃) d952c8238f98403a8906216f9a27e274--6ec9a606ac88499abfc55da45622766d 102ebd5fd5ed41b29433a962fc863dc9 4 6ec9a606ac88499abfc55da45622766d--8ca114f06c244f94ac28e7609b915882 d291250c68d44fd0b55722d731bf3040 3049459d33a847598a9f4e8a0a04a8b7 RX(16.0*phi*w₄) 102ebd5fd5ed41b29433a962fc863dc9--3049459d33a847598a9f4e8a0a04a8b7 3049459d33a847598a9f4e8a0a04a8b7--d291250c68d44fd0b55722d731bf3040

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 bd0fecec6c4f4a3abd4f927525741d13 0 fb10e0d2640040d5b8d695a4d9f067d0 RY(80.0*acos(w₄*(0.667*x + 1.667))) bd0fecec6c4f4a3abd4f927525741d13--fb10e0d2640040d5b8d695a4d9f067d0 921898a305b74801b4e979bb7a66fd36 1 baf0128e56944a318e24fd15952ec35b fb10e0d2640040d5b8d695a4d9f067d0--baf0128e56944a318e24fd15952ec35b 653f25993ffc4c94a56b35c32e1a1c99 d5763baafb584317bbf1bf5d9e4814f5 RY(40.0*acos(w₃*(0.667*x + 1.667))) 921898a305b74801b4e979bb7a66fd36--d5763baafb584317bbf1bf5d9e4814f5 215a28912f1f4c24ab17417e6decc38d 2 d5763baafb584317bbf1bf5d9e4814f5--653f25993ffc4c94a56b35c32e1a1c99 5c79c24fcb3040958e7ef86982d31b9c 2aa9440b435b4a78a8a2007a80340f3b RY(20.0*acos(w₂*(0.667*x + 1.667))) 215a28912f1f4c24ab17417e6decc38d--2aa9440b435b4a78a8a2007a80340f3b 853762dfaec64bd2a13902e1e795453b 3 2aa9440b435b4a78a8a2007a80340f3b--5c79c24fcb3040958e7ef86982d31b9c 98278077c3e048df8b2952505bcac069 0aa016f18c8a4ec6984940c54997eddd RY(10.0*acos(w₁*(0.667*x + 1.667))) 853762dfaec64bd2a13902e1e795453b--0aa016f18c8a4ec6984940c54997eddd 364eda2c5e174c3dbe79ab7070e295f8 4 0aa016f18c8a4ec6984940c54997eddd--98278077c3e048df8b2952505bcac069 99e7524a56104dc484a56570aa1d0b95 c27d4449fe204695afd3c3a380bbfc69 RY(5.0*acos(w₀*(0.667*x + 1.667))) 364eda2c5e174c3dbe79ab7070e295f8--c27d4449fe204695afd3c3a380bbfc69 c27d4449fe204695afd3c3a380bbfc69--99e7524a56104dc484a56570aa1d0b95

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 a66e4e3661d5409a96ab15c38c70e745 0 9e2fcdbfdf4044dc863b1b3544306446 RX(theta₀) a66e4e3661d5409a96ab15c38c70e745--9e2fcdbfdf4044dc863b1b3544306446 05a89ebbb5084043bcc04aa8ca66cf93 1 dece8af6f04142ab94acc43bd7909223 RY(theta₃) 9e2fcdbfdf4044dc863b1b3544306446--dece8af6f04142ab94acc43bd7909223 17bac57ec4bd4b35a79ac5deae35f754 RX(theta₆) dece8af6f04142ab94acc43bd7909223--17bac57ec4bd4b35a79ac5deae35f754 6e5dff789826473eb42565f64d210b2b 17bac57ec4bd4b35a79ac5deae35f754--6e5dff789826473eb42565f64d210b2b baffc56b4bec4c23b1d9eadcab130643 6e5dff789826473eb42565f64d210b2b--baffc56b4bec4c23b1d9eadcab130643 2ef287e3556d4d7ba8780c17e182e240 RX(theta₉) baffc56b4bec4c23b1d9eadcab130643--2ef287e3556d4d7ba8780c17e182e240 2ae4d89b5fb64622ae46567ad31d3dda RY(theta₁₂) 2ef287e3556d4d7ba8780c17e182e240--2ae4d89b5fb64622ae46567ad31d3dda b0e81ad5f6b04d298de092751b5f51d4 RX(theta₁₅) 2ae4d89b5fb64622ae46567ad31d3dda--b0e81ad5f6b04d298de092751b5f51d4 36ba4aa79532463c9f9ae48ef61be396 b0e81ad5f6b04d298de092751b5f51d4--36ba4aa79532463c9f9ae48ef61be396 e12ead1c961e409bb6244226697f8fca 36ba4aa79532463c9f9ae48ef61be396--e12ead1c961e409bb6244226697f8fca 4c16e27b9232461fb7e8c6ab4ecf1d4c e12ead1c961e409bb6244226697f8fca--4c16e27b9232461fb7e8c6ab4ecf1d4c 0640add7d0d54675ad4a38e384ff3a6a a46b7b067ee84cb084be4ec7369d46d1 RX(theta₁) 05a89ebbb5084043bcc04aa8ca66cf93--a46b7b067ee84cb084be4ec7369d46d1 8f74c639eeef4033a9f0653ce733d414 2 69867c18aea24b6caeb79e57ec50180b RY(theta₄) a46b7b067ee84cb084be4ec7369d46d1--69867c18aea24b6caeb79e57ec50180b 62c300ef3bad44a88f62fb43b814efdb RX(theta₇) 69867c18aea24b6caeb79e57ec50180b--62c300ef3bad44a88f62fb43b814efdb 4389168dd58448598dccc8f5cbc5c51c X 62c300ef3bad44a88f62fb43b814efdb--4389168dd58448598dccc8f5cbc5c51c 4389168dd58448598dccc8f5cbc5c51c--6e5dff789826473eb42565f64d210b2b c89ed2cfabc240edb8a85a34f4460b3d 4389168dd58448598dccc8f5cbc5c51c--c89ed2cfabc240edb8a85a34f4460b3d ea7ecc0a1b05445694b04f7f9b21c900 RX(theta₁₀) c89ed2cfabc240edb8a85a34f4460b3d--ea7ecc0a1b05445694b04f7f9b21c900 1faef6de640f4c0f90d56b1c2f88eeeb RY(theta₁₃) ea7ecc0a1b05445694b04f7f9b21c900--1faef6de640f4c0f90d56b1c2f88eeeb 95f299b40511499a819a13faddafb2c6 RX(theta₁₆) 1faef6de640f4c0f90d56b1c2f88eeeb--95f299b40511499a819a13faddafb2c6 5e913485b0e44fddb7323ec2a5c40f0d X 95f299b40511499a819a13faddafb2c6--5e913485b0e44fddb7323ec2a5c40f0d 5e913485b0e44fddb7323ec2a5c40f0d--36ba4aa79532463c9f9ae48ef61be396 6663210bd32f47468a7dbd30588764f4 5e913485b0e44fddb7323ec2a5c40f0d--6663210bd32f47468a7dbd30588764f4 6663210bd32f47468a7dbd30588764f4--0640add7d0d54675ad4a38e384ff3a6a f63e5988f0974cd1a0b4e3b74624e902 affbddb5800341d9868c0f6dc4879b7a RX(theta₂) 8f74c639eeef4033a9f0653ce733d414--affbddb5800341d9868c0f6dc4879b7a 14826e5e10494a2c8ea51ddbda706929 RY(theta₅) affbddb5800341d9868c0f6dc4879b7a--14826e5e10494a2c8ea51ddbda706929 b120903de24944739e47fb68954762a0 RX(theta₈) 14826e5e10494a2c8ea51ddbda706929--b120903de24944739e47fb68954762a0 c2a1b001294c4056b66e6c93d1d1e95a b120903de24944739e47fb68954762a0--c2a1b001294c4056b66e6c93d1d1e95a d28c002b7e9c4cee8f5cf51abb900217 X c2a1b001294c4056b66e6c93d1d1e95a--d28c002b7e9c4cee8f5cf51abb900217 d28c002b7e9c4cee8f5cf51abb900217--c89ed2cfabc240edb8a85a34f4460b3d c18f1aaee3d14662ae7615ca59addfff RX(theta₁₁) d28c002b7e9c4cee8f5cf51abb900217--c18f1aaee3d14662ae7615ca59addfff 4f19183ffe18454481040c34dc910fb3 RY(theta₁₄) c18f1aaee3d14662ae7615ca59addfff--4f19183ffe18454481040c34dc910fb3 156b917643734e9bbd3aa144c2266aad RX(theta₁₇) 4f19183ffe18454481040c34dc910fb3--156b917643734e9bbd3aa144c2266aad bd08748f7b8b4910aad094c286c73d77 156b917643734e9bbd3aa144c2266aad--bd08748f7b8b4910aad094c286c73d77 484c9dbfcbf044da9e6985aefe189793 X bd08748f7b8b4910aad094c286c73d77--484c9dbfcbf044da9e6985aefe189793 484c9dbfcbf044da9e6985aefe189793--6663210bd32f47468a7dbd30588764f4 484c9dbfcbf044da9e6985aefe189793--f63e5988f0974cd1a0b4e3b74624e902

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 75a8945389284bf8bb26df171c519d14 0 fbacd10d56674475865c7fc9b074e9ad RX(phi₀) 75a8945389284bf8bb26df171c519d14--fbacd10d56674475865c7fc9b074e9ad 48f5a0314e3245b0b645443ba34742f6 1 69116d886a164cb7b30cc3f31d3c955e RY(phi₃) fbacd10d56674475865c7fc9b074e9ad--69116d886a164cb7b30cc3f31d3c955e 4fc50bb7db04490f9b1d794f8f1bc913 RX(phi₆) 69116d886a164cb7b30cc3f31d3c955e--4fc50bb7db04490f9b1d794f8f1bc913 5ce5c7f02566400b8a51f107895e53e4 4fc50bb7db04490f9b1d794f8f1bc913--5ce5c7f02566400b8a51f107895e53e4 9a2693eda8954bde98417b58335df530 5ce5c7f02566400b8a51f107895e53e4--9a2693eda8954bde98417b58335df530 9010343814644a57ab89524f5e5658db RX(phi₉) 9a2693eda8954bde98417b58335df530--9010343814644a57ab89524f5e5658db 36caeb649c80481da6696fb7e882c41c RY(phi₁₂) 9010343814644a57ab89524f5e5658db--36caeb649c80481da6696fb7e882c41c b9f6ebd63ba1447da02e02739405c400 RX(phi₁₅) 36caeb649c80481da6696fb7e882c41c--b9f6ebd63ba1447da02e02739405c400 c03406f78b9744cdb558a542028d965e b9f6ebd63ba1447da02e02739405c400--c03406f78b9744cdb558a542028d965e b5f8f9b0d80741dfbcbe9b76f13d4f2e c03406f78b9744cdb558a542028d965e--b5f8f9b0d80741dfbcbe9b76f13d4f2e 43620e6e864c49d89017f22d506ff544 b5f8f9b0d80741dfbcbe9b76f13d4f2e--43620e6e864c49d89017f22d506ff544 e0792c3c3eb24b3d942cf331173a67ea b33497c378f84b1ba114f5eb852cbf51 RX(phi₁) 48f5a0314e3245b0b645443ba34742f6--b33497c378f84b1ba114f5eb852cbf51 70eca1c9fe924c3c8a82a0c4c01e76bc 2 ffdd39b69c634dfdaf876df44bd011b7 RY(phi₄) b33497c378f84b1ba114f5eb852cbf51--ffdd39b69c634dfdaf876df44bd011b7 a9283a65b0824943af743eddad6184c3 RX(phi₇) ffdd39b69c634dfdaf876df44bd011b7--a9283a65b0824943af743eddad6184c3 5b93f004e2b047e99effdd45251f173d PHASE(phi_ent₀) a9283a65b0824943af743eddad6184c3--5b93f004e2b047e99effdd45251f173d 5b93f004e2b047e99effdd45251f173d--5ce5c7f02566400b8a51f107895e53e4 1ef7a9e7e426456f94a88b7a4bfd4b92 5b93f004e2b047e99effdd45251f173d--1ef7a9e7e426456f94a88b7a4bfd4b92 b4d33de00b3e46c4a886e42655330c73 RX(phi₁₀) 1ef7a9e7e426456f94a88b7a4bfd4b92--b4d33de00b3e46c4a886e42655330c73 d27a192b507f496eaca31ebebb22c7f5 RY(phi₁₃) b4d33de00b3e46c4a886e42655330c73--d27a192b507f496eaca31ebebb22c7f5 ac7eb62c27c6467eb487100b94e9aff5 RX(phi₁₆) d27a192b507f496eaca31ebebb22c7f5--ac7eb62c27c6467eb487100b94e9aff5 df6b20cee0c34f9c9efe14201477c768 PHASE(phi_ent₂) ac7eb62c27c6467eb487100b94e9aff5--df6b20cee0c34f9c9efe14201477c768 df6b20cee0c34f9c9efe14201477c768--c03406f78b9744cdb558a542028d965e 0ec3de93a6a347d3954850dc80d0ab3f df6b20cee0c34f9c9efe14201477c768--0ec3de93a6a347d3954850dc80d0ab3f 0ec3de93a6a347d3954850dc80d0ab3f--e0792c3c3eb24b3d942cf331173a67ea 691155d5a9f940e79989eb540f434b2f 574a785162ec4f5ea3815602f07ef652 RX(phi₂) 70eca1c9fe924c3c8a82a0c4c01e76bc--574a785162ec4f5ea3815602f07ef652 4be0b6ad08134bb8a3753e5f6cce4681 RY(phi₅) 574a785162ec4f5ea3815602f07ef652--4be0b6ad08134bb8a3753e5f6cce4681 bd511d107f554e648c1e7cec25572537 RX(phi₈) 4be0b6ad08134bb8a3753e5f6cce4681--bd511d107f554e648c1e7cec25572537 4735527b90134bb3b8a8f1042f62aac7 bd511d107f554e648c1e7cec25572537--4735527b90134bb3b8a8f1042f62aac7 1232762f023344e592e2e44608fb8f49 PHASE(phi_ent₁) 4735527b90134bb3b8a8f1042f62aac7--1232762f023344e592e2e44608fb8f49 1232762f023344e592e2e44608fb8f49--1ef7a9e7e426456f94a88b7a4bfd4b92 6aa917f7ba884eeea412b63c40faf669 RX(phi₁₁) 1232762f023344e592e2e44608fb8f49--6aa917f7ba884eeea412b63c40faf669 19ff753a6c5e4e0da09085a6176366c6 RY(phi₁₄) 6aa917f7ba884eeea412b63c40faf669--19ff753a6c5e4e0da09085a6176366c6 b72d07c249b44ba1a1386f63a364dd06 RX(phi₁₇) 19ff753a6c5e4e0da09085a6176366c6--b72d07c249b44ba1a1386f63a364dd06 09be187ef91a48b998e219125e94b43c b72d07c249b44ba1a1386f63a364dd06--09be187ef91a48b998e219125e94b43c d65ee66c395740d7a7b6c9629e3528f2 PHASE(phi_ent₃) 09be187ef91a48b998e219125e94b43c--d65ee66c395740d7a7b6c9629e3528f2 d65ee66c395740d7a7b6c9629e3528f2--0ec3de93a6a347d3954850dc80d0ab3f d65ee66c395740d7a7b6c9629e3528f2--691155d5a9f940e79989eb540f434b2f

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_452bcfbbbf2b4ceaaa3ae15fb62a0b13 cluster_9172add0f156465490da54d5f45da626 90b170abcd384c7d8336c57e47370e65 0 8d3ce21b922b4766a7097bb775ed15cf RX(theta₀) 90b170abcd384c7d8336c57e47370e65--8d3ce21b922b4766a7097bb775ed15cf aa3584cd733e453495f039529ceca1e8 1 4d361d4623764cdbb816c672cdec4cec RY(theta₃) 8d3ce21b922b4766a7097bb775ed15cf--4d361d4623764cdbb816c672cdec4cec 458e4df9a62e455687d09a3bcba8605c RX(theta₆) 4d361d4623764cdbb816c672cdec4cec--458e4df9a62e455687d09a3bcba8605c c7993e58aa7c4e6785a94cba5e18bbf3 HamEvo 458e4df9a62e455687d09a3bcba8605c--c7993e58aa7c4e6785a94cba5e18bbf3 7560a36782b941dcacd3c4837dd033c2 RX(theta₉) c7993e58aa7c4e6785a94cba5e18bbf3--7560a36782b941dcacd3c4837dd033c2 b19bee20f73140fb8cad56cc8b9dd23b RY(theta₁₂) 7560a36782b941dcacd3c4837dd033c2--b19bee20f73140fb8cad56cc8b9dd23b 4fc21323c23d4fefa5be4eaaee2bf93a RX(theta₁₅) b19bee20f73140fb8cad56cc8b9dd23b--4fc21323c23d4fefa5be4eaaee2bf93a 93aff62949c54b43a3b55b2019a4d98e HamEvo 4fc21323c23d4fefa5be4eaaee2bf93a--93aff62949c54b43a3b55b2019a4d98e a1a6130abc5a421381ddc0a045c7a44b 93aff62949c54b43a3b55b2019a4d98e--a1a6130abc5a421381ddc0a045c7a44b a04c98965a4e4f1e961367dae340e387 a887092c2abc4da5bef58a3bc09ec500 RX(theta₁) aa3584cd733e453495f039529ceca1e8--a887092c2abc4da5bef58a3bc09ec500 6d4c08b2d70a4b77b270368211c49df2 2 c18ff08a6a1244ab98f264ddaaf4ba6b RY(theta₄) a887092c2abc4da5bef58a3bc09ec500--c18ff08a6a1244ab98f264ddaaf4ba6b db69211295ef42249b4987367101d884 RX(theta₇) c18ff08a6a1244ab98f264ddaaf4ba6b--db69211295ef42249b4987367101d884 d4aca3546e564dc68f1a988f9bbc8724 t = theta_t₀ db69211295ef42249b4987367101d884--d4aca3546e564dc68f1a988f9bbc8724 5295566712e2401387610c458b4e4985 RX(theta₁₀) d4aca3546e564dc68f1a988f9bbc8724--5295566712e2401387610c458b4e4985 ecf81b7b37de4e6087df9d82d2464500 RY(theta₁₃) 5295566712e2401387610c458b4e4985--ecf81b7b37de4e6087df9d82d2464500 e3cbc4354e4e439593e47f2145d0795c RX(theta₁₆) ecf81b7b37de4e6087df9d82d2464500--e3cbc4354e4e439593e47f2145d0795c 399af9a327404ce8a21d8387023a13bc t = theta_t₁ e3cbc4354e4e439593e47f2145d0795c--399af9a327404ce8a21d8387023a13bc 399af9a327404ce8a21d8387023a13bc--a04c98965a4e4f1e961367dae340e387 315f30a28ba445ddb01225c197edf65a ed51714130344c7a841264cb7ced04a6 RX(theta₂) 6d4c08b2d70a4b77b270368211c49df2--ed51714130344c7a841264cb7ced04a6 70eab57ade15470088dad68ef669eee6 RY(theta₅) ed51714130344c7a841264cb7ced04a6--70eab57ade15470088dad68ef669eee6 5d4809489b0f41d6bec38b4bdd8c9208 RX(theta₈) 70eab57ade15470088dad68ef669eee6--5d4809489b0f41d6bec38b4bdd8c9208 0a420744b99247efbb8cab8dfa0db3cb 5d4809489b0f41d6bec38b4bdd8c9208--0a420744b99247efbb8cab8dfa0db3cb a1bfbed397ae4c70b1397a695aa2c53c RX(theta₁₁) 0a420744b99247efbb8cab8dfa0db3cb--a1bfbed397ae4c70b1397a695aa2c53c c51470a5a1b2438a939f27e3032df2f7 RY(theta₁₄) a1bfbed397ae4c70b1397a695aa2c53c--c51470a5a1b2438a939f27e3032df2f7 9d6a6fbd680c44e69a2f37f9abde0628 RX(theta₁₇) c51470a5a1b2438a939f27e3032df2f7--9d6a6fbd680c44e69a2f37f9abde0628 9ba3d78073e14f499779ef6ebd9ebd0e 9d6a6fbd680c44e69a2f37f9abde0628--9ba3d78073e14f499779ef6ebd9ebd0e 9ba3d78073e14f499779ef6ebd9ebd0e--315f30a28ba445ddb01225c197edf65a

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_5e663a3c77154ca7aae2195846efbda0 cluster_e0774a93a34548afbb1e3239bf0adc68 21ec3ba7ee4146e181bb1d01c7f90b92 0 48251b762be8473789258402e70f1b6f RX(theta₀) 21ec3ba7ee4146e181bb1d01c7f90b92--48251b762be8473789258402e70f1b6f 860c533069a0420bbce63026e4568ee4 1 18a059a905534611bd83523f6eca84aa RY(theta₆) 48251b762be8473789258402e70f1b6f--18a059a905534611bd83523f6eca84aa 7def61190bc54258af6e7d1870f7e968 RX(theta₁₂) 18a059a905534611bd83523f6eca84aa--7def61190bc54258af6e7d1870f7e968 c65edb99579242b38b29c8632e088284 7def61190bc54258af6e7d1870f7e968--c65edb99579242b38b29c8632e088284 53d7294a8ec246138f9dd47e5fd194dd RX(theta₁₈) c65edb99579242b38b29c8632e088284--53d7294a8ec246138f9dd47e5fd194dd dc70c5903433477f8d3a67910ee2a835 RY(theta₂₄) 53d7294a8ec246138f9dd47e5fd194dd--dc70c5903433477f8d3a67910ee2a835 8bbe6e4130224ddb8644985aab1cc97c RX(theta₃₀) dc70c5903433477f8d3a67910ee2a835--8bbe6e4130224ddb8644985aab1cc97c 2176aa539ac44fa790c388338195da9c 8bbe6e4130224ddb8644985aab1cc97c--2176aa539ac44fa790c388338195da9c 649945f5e7364bc8aedfe258fe5d8f17 2176aa539ac44fa790c388338195da9c--649945f5e7364bc8aedfe258fe5d8f17 e6d2eab385d54870a6b206edd282ea37 3b5d3e45212f470f8a5ad12489456aa5 RX(theta₁) 860c533069a0420bbce63026e4568ee4--3b5d3e45212f470f8a5ad12489456aa5 63c3b76915a34a368962ff6781362c6a 2 c10e3539366d4ec7aa6f2582787ee973 RY(theta₇) 3b5d3e45212f470f8a5ad12489456aa5--c10e3539366d4ec7aa6f2582787ee973 0e6e2e5435a64406b31c770b6793ae69 RX(theta₁₃) c10e3539366d4ec7aa6f2582787ee973--0e6e2e5435a64406b31c770b6793ae69 5f31e37fc06d4356aecccd4399452342 0e6e2e5435a64406b31c770b6793ae69--5f31e37fc06d4356aecccd4399452342 6bf5b97dae394623a5c4d8e0e29fef0a RX(theta₁₉) 5f31e37fc06d4356aecccd4399452342--6bf5b97dae394623a5c4d8e0e29fef0a 9ecdfb8a2d1b4fc18c0eb82a8e5bf78d RY(theta₂₅) 6bf5b97dae394623a5c4d8e0e29fef0a--9ecdfb8a2d1b4fc18c0eb82a8e5bf78d 076a3502e09a460c8ddca626c8da4f92 RX(theta₃₁) 9ecdfb8a2d1b4fc18c0eb82a8e5bf78d--076a3502e09a460c8ddca626c8da4f92 c03ccdcc3def4fa985d4a8cc02990891 076a3502e09a460c8ddca626c8da4f92--c03ccdcc3def4fa985d4a8cc02990891 c03ccdcc3def4fa985d4a8cc02990891--e6d2eab385d54870a6b206edd282ea37 3fe85dbdb60d4b95abeaf41d2210e599 71d557e61ded42a1a06ddbb27d528733 RX(theta₂) 63c3b76915a34a368962ff6781362c6a--71d557e61ded42a1a06ddbb27d528733 b4ea90e00a5747dd9193843f2466fbbc 3 c2cf7cb7c5d34d28b0f0441edc0db6b8 RY(theta₈) 71d557e61ded42a1a06ddbb27d528733--c2cf7cb7c5d34d28b0f0441edc0db6b8 11efebd984ae4ab0a965d65e1a1b745d RX(theta₁₄) c2cf7cb7c5d34d28b0f0441edc0db6b8--11efebd984ae4ab0a965d65e1a1b745d a5d2628acb4e48bf9aa262f17f80d673 HamEvo 11efebd984ae4ab0a965d65e1a1b745d--a5d2628acb4e48bf9aa262f17f80d673 b8526161a0014d4498b335c2445cebcd RX(theta₂₀) a5d2628acb4e48bf9aa262f17f80d673--b8526161a0014d4498b335c2445cebcd db5b0d0a7c9b43c5874f4acd94e033ec RY(theta₂₆) b8526161a0014d4498b335c2445cebcd--db5b0d0a7c9b43c5874f4acd94e033ec 9053eee09a994e01bca0124bcaa0d581 RX(theta₃₂) db5b0d0a7c9b43c5874f4acd94e033ec--9053eee09a994e01bca0124bcaa0d581 128ab76900b3462baa75a101ef98ae9e HamEvo 9053eee09a994e01bca0124bcaa0d581--128ab76900b3462baa75a101ef98ae9e 128ab76900b3462baa75a101ef98ae9e--3fe85dbdb60d4b95abeaf41d2210e599 34669fbd04a84132aab0e8c559b55ef9 e777c0ee2dd64e67809002a408109ee7 RX(theta₃) b4ea90e00a5747dd9193843f2466fbbc--e777c0ee2dd64e67809002a408109ee7 cce928910508409eb927d736e03c056b 4 4bf4608152dc48479e242287965b0139 RY(theta₉) e777c0ee2dd64e67809002a408109ee7--4bf4608152dc48479e242287965b0139 f787c2c4235d4f2290ee867180397f9e RX(theta₁₅) 4bf4608152dc48479e242287965b0139--f787c2c4235d4f2290ee867180397f9e 4dc6a1cfbc514efd854c158b565857da t = theta_t₀ f787c2c4235d4f2290ee867180397f9e--4dc6a1cfbc514efd854c158b565857da c77234a7736a43ca876b51eb59deb89a RX(theta₂₁) 4dc6a1cfbc514efd854c158b565857da--c77234a7736a43ca876b51eb59deb89a c6a37bab5cce481094b6da466b72e6ed RY(theta₂₇) c77234a7736a43ca876b51eb59deb89a--c6a37bab5cce481094b6da466b72e6ed 83f94333fb874bf68f36d8b5f8eb250f RX(theta₃₃) c6a37bab5cce481094b6da466b72e6ed--83f94333fb874bf68f36d8b5f8eb250f ed35de19d0d54ac6a66c07c312ceb292 t = theta_t₁ 83f94333fb874bf68f36d8b5f8eb250f--ed35de19d0d54ac6a66c07c312ceb292 ed35de19d0d54ac6a66c07c312ceb292--34669fbd04a84132aab0e8c559b55ef9 8fa3641397fd46b381244f6f726985ed 85fb1c6c283d4440ae9de9de0f6bc3c6 RX(theta₄) cce928910508409eb927d736e03c056b--85fb1c6c283d4440ae9de9de0f6bc3c6 a22c996c5f994a528be79a7160cb38fb 5 2dc2d1956c1f4383b32cf4b6f4f6c50d RY(theta₁₀) 85fb1c6c283d4440ae9de9de0f6bc3c6--2dc2d1956c1f4383b32cf4b6f4f6c50d e010b0702ff7460ba744904a3375035f RX(theta₁₆) 2dc2d1956c1f4383b32cf4b6f4f6c50d--e010b0702ff7460ba744904a3375035f 229a17215c3149dea649bb7fe82c8402 e010b0702ff7460ba744904a3375035f--229a17215c3149dea649bb7fe82c8402 1fddc51299924e4ba6b8359584958d00 RX(theta₂₂) 229a17215c3149dea649bb7fe82c8402--1fddc51299924e4ba6b8359584958d00 db26945e458f4719ae3ab0cb7c07cd9e RY(theta₂₈) 1fddc51299924e4ba6b8359584958d00--db26945e458f4719ae3ab0cb7c07cd9e 7370262bfc2d44f9a4ad6e47f47f83e4 RX(theta₃₄) db26945e458f4719ae3ab0cb7c07cd9e--7370262bfc2d44f9a4ad6e47f47f83e4 9d6aca3261cb4e42a17dac50289b8ba8 7370262bfc2d44f9a4ad6e47f47f83e4--9d6aca3261cb4e42a17dac50289b8ba8 9d6aca3261cb4e42a17dac50289b8ba8--8fa3641397fd46b381244f6f726985ed b7834c06feae4f79aeb95e76f9d639d8 fcb4dfaf405240a0a7bcb215abd22168 RX(theta₅) a22c996c5f994a528be79a7160cb38fb--fcb4dfaf405240a0a7bcb215abd22168 19b9c29bb5574c4a93bdde265752155e RY(theta₁₁) fcb4dfaf405240a0a7bcb215abd22168--19b9c29bb5574c4a93bdde265752155e 4df4a543646a49bb9b5cba9192fd2a4f RX(theta₁₇) 19b9c29bb5574c4a93bdde265752155e--4df4a543646a49bb9b5cba9192fd2a4f 6f9d62ac32214dd5957516f30d4c36be 4df4a543646a49bb9b5cba9192fd2a4f--6f9d62ac32214dd5957516f30d4c36be 5a0351be18b34d249f2c131f6d7bdfe0 RX(theta₂₃) 6f9d62ac32214dd5957516f30d4c36be--5a0351be18b34d249f2c131f6d7bdfe0 17bb5e227a21476ea783033cb049aba1 RY(theta₂₉) 5a0351be18b34d249f2c131f6d7bdfe0--17bb5e227a21476ea783033cb049aba1 980ca7c6a19048f398bf8bba532f77b8 RX(theta₃₅) 17bb5e227a21476ea783033cb049aba1--980ca7c6a19048f398bf8bba532f77b8 8044b18c4eca4f62a1c4310cb187d2ce 980ca7c6a19048f398bf8bba532f77b8--8044b18c4eca4f62a1c4310cb187d2ce 8044b18c4eca4f62a1c4310cb187d2ce--b7834c06feae4f79aeb95e76f9d639d8

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_ed399fbf815443dc862691cc8c31f757 BPMA-1 cluster_21c44480043c4a8e860fc4d5f4f18e93 BPMA-0 79449180a5f14d4db0ed560b2e43fae4 0 97c67236f5054631ac1244e5ba759c1e RX(iia_α₀₀) 79449180a5f14d4db0ed560b2e43fae4--97c67236f5054631ac1244e5ba759c1e 43d1ed9eef7246f1a4a92169c461f570 1 13387d6578b1445fae9aedbfddea29f8 RY(iia_α₀₃) 97c67236f5054631ac1244e5ba759c1e--13387d6578b1445fae9aedbfddea29f8 37394205378b46e2b5c14d975fc88872 13387d6578b1445fae9aedbfddea29f8--37394205378b46e2b5c14d975fc88872 1aeeb00e9fdc4e90b9cd941d68341993 37394205378b46e2b5c14d975fc88872--1aeeb00e9fdc4e90b9cd941d68341993 92b6014ccc3d4392a7a1bbf1ea3cf7a3 RX(iia_γ₀₀) 1aeeb00e9fdc4e90b9cd941d68341993--92b6014ccc3d4392a7a1bbf1ea3cf7a3 cb834abbfbcd4f1ca4123fccd2b628c6 92b6014ccc3d4392a7a1bbf1ea3cf7a3--cb834abbfbcd4f1ca4123fccd2b628c6 2e8442f67746481babbfdf8974e1a08a cb834abbfbcd4f1ca4123fccd2b628c6--2e8442f67746481babbfdf8974e1a08a 8a7bb4b99f054aff862cdc69c42714c0 RY(iia_β₀₃) 2e8442f67746481babbfdf8974e1a08a--8a7bb4b99f054aff862cdc69c42714c0 fa24a904d9cf43738ba638c1e450ae88 RX(iia_β₀₀) 8a7bb4b99f054aff862cdc69c42714c0--fa24a904d9cf43738ba638c1e450ae88 009bc634eafb407783f190c2ba24e05e RX(iia_α₁₀) fa24a904d9cf43738ba638c1e450ae88--009bc634eafb407783f190c2ba24e05e 10b3fe6f93094896a3cb43cc6971762c RY(iia_α₁₃) 009bc634eafb407783f190c2ba24e05e--10b3fe6f93094896a3cb43cc6971762c fe264029d525406bbb2a8d8428a8663b 10b3fe6f93094896a3cb43cc6971762c--fe264029d525406bbb2a8d8428a8663b ba0559f545354df9a8494c8bd57e94f1 fe264029d525406bbb2a8d8428a8663b--ba0559f545354df9a8494c8bd57e94f1 7b26cd6a5c7b4d158ce812869cc5bf37 RX(iia_γ₁₀) ba0559f545354df9a8494c8bd57e94f1--7b26cd6a5c7b4d158ce812869cc5bf37 f42c7c3f884d49efb48730c0859a6bc4 7b26cd6a5c7b4d158ce812869cc5bf37--f42c7c3f884d49efb48730c0859a6bc4 8f1d9136b6a7464b9c28ea7c05013d91 f42c7c3f884d49efb48730c0859a6bc4--8f1d9136b6a7464b9c28ea7c05013d91 35c3885e9513406683517e98e369babc RY(iia_β₁₃) 8f1d9136b6a7464b9c28ea7c05013d91--35c3885e9513406683517e98e369babc 64e3341cff0d463dab5775b3fa2418dd RX(iia_β₁₀) 35c3885e9513406683517e98e369babc--64e3341cff0d463dab5775b3fa2418dd 7de18518b9af4c698b1ef09b2a8d1e35 64e3341cff0d463dab5775b3fa2418dd--7de18518b9af4c698b1ef09b2a8d1e35 8a73a9eeea004ccd99fa1c05bff50eba 96a6660c99c64018bb74d1e84402d3fd RX(iia_α₀₁) 43d1ed9eef7246f1a4a92169c461f570--96a6660c99c64018bb74d1e84402d3fd 840d01c0b11e4a43821c2f4d2329d5b2 2 d767b03cface4cfbb9bd5110a1993391 RY(iia_α₀₄) 96a6660c99c64018bb74d1e84402d3fd--d767b03cface4cfbb9bd5110a1993391 3104cd83b0774222a830f7e76326fde4 X d767b03cface4cfbb9bd5110a1993391--3104cd83b0774222a830f7e76326fde4 3104cd83b0774222a830f7e76326fde4--37394205378b46e2b5c14d975fc88872 cd42a11b6ee143bf87478e759b9c18fb 3104cd83b0774222a830f7e76326fde4--cd42a11b6ee143bf87478e759b9c18fb 0136e36d737b4807946df43b6e479033 RX(iia_γ₀₁) cd42a11b6ee143bf87478e759b9c18fb--0136e36d737b4807946df43b6e479033 bc5bd241e6df4630b39e3c95207e5261 0136e36d737b4807946df43b6e479033--bc5bd241e6df4630b39e3c95207e5261 42b23b031b7e4dcfb622a22e8be3c1ae X bc5bd241e6df4630b39e3c95207e5261--42b23b031b7e4dcfb622a22e8be3c1ae 42b23b031b7e4dcfb622a22e8be3c1ae--2e8442f67746481babbfdf8974e1a08a a31e8db8a3c34198ab604a6d24a4188e RY(iia_β₀₄) 42b23b031b7e4dcfb622a22e8be3c1ae--a31e8db8a3c34198ab604a6d24a4188e 966179cbf7dc4522ba92ae1579fab42e RX(iia_β₀₁) a31e8db8a3c34198ab604a6d24a4188e--966179cbf7dc4522ba92ae1579fab42e a1b4467640bd4441a5331ced9fb1e1f7 RX(iia_α₁₁) 966179cbf7dc4522ba92ae1579fab42e--a1b4467640bd4441a5331ced9fb1e1f7 3c6eebe6bcb7493bb7be1eb8a9742b89 RY(iia_α₁₄) a1b4467640bd4441a5331ced9fb1e1f7--3c6eebe6bcb7493bb7be1eb8a9742b89 fb3f337e959342f1b7440b2c96d7b4bd X 3c6eebe6bcb7493bb7be1eb8a9742b89--fb3f337e959342f1b7440b2c96d7b4bd fb3f337e959342f1b7440b2c96d7b4bd--fe264029d525406bbb2a8d8428a8663b 2f2314341f0044018f81fe28e29ccfff fb3f337e959342f1b7440b2c96d7b4bd--2f2314341f0044018f81fe28e29ccfff e0e627204cc4432499e58cfec4b37dba RX(iia_γ₁₁) 2f2314341f0044018f81fe28e29ccfff--e0e627204cc4432499e58cfec4b37dba 271de2b052804e8a99b8359b6613417f e0e627204cc4432499e58cfec4b37dba--271de2b052804e8a99b8359b6613417f 1d7c52969c1943208fd4f7d9814b462b X 271de2b052804e8a99b8359b6613417f--1d7c52969c1943208fd4f7d9814b462b 1d7c52969c1943208fd4f7d9814b462b--8f1d9136b6a7464b9c28ea7c05013d91 910d3f04c752482e83cdc782774838b8 RY(iia_β₁₄) 1d7c52969c1943208fd4f7d9814b462b--910d3f04c752482e83cdc782774838b8 62e7a846de394597acc9e7f1f5c2854d RX(iia_β₁₁) 910d3f04c752482e83cdc782774838b8--62e7a846de394597acc9e7f1f5c2854d 62e7a846de394597acc9e7f1f5c2854d--8a73a9eeea004ccd99fa1c05bff50eba 37a49702b5144ad786cc1180353f4e46 66cf61b4fbfb46598d1539c2e80db760 RX(iia_α₀₂) 840d01c0b11e4a43821c2f4d2329d5b2--66cf61b4fbfb46598d1539c2e80db760 5e0e43aa8e164a5297e3d9c7b3d22f87 RY(iia_α₀₅) 66cf61b4fbfb46598d1539c2e80db760--5e0e43aa8e164a5297e3d9c7b3d22f87 511ea09101864013bc12cac4996487f2 5e0e43aa8e164a5297e3d9c7b3d22f87--511ea09101864013bc12cac4996487f2 2db4258bf07848f5be56111a18f59fa7 X 511ea09101864013bc12cac4996487f2--2db4258bf07848f5be56111a18f59fa7 2db4258bf07848f5be56111a18f59fa7--cd42a11b6ee143bf87478e759b9c18fb 73ec911b330749328548a951b9fddc7f RX(iia_γ₀₂) 2db4258bf07848f5be56111a18f59fa7--73ec911b330749328548a951b9fddc7f df501b35e1f9451e9f12ff31af6fa690 X 73ec911b330749328548a951b9fddc7f--df501b35e1f9451e9f12ff31af6fa690 df501b35e1f9451e9f12ff31af6fa690--bc5bd241e6df4630b39e3c95207e5261 c4a5d7d70e2b495286291deff238bc6d df501b35e1f9451e9f12ff31af6fa690--c4a5d7d70e2b495286291deff238bc6d 44ff8145f806441d86605dcc468de108 RY(iia_β₀₅) c4a5d7d70e2b495286291deff238bc6d--44ff8145f806441d86605dcc468de108 e85f2eef491d4a74ab1436c84f6108da RX(iia_β₀₂) 44ff8145f806441d86605dcc468de108--e85f2eef491d4a74ab1436c84f6108da ac523dd65ec54ddd88bc7de39ef842d7 RX(iia_α₁₂) e85f2eef491d4a74ab1436c84f6108da--ac523dd65ec54ddd88bc7de39ef842d7 46dd895a508e4b9c864db6dcc8090688 RY(iia_α₁₅) ac523dd65ec54ddd88bc7de39ef842d7--46dd895a508e4b9c864db6dcc8090688 a82bc52b0d934e7481bf0bc99a145cfa 46dd895a508e4b9c864db6dcc8090688--a82bc52b0d934e7481bf0bc99a145cfa 14302d4bcf8a4369bc989b7c35efed44 X a82bc52b0d934e7481bf0bc99a145cfa--14302d4bcf8a4369bc989b7c35efed44 14302d4bcf8a4369bc989b7c35efed44--2f2314341f0044018f81fe28e29ccfff 2d8b38cfd36b4bbd945f6d5d20a99cd7 RX(iia_γ₁₂) 14302d4bcf8a4369bc989b7c35efed44--2d8b38cfd36b4bbd945f6d5d20a99cd7 539f30931e914399ae92455a1883eda5 X 2d8b38cfd36b4bbd945f6d5d20a99cd7--539f30931e914399ae92455a1883eda5 539f30931e914399ae92455a1883eda5--271de2b052804e8a99b8359b6613417f bdb5827cda00414e845e51655114566c 539f30931e914399ae92455a1883eda5--bdb5827cda00414e845e51655114566c cd470e4a27d542219589ae14fc5b5754 RY(iia_β₁₅) bdb5827cda00414e845e51655114566c--cd470e4a27d542219589ae14fc5b5754 2e138595f0f848d79b5cee83e4168c3f RX(iia_β₁₂) cd470e4a27d542219589ae14fc5b5754--2e138595f0f848d79b5cee83e4168c3f 2e138595f0f848d79b5cee83e4168c3f--37a49702b5144ad786cc1180353f4e46