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_af3e56141cd442a78660fc8f2244ebd7 Constant Chebyshev FM cluster_9d6c4b6abacd4c448588583810050a0c Constant Fourier FM c8f7ed78de80406d8cb160c01090a25a 0 0783c55ebd954a94a46ff7a07ffc85c6 RX(phi) c8f7ed78de80406d8cb160c01090a25a--0783c55ebd954a94a46ff7a07ffc85c6 dc522e54e3ad4c9a97d9e19d50aebeb3 1 281c7fadfb464e18873e531556236a54 RX(acos(phi)) 0783c55ebd954a94a46ff7a07ffc85c6--281c7fadfb464e18873e531556236a54 c3c8093e1529480f91d8654d4099176b 281c7fadfb464e18873e531556236a54--c3c8093e1529480f91d8654d4099176b 881b705a8d2f4f9f8e369f9f4b917ea7 2b91dc6b9e404961895bcda7222732e9 RX(phi) dc522e54e3ad4c9a97d9e19d50aebeb3--2b91dc6b9e404961895bcda7222732e9 3ee05afdef554d6184e2e8811eff934c 2 2a9d7ad6e7834437988c40d6666413e5 RX(acos(phi)) 2b91dc6b9e404961895bcda7222732e9--2a9d7ad6e7834437988c40d6666413e5 2a9d7ad6e7834437988c40d6666413e5--881b705a8d2f4f9f8e369f9f4b917ea7 d879d3a68e42408095fcb7e30359c1e6 0e1ece74feb04dc6a326a4c8b2bef20f RX(phi) 3ee05afdef554d6184e2e8811eff934c--0e1ece74feb04dc6a326a4c8b2bef20f 2e318393f93f43c3bac4dee0bc960f17 RX(acos(phi)) 0e1ece74feb04dc6a326a4c8b2bef20f--2e318393f93f43c3bac4dee0bc960f17 2e318393f93f43c3bac4dee0bc960f17--d879d3a68e42408095fcb7e30359c1e6

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_0b1a9bf4403a462b816d21cdca26213a Constant <function custom_fn at 0x7efc804dfd00> FM cluster_661a908fe71847378971da202732a848 Constant asin FM c5b94cb361dc44c4941a2ac1c27098c9 0 b30aca662a6043bb8e6e79db7fbe464d RX(asin(phi)) c5b94cb361dc44c4941a2ac1c27098c9--b30aca662a6043bb8e6e79db7fbe464d dc2a035b81e44576aa1287db5dfe2232 1 549cf6f2f60248949b29c0b4bbe892be RX(phi**2 + asin(phi)) b30aca662a6043bb8e6e79db7fbe464d--549cf6f2f60248949b29c0b4bbe892be c9ddeabb6cd1427da33e32cbdb12ac8e 549cf6f2f60248949b29c0b4bbe892be--c9ddeabb6cd1427da33e32cbdb12ac8e 2f5c53f59e434816a29bbf38b9d85a7b 2606f830346e4279b9075b9fb6139fb8 RX(asin(phi)) dc2a035b81e44576aa1287db5dfe2232--2606f830346e4279b9075b9fb6139fb8 eae9ce69d00f4d15bd1b4f583e130ed0 2 bc65b6944c5c49068cad8dab3855dfea RX(phi**2 + asin(phi)) 2606f830346e4279b9075b9fb6139fb8--bc65b6944c5c49068cad8dab3855dfea bc65b6944c5c49068cad8dab3855dfea--2f5c53f59e434816a29bbf38b9d85a7b 55e0dc42dbd444c3adca4190fb034c5a 3a5d6f2a348f48faaf767b0efdaff7b3 RX(asin(phi)) eae9ce69d00f4d15bd1b4f583e130ed0--3a5d6f2a348f48faaf767b0efdaff7b3 02279e1c176046159098b7c785cadc88 RX(phi**2 + asin(phi)) 3a5d6f2a348f48faaf767b0efdaff7b3--02279e1c176046159098b7c785cadc88 02279e1c176046159098b7c785cadc88--55e0dc42dbd444c3adca4190fb034c5a

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_067eb07035f344bbbd3d97e68e94f59d Exponential Fourier FM cluster_7ed1a849c1e84d22a064059e14c14a94 Constant Fourier FM cluster_b35bf537b8db4610812336c4f82ece61 Tower Fourier FM 09e7e47f1c5c42b1a67228f243429b2d 0 967d83e2a8c24c098c1bea0ff0a1f1ea RX(phi) 09e7e47f1c5c42b1a67228f243429b2d--967d83e2a8c24c098c1bea0ff0a1f1ea 4d3c4e5dbc3b4073b34cea40e859069e 1 8c7b0ca487f04758a9ef0436dc00fd48 RX(1.0*phi) 967d83e2a8c24c098c1bea0ff0a1f1ea--8c7b0ca487f04758a9ef0436dc00fd48 1973d9483cc94d879736e9f16ebfe2d3 RX(1.0*phi) 8c7b0ca487f04758a9ef0436dc00fd48--1973d9483cc94d879736e9f16ebfe2d3 f7d779aa13ac492f8f6976f602e3d829 1973d9483cc94d879736e9f16ebfe2d3--f7d779aa13ac492f8f6976f602e3d829 6c1b4de338604f10965befc3f8be44df 46b25e3e9b7246f0a096a98a46356aa8 RX(phi) 4d3c4e5dbc3b4073b34cea40e859069e--46b25e3e9b7246f0a096a98a46356aa8 e06a799a052a433fa7908d1e30297371 2 e79e65a33ff540a491025b306cd8c6cc RX(2.0*phi) 46b25e3e9b7246f0a096a98a46356aa8--e79e65a33ff540a491025b306cd8c6cc 25c3cb81eee444c583b5239f592d173c RX(2.0*phi) e79e65a33ff540a491025b306cd8c6cc--25c3cb81eee444c583b5239f592d173c 25c3cb81eee444c583b5239f592d173c--6c1b4de338604f10965befc3f8be44df 67bbe2c1bfbe4bdeb8ab6be5310a091a 9e67cb1f5b1d4809b159274cbd5b22e8 RX(phi) e06a799a052a433fa7908d1e30297371--9e67cb1f5b1d4809b159274cbd5b22e8 c8dab028f8d6400d8c345a14569c5c1c 3 af4c22cf63654abe95be1da3aa65b6c2 RX(3.0*phi) 9e67cb1f5b1d4809b159274cbd5b22e8--af4c22cf63654abe95be1da3aa65b6c2 3474c7efe6914b7e9f06d429a9b6c84f RX(4.0*phi) af4c22cf63654abe95be1da3aa65b6c2--3474c7efe6914b7e9f06d429a9b6c84f 3474c7efe6914b7e9f06d429a9b6c84f--67bbe2c1bfbe4bdeb8ab6be5310a091a 60a4224c1b4844aa9836e3a77fa8e7a2 29d52f6f6a3f47d3a6a7d7fc15bdc6ea RX(phi) c8dab028f8d6400d8c345a14569c5c1c--29d52f6f6a3f47d3a6a7d7fc15bdc6ea 36d8e650bc894307811e9ce6790563e1 4 d547e07182fb4f3f8f42670dc5759dea RX(4.0*phi) 29d52f6f6a3f47d3a6a7d7fc15bdc6ea--d547e07182fb4f3f8f42670dc5759dea 83de174622224d3699bb2c6e6e320dc0 RX(8.0*phi) d547e07182fb4f3f8f42670dc5759dea--83de174622224d3699bb2c6e6e320dc0 83de174622224d3699bb2c6e6e320dc0--60a4224c1b4844aa9836e3a77fa8e7a2 83405de9b4fa473db2d0a00a68f7cebc 88725873cbd14fdcb1843599d1264e96 RX(phi) 36d8e650bc894307811e9ce6790563e1--88725873cbd14fdcb1843599d1264e96 078c099c1997450696f2ee52e372cad5 RX(5.0*phi) 88725873cbd14fdcb1843599d1264e96--078c099c1997450696f2ee52e372cad5 af43b874bebd467b84eb045303cf1ce4 RX(16.0*phi) 078c099c1997450696f2ee52e372cad5--af43b874bebd467b84eb045303cf1ce4 af43b874bebd467b84eb045303cf1ce4--83405de9b4fa473db2d0a00a68f7cebc

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 867e909ef88c4840b0d5bcd2201cdbd8 0 d650aff87b3144069aa25b90034f9b2b RX(1.0*acos(phi)) 867e909ef88c4840b0d5bcd2201cdbd8--d650aff87b3144069aa25b90034f9b2b a9fafe1032a24454bfaa456864d737a4 1 5ac3677715e648eebabae949dddee60d d650aff87b3144069aa25b90034f9b2b--5ac3677715e648eebabae949dddee60d 87c257ca86214bcabacba84755734b87 76abc66cf22d4eefb9456b0811d8a697 RX(1.414*acos(phi)) a9fafe1032a24454bfaa456864d737a4--76abc66cf22d4eefb9456b0811d8a697 4bfa237acc2a45b3a02f5ba0d3a00c57 2 76abc66cf22d4eefb9456b0811d8a697--87c257ca86214bcabacba84755734b87 086a10439ea24838aa966d1392778ac1 04945455029645e1b6882170ba462c96 RX(1.732*acos(phi)) 4bfa237acc2a45b3a02f5ba0d3a00c57--04945455029645e1b6882170ba462c96 310bac8259664d6c9745d3e9ca57e46c 3 04945455029645e1b6882170ba462c96--086a10439ea24838aa966d1392778ac1 79ea74f00b3d47dda43827716a22cd42 19822ee5f07e4b4c9ee399894ddfdeb6 RX(2.0*acos(phi)) 310bac8259664d6c9745d3e9ca57e46c--19822ee5f07e4b4c9ee399894ddfdeb6 dc4d9fb683e146148f597eb437de8769 4 19822ee5f07e4b4c9ee399894ddfdeb6--79ea74f00b3d47dda43827716a22cd42 cee0c63db9f34900843f13d1ebb2fd7b f92682b4d27a4ebf907f0249894a427d RX(2.236*acos(phi)) dc4d9fb683e146148f597eb437de8769--f92682b4d27a4ebf907f0249894a427d f92682b4d27a4ebf907f0249894a427d--cee0c63db9f34900843f13d1ebb2fd7b

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 d986edae0b5142f59a05a9c1d2638e01 0 e21ca3f3f515425eb4dc1ac11566cd92 RX(1.0*phi*w₀) d986edae0b5142f59a05a9c1d2638e01--e21ca3f3f515425eb4dc1ac11566cd92 31f06d0a34b14c96b46dd68ae8512ac2 1 9dab312386ef4e69a8c91ce3c3f13961 e21ca3f3f515425eb4dc1ac11566cd92--9dab312386ef4e69a8c91ce3c3f13961 7b2b2ae7ec6c4dfd887af7602c443a91 7e6a8dbabcc24de4a7888c596c27fa44 RX(2.0*phi*w₁) 31f06d0a34b14c96b46dd68ae8512ac2--7e6a8dbabcc24de4a7888c596c27fa44 67814ad4f9f44a5997c1ce06412a548f 2 7e6a8dbabcc24de4a7888c596c27fa44--7b2b2ae7ec6c4dfd887af7602c443a91 ebba9fb87a1241178322202fa8a60d85 12664bf8dbb745e3b2ad7a0f275e8ec0 RX(4.0*phi*w₂) 67814ad4f9f44a5997c1ce06412a548f--12664bf8dbb745e3b2ad7a0f275e8ec0 e7c5639eb01e4437986f16708e2d9b67 3 12664bf8dbb745e3b2ad7a0f275e8ec0--ebba9fb87a1241178322202fa8a60d85 76cc849f82334b33bab1c08fa2f35e11 2dfffe4478ed4b80a272473f25a0b58b RX(8.0*phi*w₃) e7c5639eb01e4437986f16708e2d9b67--2dfffe4478ed4b80a272473f25a0b58b 403191ffb4134462b8a6c6a58adca4b6 4 2dfffe4478ed4b80a272473f25a0b58b--76cc849f82334b33bab1c08fa2f35e11 9bf2ade8fcbd4e55bbbe312383e71803 6e6158e788db4666828e404d199d17ce RX(16.0*phi*w₄) 403191ffb4134462b8a6c6a58adca4b6--6e6158e788db4666828e404d199d17ce 6e6158e788db4666828e404d199d17ce--9bf2ade8fcbd4e55bbbe312383e71803

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 94a996a2048743a98bcb64c3e81ef2ea 0 99a416e7f3314c7baeac1b3c4647841f RY(80.0*acos(w₄*(0.667*x + 1.667))) 94a996a2048743a98bcb64c3e81ef2ea--99a416e7f3314c7baeac1b3c4647841f 909fa36dad04444b82d563756c85395f 1 b3ef937774ca42d9857fb86ea7fc0294 99a416e7f3314c7baeac1b3c4647841f--b3ef937774ca42d9857fb86ea7fc0294 6ce0d2d937324f65b56ac3aa37326ebc 2615da7c0d7248d58be035c4029ec49e RY(40.0*acos(w₃*(0.667*x + 1.667))) 909fa36dad04444b82d563756c85395f--2615da7c0d7248d58be035c4029ec49e a3876910a3c54e739c8171bdd045d40a 2 2615da7c0d7248d58be035c4029ec49e--6ce0d2d937324f65b56ac3aa37326ebc d106750114bd45bbb3575aaf4d49bfc7 aba45be9943340588ece3e2cd6d76671 RY(20.0*acos(w₂*(0.667*x + 1.667))) a3876910a3c54e739c8171bdd045d40a--aba45be9943340588ece3e2cd6d76671 2300b57d018847c5ae2efecc7665bd7f 3 aba45be9943340588ece3e2cd6d76671--d106750114bd45bbb3575aaf4d49bfc7 fe6de3b1e2264bf4b88e237df1f8fedf 3c58e842b44146e3b2bc61ade5c4f54b RY(10.0*acos(w₁*(0.667*x + 1.667))) 2300b57d018847c5ae2efecc7665bd7f--3c58e842b44146e3b2bc61ade5c4f54b 100de8a15c5c489caa6b2098a6571609 4 3c58e842b44146e3b2bc61ade5c4f54b--fe6de3b1e2264bf4b88e237df1f8fedf 9ea97abefce248659e1d1db3d506e87a dee04d3c244b4884959402a0bf67a0d8 RY(5.0*acos(w₀*(0.667*x + 1.667))) 100de8a15c5c489caa6b2098a6571609--dee04d3c244b4884959402a0bf67a0d8 dee04d3c244b4884959402a0bf67a0d8--9ea97abefce248659e1d1db3d506e87a

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 a19bcb9ff8fb4d5e99cc2e7ca265bac2 0 a466b6126cc7475b85cfc1cd58eb5a2b RX(theta₀) a19bcb9ff8fb4d5e99cc2e7ca265bac2--a466b6126cc7475b85cfc1cd58eb5a2b cd3b7f3bd3ba433cb23b2d25e0684a77 1 77d1eb372d604d709a6c9ae929a4e2a4 RY(theta₃) a466b6126cc7475b85cfc1cd58eb5a2b--77d1eb372d604d709a6c9ae929a4e2a4 45c4766c75924adfb736fa1a0c069509 RX(theta₆) 77d1eb372d604d709a6c9ae929a4e2a4--45c4766c75924adfb736fa1a0c069509 24cff01931854c228515efb8860c5c66 45c4766c75924adfb736fa1a0c069509--24cff01931854c228515efb8860c5c66 8347bbf6d861443c90972052d45bb20d 24cff01931854c228515efb8860c5c66--8347bbf6d861443c90972052d45bb20d 456c7e87cd004094966282b9b50693bc RX(theta₉) 8347bbf6d861443c90972052d45bb20d--456c7e87cd004094966282b9b50693bc fb98ca9a878e43fc8ab8978183ec28bb RY(theta₁₂) 456c7e87cd004094966282b9b50693bc--fb98ca9a878e43fc8ab8978183ec28bb ff57fe8c327a4a6ca127ae0f6ba6d759 RX(theta₁₅) fb98ca9a878e43fc8ab8978183ec28bb--ff57fe8c327a4a6ca127ae0f6ba6d759 1592fc25e61a4d82a86e463eb5c1f961 ff57fe8c327a4a6ca127ae0f6ba6d759--1592fc25e61a4d82a86e463eb5c1f961 da4a72567a404a6a9061714ffccce1f1 1592fc25e61a4d82a86e463eb5c1f961--da4a72567a404a6a9061714ffccce1f1 5fd12941b27f48d9b6128bd9f78acc91 da4a72567a404a6a9061714ffccce1f1--5fd12941b27f48d9b6128bd9f78acc91 d2e577c38fa345328f44f3b73abadcee 6b156678eb804b1aa612796312437014 RX(theta₁) cd3b7f3bd3ba433cb23b2d25e0684a77--6b156678eb804b1aa612796312437014 d5f4327f616c48a9bf16bd61eba84690 2 27d7517f358143f1b5c05e0205b2dbe4 RY(theta₄) 6b156678eb804b1aa612796312437014--27d7517f358143f1b5c05e0205b2dbe4 336bed1dab984562a63773113c991a10 RX(theta₇) 27d7517f358143f1b5c05e0205b2dbe4--336bed1dab984562a63773113c991a10 3ea9b733bbc04c2a9111e8bef541054e X 336bed1dab984562a63773113c991a10--3ea9b733bbc04c2a9111e8bef541054e 3ea9b733bbc04c2a9111e8bef541054e--24cff01931854c228515efb8860c5c66 d0044852c1b14ff1a9e0d50b2687cfda 3ea9b733bbc04c2a9111e8bef541054e--d0044852c1b14ff1a9e0d50b2687cfda 29cfd44d44204093b6dcb742a0354e0d RX(theta₁₀) d0044852c1b14ff1a9e0d50b2687cfda--29cfd44d44204093b6dcb742a0354e0d 494fa83eb9364c26a0a30b4b4d16636c RY(theta₁₃) 29cfd44d44204093b6dcb742a0354e0d--494fa83eb9364c26a0a30b4b4d16636c eb48f472d5754e39af59e7c2db8f31be RX(theta₁₆) 494fa83eb9364c26a0a30b4b4d16636c--eb48f472d5754e39af59e7c2db8f31be f7a7a7b5958a4b2a8e5dea75a13218ee X eb48f472d5754e39af59e7c2db8f31be--f7a7a7b5958a4b2a8e5dea75a13218ee f7a7a7b5958a4b2a8e5dea75a13218ee--1592fc25e61a4d82a86e463eb5c1f961 7d39af92869c408cb50dec06b4a7fb8e f7a7a7b5958a4b2a8e5dea75a13218ee--7d39af92869c408cb50dec06b4a7fb8e 7d39af92869c408cb50dec06b4a7fb8e--d2e577c38fa345328f44f3b73abadcee 2eb007e99f5544f884efef62c6db1249 008c2c2adffb49acb73b8beab7503b39 RX(theta₂) d5f4327f616c48a9bf16bd61eba84690--008c2c2adffb49acb73b8beab7503b39 8d5b8cd594aa4c4d9410c629625ea691 RY(theta₅) 008c2c2adffb49acb73b8beab7503b39--8d5b8cd594aa4c4d9410c629625ea691 f26426c018154aae92b4130270acbd1d RX(theta₈) 8d5b8cd594aa4c4d9410c629625ea691--f26426c018154aae92b4130270acbd1d e43984e18cb34c8cad83a71fca30432c f26426c018154aae92b4130270acbd1d--e43984e18cb34c8cad83a71fca30432c 452075d807134e0089ab5006ee2a4863 X e43984e18cb34c8cad83a71fca30432c--452075d807134e0089ab5006ee2a4863 452075d807134e0089ab5006ee2a4863--d0044852c1b14ff1a9e0d50b2687cfda 1fb0cfd2c2414ab5b3379247562eabed RX(theta₁₁) 452075d807134e0089ab5006ee2a4863--1fb0cfd2c2414ab5b3379247562eabed 93b1257740804413926a47a51433705d RY(theta₁₄) 1fb0cfd2c2414ab5b3379247562eabed--93b1257740804413926a47a51433705d 59868f8ec2734b0baceb97ec653c6b7c RX(theta₁₇) 93b1257740804413926a47a51433705d--59868f8ec2734b0baceb97ec653c6b7c eeb899e197e243e6b0d2636c99d1613f 59868f8ec2734b0baceb97ec653c6b7c--eeb899e197e243e6b0d2636c99d1613f e26ce398e99e46458c35f7c83712a463 X eeb899e197e243e6b0d2636c99d1613f--e26ce398e99e46458c35f7c83712a463 e26ce398e99e46458c35f7c83712a463--7d39af92869c408cb50dec06b4a7fb8e e26ce398e99e46458c35f7c83712a463--2eb007e99f5544f884efef62c6db1249

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 73e5aeefdfa04a49bc14026ec8273f94 0 94a513cd8fd447ce9b7d82de42a05092 RX(phi₀) 73e5aeefdfa04a49bc14026ec8273f94--94a513cd8fd447ce9b7d82de42a05092 13d183ed8bac4f4186f9733c88c6d90c 1 ad9cd0bb07144fe9988682298b79646e RY(phi₃) 94a513cd8fd447ce9b7d82de42a05092--ad9cd0bb07144fe9988682298b79646e 5e5f00aed0a241a983e8a296b8ccffc1 RX(phi₆) ad9cd0bb07144fe9988682298b79646e--5e5f00aed0a241a983e8a296b8ccffc1 5fe67263df044b7bb8e9783a81ff0002 5e5f00aed0a241a983e8a296b8ccffc1--5fe67263df044b7bb8e9783a81ff0002 0b3ef280c4f142f9b352e4d4af74f492 5fe67263df044b7bb8e9783a81ff0002--0b3ef280c4f142f9b352e4d4af74f492 5430e4e82b36435e9be22096a478495c RX(phi₉) 0b3ef280c4f142f9b352e4d4af74f492--5430e4e82b36435e9be22096a478495c 5a3eba02e7bc4d5e86f3b2ec10040800 RY(phi₁₂) 5430e4e82b36435e9be22096a478495c--5a3eba02e7bc4d5e86f3b2ec10040800 b81ace1b5ae7427f842978343f5f9a17 RX(phi₁₅) 5a3eba02e7bc4d5e86f3b2ec10040800--b81ace1b5ae7427f842978343f5f9a17 12d139db85e446bdb94ba04a4485034b b81ace1b5ae7427f842978343f5f9a17--12d139db85e446bdb94ba04a4485034b e4de6605bd67486ca624fc009f06aa3e 12d139db85e446bdb94ba04a4485034b--e4de6605bd67486ca624fc009f06aa3e 6046025463df48c8aedc0140acb4431a e4de6605bd67486ca624fc009f06aa3e--6046025463df48c8aedc0140acb4431a 3a8969c314494e84bae1eb806ca908fa c32b0caf91a54dcd8a2e2e2ec288e67b RX(phi₁) 13d183ed8bac4f4186f9733c88c6d90c--c32b0caf91a54dcd8a2e2e2ec288e67b f068de7cf484490baddc52675f944910 2 35d4857dce6748a5a9b7123bdaecf8d0 RY(phi₄) c32b0caf91a54dcd8a2e2e2ec288e67b--35d4857dce6748a5a9b7123bdaecf8d0 f14ab730333d47558672832b8693659b RX(phi₇) 35d4857dce6748a5a9b7123bdaecf8d0--f14ab730333d47558672832b8693659b 705af651fe0d46068aaa7493cc83cc65 PHASE(phi_ent₀) f14ab730333d47558672832b8693659b--705af651fe0d46068aaa7493cc83cc65 705af651fe0d46068aaa7493cc83cc65--5fe67263df044b7bb8e9783a81ff0002 65372742fabf4215b81aac443a61d210 705af651fe0d46068aaa7493cc83cc65--65372742fabf4215b81aac443a61d210 3c7c14e12aa94e36a639faadacb25b59 RX(phi₁₀) 65372742fabf4215b81aac443a61d210--3c7c14e12aa94e36a639faadacb25b59 7dfbf2e6c85045b6afce8c0e6ca8c5f4 RY(phi₁₃) 3c7c14e12aa94e36a639faadacb25b59--7dfbf2e6c85045b6afce8c0e6ca8c5f4 0b143649c5234272b384846cd5885c0a RX(phi₁₆) 7dfbf2e6c85045b6afce8c0e6ca8c5f4--0b143649c5234272b384846cd5885c0a 934c0f23b5d04df09fdd542bd66cb014 PHASE(phi_ent₂) 0b143649c5234272b384846cd5885c0a--934c0f23b5d04df09fdd542bd66cb014 934c0f23b5d04df09fdd542bd66cb014--12d139db85e446bdb94ba04a4485034b 86038bfc67fe45efa783eec3ebddcd2b 934c0f23b5d04df09fdd542bd66cb014--86038bfc67fe45efa783eec3ebddcd2b 86038bfc67fe45efa783eec3ebddcd2b--3a8969c314494e84bae1eb806ca908fa f7666cbd8d814e92ae68db13288b8c2f c52fc99099d44686be09d299c857a13b RX(phi₂) f068de7cf484490baddc52675f944910--c52fc99099d44686be09d299c857a13b c03e8e91615041c6902b611f5976afbb RY(phi₅) c52fc99099d44686be09d299c857a13b--c03e8e91615041c6902b611f5976afbb 246af20e5c2440be8a9c42b47f32eb10 RX(phi₈) c03e8e91615041c6902b611f5976afbb--246af20e5c2440be8a9c42b47f32eb10 e1ecb9eaf09c41b3a705e60ab30a2cb1 246af20e5c2440be8a9c42b47f32eb10--e1ecb9eaf09c41b3a705e60ab30a2cb1 c6c4f7add237416586f163e7130015aa PHASE(phi_ent₁) e1ecb9eaf09c41b3a705e60ab30a2cb1--c6c4f7add237416586f163e7130015aa c6c4f7add237416586f163e7130015aa--65372742fabf4215b81aac443a61d210 2292857dd6d64a209fdd7a072a7f73e6 RX(phi₁₁) c6c4f7add237416586f163e7130015aa--2292857dd6d64a209fdd7a072a7f73e6 707dcefd0ae7463f809da20b5cabbc8d RY(phi₁₄) 2292857dd6d64a209fdd7a072a7f73e6--707dcefd0ae7463f809da20b5cabbc8d ed69b4255141476b98688cc99dbf5efb RX(phi₁₇) 707dcefd0ae7463f809da20b5cabbc8d--ed69b4255141476b98688cc99dbf5efb 13ea4963a53348009b9733298dee98f8 ed69b4255141476b98688cc99dbf5efb--13ea4963a53348009b9733298dee98f8 dd883aa4ea694735bc22b60cc16e27bd PHASE(phi_ent₃) 13ea4963a53348009b9733298dee98f8--dd883aa4ea694735bc22b60cc16e27bd dd883aa4ea694735bc22b60cc16e27bd--86038bfc67fe45efa783eec3ebddcd2b dd883aa4ea694735bc22b60cc16e27bd--f7666cbd8d814e92ae68db13288b8c2f

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_87900bf3084549df90058b6af0fe2c3b cluster_c5d7dc6cf9b7418fbb635ec71e935fc4 4ecb9e2670c2440d978a0b59320c35d6 0 783d89cbe95d4436b50ffe4b72f624f7 RX(theta₀) 4ecb9e2670c2440d978a0b59320c35d6--783d89cbe95d4436b50ffe4b72f624f7 7f76d29700ce40f8818391caf956467f 1 c9366e4d723f42cbacf433095e630e85 RY(theta₃) 783d89cbe95d4436b50ffe4b72f624f7--c9366e4d723f42cbacf433095e630e85 237824318fe54492a9570fcc3da39c4b RX(theta₆) c9366e4d723f42cbacf433095e630e85--237824318fe54492a9570fcc3da39c4b be3f821cc4f74041b6bcbabb5a760b26 HamEvo 237824318fe54492a9570fcc3da39c4b--be3f821cc4f74041b6bcbabb5a760b26 e3c456fcf2824f3ab286d0ffb9a759a5 RX(theta₉) be3f821cc4f74041b6bcbabb5a760b26--e3c456fcf2824f3ab286d0ffb9a759a5 199f015c8d2741a482552ed11e3ad7b0 RY(theta₁₂) e3c456fcf2824f3ab286d0ffb9a759a5--199f015c8d2741a482552ed11e3ad7b0 62f7ad11c78b40ceacac705b2b16e4f5 RX(theta₁₅) 199f015c8d2741a482552ed11e3ad7b0--62f7ad11c78b40ceacac705b2b16e4f5 e4613a3a47914a8fa81a8e81e4ba0e18 HamEvo 62f7ad11c78b40ceacac705b2b16e4f5--e4613a3a47914a8fa81a8e81e4ba0e18 f435f710297b41f3b14697f9f57284a9 e4613a3a47914a8fa81a8e81e4ba0e18--f435f710297b41f3b14697f9f57284a9 b915da0d01a846ce926cdbcad04e63a6 09c1237b4ff9464eb71ceffd29e4f807 RX(theta₁) 7f76d29700ce40f8818391caf956467f--09c1237b4ff9464eb71ceffd29e4f807 f99cdbf8602149dea1afcf349421c76a 2 dcd2268b04d140c1847ff4a35c2bf099 RY(theta₄) 09c1237b4ff9464eb71ceffd29e4f807--dcd2268b04d140c1847ff4a35c2bf099 6867a66dcd4340418df23c5f3c91341c RX(theta₇) dcd2268b04d140c1847ff4a35c2bf099--6867a66dcd4340418df23c5f3c91341c 15e6ad2b8a3444048b2c07447108e0a0 t = theta_t₀ 6867a66dcd4340418df23c5f3c91341c--15e6ad2b8a3444048b2c07447108e0a0 743d9e18a9b84a91a70cdf86f8921b56 RX(theta₁₀) 15e6ad2b8a3444048b2c07447108e0a0--743d9e18a9b84a91a70cdf86f8921b56 471c4aa6369149518dd7d065938caa7c RY(theta₁₃) 743d9e18a9b84a91a70cdf86f8921b56--471c4aa6369149518dd7d065938caa7c abb27f276ebd4bf8b89706753daf5207 RX(theta₁₆) 471c4aa6369149518dd7d065938caa7c--abb27f276ebd4bf8b89706753daf5207 c3db926d95ab43829b9677b568c4243c t = theta_t₁ abb27f276ebd4bf8b89706753daf5207--c3db926d95ab43829b9677b568c4243c c3db926d95ab43829b9677b568c4243c--b915da0d01a846ce926cdbcad04e63a6 237ccd9df0b04af29ee664223d232ae1 8aa828f5dbf1441abbf66207508f0e74 RX(theta₂) f99cdbf8602149dea1afcf349421c76a--8aa828f5dbf1441abbf66207508f0e74 cc28d7e86c264a36bc9f81cdc6a614cc RY(theta₅) 8aa828f5dbf1441abbf66207508f0e74--cc28d7e86c264a36bc9f81cdc6a614cc bb562adddc394e408c647f54a560e72d RX(theta₈) cc28d7e86c264a36bc9f81cdc6a614cc--bb562adddc394e408c647f54a560e72d b12842d8dfea4e7ea4552f8d8be41102 bb562adddc394e408c647f54a560e72d--b12842d8dfea4e7ea4552f8d8be41102 0e2e687b5e4c4faa932761f8ae10fa70 RX(theta₁₁) b12842d8dfea4e7ea4552f8d8be41102--0e2e687b5e4c4faa932761f8ae10fa70 79e70324824547b98831a9313f51d7f3 RY(theta₁₄) 0e2e687b5e4c4faa932761f8ae10fa70--79e70324824547b98831a9313f51d7f3 d0406c510c44493180291eeaccd90a58 RX(theta₁₇) 79e70324824547b98831a9313f51d7f3--d0406c510c44493180291eeaccd90a58 93c93d82a912435dabd42bedd3ea5b1e d0406c510c44493180291eeaccd90a58--93c93d82a912435dabd42bedd3ea5b1e 93c93d82a912435dabd42bedd3ea5b1e--237ccd9df0b04af29ee664223d232ae1

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_eebf1ca7e2d74e7da44bc1ceccc26d33 cluster_0c2c0baf0ccc4dd7839b3476a4978de1 cdc74d5e967f46528632b070f6b83202 0 1da6530c99604354affe56a806da159f RX(theta₀) cdc74d5e967f46528632b070f6b83202--1da6530c99604354affe56a806da159f ec6b0ce77b584d078bc2b34e6c210a51 1 832c66f1be9b4e16a8237f141187842c RY(theta₆) 1da6530c99604354affe56a806da159f--832c66f1be9b4e16a8237f141187842c 70cb8340665049859d9d0573df6ff835 RX(theta₁₂) 832c66f1be9b4e16a8237f141187842c--70cb8340665049859d9d0573df6ff835 eb657600b3a94791a5bf057b7aaf9d8f 70cb8340665049859d9d0573df6ff835--eb657600b3a94791a5bf057b7aaf9d8f f60f8a1bb2314e10b980138d0a333949 RX(theta₁₈) eb657600b3a94791a5bf057b7aaf9d8f--f60f8a1bb2314e10b980138d0a333949 9683997f5d8d448a8ae1396b523b62c7 RY(theta₂₄) f60f8a1bb2314e10b980138d0a333949--9683997f5d8d448a8ae1396b523b62c7 83450ec34b384f0189b3bae8fb0c9654 RX(theta₃₀) 9683997f5d8d448a8ae1396b523b62c7--83450ec34b384f0189b3bae8fb0c9654 6d98cdccadcc4506926ffc3bab9a3fc0 83450ec34b384f0189b3bae8fb0c9654--6d98cdccadcc4506926ffc3bab9a3fc0 084bbcf035864a079c4940efa1af3e2c 6d98cdccadcc4506926ffc3bab9a3fc0--084bbcf035864a079c4940efa1af3e2c f7955c065b3d48c5bf175e6227658285 1d18da3dc0d840dfa084daa6b444b9f2 RX(theta₁) ec6b0ce77b584d078bc2b34e6c210a51--1d18da3dc0d840dfa084daa6b444b9f2 519752a7f0fc4a22bb18c1e9709ffc9e 2 cbd5290256144897bc283f5c985cb9ff RY(theta₇) 1d18da3dc0d840dfa084daa6b444b9f2--cbd5290256144897bc283f5c985cb9ff 32773f62fe3f4386936682b178dbafe0 RX(theta₁₃) cbd5290256144897bc283f5c985cb9ff--32773f62fe3f4386936682b178dbafe0 37b3d99d6a7e490a99cb560513c150a8 32773f62fe3f4386936682b178dbafe0--37b3d99d6a7e490a99cb560513c150a8 4d760e144a6d4d69ab40060bbaa309e3 RX(theta₁₉) 37b3d99d6a7e490a99cb560513c150a8--4d760e144a6d4d69ab40060bbaa309e3 20c0c4b249034602bb4eef1e0021d76e RY(theta₂₅) 4d760e144a6d4d69ab40060bbaa309e3--20c0c4b249034602bb4eef1e0021d76e 4d49ca2848ae469eb121c7c7f95f3950 RX(theta₃₁) 20c0c4b249034602bb4eef1e0021d76e--4d49ca2848ae469eb121c7c7f95f3950 ba7cacd98a0744f9b026aa5223840a50 4d49ca2848ae469eb121c7c7f95f3950--ba7cacd98a0744f9b026aa5223840a50 ba7cacd98a0744f9b026aa5223840a50--f7955c065b3d48c5bf175e6227658285 7e10f80bd1824f688a31e3bba43a8ed5 ba215b70132845aa8f32a5570a4cb6dd RX(theta₂) 519752a7f0fc4a22bb18c1e9709ffc9e--ba215b70132845aa8f32a5570a4cb6dd 9020425fe5f743f39e0eeac634e871f6 3 452d9e69e6b240b6ae34b36ca50c7598 RY(theta₈) ba215b70132845aa8f32a5570a4cb6dd--452d9e69e6b240b6ae34b36ca50c7598 cc323fa364d647018076b4d769db6975 RX(theta₁₄) 452d9e69e6b240b6ae34b36ca50c7598--cc323fa364d647018076b4d769db6975 9aa542ed9e9d4692bb6efa3f748f19e5 HamEvo cc323fa364d647018076b4d769db6975--9aa542ed9e9d4692bb6efa3f748f19e5 2e1a42f09e384c7eb435ce7191c8f0a5 RX(theta₂₀) 9aa542ed9e9d4692bb6efa3f748f19e5--2e1a42f09e384c7eb435ce7191c8f0a5 408a3bf66b9440f6a9dfd62485c1ca28 RY(theta₂₆) 2e1a42f09e384c7eb435ce7191c8f0a5--408a3bf66b9440f6a9dfd62485c1ca28 9f05726d717341f58c679633770f8f42 RX(theta₃₂) 408a3bf66b9440f6a9dfd62485c1ca28--9f05726d717341f58c679633770f8f42 3bb2ef0e25f74e168b840784f2cd3a68 HamEvo 9f05726d717341f58c679633770f8f42--3bb2ef0e25f74e168b840784f2cd3a68 3bb2ef0e25f74e168b840784f2cd3a68--7e10f80bd1824f688a31e3bba43a8ed5 90b6f022f4564c4795282d0937333229 43ef04dc6a5e4253a59d7dee169695b1 RX(theta₃) 9020425fe5f743f39e0eeac634e871f6--43ef04dc6a5e4253a59d7dee169695b1 73b72ecf2a0549cc8aa8897f50421f11 4 0a97810c04f14472a25edf0cddf2bc10 RY(theta₉) 43ef04dc6a5e4253a59d7dee169695b1--0a97810c04f14472a25edf0cddf2bc10 7ee4e0a638f949c094cde916e66cb8a2 RX(theta₁₅) 0a97810c04f14472a25edf0cddf2bc10--7ee4e0a638f949c094cde916e66cb8a2 fc13a780745d46088773ccf046c43aa5 t = theta_t₀ 7ee4e0a638f949c094cde916e66cb8a2--fc13a780745d46088773ccf046c43aa5 9f444d5cd110408ab37054208df59189 RX(theta₂₁) fc13a780745d46088773ccf046c43aa5--9f444d5cd110408ab37054208df59189 42f830f558cc4d1a91c0b5f4116302e0 RY(theta₂₇) 9f444d5cd110408ab37054208df59189--42f830f558cc4d1a91c0b5f4116302e0 2edce6fa705a401cbbf97f4eb5cca29e RX(theta₃₃) 42f830f558cc4d1a91c0b5f4116302e0--2edce6fa705a401cbbf97f4eb5cca29e bb236b2eea794fce8ad1b43a1adb4f6b t = theta_t₁ 2edce6fa705a401cbbf97f4eb5cca29e--bb236b2eea794fce8ad1b43a1adb4f6b bb236b2eea794fce8ad1b43a1adb4f6b--90b6f022f4564c4795282d0937333229 fe06fa3cc57b4707be4e93dd7ede61d8 4b5bd2d567a44034959798e7f6159bb8 RX(theta₄) 73b72ecf2a0549cc8aa8897f50421f11--4b5bd2d567a44034959798e7f6159bb8 e637df5ce83e49a2b3e5a6a9239b32eb 5 c331ebf78d2f475c9f693384ba031c34 RY(theta₁₀) 4b5bd2d567a44034959798e7f6159bb8--c331ebf78d2f475c9f693384ba031c34 1770629ccf8e49eaa59b2a84467f4365 RX(theta₁₆) c331ebf78d2f475c9f693384ba031c34--1770629ccf8e49eaa59b2a84467f4365 21f585b97476415587fa04dd19322420 1770629ccf8e49eaa59b2a84467f4365--21f585b97476415587fa04dd19322420 2e6f90625ca84a0796dd49bac1014409 RX(theta₂₂) 21f585b97476415587fa04dd19322420--2e6f90625ca84a0796dd49bac1014409 6478cd759bdb4a66899e28730d7d3729 RY(theta₂₈) 2e6f90625ca84a0796dd49bac1014409--6478cd759bdb4a66899e28730d7d3729 0c9c4dc42fca42b4b867421ddbaca68e RX(theta₃₄) 6478cd759bdb4a66899e28730d7d3729--0c9c4dc42fca42b4b867421ddbaca68e ecfeb29711df4b0eadac674434041506 0c9c4dc42fca42b4b867421ddbaca68e--ecfeb29711df4b0eadac674434041506 ecfeb29711df4b0eadac674434041506--fe06fa3cc57b4707be4e93dd7ede61d8 ee304360bcaf4519a47b20f60b5b5596 eb4c9814d3ce446eb604736b83af5eaf RX(theta₅) e637df5ce83e49a2b3e5a6a9239b32eb--eb4c9814d3ce446eb604736b83af5eaf 9b629e54e0cc48fdaef6a78db152fcd9 RY(theta₁₁) eb4c9814d3ce446eb604736b83af5eaf--9b629e54e0cc48fdaef6a78db152fcd9 f95d80069a234b1f9383fb810509f272 RX(theta₁₇) 9b629e54e0cc48fdaef6a78db152fcd9--f95d80069a234b1f9383fb810509f272 cdad3b155bb1456d99e9ad158786acbc f95d80069a234b1f9383fb810509f272--cdad3b155bb1456d99e9ad158786acbc 207c328350e1444d8f429b5261b9e2ab RX(theta₂₃) cdad3b155bb1456d99e9ad158786acbc--207c328350e1444d8f429b5261b9e2ab 4d1ea298ef3540efa8aa3ca737ee0864 RY(theta₂₉) 207c328350e1444d8f429b5261b9e2ab--4d1ea298ef3540efa8aa3ca737ee0864 ffb76daec2174398a7722277e8b201ea RX(theta₃₅) 4d1ea298ef3540efa8aa3ca737ee0864--ffb76daec2174398a7722277e8b201ea dfd5b6bccec64808bc1306f3f1db884e ffb76daec2174398a7722277e8b201ea--dfd5b6bccec64808bc1306f3f1db884e dfd5b6bccec64808bc1306f3f1db884e--ee304360bcaf4519a47b20f60b5b5596

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_d2a530c5c7754d249ede83301cc503cf BPMA-1 cluster_f1a8824a02c34517915c336d033031ac BPMA-0 8a808c65d4aa4a4f97e45269b405fb0c 0 5317c940ba2f4314a30d8d4a03ccfef8 RX(iia_α₀₀) 8a808c65d4aa4a4f97e45269b405fb0c--5317c940ba2f4314a30d8d4a03ccfef8 8981c0971f854e91a1afbea1e388145e 1 a8dcde1f6e214897af445e59d36a6cb6 RY(iia_α₀₃) 5317c940ba2f4314a30d8d4a03ccfef8--a8dcde1f6e214897af445e59d36a6cb6 8cedf52ab834467d8b084d39fa30408a a8dcde1f6e214897af445e59d36a6cb6--8cedf52ab834467d8b084d39fa30408a ee76ca6db6c14108a075b233ebe32639 8cedf52ab834467d8b084d39fa30408a--ee76ca6db6c14108a075b233ebe32639 9c7be0f93ca042199f693759d06a4445 RX(iia_γ₀₀) ee76ca6db6c14108a075b233ebe32639--9c7be0f93ca042199f693759d06a4445 9be6fa070f634a47b8fd431b0b54bb6c 9c7be0f93ca042199f693759d06a4445--9be6fa070f634a47b8fd431b0b54bb6c 7b4a98e2cae048b4bb40d620f3ec0861 9be6fa070f634a47b8fd431b0b54bb6c--7b4a98e2cae048b4bb40d620f3ec0861 41d45a80c0a34337aa131263dda7d2cd RY(iia_β₀₃) 7b4a98e2cae048b4bb40d620f3ec0861--41d45a80c0a34337aa131263dda7d2cd 37f25d318fd74bf2bc26d9207b0fb6f1 RX(iia_β₀₀) 41d45a80c0a34337aa131263dda7d2cd--37f25d318fd74bf2bc26d9207b0fb6f1 2cd1ff38896d4dccbcd7c4f35544bf3b RX(iia_α₁₀) 37f25d318fd74bf2bc26d9207b0fb6f1--2cd1ff38896d4dccbcd7c4f35544bf3b eb268809ecec4c7ead59de6b6e7062a8 RY(iia_α₁₃) 2cd1ff38896d4dccbcd7c4f35544bf3b--eb268809ecec4c7ead59de6b6e7062a8 6199da861a6d4cb5be035dae3601b3fa eb268809ecec4c7ead59de6b6e7062a8--6199da861a6d4cb5be035dae3601b3fa 205abe5c6265422ea898c07801b578ff 6199da861a6d4cb5be035dae3601b3fa--205abe5c6265422ea898c07801b578ff fafb7d21cdcf47168f01c189b8a79ea1 RX(iia_γ₁₀) 205abe5c6265422ea898c07801b578ff--fafb7d21cdcf47168f01c189b8a79ea1 29b24cff29254f2aa7a5ca5d72ad4872 fafb7d21cdcf47168f01c189b8a79ea1--29b24cff29254f2aa7a5ca5d72ad4872 9bf167862ed449cba2b2dba712b27923 29b24cff29254f2aa7a5ca5d72ad4872--9bf167862ed449cba2b2dba712b27923 62ecfc2785ef4875992460ce709e0cdd RY(iia_β₁₃) 9bf167862ed449cba2b2dba712b27923--62ecfc2785ef4875992460ce709e0cdd b1cc91c0cdfa4be4861403a53d88c106 RX(iia_β₁₀) 62ecfc2785ef4875992460ce709e0cdd--b1cc91c0cdfa4be4861403a53d88c106 04e46c826ae6495685f5bf6832cf7077 b1cc91c0cdfa4be4861403a53d88c106--04e46c826ae6495685f5bf6832cf7077 c5a371ab0a0a4583b821b71b3e5adddc 9342594b479048d99cfe4255b711af13 RX(iia_α₀₁) 8981c0971f854e91a1afbea1e388145e--9342594b479048d99cfe4255b711af13 0479c43b732145238a869ec8a72bbfed 2 194e0bb01f40413c8ba446d698a134bf RY(iia_α₀₄) 9342594b479048d99cfe4255b711af13--194e0bb01f40413c8ba446d698a134bf 9d0da7551ee247329d3bda4145ed6fd9 X 194e0bb01f40413c8ba446d698a134bf--9d0da7551ee247329d3bda4145ed6fd9 9d0da7551ee247329d3bda4145ed6fd9--8cedf52ab834467d8b084d39fa30408a 6744a2ef0cea409b91b8f83f4043de2a 9d0da7551ee247329d3bda4145ed6fd9--6744a2ef0cea409b91b8f83f4043de2a aa9f8eb2d9e14c3e9052eed2cc30848f RX(iia_γ₀₁) 6744a2ef0cea409b91b8f83f4043de2a--aa9f8eb2d9e14c3e9052eed2cc30848f cbd3699f04644a6a99b41d6153190279 aa9f8eb2d9e14c3e9052eed2cc30848f--cbd3699f04644a6a99b41d6153190279 886f8ceda1c741a2b755989da6ce2ce6 X cbd3699f04644a6a99b41d6153190279--886f8ceda1c741a2b755989da6ce2ce6 886f8ceda1c741a2b755989da6ce2ce6--7b4a98e2cae048b4bb40d620f3ec0861 279964b88919417d899d798e79a89491 RY(iia_β₀₄) 886f8ceda1c741a2b755989da6ce2ce6--279964b88919417d899d798e79a89491 76d9f781e0434a5cb7d87746a3cad6cb RX(iia_β₀₁) 279964b88919417d899d798e79a89491--76d9f781e0434a5cb7d87746a3cad6cb 58a92efa9e5d4d01b7ea146a2f5d684c RX(iia_α₁₁) 76d9f781e0434a5cb7d87746a3cad6cb--58a92efa9e5d4d01b7ea146a2f5d684c 186a8d14ae334dd8b53dde5dca1410fc RY(iia_α₁₄) 58a92efa9e5d4d01b7ea146a2f5d684c--186a8d14ae334dd8b53dde5dca1410fc e3213edbaafa4891b4e7af12984676ae X 186a8d14ae334dd8b53dde5dca1410fc--e3213edbaafa4891b4e7af12984676ae e3213edbaafa4891b4e7af12984676ae--6199da861a6d4cb5be035dae3601b3fa 7b8b107cebf746f38346906556c6394a e3213edbaafa4891b4e7af12984676ae--7b8b107cebf746f38346906556c6394a 74dcf638e5a7487da1832dbf08bca58d RX(iia_γ₁₁) 7b8b107cebf746f38346906556c6394a--74dcf638e5a7487da1832dbf08bca58d 03c1df20d2264d9ca4cd7c47712233cc 74dcf638e5a7487da1832dbf08bca58d--03c1df20d2264d9ca4cd7c47712233cc 7af7294ae57d481e8846d098ee6963d1 X 03c1df20d2264d9ca4cd7c47712233cc--7af7294ae57d481e8846d098ee6963d1 7af7294ae57d481e8846d098ee6963d1--9bf167862ed449cba2b2dba712b27923 da0043ec684549b49e254f606f93e2b8 RY(iia_β₁₄) 7af7294ae57d481e8846d098ee6963d1--da0043ec684549b49e254f606f93e2b8 632d25833ea84ac480399f11302ca0a1 RX(iia_β₁₁) da0043ec684549b49e254f606f93e2b8--632d25833ea84ac480399f11302ca0a1 632d25833ea84ac480399f11302ca0a1--c5a371ab0a0a4583b821b71b3e5adddc 9feac6380d9947838cf01b79171770ea 0e690bfbf29e434fb8f17a5b2adf25fa RX(iia_α₀₂) 0479c43b732145238a869ec8a72bbfed--0e690bfbf29e434fb8f17a5b2adf25fa ab4c0ef093844365976a6e31f515d50b RY(iia_α₀₅) 0e690bfbf29e434fb8f17a5b2adf25fa--ab4c0ef093844365976a6e31f515d50b 510924a3e6d54a9b99f91af657cfd6c0 ab4c0ef093844365976a6e31f515d50b--510924a3e6d54a9b99f91af657cfd6c0 a4edb68ba65041bbac129f5470f2756c X 510924a3e6d54a9b99f91af657cfd6c0--a4edb68ba65041bbac129f5470f2756c a4edb68ba65041bbac129f5470f2756c--6744a2ef0cea409b91b8f83f4043de2a c5f0a3e6cf404add90d614669bc8b160 RX(iia_γ₀₂) a4edb68ba65041bbac129f5470f2756c--c5f0a3e6cf404add90d614669bc8b160 b066f3e9ad3040c99bcae376ec6a8e98 X c5f0a3e6cf404add90d614669bc8b160--b066f3e9ad3040c99bcae376ec6a8e98 b066f3e9ad3040c99bcae376ec6a8e98--cbd3699f04644a6a99b41d6153190279 562b0646d2424471bb3056c912ce7f99 b066f3e9ad3040c99bcae376ec6a8e98--562b0646d2424471bb3056c912ce7f99 d9fb7a7d819c413cbf16ec315f99963d RY(iia_β₀₅) 562b0646d2424471bb3056c912ce7f99--d9fb7a7d819c413cbf16ec315f99963d 78fd524f18bd4859badce6fdd4db1980 RX(iia_β₀₂) d9fb7a7d819c413cbf16ec315f99963d--78fd524f18bd4859badce6fdd4db1980 43203b5470be41bdb8e120b2d84323da RX(iia_α₁₂) 78fd524f18bd4859badce6fdd4db1980--43203b5470be41bdb8e120b2d84323da 8f39655001a44e7c8e3e11be90af0786 RY(iia_α₁₅) 43203b5470be41bdb8e120b2d84323da--8f39655001a44e7c8e3e11be90af0786 050c4e2b37734bc994207aabf414fe26 8f39655001a44e7c8e3e11be90af0786--050c4e2b37734bc994207aabf414fe26 be39b04ac0444572b36e70e48643bac9 X 050c4e2b37734bc994207aabf414fe26--be39b04ac0444572b36e70e48643bac9 be39b04ac0444572b36e70e48643bac9--7b8b107cebf746f38346906556c6394a a055b876bc644d0e9aee9e241b2309a0 RX(iia_γ₁₂) be39b04ac0444572b36e70e48643bac9--a055b876bc644d0e9aee9e241b2309a0 226b783b2dec4d9b8ff894d119e3e363 X a055b876bc644d0e9aee9e241b2309a0--226b783b2dec4d9b8ff894d119e3e363 226b783b2dec4d9b8ff894d119e3e363--03c1df20d2264d9ca4cd7c47712233cc 678a0cc4e5f44aaf9abc35e1a7fd69cd 226b783b2dec4d9b8ff894d119e3e363--678a0cc4e5f44aaf9abc35e1a7fd69cd aee8af2dfc4a4c878ab086ffd79f711f RY(iia_β₁₅) 678a0cc4e5f44aaf9abc35e1a7fd69cd--aee8af2dfc4a4c878ab086ffd79f711f 7398f25e330549848050a32d995547c2 RX(iia_β₁₂) aee8af2dfc4a4c878ab086ffd79f711f--7398f25e330549848050a32d995547c2 7398f25e330549848050a32d995547c2--9feac6380d9947838cf01b79171770ea