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_1637d3e2e5544ac69c648f701568807b Constant Chebyshev FM cluster_b60e0f215d284570876542d8e8150f89 Constant Fourier FM 71f18f3500fe4c3693fd92a395a535a1 0 00a67d9ff6a14a0da32ec5eac0d9b5dd RX(phi) 71f18f3500fe4c3693fd92a395a535a1--00a67d9ff6a14a0da32ec5eac0d9b5dd a677dfca7c7d4665817b39e2497d8396 1 f0d783576da143efab9db8c3d7516cce RX(acos(phi)) 00a67d9ff6a14a0da32ec5eac0d9b5dd--f0d783576da143efab9db8c3d7516cce 802111f6a6994b6aa79ec1c732a6ae1d f0d783576da143efab9db8c3d7516cce--802111f6a6994b6aa79ec1c732a6ae1d df054c398235415fa853d11578596dae 822a946f21984277b5f0616f4549af3e RX(phi) a677dfca7c7d4665817b39e2497d8396--822a946f21984277b5f0616f4549af3e a2907f2cf0534723a7d3f861a5ca7391 2 65cc78f674634b788d40f399b35b2431 RX(acos(phi)) 822a946f21984277b5f0616f4549af3e--65cc78f674634b788d40f399b35b2431 65cc78f674634b788d40f399b35b2431--df054c398235415fa853d11578596dae 6c4c4168d94249208359c8c3ed3f1f05 61f8ed8c9a7b4283a8648a0dcd6fa388 RX(phi) a2907f2cf0534723a7d3f861a5ca7391--61f8ed8c9a7b4283a8648a0dcd6fa388 53cfdfa8f5df48449fe856153b88e7e8 RX(acos(phi)) 61f8ed8c9a7b4283a8648a0dcd6fa388--53cfdfa8f5df48449fe856153b88e7e8 53cfdfa8f5df48449fe856153b88e7e8--6c4c4168d94249208359c8c3ed3f1f05

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_e8ac70bd1b694cd18947d85621473d97 Constant <function custom_fn at 0x7f35a8e0c4c0> FM cluster_a30691f5f94e421cbf43d588e3958ca7 Constant asin FM fb33f168b4494485a288c9895d8217ff 0 bf8f1f0e04bf415090448d9ebb5725e0 RX(asin(phi)) fb33f168b4494485a288c9895d8217ff--bf8f1f0e04bf415090448d9ebb5725e0 c4968fc2bc0a40c790a5d982832724dc 1 97c3e73c40ab4d9887df10d00205eb07 RX(phi**2 + asin(phi)) bf8f1f0e04bf415090448d9ebb5725e0--97c3e73c40ab4d9887df10d00205eb07 c6030d2aa633430f9d70e22661a05f86 97c3e73c40ab4d9887df10d00205eb07--c6030d2aa633430f9d70e22661a05f86 e2f8002c24084c03b5906c14e39321a5 22a7198e4e874a11a4691f40f5d8343b RX(asin(phi)) c4968fc2bc0a40c790a5d982832724dc--22a7198e4e874a11a4691f40f5d8343b f169bd9c81fb4aee96b3510bda0cf350 2 d86a5d3debd34110ae2b3d0286e588d2 RX(phi**2 + asin(phi)) 22a7198e4e874a11a4691f40f5d8343b--d86a5d3debd34110ae2b3d0286e588d2 d86a5d3debd34110ae2b3d0286e588d2--e2f8002c24084c03b5906c14e39321a5 9eb286952cc24811af64633ceb90f192 076500754fbe43408a6f9c24be4933c7 RX(asin(phi)) f169bd9c81fb4aee96b3510bda0cf350--076500754fbe43408a6f9c24be4933c7 79de3b0185ff4f5092603b4eed5f8de8 RX(phi**2 + asin(phi)) 076500754fbe43408a6f9c24be4933c7--79de3b0185ff4f5092603b4eed5f8de8 79de3b0185ff4f5092603b4eed5f8de8--9eb286952cc24811af64633ceb90f192

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_c028da7cc88c47969002931975f6e259 Exponential Fourier FM cluster_0f891a064f2344f3886061acad7808d6 Constant Fourier FM cluster_394fa682fb024569bb522771e8392e7b Tower Fourier FM 7beded06d4204deeb631ded26469c1a2 0 65522487503042f294504a9ced728cd8 RX(phi) 7beded06d4204deeb631ded26469c1a2--65522487503042f294504a9ced728cd8 787cc1dcd4c94d7bb43f8dcecefba2d6 1 07cd362afea2425facdf779ddd644574 RX(1.0*phi) 65522487503042f294504a9ced728cd8--07cd362afea2425facdf779ddd644574 400ccf73347444ef862efc6a24998812 RX(1.0*phi) 07cd362afea2425facdf779ddd644574--400ccf73347444ef862efc6a24998812 e0c2054566af4dada3f049f0fe635e3c 400ccf73347444ef862efc6a24998812--e0c2054566af4dada3f049f0fe635e3c 0b7fcd25b91d4813a30ca50a3decc84b 605fc731e5684a5a97c5e4abf16ebd4b RX(phi) 787cc1dcd4c94d7bb43f8dcecefba2d6--605fc731e5684a5a97c5e4abf16ebd4b 398d8a1bfd61458f889286cc7e63e868 2 bb956fab264c4cc5a1c0d95c081c3686 RX(2.0*phi) 605fc731e5684a5a97c5e4abf16ebd4b--bb956fab264c4cc5a1c0d95c081c3686 a329d375ea1347aeb706345235e7750f RX(2.0*phi) bb956fab264c4cc5a1c0d95c081c3686--a329d375ea1347aeb706345235e7750f a329d375ea1347aeb706345235e7750f--0b7fcd25b91d4813a30ca50a3decc84b e6f6b4ef95604d838e501a4d80762729 1059cef0ea3c4bc9b6bc4377668546cd RX(phi) 398d8a1bfd61458f889286cc7e63e868--1059cef0ea3c4bc9b6bc4377668546cd 99a845762faa4fe8b2b2929473559962 3 52ad34876ff4472eaa7ed028d135133c RX(3.0*phi) 1059cef0ea3c4bc9b6bc4377668546cd--52ad34876ff4472eaa7ed028d135133c c4a5a687f646424baee45449993ed8aa RX(4.0*phi) 52ad34876ff4472eaa7ed028d135133c--c4a5a687f646424baee45449993ed8aa c4a5a687f646424baee45449993ed8aa--e6f6b4ef95604d838e501a4d80762729 0800f6707acd4d02a439716524d79076 07f41f79535c419cb189b91c4f19f728 RX(phi) 99a845762faa4fe8b2b2929473559962--07f41f79535c419cb189b91c4f19f728 61b6b750a5014c4f80914bffcd244b77 4 6cc7bbe7980842c59501e2e001c3115b RX(4.0*phi) 07f41f79535c419cb189b91c4f19f728--6cc7bbe7980842c59501e2e001c3115b f48686c03a2c4fabb77ba6008a1198ad RX(8.0*phi) 6cc7bbe7980842c59501e2e001c3115b--f48686c03a2c4fabb77ba6008a1198ad f48686c03a2c4fabb77ba6008a1198ad--0800f6707acd4d02a439716524d79076 e395c1cd1648459fb5b04a50692e1d59 75c1ace794be4712872c94e9f133eb43 RX(phi) 61b6b750a5014c4f80914bffcd244b77--75c1ace794be4712872c94e9f133eb43 5ca15962f40a42eebbb86a97476ba096 RX(5.0*phi) 75c1ace794be4712872c94e9f133eb43--5ca15962f40a42eebbb86a97476ba096 7996751678d443878fe09b2bce93261f RX(16.0*phi) 5ca15962f40a42eebbb86a97476ba096--7996751678d443878fe09b2bce93261f 7996751678d443878fe09b2bce93261f--e395c1cd1648459fb5b04a50692e1d59

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 6653eac1b018497da485da862f68e3f6 0 58b29fbc942543c0a3febe47ca9553cf RX(1.0*acos(phi)) 6653eac1b018497da485da862f68e3f6--58b29fbc942543c0a3febe47ca9553cf 24dbfd248d264c4da182cd044d0aa3b7 1 fba41a37c759433bbc999439a228d81c 58b29fbc942543c0a3febe47ca9553cf--fba41a37c759433bbc999439a228d81c 31a30cc3f4434c77ad7cc57b97c4213a 9376723d160b4863a5edc7820de20170 RX(1.414*acos(phi)) 24dbfd248d264c4da182cd044d0aa3b7--9376723d160b4863a5edc7820de20170 bae02b7abe4d40c4b23cbf2371c4a472 2 9376723d160b4863a5edc7820de20170--31a30cc3f4434c77ad7cc57b97c4213a 82be16d198044bd1963b6b9c7fac1d5a 5743586ec92e459c9384326171338636 RX(1.732*acos(phi)) bae02b7abe4d40c4b23cbf2371c4a472--5743586ec92e459c9384326171338636 d7fcbaca0ee94ac5b907bfb527adf5c1 3 5743586ec92e459c9384326171338636--82be16d198044bd1963b6b9c7fac1d5a 59e5e606ee2a4802b3aabde75346f0f6 a373794ef60c4a48ac1b3ef7fba48179 RX(2.0*acos(phi)) d7fcbaca0ee94ac5b907bfb527adf5c1--a373794ef60c4a48ac1b3ef7fba48179 ed639773db81402d8110f15a763d2002 4 a373794ef60c4a48ac1b3ef7fba48179--59e5e606ee2a4802b3aabde75346f0f6 2fa65c2c098d4eef82b90bf6f81fe179 4e240522ccf8462aaaa97d69d6e93d1d RX(2.236*acos(phi)) ed639773db81402d8110f15a763d2002--4e240522ccf8462aaaa97d69d6e93d1d 4e240522ccf8462aaaa97d69d6e93d1d--2fa65c2c098d4eef82b90bf6f81fe179

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 b30525562564428bad621c7433f48beb 0 2b03dd43e78846be85072de9cc3b3c72 RX(1.0*phi*w₀) b30525562564428bad621c7433f48beb--2b03dd43e78846be85072de9cc3b3c72 4e7f919dd2ad42ac8e51ef6a94a0c2af 1 3ff08154e3854c15b2c496ef37c04b84 2b03dd43e78846be85072de9cc3b3c72--3ff08154e3854c15b2c496ef37c04b84 21a26c9453c24bbf9f627bdc3d38eeea 89b546a72ef146dcb1761feee25607ca RX(2.0*phi*w₁) 4e7f919dd2ad42ac8e51ef6a94a0c2af--89b546a72ef146dcb1761feee25607ca 5a9050cba8e34a81971eb43d54e7758f 2 89b546a72ef146dcb1761feee25607ca--21a26c9453c24bbf9f627bdc3d38eeea ee554ecc220f48b9be0bb23964f685d3 5855a2e7e6c84ecca6f0937dd153da9a RX(4.0*phi*w₂) 5a9050cba8e34a81971eb43d54e7758f--5855a2e7e6c84ecca6f0937dd153da9a f1679976e3764fad8f2ee10b6d0efcb7 3 5855a2e7e6c84ecca6f0937dd153da9a--ee554ecc220f48b9be0bb23964f685d3 1a98b51e425848a1b3b7675a5a3a4b30 5725cd570c5f4369aab132a0ec985bcd RX(8.0*phi*w₃) f1679976e3764fad8f2ee10b6d0efcb7--5725cd570c5f4369aab132a0ec985bcd eb0414929a0943658bc3ce049b91daee 4 5725cd570c5f4369aab132a0ec985bcd--1a98b51e425848a1b3b7675a5a3a4b30 0448be77dede4c02b7d1685b6ca95ee4 84a767f7937c448a80a008b917ba9a30 RX(16.0*phi*w₄) eb0414929a0943658bc3ce049b91daee--84a767f7937c448a80a008b917ba9a30 84a767f7937c448a80a008b917ba9a30--0448be77dede4c02b7d1685b6ca95ee4

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 b57456fec862412996ea3b88d5e2e1b0 0 ab5e28dd227d432a9c5508f99b9c6eba RY(80.0*acos(w₄*(0.667*x + 1.667))) b57456fec862412996ea3b88d5e2e1b0--ab5e28dd227d432a9c5508f99b9c6eba 4d6ed3dd1bde49ae9c201837bfd4918a 1 92c5775bebef4e13b5ffec80edc42ee4 ab5e28dd227d432a9c5508f99b9c6eba--92c5775bebef4e13b5ffec80edc42ee4 7a540018db304646835d136dbf43ba68 855003529d0a41bfaa56cd0eef9557da RY(40.0*acos(w₃*(0.667*x + 1.667))) 4d6ed3dd1bde49ae9c201837bfd4918a--855003529d0a41bfaa56cd0eef9557da 54556c6f8cc740e6b355f6944465beb8 2 855003529d0a41bfaa56cd0eef9557da--7a540018db304646835d136dbf43ba68 ce181202b21a405fb815f5fc5522855f 44aab1cd7f044cb4bc3bfdc30f03cde9 RY(20.0*acos(w₂*(0.667*x + 1.667))) 54556c6f8cc740e6b355f6944465beb8--44aab1cd7f044cb4bc3bfdc30f03cde9 f29b23222222468f89bdb1395d7c0413 3 44aab1cd7f044cb4bc3bfdc30f03cde9--ce181202b21a405fb815f5fc5522855f 9685f9aa8bf443ffacc7702d12f5fcb2 868488801bf1407a97f2b32ce1acfc40 RY(10.0*acos(w₁*(0.667*x + 1.667))) f29b23222222468f89bdb1395d7c0413--868488801bf1407a97f2b32ce1acfc40 caf22ef742144e0bac1d97310a952b17 4 868488801bf1407a97f2b32ce1acfc40--9685f9aa8bf443ffacc7702d12f5fcb2 901edc7dce91462fbc1cb43ab5af318b 62abf369d5cf4b03bda9391a87e38406 RY(5.0*acos(w₀*(0.667*x + 1.667))) caf22ef742144e0bac1d97310a952b17--62abf369d5cf4b03bda9391a87e38406 62abf369d5cf4b03bda9391a87e38406--901edc7dce91462fbc1cb43ab5af318b

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 cbdcfee87bde4951a2866e0e34e0284a 0 0f4458d52ac44eef852c8e48ec7be169 RX(theta₀) cbdcfee87bde4951a2866e0e34e0284a--0f4458d52ac44eef852c8e48ec7be169 dc0988f6f0f7468cafccf09cf0875d8b 1 d66a929b4c1c48a1ade8d9d9fac5a287 RY(theta₃) 0f4458d52ac44eef852c8e48ec7be169--d66a929b4c1c48a1ade8d9d9fac5a287 d277decc08af4fe0819e15d2926fc776 RX(theta₆) d66a929b4c1c48a1ade8d9d9fac5a287--d277decc08af4fe0819e15d2926fc776 9d081c0191634aa6b849be08e174ed69 d277decc08af4fe0819e15d2926fc776--9d081c0191634aa6b849be08e174ed69 1bab6047cbce4d8997436a2553423cbc 9d081c0191634aa6b849be08e174ed69--1bab6047cbce4d8997436a2553423cbc 2fc13d34a18341e0a3bcba12280dc016 RX(theta₉) 1bab6047cbce4d8997436a2553423cbc--2fc13d34a18341e0a3bcba12280dc016 e283c9e4c4ea4807a5b3c53da38912dc RY(theta₁₂) 2fc13d34a18341e0a3bcba12280dc016--e283c9e4c4ea4807a5b3c53da38912dc d979e3446ec445f0908b257ed0b1bb91 RX(theta₁₅) e283c9e4c4ea4807a5b3c53da38912dc--d979e3446ec445f0908b257ed0b1bb91 a788bb49331f40a7b8825977a52f8823 d979e3446ec445f0908b257ed0b1bb91--a788bb49331f40a7b8825977a52f8823 431a883bd36e4e7484d941eada24f646 a788bb49331f40a7b8825977a52f8823--431a883bd36e4e7484d941eada24f646 a0a7fbd9b9924fcfa71843ef7f3e2a65 431a883bd36e4e7484d941eada24f646--a0a7fbd9b9924fcfa71843ef7f3e2a65 e3f3aa7607ec43b9acf4d8188f4c6efe 117231781e4049c9a22da261aebb0a0c RX(theta₁) dc0988f6f0f7468cafccf09cf0875d8b--117231781e4049c9a22da261aebb0a0c be422feecdf34484807d0b1a4a4c8bfa 2 971a2f04be664689a626c82583f8c6f5 RY(theta₄) 117231781e4049c9a22da261aebb0a0c--971a2f04be664689a626c82583f8c6f5 79babe269dc348e9b6b23b6bf5d5ce8c RX(theta₇) 971a2f04be664689a626c82583f8c6f5--79babe269dc348e9b6b23b6bf5d5ce8c 57ca76242ca94c37ab9f98f600d89b60 X 79babe269dc348e9b6b23b6bf5d5ce8c--57ca76242ca94c37ab9f98f600d89b60 57ca76242ca94c37ab9f98f600d89b60--9d081c0191634aa6b849be08e174ed69 bc856b0ffb2043ea8cf25d06a0f6b8a6 57ca76242ca94c37ab9f98f600d89b60--bc856b0ffb2043ea8cf25d06a0f6b8a6 184e27f61ff4478f9a63a5cead7322cb RX(theta₁₀) bc856b0ffb2043ea8cf25d06a0f6b8a6--184e27f61ff4478f9a63a5cead7322cb a7697fdeff9c468bac6061b534f4e3ba RY(theta₁₃) 184e27f61ff4478f9a63a5cead7322cb--a7697fdeff9c468bac6061b534f4e3ba 822dc8d48426444b97544cf099bc83c1 RX(theta₁₆) a7697fdeff9c468bac6061b534f4e3ba--822dc8d48426444b97544cf099bc83c1 bfec4401c0d24ab99d5752d404d6732b X 822dc8d48426444b97544cf099bc83c1--bfec4401c0d24ab99d5752d404d6732b bfec4401c0d24ab99d5752d404d6732b--a788bb49331f40a7b8825977a52f8823 a68a7222259b440fab11b09479f6e354 bfec4401c0d24ab99d5752d404d6732b--a68a7222259b440fab11b09479f6e354 a68a7222259b440fab11b09479f6e354--e3f3aa7607ec43b9acf4d8188f4c6efe f6f1707ebd7c4a87947ad02cee9b5f84 4d6d0b8443034a438cc20e426e7ea30d RX(theta₂) be422feecdf34484807d0b1a4a4c8bfa--4d6d0b8443034a438cc20e426e7ea30d f6bce6b8657344f5a6208e79d163acdb RY(theta₅) 4d6d0b8443034a438cc20e426e7ea30d--f6bce6b8657344f5a6208e79d163acdb 52244f3ebd674b08a6f47e98fa30abb2 RX(theta₈) f6bce6b8657344f5a6208e79d163acdb--52244f3ebd674b08a6f47e98fa30abb2 6223e6c3f5f94650ad7e52726110f27b 52244f3ebd674b08a6f47e98fa30abb2--6223e6c3f5f94650ad7e52726110f27b 538708629f6d475c83caab62c862a4ba X 6223e6c3f5f94650ad7e52726110f27b--538708629f6d475c83caab62c862a4ba 538708629f6d475c83caab62c862a4ba--bc856b0ffb2043ea8cf25d06a0f6b8a6 bc63910f344247e1a2e4eb91d73cec24 RX(theta₁₁) 538708629f6d475c83caab62c862a4ba--bc63910f344247e1a2e4eb91d73cec24 9ff963ed5fc44f68ba5da8c13f411954 RY(theta₁₄) bc63910f344247e1a2e4eb91d73cec24--9ff963ed5fc44f68ba5da8c13f411954 f741240c0fe54a338424b4fae8cfae8a RX(theta₁₇) 9ff963ed5fc44f68ba5da8c13f411954--f741240c0fe54a338424b4fae8cfae8a cbe7ff3006734204baa017422c5f17b4 f741240c0fe54a338424b4fae8cfae8a--cbe7ff3006734204baa017422c5f17b4 2383aeff33ce4de4af9842e2c8ad7443 X cbe7ff3006734204baa017422c5f17b4--2383aeff33ce4de4af9842e2c8ad7443 2383aeff33ce4de4af9842e2c8ad7443--a68a7222259b440fab11b09479f6e354 2383aeff33ce4de4af9842e2c8ad7443--f6f1707ebd7c4a87947ad02cee9b5f84

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 35b7866e53aa4820978dec2f19fc5655 0 05c422b327754688ba5140d3a9159c87 RX(phi₀) 35b7866e53aa4820978dec2f19fc5655--05c422b327754688ba5140d3a9159c87 ed434a28b6fb45ff9ddce24f45148482 1 f6ccd14b50154179847ce6eec498144d RY(phi₃) 05c422b327754688ba5140d3a9159c87--f6ccd14b50154179847ce6eec498144d b0d33f3319da4e10ac2852ae7bbf6eb1 RX(phi₆) f6ccd14b50154179847ce6eec498144d--b0d33f3319da4e10ac2852ae7bbf6eb1 7da095bb8af743fe8cd0dfcc97382096 b0d33f3319da4e10ac2852ae7bbf6eb1--7da095bb8af743fe8cd0dfcc97382096 382790d9981048bdb3e9ad126d61141e 7da095bb8af743fe8cd0dfcc97382096--382790d9981048bdb3e9ad126d61141e 710496185ad44a60ba526b21476d6a0a RX(phi₉) 382790d9981048bdb3e9ad126d61141e--710496185ad44a60ba526b21476d6a0a 6fea4f5d320540858a4cb7394544e250 RY(phi₁₂) 710496185ad44a60ba526b21476d6a0a--6fea4f5d320540858a4cb7394544e250 8428f6231de44b1b9b5a87f6a006f846 RX(phi₁₅) 6fea4f5d320540858a4cb7394544e250--8428f6231de44b1b9b5a87f6a006f846 0bc43176a0164f3fadd632292f6b1961 8428f6231de44b1b9b5a87f6a006f846--0bc43176a0164f3fadd632292f6b1961 7301930d7dab40548a5287a6b9929997 0bc43176a0164f3fadd632292f6b1961--7301930d7dab40548a5287a6b9929997 9548dc3e37834302b8f692adbfcadae1 7301930d7dab40548a5287a6b9929997--9548dc3e37834302b8f692adbfcadae1 3ad19dd6f89249a6aef6571138eea931 fe6543f7bab04d6486c51b1f8e55b562 RX(phi₁) ed434a28b6fb45ff9ddce24f45148482--fe6543f7bab04d6486c51b1f8e55b562 dd115d529ec94172adb02a1f969779b2 2 3ca072a18ea14f2fba12014e2d05ceec RY(phi₄) fe6543f7bab04d6486c51b1f8e55b562--3ca072a18ea14f2fba12014e2d05ceec b19a751551ac4f6c812c29e48cdadef4 RX(phi₇) 3ca072a18ea14f2fba12014e2d05ceec--b19a751551ac4f6c812c29e48cdadef4 e134385d452c40188e5a7fbbfd9656a5 PHASE(phi_ent₀) b19a751551ac4f6c812c29e48cdadef4--e134385d452c40188e5a7fbbfd9656a5 e134385d452c40188e5a7fbbfd9656a5--7da095bb8af743fe8cd0dfcc97382096 23b49f7914484d99bdb142b3c1306b9a e134385d452c40188e5a7fbbfd9656a5--23b49f7914484d99bdb142b3c1306b9a 3e6a99b3191745d59c80a7d4cb12d8c0 RX(phi₁₀) 23b49f7914484d99bdb142b3c1306b9a--3e6a99b3191745d59c80a7d4cb12d8c0 4018a32d138e47bc8170ea91083e015b RY(phi₁₃) 3e6a99b3191745d59c80a7d4cb12d8c0--4018a32d138e47bc8170ea91083e015b 47148a6ea49e49ccaa6c50a04eabd893 RX(phi₁₆) 4018a32d138e47bc8170ea91083e015b--47148a6ea49e49ccaa6c50a04eabd893 a2dbbf2c56e94f31bd0f99754e485716 PHASE(phi_ent₂) 47148a6ea49e49ccaa6c50a04eabd893--a2dbbf2c56e94f31bd0f99754e485716 a2dbbf2c56e94f31bd0f99754e485716--0bc43176a0164f3fadd632292f6b1961 3921d7fb5a4343e18fa956fc066a98da a2dbbf2c56e94f31bd0f99754e485716--3921d7fb5a4343e18fa956fc066a98da 3921d7fb5a4343e18fa956fc066a98da--3ad19dd6f89249a6aef6571138eea931 203185dbfa304554ba611877c02b3d76 205be3f8509343a682ed91bf23ec6d51 RX(phi₂) dd115d529ec94172adb02a1f969779b2--205be3f8509343a682ed91bf23ec6d51 0aeb292984e04916a55f7c7ebc27f34e RY(phi₅) 205be3f8509343a682ed91bf23ec6d51--0aeb292984e04916a55f7c7ebc27f34e 992fdb8ff63841a88337cd599c39237a RX(phi₈) 0aeb292984e04916a55f7c7ebc27f34e--992fdb8ff63841a88337cd599c39237a 15f0d7f210d24dd3a2f39ac84914c7e0 992fdb8ff63841a88337cd599c39237a--15f0d7f210d24dd3a2f39ac84914c7e0 1252ec185203482798d1e786272834c6 PHASE(phi_ent₁) 15f0d7f210d24dd3a2f39ac84914c7e0--1252ec185203482798d1e786272834c6 1252ec185203482798d1e786272834c6--23b49f7914484d99bdb142b3c1306b9a 676266fecbac4ba699e39f4a7256cf6d RX(phi₁₁) 1252ec185203482798d1e786272834c6--676266fecbac4ba699e39f4a7256cf6d ed37388981ac4734af50a47029bb18be RY(phi₁₄) 676266fecbac4ba699e39f4a7256cf6d--ed37388981ac4734af50a47029bb18be a861f1237ed046d4aeb28ba1e17482c2 RX(phi₁₇) ed37388981ac4734af50a47029bb18be--a861f1237ed046d4aeb28ba1e17482c2 36f496162d44413eb93eeccee37ca016 a861f1237ed046d4aeb28ba1e17482c2--36f496162d44413eb93eeccee37ca016 96ea845df02f4aa08903ed7b512627cb PHASE(phi_ent₃) 36f496162d44413eb93eeccee37ca016--96ea845df02f4aa08903ed7b512627cb 96ea845df02f4aa08903ed7b512627cb--3921d7fb5a4343e18fa956fc066a98da 96ea845df02f4aa08903ed7b512627cb--203185dbfa304554ba611877c02b3d76

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_baf907e4e2b643a4b4f10175da9b166f cluster_ec541257da0c46d28bc657dcbde69080 72551b4234284ba0aec63096a0a62d23 0 95a96c85dedc444aab7d4f3f3bfae061 RX(theta₀) 72551b4234284ba0aec63096a0a62d23--95a96c85dedc444aab7d4f3f3bfae061 d473f1e7bb9646a8979c5f38178c0acb 1 daa2348be7f9409794f837ecf9be2576 RY(theta₃) 95a96c85dedc444aab7d4f3f3bfae061--daa2348be7f9409794f837ecf9be2576 ce9c4b6e1f5e4dbfbfdf23ae3d7934f2 RX(theta₆) daa2348be7f9409794f837ecf9be2576--ce9c4b6e1f5e4dbfbfdf23ae3d7934f2 7fb307cafa4447919cdb92d1e92314e7 HamEvo ce9c4b6e1f5e4dbfbfdf23ae3d7934f2--7fb307cafa4447919cdb92d1e92314e7 c768cff8001b4497871a04d2d3df4c33 RX(theta₉) 7fb307cafa4447919cdb92d1e92314e7--c768cff8001b4497871a04d2d3df4c33 f1907a69f6264a15941f49d9a21edf50 RY(theta₁₂) c768cff8001b4497871a04d2d3df4c33--f1907a69f6264a15941f49d9a21edf50 b18b375fdd224277be6288d4c64df30a RX(theta₁₅) f1907a69f6264a15941f49d9a21edf50--b18b375fdd224277be6288d4c64df30a 65397422e60c4c70a0de33f25aadca2d HamEvo b18b375fdd224277be6288d4c64df30a--65397422e60c4c70a0de33f25aadca2d 05de1473057b4f48a47304ef4c7b17ce 65397422e60c4c70a0de33f25aadca2d--05de1473057b4f48a47304ef4c7b17ce dc80702e47494c78a08384d15a09895a 221ae89d0f44481386b74c7745285c16 RX(theta₁) d473f1e7bb9646a8979c5f38178c0acb--221ae89d0f44481386b74c7745285c16 59e23c997acb455dabf9661a0ad2036a 2 45951450341f4576ab0ae16f828169a6 RY(theta₄) 221ae89d0f44481386b74c7745285c16--45951450341f4576ab0ae16f828169a6 792804dbd07f470a8a8a76960df4e99a RX(theta₇) 45951450341f4576ab0ae16f828169a6--792804dbd07f470a8a8a76960df4e99a 34a8aeedb6cc4573833d89739eab8b25 t = theta_t₀ 792804dbd07f470a8a8a76960df4e99a--34a8aeedb6cc4573833d89739eab8b25 9ad34c5a5f3d4cc7bfdaea05230596d5 RX(theta₁₀) 34a8aeedb6cc4573833d89739eab8b25--9ad34c5a5f3d4cc7bfdaea05230596d5 4f347aef6b06452aae5a0abbdb36188a RY(theta₁₃) 9ad34c5a5f3d4cc7bfdaea05230596d5--4f347aef6b06452aae5a0abbdb36188a 53232b99a1d34bd1aed1e06d3583aab4 RX(theta₁₆) 4f347aef6b06452aae5a0abbdb36188a--53232b99a1d34bd1aed1e06d3583aab4 f27e6a5b0a714b9096757d4cc049431a t = theta_t₁ 53232b99a1d34bd1aed1e06d3583aab4--f27e6a5b0a714b9096757d4cc049431a f27e6a5b0a714b9096757d4cc049431a--dc80702e47494c78a08384d15a09895a e172c7361f1b4c23b984a731c378ea30 3705ddd694a246919bc51db3068508a6 RX(theta₂) 59e23c997acb455dabf9661a0ad2036a--3705ddd694a246919bc51db3068508a6 59ae36074cd549a885e9bc0530eba525 RY(theta₅) 3705ddd694a246919bc51db3068508a6--59ae36074cd549a885e9bc0530eba525 c825b646795b4c92bb81fb0e91cb7ce4 RX(theta₈) 59ae36074cd549a885e9bc0530eba525--c825b646795b4c92bb81fb0e91cb7ce4 980b62a81a32413bb6d3577f364f5725 c825b646795b4c92bb81fb0e91cb7ce4--980b62a81a32413bb6d3577f364f5725 34d5776f82f749538964b89daa3a51c6 RX(theta₁₁) 980b62a81a32413bb6d3577f364f5725--34d5776f82f749538964b89daa3a51c6 6870f0cabe9e445eb8d3df10dd9dcb34 RY(theta₁₄) 34d5776f82f749538964b89daa3a51c6--6870f0cabe9e445eb8d3df10dd9dcb34 38522abd2b7b4dba840cced627709970 RX(theta₁₇) 6870f0cabe9e445eb8d3df10dd9dcb34--38522abd2b7b4dba840cced627709970 2e4c130197874d69ac9f2f6f4cac5539 38522abd2b7b4dba840cced627709970--2e4c130197874d69ac9f2f6f4cac5539 2e4c130197874d69ac9f2f6f4cac5539--e172c7361f1b4c23b984a731c378ea30

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_9045432f7fbd496aae96bbadb22005d5 cluster_92f9518ca7a14dd89319b269b6e3561f fc07fe27aea9449abc79d49c4f651d5f 0 417595149600401ba76ca2cc449ca80b RX(theta₀) fc07fe27aea9449abc79d49c4f651d5f--417595149600401ba76ca2cc449ca80b 50cb6def98844f6f9f888937a1a58f8f 1 331df59734044198a469129bc45378fd RY(theta₆) 417595149600401ba76ca2cc449ca80b--331df59734044198a469129bc45378fd 83c5f2e3d2844d418fa451b4a89fc37d RX(theta₁₂) 331df59734044198a469129bc45378fd--83c5f2e3d2844d418fa451b4a89fc37d 7049a15b1f7f4905b4123e421cd42cc1 83c5f2e3d2844d418fa451b4a89fc37d--7049a15b1f7f4905b4123e421cd42cc1 037e15d29e184522bc137d7553202f3e RX(theta₁₈) 7049a15b1f7f4905b4123e421cd42cc1--037e15d29e184522bc137d7553202f3e c29991ae6eb242689c82be99fe105dd4 RY(theta₂₄) 037e15d29e184522bc137d7553202f3e--c29991ae6eb242689c82be99fe105dd4 73734442ea074e05b9e0991684f147b2 RX(theta₃₀) c29991ae6eb242689c82be99fe105dd4--73734442ea074e05b9e0991684f147b2 ab5a490a05aa489a840ceab82b186e22 73734442ea074e05b9e0991684f147b2--ab5a490a05aa489a840ceab82b186e22 66199b793406413092aeef9c654a7b42 ab5a490a05aa489a840ceab82b186e22--66199b793406413092aeef9c654a7b42 b508a5569c974c6c8e1309136a413f09 6b82b6f7b65040db935e6d18269a6e1e RX(theta₁) 50cb6def98844f6f9f888937a1a58f8f--6b82b6f7b65040db935e6d18269a6e1e e5807421e4c1492fa3319517b28df458 2 b5de72eb6ddc4d1d807a1549f81b3b47 RY(theta₇) 6b82b6f7b65040db935e6d18269a6e1e--b5de72eb6ddc4d1d807a1549f81b3b47 9e1dc3febea74944b30a19857aadfef8 RX(theta₁₃) b5de72eb6ddc4d1d807a1549f81b3b47--9e1dc3febea74944b30a19857aadfef8 bcd130df31df4f52a6ec82a0f33493db 9e1dc3febea74944b30a19857aadfef8--bcd130df31df4f52a6ec82a0f33493db 2d9fb61ebb184318ab1760138ae29fef RX(theta₁₉) bcd130df31df4f52a6ec82a0f33493db--2d9fb61ebb184318ab1760138ae29fef cce5444874484970bd95c8866c638073 RY(theta₂₅) 2d9fb61ebb184318ab1760138ae29fef--cce5444874484970bd95c8866c638073 767e57dc03e04fef8cf987854f6da9bb RX(theta₃₁) cce5444874484970bd95c8866c638073--767e57dc03e04fef8cf987854f6da9bb b45481b1bb30484796939c3ca03baa1f 767e57dc03e04fef8cf987854f6da9bb--b45481b1bb30484796939c3ca03baa1f b45481b1bb30484796939c3ca03baa1f--b508a5569c974c6c8e1309136a413f09 8cc4531b0f3342f3b516bad3f37a756c 8a3f0391bfc84c0b8315906927fc9080 RX(theta₂) e5807421e4c1492fa3319517b28df458--8a3f0391bfc84c0b8315906927fc9080 a8c0133cf3a14f6bb72958e89a506f78 3 176186e99123413bb3c16c9619884d1b RY(theta₈) 8a3f0391bfc84c0b8315906927fc9080--176186e99123413bb3c16c9619884d1b ca4b5d480662410f9fa611b5bc324cbc RX(theta₁₄) 176186e99123413bb3c16c9619884d1b--ca4b5d480662410f9fa611b5bc324cbc de5e3170f5a745009917fe38f616dc30 HamEvo ca4b5d480662410f9fa611b5bc324cbc--de5e3170f5a745009917fe38f616dc30 ee00ebb0223540999306df75944c8dd7 RX(theta₂₀) de5e3170f5a745009917fe38f616dc30--ee00ebb0223540999306df75944c8dd7 0ba782fa172b43089a198e4004119d67 RY(theta₂₆) ee00ebb0223540999306df75944c8dd7--0ba782fa172b43089a198e4004119d67 14af967cbd5e4e8aaccfe87fab8a72c2 RX(theta₃₂) 0ba782fa172b43089a198e4004119d67--14af967cbd5e4e8aaccfe87fab8a72c2 4cb40e80076441aeb86637db62c94b4f HamEvo 14af967cbd5e4e8aaccfe87fab8a72c2--4cb40e80076441aeb86637db62c94b4f 4cb40e80076441aeb86637db62c94b4f--8cc4531b0f3342f3b516bad3f37a756c 8583c4904cd843b9bb80255a0419c957 372d096a76a449be891c45226e99b43a RX(theta₃) a8c0133cf3a14f6bb72958e89a506f78--372d096a76a449be891c45226e99b43a 4f8dfcca971340fb95472d56b68bf0f0 4 dda09c42127244679ad1af74e84f8f2f RY(theta₉) 372d096a76a449be891c45226e99b43a--dda09c42127244679ad1af74e84f8f2f 518e59490fe640aab13f2ceb9f2fd3ae RX(theta₁₅) dda09c42127244679ad1af74e84f8f2f--518e59490fe640aab13f2ceb9f2fd3ae fd5424695f9940c895cb100b82db720c t = theta_t₀ 518e59490fe640aab13f2ceb9f2fd3ae--fd5424695f9940c895cb100b82db720c 60700d5aca194b278908e7129474e052 RX(theta₂₁) fd5424695f9940c895cb100b82db720c--60700d5aca194b278908e7129474e052 7a9f8c8ee57547579fc494aec4033687 RY(theta₂₇) 60700d5aca194b278908e7129474e052--7a9f8c8ee57547579fc494aec4033687 15201fb226b147758a4673e09e3a9e5b RX(theta₃₃) 7a9f8c8ee57547579fc494aec4033687--15201fb226b147758a4673e09e3a9e5b 0c37298d07b74853828759dc40bc51a9 t = theta_t₁ 15201fb226b147758a4673e09e3a9e5b--0c37298d07b74853828759dc40bc51a9 0c37298d07b74853828759dc40bc51a9--8583c4904cd843b9bb80255a0419c957 81c0b40b559b478193855f2625eaa03e 827a67687bd54fd89212380299403681 RX(theta₄) 4f8dfcca971340fb95472d56b68bf0f0--827a67687bd54fd89212380299403681 88fd039b91ea4c8593ac5376e90b2140 5 b80b7eb8565d4fe78cbefcbb73893945 RY(theta₁₀) 827a67687bd54fd89212380299403681--b80b7eb8565d4fe78cbefcbb73893945 1e85068049f7467eade9465e63de804d RX(theta₁₆) b80b7eb8565d4fe78cbefcbb73893945--1e85068049f7467eade9465e63de804d 1080af083fe6442ab2591c66638bfa3e 1e85068049f7467eade9465e63de804d--1080af083fe6442ab2591c66638bfa3e 46ed8798d5db4fc2ab091d1ed80cf466 RX(theta₂₂) 1080af083fe6442ab2591c66638bfa3e--46ed8798d5db4fc2ab091d1ed80cf466 e98ff88004634208814ae15f075e0141 RY(theta₂₈) 46ed8798d5db4fc2ab091d1ed80cf466--e98ff88004634208814ae15f075e0141 ff40f058fa0f4ce285a64f31df2b9926 RX(theta₃₄) e98ff88004634208814ae15f075e0141--ff40f058fa0f4ce285a64f31df2b9926 465d935de50246edb864b24f688c132b ff40f058fa0f4ce285a64f31df2b9926--465d935de50246edb864b24f688c132b 465d935de50246edb864b24f688c132b--81c0b40b559b478193855f2625eaa03e 2fa14534a58d4d09a999bd4db47b1566 7a243d12b260411fafac30cf1c8c1daa RX(theta₅) 88fd039b91ea4c8593ac5376e90b2140--7a243d12b260411fafac30cf1c8c1daa 86b6a55ce2804a25a0e4606e633dd62e RY(theta₁₁) 7a243d12b260411fafac30cf1c8c1daa--86b6a55ce2804a25a0e4606e633dd62e a846792748ef42e4b6bb4060314f6b19 RX(theta₁₇) 86b6a55ce2804a25a0e4606e633dd62e--a846792748ef42e4b6bb4060314f6b19 627c078c817e44a5bbb8b1c87353e0d9 a846792748ef42e4b6bb4060314f6b19--627c078c817e44a5bbb8b1c87353e0d9 d956c5f8fb2d454998130db5467908b8 RX(theta₂₃) 627c078c817e44a5bbb8b1c87353e0d9--d956c5f8fb2d454998130db5467908b8 ff1699e3eb2348daa6c25a4ac2f3ee24 RY(theta₂₉) d956c5f8fb2d454998130db5467908b8--ff1699e3eb2348daa6c25a4ac2f3ee24 e7bda0df38754003a29eb3999aaec526 RX(theta₃₅) ff1699e3eb2348daa6c25a4ac2f3ee24--e7bda0df38754003a29eb3999aaec526 0553eff44de1405bb1aaeabd76cd3eee e7bda0df38754003a29eb3999aaec526--0553eff44de1405bb1aaeabd76cd3eee 0553eff44de1405bb1aaeabd76cd3eee--2fa14534a58d4d09a999bd4db47b1566

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_6fab4e7388054da791f42a31d8d8f8fa BPMA-1 cluster_c5e489b712bd40c29247660b05252320 BPMA-0 8b843941489243ce9b4d8f91ef104c0b 0 ea921c1717b44befa174edb88c1ef48a RX(iia_α₀₀) 8b843941489243ce9b4d8f91ef104c0b--ea921c1717b44befa174edb88c1ef48a f1da66f4ab2d4e98be90f7070acdc463 1 9368223d12d940c8bb01db4697afa2b4 RY(iia_α₀₃) ea921c1717b44befa174edb88c1ef48a--9368223d12d940c8bb01db4697afa2b4 b6844a2d68ea4c1b9553e19390037060 9368223d12d940c8bb01db4697afa2b4--b6844a2d68ea4c1b9553e19390037060 da71dca01fc04f5e8232402d0392b3f7 b6844a2d68ea4c1b9553e19390037060--da71dca01fc04f5e8232402d0392b3f7 e46c8127359d4c2aa692b95df928e761 RX(iia_γ₀₀) da71dca01fc04f5e8232402d0392b3f7--e46c8127359d4c2aa692b95df928e761 f0edade55bb9431aa425fa750d87c2ca e46c8127359d4c2aa692b95df928e761--f0edade55bb9431aa425fa750d87c2ca bcc0f29b975547e7b0c3514dc38b4671 f0edade55bb9431aa425fa750d87c2ca--bcc0f29b975547e7b0c3514dc38b4671 083fa9c4a2284845a9d111af7c35648a RY(iia_β₀₃) bcc0f29b975547e7b0c3514dc38b4671--083fa9c4a2284845a9d111af7c35648a c8d1b4ca4aac4f24bd83b446967de1f0 RX(iia_β₀₀) 083fa9c4a2284845a9d111af7c35648a--c8d1b4ca4aac4f24bd83b446967de1f0 473ee72ba3b94b759c62f93accbe6507 RX(iia_α₁₀) c8d1b4ca4aac4f24bd83b446967de1f0--473ee72ba3b94b759c62f93accbe6507 15f7f356110a439c9d26ee99f4c9d9ed RY(iia_α₁₃) 473ee72ba3b94b759c62f93accbe6507--15f7f356110a439c9d26ee99f4c9d9ed 28f78be5debe46d38517d4c538f942b5 15f7f356110a439c9d26ee99f4c9d9ed--28f78be5debe46d38517d4c538f942b5 ae6db42671564f4e81a8e72cd1380b4c 28f78be5debe46d38517d4c538f942b5--ae6db42671564f4e81a8e72cd1380b4c 9be876dbdff34ddfb065e8adf96b2db7 RX(iia_γ₁₀) ae6db42671564f4e81a8e72cd1380b4c--9be876dbdff34ddfb065e8adf96b2db7 12e82e458c91416190d3464b7db5e753 9be876dbdff34ddfb065e8adf96b2db7--12e82e458c91416190d3464b7db5e753 4b5967f6549249f786162321ef1f283f 12e82e458c91416190d3464b7db5e753--4b5967f6549249f786162321ef1f283f 79f159b95800431591087427b519dc10 RY(iia_β₁₃) 4b5967f6549249f786162321ef1f283f--79f159b95800431591087427b519dc10 7c40e6adf8f34830814d1f7b711c5775 RX(iia_β₁₀) 79f159b95800431591087427b519dc10--7c40e6adf8f34830814d1f7b711c5775 0cd75d6037ca4662bcdad919cebe1353 7c40e6adf8f34830814d1f7b711c5775--0cd75d6037ca4662bcdad919cebe1353 2e22229e4f44433d92f839d329f81ac5 5df725438ba2454eb63a052f1fca80f1 RX(iia_α₀₁) f1da66f4ab2d4e98be90f7070acdc463--5df725438ba2454eb63a052f1fca80f1 5db220a6bb3541bc93ae0e9dc9627c69 2 72c64aa1bf6c44b9a2e8c644a3d7279d RY(iia_α₀₄) 5df725438ba2454eb63a052f1fca80f1--72c64aa1bf6c44b9a2e8c644a3d7279d 38c9a07e8a78462f98046ef5241bb9a1 X 72c64aa1bf6c44b9a2e8c644a3d7279d--38c9a07e8a78462f98046ef5241bb9a1 38c9a07e8a78462f98046ef5241bb9a1--b6844a2d68ea4c1b9553e19390037060 c4bc13b5dd754ba589b3e5f055d42154 38c9a07e8a78462f98046ef5241bb9a1--c4bc13b5dd754ba589b3e5f055d42154 7bb70c7cd7064aa1b60d9673d5dca206 RX(iia_γ₀₁) c4bc13b5dd754ba589b3e5f055d42154--7bb70c7cd7064aa1b60d9673d5dca206 6a1ccf4c89544b6390269411423255e7 7bb70c7cd7064aa1b60d9673d5dca206--6a1ccf4c89544b6390269411423255e7 ab6c831b8ae3417cbdc7245a76656801 X 6a1ccf4c89544b6390269411423255e7--ab6c831b8ae3417cbdc7245a76656801 ab6c831b8ae3417cbdc7245a76656801--bcc0f29b975547e7b0c3514dc38b4671 d04735fc160c4a76934b94e2b820a1dc RY(iia_β₀₄) ab6c831b8ae3417cbdc7245a76656801--d04735fc160c4a76934b94e2b820a1dc 7c4332a27a67432288057cb05c139390 RX(iia_β₀₁) d04735fc160c4a76934b94e2b820a1dc--7c4332a27a67432288057cb05c139390 83811e4ee8e14e24a3f24b858291854d RX(iia_α₁₁) 7c4332a27a67432288057cb05c139390--83811e4ee8e14e24a3f24b858291854d 5e76f684019e40649037e7a7dc45b7a6 RY(iia_α₁₄) 83811e4ee8e14e24a3f24b858291854d--5e76f684019e40649037e7a7dc45b7a6 0ce22686830b460e8ad24e2e333154ca X 5e76f684019e40649037e7a7dc45b7a6--0ce22686830b460e8ad24e2e333154ca 0ce22686830b460e8ad24e2e333154ca--28f78be5debe46d38517d4c538f942b5 219347dcfe72431a87b213255dd3986f 0ce22686830b460e8ad24e2e333154ca--219347dcfe72431a87b213255dd3986f 536d2ffce5d6489bbdec09f90b53efdc RX(iia_γ₁₁) 219347dcfe72431a87b213255dd3986f--536d2ffce5d6489bbdec09f90b53efdc da5e547d058944a9a883a9fa09822a13 536d2ffce5d6489bbdec09f90b53efdc--da5e547d058944a9a883a9fa09822a13 179b87e85f2a460aa053a77bee7a2556 X da5e547d058944a9a883a9fa09822a13--179b87e85f2a460aa053a77bee7a2556 179b87e85f2a460aa053a77bee7a2556--4b5967f6549249f786162321ef1f283f 310364ba59e545b6843bd3c1fc2c522b RY(iia_β₁₄) 179b87e85f2a460aa053a77bee7a2556--310364ba59e545b6843bd3c1fc2c522b 50144dab7b01475081e241ae8381f311 RX(iia_β₁₁) 310364ba59e545b6843bd3c1fc2c522b--50144dab7b01475081e241ae8381f311 50144dab7b01475081e241ae8381f311--2e22229e4f44433d92f839d329f81ac5 4a1c86d15f3e461dab499614d8da6f12 49bff5fd86264d5fae65319bba089faa RX(iia_α₀₂) 5db220a6bb3541bc93ae0e9dc9627c69--49bff5fd86264d5fae65319bba089faa c6d2d9d2635748e69fea642bab97f262 RY(iia_α₀₅) 49bff5fd86264d5fae65319bba089faa--c6d2d9d2635748e69fea642bab97f262 bd2f91d0199747ed8704b5c95b35d9d5 c6d2d9d2635748e69fea642bab97f262--bd2f91d0199747ed8704b5c95b35d9d5 36d3166e544b43deb2bdb2b52d18915b X bd2f91d0199747ed8704b5c95b35d9d5--36d3166e544b43deb2bdb2b52d18915b 36d3166e544b43deb2bdb2b52d18915b--c4bc13b5dd754ba589b3e5f055d42154 61cfa10236d045ed8d64497a375d35d9 RX(iia_γ₀₂) 36d3166e544b43deb2bdb2b52d18915b--61cfa10236d045ed8d64497a375d35d9 047a1f263b354f5db411b96d900401d1 X 61cfa10236d045ed8d64497a375d35d9--047a1f263b354f5db411b96d900401d1 047a1f263b354f5db411b96d900401d1--6a1ccf4c89544b6390269411423255e7 7c7e9ad8a8274fa0858a32d80cf2a57f 047a1f263b354f5db411b96d900401d1--7c7e9ad8a8274fa0858a32d80cf2a57f 8feea367c7c643269b9cb0d218206042 RY(iia_β₀₅) 7c7e9ad8a8274fa0858a32d80cf2a57f--8feea367c7c643269b9cb0d218206042 75e1055564f444409120c946cb00aa89 RX(iia_β₀₂) 8feea367c7c643269b9cb0d218206042--75e1055564f444409120c946cb00aa89 5b1fd17fb920495889d82353e3cea645 RX(iia_α₁₂) 75e1055564f444409120c946cb00aa89--5b1fd17fb920495889d82353e3cea645 bb834dccb8e5488db4a604526946729a RY(iia_α₁₅) 5b1fd17fb920495889d82353e3cea645--bb834dccb8e5488db4a604526946729a 371b84027f7447b89e0040c8fe850470 bb834dccb8e5488db4a604526946729a--371b84027f7447b89e0040c8fe850470 7d26d85f746b4f9088fb277b2f42ddd7 X 371b84027f7447b89e0040c8fe850470--7d26d85f746b4f9088fb277b2f42ddd7 7d26d85f746b4f9088fb277b2f42ddd7--219347dcfe72431a87b213255dd3986f ede682e41f1c4e0b87c8a189b52b03f1 RX(iia_γ₁₂) 7d26d85f746b4f9088fb277b2f42ddd7--ede682e41f1c4e0b87c8a189b52b03f1 2596511e4f064231ab765d1061e1c1e6 X ede682e41f1c4e0b87c8a189b52b03f1--2596511e4f064231ab765d1061e1c1e6 2596511e4f064231ab765d1061e1c1e6--da5e547d058944a9a883a9fa09822a13 81baa15c0a6f4cd2bc3d19bc98c56b38 2596511e4f064231ab765d1061e1c1e6--81baa15c0a6f4cd2bc3d19bc98c56b38 56afa3ef1d7940e4b7a6af4571bb4df8 RY(iia_β₁₅) 81baa15c0a6f4cd2bc3d19bc98c56b38--56afa3ef1d7940e4b7a6af4571bb4df8 7fd5f15a58a34e82ad2d7562ee3184e3 RX(iia_β₁₂) 56afa3ef1d7940e4b7a6af4571bb4df8--7fd5f15a58a34e82ad2d7562ee3184e3 7fd5f15a58a34e82ad2d7562ee3184e3--4a1c86d15f3e461dab499614d8da6f12