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_7e69318d9f404449b39393b9ee2d3d83 Constant Chebyshev FM cluster_efbd2e579c0e40c989aac8a2ded2ca7d Constant Fourier FM 6d3897c495384fc09c49fa8438a3baf8 0 c3e615a3bda144618a5f7c4275c2d989 RX(phi) 6d3897c495384fc09c49fa8438a3baf8--c3e615a3bda144618a5f7c4275c2d989 b896f704a2fc445182a1604c07c42cb8 1 e43e380e4557499b9155ff03bd2118de RX(acos(phi)) c3e615a3bda144618a5f7c4275c2d989--e43e380e4557499b9155ff03bd2118de f02befbf4dc14ea9aded9fbd94b34229 e43e380e4557499b9155ff03bd2118de--f02befbf4dc14ea9aded9fbd94b34229 eadacf7807584b38b47117f50bdccabf a16c716dcfda4d1f8954674129561230 RX(phi) b896f704a2fc445182a1604c07c42cb8--a16c716dcfda4d1f8954674129561230 a7264b23eac04951a82f8fb473bfc6fb 2 f23936cbd5b94be8956dcc3b23719ec0 RX(acos(phi)) a16c716dcfda4d1f8954674129561230--f23936cbd5b94be8956dcc3b23719ec0 f23936cbd5b94be8956dcc3b23719ec0--eadacf7807584b38b47117f50bdccabf 66b334b2dd594151af5669e6e49a4e3f 4f847e501f1647ae84e835d29574b299 RX(phi) a7264b23eac04951a82f8fb473bfc6fb--4f847e501f1647ae84e835d29574b299 b9dbb918759545a085d31f1d8d7ee0e3 RX(acos(phi)) 4f847e501f1647ae84e835d29574b299--b9dbb918759545a085d31f1d8d7ee0e3 b9dbb918759545a085d31f1d8d7ee0e3--66b334b2dd594151af5669e6e49a4e3f

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_6feb4508b4da459bbdbcebfbb77de30f Constant <function custom_fn at 0x7f51cd3f5630> FM cluster_6ff131aed2154295a6d1bbe2ca6cdfb7 Constant asin FM add8bbe6714241aa9adfb5e40bf18075 0 b93d08e4e12b41979faa1c2d33a10a9b RX(asin(phi)) add8bbe6714241aa9adfb5e40bf18075--b93d08e4e12b41979faa1c2d33a10a9b b6846ca2e63d44648ce049ef70cf9ace 1 1238fadafaf14a90ba96700f04c9501c RX(phi**2 + asin(phi)) b93d08e4e12b41979faa1c2d33a10a9b--1238fadafaf14a90ba96700f04c9501c bffc12fddde249ed9fccd0cde96fb89a 1238fadafaf14a90ba96700f04c9501c--bffc12fddde249ed9fccd0cde96fb89a e2a37f06d22e490e86a266e92f47442d d90c396fcbcd4bdf94c24c7a7c0b9474 RX(asin(phi)) b6846ca2e63d44648ce049ef70cf9ace--d90c396fcbcd4bdf94c24c7a7c0b9474 931cc77548ff48408cabc74dac160174 2 7347dc9fc6e445d69545b14e0aea78cc RX(phi**2 + asin(phi)) d90c396fcbcd4bdf94c24c7a7c0b9474--7347dc9fc6e445d69545b14e0aea78cc 7347dc9fc6e445d69545b14e0aea78cc--e2a37f06d22e490e86a266e92f47442d 40bd7c92ff5c44caa347ef815d5744fc 20112c817ebe43ce8cbd8e8727306829 RX(asin(phi)) 931cc77548ff48408cabc74dac160174--20112c817ebe43ce8cbd8e8727306829 98faff6f7d1a46ff87568cec3483a320 RX(phi**2 + asin(phi)) 20112c817ebe43ce8cbd8e8727306829--98faff6f7d1a46ff87568cec3483a320 98faff6f7d1a46ff87568cec3483a320--40bd7c92ff5c44caa347ef815d5744fc

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_19f80d0e0f134a3685845bf99cab2de5 Exponential Fourier FM cluster_82ae22449d38402eb69dc039fee6afd1 Constant Fourier FM cluster_8130d27aaaac4184b30474ff3ec02bf1 Tower Fourier FM 33c708ca444e4447aa7ddf04795d66a4 0 7ee4521ba93c4d6794bdde06eede3377 RX(phi) 33c708ca444e4447aa7ddf04795d66a4--7ee4521ba93c4d6794bdde06eede3377 ac811fa9aedb4a9e824525b1a23ada6b 1 3277d609052648b3a944f50694dcb8d3 RX(1.0*phi) 7ee4521ba93c4d6794bdde06eede3377--3277d609052648b3a944f50694dcb8d3 519ea05b9dbc45bfbbbc14187f38925d RX(1.0*phi) 3277d609052648b3a944f50694dcb8d3--519ea05b9dbc45bfbbbc14187f38925d 687f697001c54281a0eacb12d6c6c143 519ea05b9dbc45bfbbbc14187f38925d--687f697001c54281a0eacb12d6c6c143 28cc01edf12d4225afc7ac30112500b5 9f826c886d25435aa55ad82e926bbbad RX(phi) ac811fa9aedb4a9e824525b1a23ada6b--9f826c886d25435aa55ad82e926bbbad 80dd478a288449418d5f1bedbe0773fd 2 a44729661ea94d75b9f79efb097192e3 RX(2.0*phi) 9f826c886d25435aa55ad82e926bbbad--a44729661ea94d75b9f79efb097192e3 d176cd36010a486f9ecc1c72967455bf RX(2.0*phi) a44729661ea94d75b9f79efb097192e3--d176cd36010a486f9ecc1c72967455bf d176cd36010a486f9ecc1c72967455bf--28cc01edf12d4225afc7ac30112500b5 919700b7e00b4eb28fff5c31935a0f6e 47e1069f867e43f1a927bad624e029df RX(phi) 80dd478a288449418d5f1bedbe0773fd--47e1069f867e43f1a927bad624e029df 4aa42f0f796c458498b68684810b96cc 3 34537170140240fab8174ceb0b1c8bda RX(3.0*phi) 47e1069f867e43f1a927bad624e029df--34537170140240fab8174ceb0b1c8bda 1265d3f6609a4a8e904f4923db3af87c RX(4.0*phi) 34537170140240fab8174ceb0b1c8bda--1265d3f6609a4a8e904f4923db3af87c 1265d3f6609a4a8e904f4923db3af87c--919700b7e00b4eb28fff5c31935a0f6e 72bdfaca72534dfaa429c02b83e34f4e ad9902f8a5764c4981bb19491bf29958 RX(phi) 4aa42f0f796c458498b68684810b96cc--ad9902f8a5764c4981bb19491bf29958 dda5ac7839464342b9e19a3c48c30e07 4 bfe187e64468460a9ce644003669366b RX(4.0*phi) ad9902f8a5764c4981bb19491bf29958--bfe187e64468460a9ce644003669366b e19baef7d9a04324ba4728699119b9b7 RX(8.0*phi) bfe187e64468460a9ce644003669366b--e19baef7d9a04324ba4728699119b9b7 e19baef7d9a04324ba4728699119b9b7--72bdfaca72534dfaa429c02b83e34f4e b27bde737c6244b2a3ffa7c4101f78cd ad7fdd51d22949fdbad26bc9b22ad93c RX(phi) dda5ac7839464342b9e19a3c48c30e07--ad7fdd51d22949fdbad26bc9b22ad93c 2c07ad2c236640da845b024e020e1054 RX(5.0*phi) ad7fdd51d22949fdbad26bc9b22ad93c--2c07ad2c236640da845b024e020e1054 847ee99f145b49adbe6678df0cbcf59a RX(16.0*phi) 2c07ad2c236640da845b024e020e1054--847ee99f145b49adbe6678df0cbcf59a 847ee99f145b49adbe6678df0cbcf59a--b27bde737c6244b2a3ffa7c4101f78cd

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 7dac997f97564940bee215acc319cd92 0 c0c80b0637284ea49e51a624f387c4ad RX(1.0*acos(phi)) 7dac997f97564940bee215acc319cd92--c0c80b0637284ea49e51a624f387c4ad 3580549526234e26aad6c85ffcc90e27 1 cbd96976456f430bad745c2835a704f1 c0c80b0637284ea49e51a624f387c4ad--cbd96976456f430bad745c2835a704f1 78d6081ac6044e498a6717bb3dfe2ad9 ddbfed2cde8047e6a8bba6073a3e7d3d RX(1.414*acos(phi)) 3580549526234e26aad6c85ffcc90e27--ddbfed2cde8047e6a8bba6073a3e7d3d 353984f5590b4fa8acfef45df1501f6e 2 ddbfed2cde8047e6a8bba6073a3e7d3d--78d6081ac6044e498a6717bb3dfe2ad9 501fb44959074b8ab8d0df189bf8d7f8 5e4a4a7597ad43c58dbf52663727531f RX(1.732*acos(phi)) 353984f5590b4fa8acfef45df1501f6e--5e4a4a7597ad43c58dbf52663727531f 3e96f8c260d04b5dafe4646bc9b1ddd5 3 5e4a4a7597ad43c58dbf52663727531f--501fb44959074b8ab8d0df189bf8d7f8 1cdea95f39b14094b61f697d6570f8f2 e2f461c0351e443ead3052bb74c82734 RX(2.0*acos(phi)) 3e96f8c260d04b5dafe4646bc9b1ddd5--e2f461c0351e443ead3052bb74c82734 657a2502567f422fbe6a5d2614a2f499 4 e2f461c0351e443ead3052bb74c82734--1cdea95f39b14094b61f697d6570f8f2 ee96196fee6348f592bb9287a7e8c99e 0cf7012e17b14479a90634dad510cb1a RX(2.236*acos(phi)) 657a2502567f422fbe6a5d2614a2f499--0cf7012e17b14479a90634dad510cb1a 0cf7012e17b14479a90634dad510cb1a--ee96196fee6348f592bb9287a7e8c99e

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 3c30414bd69d424da44acfe5aaba82cf 0 4d4db7133917403e9cafe53b2e14156f RX(1.0*phi*w₀) 3c30414bd69d424da44acfe5aaba82cf--4d4db7133917403e9cafe53b2e14156f 3513d927e0e24d96a9b8c536dc6ef847 1 5020dbd032284725a4594ac464428d39 4d4db7133917403e9cafe53b2e14156f--5020dbd032284725a4594ac464428d39 057e5a982e714c5eb69e622ae3a21bd0 24257d34083440328676fadc1532ea3f RX(2.0*phi*w₁) 3513d927e0e24d96a9b8c536dc6ef847--24257d34083440328676fadc1532ea3f 9fb0e5fe44b248828397efa0efbc4172 2 24257d34083440328676fadc1532ea3f--057e5a982e714c5eb69e622ae3a21bd0 69b3507e2ea14eb59159b4fb2c989cb0 4e303d7fc5dd460b997bc426cc910015 RX(4.0*phi*w₂) 9fb0e5fe44b248828397efa0efbc4172--4e303d7fc5dd460b997bc426cc910015 e16824f1a50f4ae28f3ce2803bc6995b 3 4e303d7fc5dd460b997bc426cc910015--69b3507e2ea14eb59159b4fb2c989cb0 3b54544a9418408599845e2c12230597 5eeb0b0faa1b4c44bea3ae1309b1a2ad RX(8.0*phi*w₃) e16824f1a50f4ae28f3ce2803bc6995b--5eeb0b0faa1b4c44bea3ae1309b1a2ad f4e20c4eaf5f458a96ab7c3ac8aa748d 4 5eeb0b0faa1b4c44bea3ae1309b1a2ad--3b54544a9418408599845e2c12230597 c2c39551ece84826aa805d908c95defd 39d0e4ce47a8426fab32b14986741a46 RX(16.0*phi*w₄) f4e20c4eaf5f458a96ab7c3ac8aa748d--39d0e4ce47a8426fab32b14986741a46 39d0e4ce47a8426fab32b14986741a46--c2c39551ece84826aa805d908c95defd

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 e389874fc7a3476bbc134725fec29cb9 0 2eddc536f3ee4662ab61d0f664f851a8 RY(80.0*acos(w₄*(0.667*x + 1.667))) e389874fc7a3476bbc134725fec29cb9--2eddc536f3ee4662ab61d0f664f851a8 80ab1bbed7254e5e8ec037683bf5976c 1 80c17e73081343f39940273a0463b156 2eddc536f3ee4662ab61d0f664f851a8--80c17e73081343f39940273a0463b156 aa1ec590dc9a40708f1a3509f8d32dcb 60ca7fe4039c4eadb4800ffdd280ecc1 RY(40.0*acos(w₃*(0.667*x + 1.667))) 80ab1bbed7254e5e8ec037683bf5976c--60ca7fe4039c4eadb4800ffdd280ecc1 711ba80c09cd49049fa26581e7e9892a 2 60ca7fe4039c4eadb4800ffdd280ecc1--aa1ec590dc9a40708f1a3509f8d32dcb 48ae67e83bb2432c9ebd91d136515187 667530a0cef345e4ae327286c74149fb RY(20.0*acos(w₂*(0.667*x + 1.667))) 711ba80c09cd49049fa26581e7e9892a--667530a0cef345e4ae327286c74149fb e24a316f889c4ba4863c6ff78508c91b 3 667530a0cef345e4ae327286c74149fb--48ae67e83bb2432c9ebd91d136515187 656e029a679d43479c90498f28eaa173 5ef79edbc9204f19848575fb5ab70d38 RY(10.0*acos(w₁*(0.667*x + 1.667))) e24a316f889c4ba4863c6ff78508c91b--5ef79edbc9204f19848575fb5ab70d38 8466fd969de0440fa0effc2f887ce0a1 4 5ef79edbc9204f19848575fb5ab70d38--656e029a679d43479c90498f28eaa173 e79fe7189ee34d7d8d0bb7520f05c06e 52d27eac3f9b41608cd2ca911338cb72 RY(5.0*acos(w₀*(0.667*x + 1.667))) 8466fd969de0440fa0effc2f887ce0a1--52d27eac3f9b41608cd2ca911338cb72 52d27eac3f9b41608cd2ca911338cb72--e79fe7189ee34d7d8d0bb7520f05c06e

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 83e3da2e56364f78bcb803e6ebd90b75 0 cc5bf4403eac434ab7eeec440317281e RX(theta₀) 83e3da2e56364f78bcb803e6ebd90b75--cc5bf4403eac434ab7eeec440317281e 93cd37186468498ba221efc00a0d1daa 1 7679f2404b504ccba5d85107003ed888 RY(theta₃) cc5bf4403eac434ab7eeec440317281e--7679f2404b504ccba5d85107003ed888 926bdbd3c50d4775918ccef4463dfe95 RX(theta₆) 7679f2404b504ccba5d85107003ed888--926bdbd3c50d4775918ccef4463dfe95 eb3fe8d884414ae3a247965757854f34 926bdbd3c50d4775918ccef4463dfe95--eb3fe8d884414ae3a247965757854f34 287480fc1ff2484a8c1b58a9509d2564 eb3fe8d884414ae3a247965757854f34--287480fc1ff2484a8c1b58a9509d2564 f2b1a87444084fa0bcf9572f0499b333 RX(theta₉) 287480fc1ff2484a8c1b58a9509d2564--f2b1a87444084fa0bcf9572f0499b333 ffb4c3c0919f427fa6f7682397da0f2d RY(theta₁₂) f2b1a87444084fa0bcf9572f0499b333--ffb4c3c0919f427fa6f7682397da0f2d 0e058077ec62410b8551ff2caf479420 RX(theta₁₅) ffb4c3c0919f427fa6f7682397da0f2d--0e058077ec62410b8551ff2caf479420 94d9884eb7fa4a63b001174c96238bbf 0e058077ec62410b8551ff2caf479420--94d9884eb7fa4a63b001174c96238bbf adb62669b8cd492b83fa4100986de306 94d9884eb7fa4a63b001174c96238bbf--adb62669b8cd492b83fa4100986de306 fc3ee3c4e6274001ac44e49013fc7fb7 adb62669b8cd492b83fa4100986de306--fc3ee3c4e6274001ac44e49013fc7fb7 d763346e5c764f4cb3cd2ada3fb6e469 da803a0bc6174334a527e6e7aa684765 RX(theta₁) 93cd37186468498ba221efc00a0d1daa--da803a0bc6174334a527e6e7aa684765 6184fb09cb564f179c143eb1cb15dbfd 2 27f5a8e2ca57415cba1224e83bce8815 RY(theta₄) da803a0bc6174334a527e6e7aa684765--27f5a8e2ca57415cba1224e83bce8815 0552518fc9624058a0fc041882d3cb79 RX(theta₇) 27f5a8e2ca57415cba1224e83bce8815--0552518fc9624058a0fc041882d3cb79 96053e3f143b4f87920264b2fb99eb28 X 0552518fc9624058a0fc041882d3cb79--96053e3f143b4f87920264b2fb99eb28 96053e3f143b4f87920264b2fb99eb28--eb3fe8d884414ae3a247965757854f34 c77e717d656c4dfeb7b4ec1858de6821 96053e3f143b4f87920264b2fb99eb28--c77e717d656c4dfeb7b4ec1858de6821 4b69373c34f8466daae1c68222890b41 RX(theta₁₀) c77e717d656c4dfeb7b4ec1858de6821--4b69373c34f8466daae1c68222890b41 c92a2927957f45ea81d5ae58f85f98d3 RY(theta₁₃) 4b69373c34f8466daae1c68222890b41--c92a2927957f45ea81d5ae58f85f98d3 4b3975c4d09d4e0ab8d3f58ac385fc1b RX(theta₁₆) c92a2927957f45ea81d5ae58f85f98d3--4b3975c4d09d4e0ab8d3f58ac385fc1b 776b4f5078c14be6a6a4dd1cd1f1a31b X 4b3975c4d09d4e0ab8d3f58ac385fc1b--776b4f5078c14be6a6a4dd1cd1f1a31b 776b4f5078c14be6a6a4dd1cd1f1a31b--94d9884eb7fa4a63b001174c96238bbf 4cbe629fa09949008fbf0fc9a0d4b967 776b4f5078c14be6a6a4dd1cd1f1a31b--4cbe629fa09949008fbf0fc9a0d4b967 4cbe629fa09949008fbf0fc9a0d4b967--d763346e5c764f4cb3cd2ada3fb6e469 ed9980093c724c7d9f97685cb03568ea b73451ee62d243f4913280a68dd98772 RX(theta₂) 6184fb09cb564f179c143eb1cb15dbfd--b73451ee62d243f4913280a68dd98772 b10878bf5cd64babbd3bd8ed29b7aa75 RY(theta₅) b73451ee62d243f4913280a68dd98772--b10878bf5cd64babbd3bd8ed29b7aa75 27991fa11cd144fba4be23535e82cf3f RX(theta₈) b10878bf5cd64babbd3bd8ed29b7aa75--27991fa11cd144fba4be23535e82cf3f d918923a27f04bd2a5236d76842cbfdc 27991fa11cd144fba4be23535e82cf3f--d918923a27f04bd2a5236d76842cbfdc 771e415ec43c4260b38d8fd7cc82611b X d918923a27f04bd2a5236d76842cbfdc--771e415ec43c4260b38d8fd7cc82611b 771e415ec43c4260b38d8fd7cc82611b--c77e717d656c4dfeb7b4ec1858de6821 ef9a2fdbf77d4a57b63abbb10d36984f RX(theta₁₁) 771e415ec43c4260b38d8fd7cc82611b--ef9a2fdbf77d4a57b63abbb10d36984f 4d546bf91a544212895b437db7704ce2 RY(theta₁₄) ef9a2fdbf77d4a57b63abbb10d36984f--4d546bf91a544212895b437db7704ce2 75954f019e804a72a8d5d3f322567177 RX(theta₁₇) 4d546bf91a544212895b437db7704ce2--75954f019e804a72a8d5d3f322567177 4d8c3806ae4242069ede64f522112ee7 75954f019e804a72a8d5d3f322567177--4d8c3806ae4242069ede64f522112ee7 ba25f32370c54ba3ae84136cc90ec9bc X 4d8c3806ae4242069ede64f522112ee7--ba25f32370c54ba3ae84136cc90ec9bc ba25f32370c54ba3ae84136cc90ec9bc--4cbe629fa09949008fbf0fc9a0d4b967 ba25f32370c54ba3ae84136cc90ec9bc--ed9980093c724c7d9f97685cb03568ea

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 f75adafda2414938ac4cf2b725aa95b7 0 8c12c255255144458ef8fa078f005232 RX(phi₀) f75adafda2414938ac4cf2b725aa95b7--8c12c255255144458ef8fa078f005232 9bbd9f429e5c48e0889cf05cbe80f656 1 13376e281a3642c0962a188d0d5a86a7 RY(phi₃) 8c12c255255144458ef8fa078f005232--13376e281a3642c0962a188d0d5a86a7 7b64439bd3a146c4b3c78af2944545f9 RX(phi₆) 13376e281a3642c0962a188d0d5a86a7--7b64439bd3a146c4b3c78af2944545f9 3bd02a85d01e4c3f88d1fd5a9f368b27 7b64439bd3a146c4b3c78af2944545f9--3bd02a85d01e4c3f88d1fd5a9f368b27 d072ac49b89944f99d9842d2c1176fca 3bd02a85d01e4c3f88d1fd5a9f368b27--d072ac49b89944f99d9842d2c1176fca e2e44c10c8da4b569f107fb9f0d8106d RX(phi₉) d072ac49b89944f99d9842d2c1176fca--e2e44c10c8da4b569f107fb9f0d8106d 2da1654b7fbe4ff1a21ade32869174e4 RY(phi₁₂) e2e44c10c8da4b569f107fb9f0d8106d--2da1654b7fbe4ff1a21ade32869174e4 2941861bab4b4688b3399666d6e9e36b RX(phi₁₅) 2da1654b7fbe4ff1a21ade32869174e4--2941861bab4b4688b3399666d6e9e36b 5bfae0f0bac04747bb9a57928c7b4c57 2941861bab4b4688b3399666d6e9e36b--5bfae0f0bac04747bb9a57928c7b4c57 e18867cf541d4326be03b6d694ab90d0 5bfae0f0bac04747bb9a57928c7b4c57--e18867cf541d4326be03b6d694ab90d0 161f0361a5124114b483395ca1328c10 e18867cf541d4326be03b6d694ab90d0--161f0361a5124114b483395ca1328c10 e6659dc85cfc4692983acbe3e5366357 c0975bcb9b1f483ab97fbe4cdd7f1683 RX(phi₁) 9bbd9f429e5c48e0889cf05cbe80f656--c0975bcb9b1f483ab97fbe4cdd7f1683 633e1f87ae82449d97df50128a929904 2 1fad4c0cb35245ebbf6e93407e51441d RY(phi₄) c0975bcb9b1f483ab97fbe4cdd7f1683--1fad4c0cb35245ebbf6e93407e51441d 5882c568cabf423093a9300e28a8eb45 RX(phi₇) 1fad4c0cb35245ebbf6e93407e51441d--5882c568cabf423093a9300e28a8eb45 f6325f30afd54b0a932979fd99c33e94 PHASE(phi_ent₀) 5882c568cabf423093a9300e28a8eb45--f6325f30afd54b0a932979fd99c33e94 f6325f30afd54b0a932979fd99c33e94--3bd02a85d01e4c3f88d1fd5a9f368b27 ce93db20c0c349b8b45364302af1aeda f6325f30afd54b0a932979fd99c33e94--ce93db20c0c349b8b45364302af1aeda 943175380daa42e8a0cf324910b7725e RX(phi₁₀) ce93db20c0c349b8b45364302af1aeda--943175380daa42e8a0cf324910b7725e 284f340dbcb94fc789d3891aed0806b8 RY(phi₁₃) 943175380daa42e8a0cf324910b7725e--284f340dbcb94fc789d3891aed0806b8 cf6eeb630a434d63a505ce68ca3eb67f RX(phi₁₆) 284f340dbcb94fc789d3891aed0806b8--cf6eeb630a434d63a505ce68ca3eb67f b3dbcf6208364449a84cf9412e0c33dd PHASE(phi_ent₂) cf6eeb630a434d63a505ce68ca3eb67f--b3dbcf6208364449a84cf9412e0c33dd b3dbcf6208364449a84cf9412e0c33dd--5bfae0f0bac04747bb9a57928c7b4c57 f56d9f32e3344da384164ac307cabfa2 b3dbcf6208364449a84cf9412e0c33dd--f56d9f32e3344da384164ac307cabfa2 f56d9f32e3344da384164ac307cabfa2--e6659dc85cfc4692983acbe3e5366357 12bcf8f663654783a0c91fe95dce0b8f b9710e6b891649e88fa5d28ccb042fc9 RX(phi₂) 633e1f87ae82449d97df50128a929904--b9710e6b891649e88fa5d28ccb042fc9 e272c00583244a1482841f335f518bc6 RY(phi₅) b9710e6b891649e88fa5d28ccb042fc9--e272c00583244a1482841f335f518bc6 964e6ddab37048cfa34a3dcfcfde79be RX(phi₈) e272c00583244a1482841f335f518bc6--964e6ddab37048cfa34a3dcfcfde79be c8fa386c969e46cdaf02b155dfab8843 964e6ddab37048cfa34a3dcfcfde79be--c8fa386c969e46cdaf02b155dfab8843 a6adf168a9ed4b4fa2db00b1623616b9 PHASE(phi_ent₁) c8fa386c969e46cdaf02b155dfab8843--a6adf168a9ed4b4fa2db00b1623616b9 a6adf168a9ed4b4fa2db00b1623616b9--ce93db20c0c349b8b45364302af1aeda 5827250b819d4b2a811bc5fbb55426d5 RX(phi₁₁) a6adf168a9ed4b4fa2db00b1623616b9--5827250b819d4b2a811bc5fbb55426d5 929eaf534e9c4f0bbdbd5fc5f2c7c5b5 RY(phi₁₄) 5827250b819d4b2a811bc5fbb55426d5--929eaf534e9c4f0bbdbd5fc5f2c7c5b5 5462efef0310484fad9f640bed72f141 RX(phi₁₇) 929eaf534e9c4f0bbdbd5fc5f2c7c5b5--5462efef0310484fad9f640bed72f141 61154d7a495544baa3c06c2340f7e434 5462efef0310484fad9f640bed72f141--61154d7a495544baa3c06c2340f7e434 599cf09a837945718200dee0e3f7824c PHASE(phi_ent₃) 61154d7a495544baa3c06c2340f7e434--599cf09a837945718200dee0e3f7824c 599cf09a837945718200dee0e3f7824c--f56d9f32e3344da384164ac307cabfa2 599cf09a837945718200dee0e3f7824c--12bcf8f663654783a0c91fe95dce0b8f

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_1a8ddda9c30c4e1ab64e47dcf69d4248 cluster_7d73768003464eb69687d68784d35672 500d1c6a664b4c408648fcb93bfaeee5 0 dbb45b57ee5e4201a6704a92a75706fc RX(theta₀) 500d1c6a664b4c408648fcb93bfaeee5--dbb45b57ee5e4201a6704a92a75706fc 5ae33bc0757d4fd19a9364a95ffc38ce 1 08f966c4993647699ce8be0d1cd432ff RY(theta₃) dbb45b57ee5e4201a6704a92a75706fc--08f966c4993647699ce8be0d1cd432ff 79b624c50eaf4553a2784acf1d82a248 RX(theta₆) 08f966c4993647699ce8be0d1cd432ff--79b624c50eaf4553a2784acf1d82a248 303845176795494eab0206c3b62cd4d2 HamEvo 79b624c50eaf4553a2784acf1d82a248--303845176795494eab0206c3b62cd4d2 b5970ed12f724caea70fd105eb94d4c2 RX(theta₉) 303845176795494eab0206c3b62cd4d2--b5970ed12f724caea70fd105eb94d4c2 59f7bbf359dc47b4ac3578c8fc2a126d RY(theta₁₂) b5970ed12f724caea70fd105eb94d4c2--59f7bbf359dc47b4ac3578c8fc2a126d 1585e6e1b38c4731ac90879eaef918ca RX(theta₁₅) 59f7bbf359dc47b4ac3578c8fc2a126d--1585e6e1b38c4731ac90879eaef918ca dc6b4df5b33a4857bc960c98e2cce8a6 HamEvo 1585e6e1b38c4731ac90879eaef918ca--dc6b4df5b33a4857bc960c98e2cce8a6 ac4f704042464522ba5fc5f2df7cbdf1 dc6b4df5b33a4857bc960c98e2cce8a6--ac4f704042464522ba5fc5f2df7cbdf1 276cc15041f14d2787dcf8a01655a818 c1f8da75599f4e85bf0da1ca6155bc5b RX(theta₁) 5ae33bc0757d4fd19a9364a95ffc38ce--c1f8da75599f4e85bf0da1ca6155bc5b 5b10db867e274384a6b70bfba291e239 2 aeb6f447761248439597120c453c67a3 RY(theta₄) c1f8da75599f4e85bf0da1ca6155bc5b--aeb6f447761248439597120c453c67a3 26eb13867318493ca4a2c963279252c7 RX(theta₇) aeb6f447761248439597120c453c67a3--26eb13867318493ca4a2c963279252c7 d971ff1026764b84bf7d7f4efe623a90 t = theta_t₀ 26eb13867318493ca4a2c963279252c7--d971ff1026764b84bf7d7f4efe623a90 e76d9f6e010446698d2955873cc5e597 RX(theta₁₀) d971ff1026764b84bf7d7f4efe623a90--e76d9f6e010446698d2955873cc5e597 7c1e3243da5c4976ba863e645ac109d5 RY(theta₁₃) e76d9f6e010446698d2955873cc5e597--7c1e3243da5c4976ba863e645ac109d5 43d8bd5812dc4de99382bd99bf2ab3ed RX(theta₁₆) 7c1e3243da5c4976ba863e645ac109d5--43d8bd5812dc4de99382bd99bf2ab3ed da8796dc5c6d4a9cba5ad377fe72cdea t = theta_t₁ 43d8bd5812dc4de99382bd99bf2ab3ed--da8796dc5c6d4a9cba5ad377fe72cdea da8796dc5c6d4a9cba5ad377fe72cdea--276cc15041f14d2787dcf8a01655a818 01c8c3cff4384958a2923d0c072ec618 f8779bdf66cf4cd3a1dcd11e5a0c955a RX(theta₂) 5b10db867e274384a6b70bfba291e239--f8779bdf66cf4cd3a1dcd11e5a0c955a f60298cd1a2e4739a87c5979657265d5 RY(theta₅) f8779bdf66cf4cd3a1dcd11e5a0c955a--f60298cd1a2e4739a87c5979657265d5 11eefb195039405e9f8174e0d49bb053 RX(theta₈) f60298cd1a2e4739a87c5979657265d5--11eefb195039405e9f8174e0d49bb053 1f29f8949471463eacd2f22b7d5c4b27 11eefb195039405e9f8174e0d49bb053--1f29f8949471463eacd2f22b7d5c4b27 f28fa0638661472eb1d03e69f21ea63c RX(theta₁₁) 1f29f8949471463eacd2f22b7d5c4b27--f28fa0638661472eb1d03e69f21ea63c 30e45ab994254fa89e9e669144b18321 RY(theta₁₄) f28fa0638661472eb1d03e69f21ea63c--30e45ab994254fa89e9e669144b18321 b6928cfb503849acbd9f36130ca4342f RX(theta₁₇) 30e45ab994254fa89e9e669144b18321--b6928cfb503849acbd9f36130ca4342f a1f9d3d7e89b42fd96c0fc0b13eaccc3 b6928cfb503849acbd9f36130ca4342f--a1f9d3d7e89b42fd96c0fc0b13eaccc3 a1f9d3d7e89b42fd96c0fc0b13eaccc3--01c8c3cff4384958a2923d0c072ec618

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_d83dfddc94f5441c8cb63b764755e2b3 cluster_0f4b31708883481ca01183e770f96fb4 86cbc0e0aa5545009ce3b06de2064230 0 909718207fe5470c9501f2b57145f91b RX(theta₀) 86cbc0e0aa5545009ce3b06de2064230--909718207fe5470c9501f2b57145f91b ea3bc56dea054765be7c704d7a9232d3 1 62c38f797da64e418c0535dc9e143484 RY(theta₆) 909718207fe5470c9501f2b57145f91b--62c38f797da64e418c0535dc9e143484 184eedb8e89a4d21aa441c36dd5a8cb0 RX(theta₁₂) 62c38f797da64e418c0535dc9e143484--184eedb8e89a4d21aa441c36dd5a8cb0 2e482002a3f241dfab11f46b1d71ae92 184eedb8e89a4d21aa441c36dd5a8cb0--2e482002a3f241dfab11f46b1d71ae92 2be510e202ed4b1a9407a7ebc6b34568 RX(theta₁₈) 2e482002a3f241dfab11f46b1d71ae92--2be510e202ed4b1a9407a7ebc6b34568 c0a48baba2904760aa9247467b228715 RY(theta₂₄) 2be510e202ed4b1a9407a7ebc6b34568--c0a48baba2904760aa9247467b228715 49da8523f6e442efba3d6a560d5b719c RX(theta₃₀) c0a48baba2904760aa9247467b228715--49da8523f6e442efba3d6a560d5b719c 4c92507c938347b2befe82f1a884a727 49da8523f6e442efba3d6a560d5b719c--4c92507c938347b2befe82f1a884a727 409b9f68ace24e419b3a1b70c8addb2b 4c92507c938347b2befe82f1a884a727--409b9f68ace24e419b3a1b70c8addb2b 9f2e7c687227429c9c08e0b36573abed 978c1d6ce93643b7875950c202a36b2b RX(theta₁) ea3bc56dea054765be7c704d7a9232d3--978c1d6ce93643b7875950c202a36b2b 42d60194f6f046d891cc48198c74eb7c 2 6bdfd4f094924296a3f0c1399270ab7d RY(theta₇) 978c1d6ce93643b7875950c202a36b2b--6bdfd4f094924296a3f0c1399270ab7d 7afb0a6c0c344cb28d4396327804d60f RX(theta₁₃) 6bdfd4f094924296a3f0c1399270ab7d--7afb0a6c0c344cb28d4396327804d60f 47e1de3bdf3246bdba39891e717b3357 7afb0a6c0c344cb28d4396327804d60f--47e1de3bdf3246bdba39891e717b3357 3296c2b3f9dc4fe092c7a7af134dc7a9 RX(theta₁₉) 47e1de3bdf3246bdba39891e717b3357--3296c2b3f9dc4fe092c7a7af134dc7a9 ff6d82ab90484a4db237ae644c7870f1 RY(theta₂₅) 3296c2b3f9dc4fe092c7a7af134dc7a9--ff6d82ab90484a4db237ae644c7870f1 0e35c9d85eb0445bae4ff417f884b4c3 RX(theta₃₁) ff6d82ab90484a4db237ae644c7870f1--0e35c9d85eb0445bae4ff417f884b4c3 8fa0139d08684eed9e8fb879002aa2aa 0e35c9d85eb0445bae4ff417f884b4c3--8fa0139d08684eed9e8fb879002aa2aa 8fa0139d08684eed9e8fb879002aa2aa--9f2e7c687227429c9c08e0b36573abed 82b7566ec9e44a35b213b098a6e05bc4 7518ff60c39543bfbbaff01bcb8fc2f3 RX(theta₂) 42d60194f6f046d891cc48198c74eb7c--7518ff60c39543bfbbaff01bcb8fc2f3 a655d44f56ce415f8f2288e5fb284229 3 29d7420019094c41ac9bdcf0c9d9f320 RY(theta₈) 7518ff60c39543bfbbaff01bcb8fc2f3--29d7420019094c41ac9bdcf0c9d9f320 d5341346744847bea8e1ca883626d50f RX(theta₁₄) 29d7420019094c41ac9bdcf0c9d9f320--d5341346744847bea8e1ca883626d50f 27ee644d904646ea852aee54b54150a4 HamEvo d5341346744847bea8e1ca883626d50f--27ee644d904646ea852aee54b54150a4 46afb918b96145bdb4e068dff1e5ef04 RX(theta₂₀) 27ee644d904646ea852aee54b54150a4--46afb918b96145bdb4e068dff1e5ef04 df36ed45182247f5ba8a72bebee0b7b4 RY(theta₂₆) 46afb918b96145bdb4e068dff1e5ef04--df36ed45182247f5ba8a72bebee0b7b4 716e483dd4b84046b39c1a7729e507ed RX(theta₃₂) df36ed45182247f5ba8a72bebee0b7b4--716e483dd4b84046b39c1a7729e507ed 97fe04ea29224605adcbb38874fceb94 HamEvo 716e483dd4b84046b39c1a7729e507ed--97fe04ea29224605adcbb38874fceb94 97fe04ea29224605adcbb38874fceb94--82b7566ec9e44a35b213b098a6e05bc4 709dad9884f44b86a3d20d93af4e8eda ad5b1959e44e4ef09accd21aff081b55 RX(theta₃) a655d44f56ce415f8f2288e5fb284229--ad5b1959e44e4ef09accd21aff081b55 07c348cd2c8f436d810d1d6489a573c8 4 e331af5f18a94cbaabfd7ff0a499922b RY(theta₉) ad5b1959e44e4ef09accd21aff081b55--e331af5f18a94cbaabfd7ff0a499922b 36e898e6bd754fe18aaee5cd132f36b1 RX(theta₁₅) e331af5f18a94cbaabfd7ff0a499922b--36e898e6bd754fe18aaee5cd132f36b1 eda3af3b5cd44592bf7d5fcfe91d27a5 t = theta_t₀ 36e898e6bd754fe18aaee5cd132f36b1--eda3af3b5cd44592bf7d5fcfe91d27a5 2e1d909a654746c49ca105e2abadded3 RX(theta₂₁) eda3af3b5cd44592bf7d5fcfe91d27a5--2e1d909a654746c49ca105e2abadded3 e6281a162afd4a4e80c9ce59a7cec781 RY(theta₂₇) 2e1d909a654746c49ca105e2abadded3--e6281a162afd4a4e80c9ce59a7cec781 cd4d6410ed174ce59fb28b2061d7f831 RX(theta₃₃) e6281a162afd4a4e80c9ce59a7cec781--cd4d6410ed174ce59fb28b2061d7f831 d8da232d70804e258b48449c4df9699c t = theta_t₁ cd4d6410ed174ce59fb28b2061d7f831--d8da232d70804e258b48449c4df9699c d8da232d70804e258b48449c4df9699c--709dad9884f44b86a3d20d93af4e8eda dba6e09db96346cf9f2d03fc8c5a7e9a 70fc8815fc6e42e0927e5b6e7eb61bd8 RX(theta₄) 07c348cd2c8f436d810d1d6489a573c8--70fc8815fc6e42e0927e5b6e7eb61bd8 39f56a47e832406b8609740fc6b98c0e 5 78280e4655ea4ecb96a132917514fb53 RY(theta₁₀) 70fc8815fc6e42e0927e5b6e7eb61bd8--78280e4655ea4ecb96a132917514fb53 2535c067420345749c54eb38c081ccc2 RX(theta₁₆) 78280e4655ea4ecb96a132917514fb53--2535c067420345749c54eb38c081ccc2 67254f9c98174450b3c3de8d11de8c94 2535c067420345749c54eb38c081ccc2--67254f9c98174450b3c3de8d11de8c94 b87826343068416d830ca32a0fbb9d3b RX(theta₂₂) 67254f9c98174450b3c3de8d11de8c94--b87826343068416d830ca32a0fbb9d3b 373d1d89c9d543ac9a3e5d573e0359ac RY(theta₂₈) b87826343068416d830ca32a0fbb9d3b--373d1d89c9d543ac9a3e5d573e0359ac 1e7abfa873504599968c35c77b3d7a49 RX(theta₃₄) 373d1d89c9d543ac9a3e5d573e0359ac--1e7abfa873504599968c35c77b3d7a49 86433c33a3254587a7ce461d02226ec8 1e7abfa873504599968c35c77b3d7a49--86433c33a3254587a7ce461d02226ec8 86433c33a3254587a7ce461d02226ec8--dba6e09db96346cf9f2d03fc8c5a7e9a 1577b311e4e44ff59aaf9ee089d00e92 572eeb4cd52241a4ad3a3ebf1de893a9 RX(theta₅) 39f56a47e832406b8609740fc6b98c0e--572eeb4cd52241a4ad3a3ebf1de893a9 fcf5a9bc372a4a3a8ea1eb2292162855 RY(theta₁₁) 572eeb4cd52241a4ad3a3ebf1de893a9--fcf5a9bc372a4a3a8ea1eb2292162855 4923878b71444a55acf9f8903528b8bb RX(theta₁₇) fcf5a9bc372a4a3a8ea1eb2292162855--4923878b71444a55acf9f8903528b8bb 8a6de21a80c44dcb9fff50ad4469f420 4923878b71444a55acf9f8903528b8bb--8a6de21a80c44dcb9fff50ad4469f420 b56822aa40a644cd91f8e91fdd733509 RX(theta₂₃) 8a6de21a80c44dcb9fff50ad4469f420--b56822aa40a644cd91f8e91fdd733509 8ba8d94a8de6410cbd4821f9be11220d RY(theta₂₉) b56822aa40a644cd91f8e91fdd733509--8ba8d94a8de6410cbd4821f9be11220d 8e90f3e3adeb43c29d9548def8c9c37b RX(theta₃₅) 8ba8d94a8de6410cbd4821f9be11220d--8e90f3e3adeb43c29d9548def8c9c37b 7d89b1700c2a48baba70ab801c7d9243 8e90f3e3adeb43c29d9548def8c9c37b--7d89b1700c2a48baba70ab801c7d9243 7d89b1700c2a48baba70ab801c7d9243--1577b311e4e44ff59aaf9ee089d00e92

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_f86427560e7a485c92ae71a2f3608451 BPMA-1 cluster_bbace832c7114d5ea13b7450f67cc4b3 BPMA-0 3f1b9b9b025e4069bbe55771379d8704 0 c153ffa6b032462eb1f9e7994f3b0b8f RX(iia_α₀₀) 3f1b9b9b025e4069bbe55771379d8704--c153ffa6b032462eb1f9e7994f3b0b8f a0d7218cbc6447bb9ab70c2c0987f948 1 12e0bc152498479783b1a47a75626199 RY(iia_α₀₃) c153ffa6b032462eb1f9e7994f3b0b8f--12e0bc152498479783b1a47a75626199 7ee0bc41b0e74665a9e7ec8adb14214c 12e0bc152498479783b1a47a75626199--7ee0bc41b0e74665a9e7ec8adb14214c 0133e751213849adb969226dab5efe2e 7ee0bc41b0e74665a9e7ec8adb14214c--0133e751213849adb969226dab5efe2e 3d1e09dbbbad42f699a89abd28a62d0c RX(iia_γ₀₀) 0133e751213849adb969226dab5efe2e--3d1e09dbbbad42f699a89abd28a62d0c ddd92beaf5f44be19d4a685712c17e6b 3d1e09dbbbad42f699a89abd28a62d0c--ddd92beaf5f44be19d4a685712c17e6b ed0d8cc1426e469ebb4b830e28bbd96b ddd92beaf5f44be19d4a685712c17e6b--ed0d8cc1426e469ebb4b830e28bbd96b cb76390de85142b085a98dd2bedde431 RY(iia_β₀₃) ed0d8cc1426e469ebb4b830e28bbd96b--cb76390de85142b085a98dd2bedde431 854115da95424bf6a9315598eb0f863b RX(iia_β₀₀) cb76390de85142b085a98dd2bedde431--854115da95424bf6a9315598eb0f863b 79a6ae4c058b48fcb501cfa8e1c6ed72 RX(iia_α₁₀) 854115da95424bf6a9315598eb0f863b--79a6ae4c058b48fcb501cfa8e1c6ed72 20bbbe84d8b8444db7e843e411cd7b53 RY(iia_α₁₃) 79a6ae4c058b48fcb501cfa8e1c6ed72--20bbbe84d8b8444db7e843e411cd7b53 d8ec5de036eb48949259da7242f814ea 20bbbe84d8b8444db7e843e411cd7b53--d8ec5de036eb48949259da7242f814ea 04f463a66d9f4fc1906b77a992c2aeb0 d8ec5de036eb48949259da7242f814ea--04f463a66d9f4fc1906b77a992c2aeb0 941a759e1c3d4b38974082c12960ba0f RX(iia_γ₁₀) 04f463a66d9f4fc1906b77a992c2aeb0--941a759e1c3d4b38974082c12960ba0f 9f2d57e49f11461e88bab9f9d7fe166f 941a759e1c3d4b38974082c12960ba0f--9f2d57e49f11461e88bab9f9d7fe166f 4c6decc5aef442daa5f6fcff58d3c0cd 9f2d57e49f11461e88bab9f9d7fe166f--4c6decc5aef442daa5f6fcff58d3c0cd e7c4bd26af5948e68ebf859007ad3ff9 RY(iia_β₁₃) 4c6decc5aef442daa5f6fcff58d3c0cd--e7c4bd26af5948e68ebf859007ad3ff9 d9e00de9e8684ee4acc5d3f6fef29a15 RX(iia_β₁₀) e7c4bd26af5948e68ebf859007ad3ff9--d9e00de9e8684ee4acc5d3f6fef29a15 12769e0df085465bab361c2f92b3543a d9e00de9e8684ee4acc5d3f6fef29a15--12769e0df085465bab361c2f92b3543a f12abf4c7ac34d158dd92dc77d2e7319 77acf8ce0ee54766b23e34391784d2ce RX(iia_α₀₁) a0d7218cbc6447bb9ab70c2c0987f948--77acf8ce0ee54766b23e34391784d2ce 80d3a4168d1a4db58b26146097f43c0f 2 1d44d54388814841ac14b73f0313e5a5 RY(iia_α₀₄) 77acf8ce0ee54766b23e34391784d2ce--1d44d54388814841ac14b73f0313e5a5 b44a9c17858b4313bd6d6d9003bb93ab X 1d44d54388814841ac14b73f0313e5a5--b44a9c17858b4313bd6d6d9003bb93ab b44a9c17858b4313bd6d6d9003bb93ab--7ee0bc41b0e74665a9e7ec8adb14214c efa81104025c470daa4805ae6b31db9d b44a9c17858b4313bd6d6d9003bb93ab--efa81104025c470daa4805ae6b31db9d e247b7b92f5446468963fdf9fb88ba59 RX(iia_γ₀₁) efa81104025c470daa4805ae6b31db9d--e247b7b92f5446468963fdf9fb88ba59 0ce55d2d9b9947ceb2bc3480fd01f7c8 e247b7b92f5446468963fdf9fb88ba59--0ce55d2d9b9947ceb2bc3480fd01f7c8 27bf3cf6671a4eb0aae737af9ac8a604 X 0ce55d2d9b9947ceb2bc3480fd01f7c8--27bf3cf6671a4eb0aae737af9ac8a604 27bf3cf6671a4eb0aae737af9ac8a604--ed0d8cc1426e469ebb4b830e28bbd96b 6d8b94b9a57b4707b2954932de8024f0 RY(iia_β₀₄) 27bf3cf6671a4eb0aae737af9ac8a604--6d8b94b9a57b4707b2954932de8024f0 fbd373dab863408ab38d168aaaa5b476 RX(iia_β₀₁) 6d8b94b9a57b4707b2954932de8024f0--fbd373dab863408ab38d168aaaa5b476 b9b914fefe714b459999860769ec1aba RX(iia_α₁₁) fbd373dab863408ab38d168aaaa5b476--b9b914fefe714b459999860769ec1aba 3927a10a32404fe2b8fe8a0a4acc45e0 RY(iia_α₁₄) b9b914fefe714b459999860769ec1aba--3927a10a32404fe2b8fe8a0a4acc45e0 18bb4cf90a234fb482cef67752cb72c2 X 3927a10a32404fe2b8fe8a0a4acc45e0--18bb4cf90a234fb482cef67752cb72c2 18bb4cf90a234fb482cef67752cb72c2--d8ec5de036eb48949259da7242f814ea 25f1a6f1e5cc43ea99bb563396d6e501 18bb4cf90a234fb482cef67752cb72c2--25f1a6f1e5cc43ea99bb563396d6e501 253ccb9d09d94052b9cc09b7c98094f9 RX(iia_γ₁₁) 25f1a6f1e5cc43ea99bb563396d6e501--253ccb9d09d94052b9cc09b7c98094f9 6c7e596cf40742aeb9af7d861da2a3b2 253ccb9d09d94052b9cc09b7c98094f9--6c7e596cf40742aeb9af7d861da2a3b2 9269d738b7844d53b6e67abd9ac54e02 X 6c7e596cf40742aeb9af7d861da2a3b2--9269d738b7844d53b6e67abd9ac54e02 9269d738b7844d53b6e67abd9ac54e02--4c6decc5aef442daa5f6fcff58d3c0cd b7dde63744244899b90b8f75b714d6ec RY(iia_β₁₄) 9269d738b7844d53b6e67abd9ac54e02--b7dde63744244899b90b8f75b714d6ec c0891f5f071b4620a50e0c1a84d1b551 RX(iia_β₁₁) b7dde63744244899b90b8f75b714d6ec--c0891f5f071b4620a50e0c1a84d1b551 c0891f5f071b4620a50e0c1a84d1b551--f12abf4c7ac34d158dd92dc77d2e7319 842cbe589c234464a129d1559c7b4dd4 0eba66ef9ece475fa3b3c05e67adff33 RX(iia_α₀₂) 80d3a4168d1a4db58b26146097f43c0f--0eba66ef9ece475fa3b3c05e67adff33 6bb123f22051480da957e78246b7d1a1 RY(iia_α₀₅) 0eba66ef9ece475fa3b3c05e67adff33--6bb123f22051480da957e78246b7d1a1 3348aa001c5d4841b1d141b7a22bb311 6bb123f22051480da957e78246b7d1a1--3348aa001c5d4841b1d141b7a22bb311 b50240e5d5dd4330a5d6c83247a3cb12 X 3348aa001c5d4841b1d141b7a22bb311--b50240e5d5dd4330a5d6c83247a3cb12 b50240e5d5dd4330a5d6c83247a3cb12--efa81104025c470daa4805ae6b31db9d 9bcb353a065d4afe802966d81f08a869 RX(iia_γ₀₂) b50240e5d5dd4330a5d6c83247a3cb12--9bcb353a065d4afe802966d81f08a869 46308f56d82540f69af38372d2f84ebd X 9bcb353a065d4afe802966d81f08a869--46308f56d82540f69af38372d2f84ebd 46308f56d82540f69af38372d2f84ebd--0ce55d2d9b9947ceb2bc3480fd01f7c8 952fffc2e2a14a47b451ffe01e2ba6dc 46308f56d82540f69af38372d2f84ebd--952fffc2e2a14a47b451ffe01e2ba6dc 72d4599c908144679c4c6b332d4cbefc RY(iia_β₀₅) 952fffc2e2a14a47b451ffe01e2ba6dc--72d4599c908144679c4c6b332d4cbefc a43fb92f33ea42d1a8573b347726a2a4 RX(iia_β₀₂) 72d4599c908144679c4c6b332d4cbefc--a43fb92f33ea42d1a8573b347726a2a4 300fc16b69614427bcb9d3e545021abe RX(iia_α₁₂) a43fb92f33ea42d1a8573b347726a2a4--300fc16b69614427bcb9d3e545021abe 9438dfac0b4d484699032c83b0356280 RY(iia_α₁₅) 300fc16b69614427bcb9d3e545021abe--9438dfac0b4d484699032c83b0356280 d79b57ef2df043fba21e47cae78d2627 9438dfac0b4d484699032c83b0356280--d79b57ef2df043fba21e47cae78d2627 25d6a170eaee4bffbe880ea984583685 X d79b57ef2df043fba21e47cae78d2627--25d6a170eaee4bffbe880ea984583685 25d6a170eaee4bffbe880ea984583685--25f1a6f1e5cc43ea99bb563396d6e501 8917af56434749d6adfa925a9ebfb418 RX(iia_γ₁₂) 25d6a170eaee4bffbe880ea984583685--8917af56434749d6adfa925a9ebfb418 a161b667f686414fb002e25b707ad63b X 8917af56434749d6adfa925a9ebfb418--a161b667f686414fb002e25b707ad63b a161b667f686414fb002e25b707ad63b--6c7e596cf40742aeb9af7d861da2a3b2 b264bf05cc1c424f9ec5483fbfe2ef67 a161b667f686414fb002e25b707ad63b--b264bf05cc1c424f9ec5483fbfe2ef67 1b5a55816f4942779de406f9d7a52805 RY(iia_β₁₅) b264bf05cc1c424f9ec5483fbfe2ef67--1b5a55816f4942779de406f9d7a52805 71eadf55fd834911afa80ade2b0b5f84 RX(iia_β₁₂) 1b5a55816f4942779de406f9d7a52805--71eadf55fd834911afa80ade2b0b5f84 71eadf55fd834911afa80ade2b0b5f84--842cbe589c234464a129d1559c7b4dd4