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_40052a95004b46309c7243abd4cbaf8a Constant Chebyshev FM cluster_5c1d4acc47df4b539911bba16c264714 Constant Fourier FM 6e071bd6d4b841c7b1c67c199666540e 0 d9f6dad08f814e1691970ef8e1861a3a RX(phi) 6e071bd6d4b841c7b1c67c199666540e--d9f6dad08f814e1691970ef8e1861a3a 5144a63eaaab4165a6c4b95755bd305f 1 6143732584b14a9e95ce62f7ca0f2f5f RX(acos(phi)) d9f6dad08f814e1691970ef8e1861a3a--6143732584b14a9e95ce62f7ca0f2f5f fc388284e0264213b00d57abff674f65 6143732584b14a9e95ce62f7ca0f2f5f--fc388284e0264213b00d57abff674f65 49b3f583cb7f46fb8d74937abe832d98 2af55981251e41f29b4c606e81dde2e9 RX(phi) 5144a63eaaab4165a6c4b95755bd305f--2af55981251e41f29b4c606e81dde2e9 21f5ef5cdbae41a5a2a4d51a647db105 2 85e65dae0d954d249cf4f03c33f07abe RX(acos(phi)) 2af55981251e41f29b4c606e81dde2e9--85e65dae0d954d249cf4f03c33f07abe 85e65dae0d954d249cf4f03c33f07abe--49b3f583cb7f46fb8d74937abe832d98 8845a56fecf648ab91b5e7ddd726a6bf cd1882bb63144d988b6ce22a3055c787 RX(phi) 21f5ef5cdbae41a5a2a4d51a647db105--cd1882bb63144d988b6ce22a3055c787 5b3ea98015674340915e6672091cacd5 RX(acos(phi)) cd1882bb63144d988b6ce22a3055c787--5b3ea98015674340915e6672091cacd5 5b3ea98015674340915e6672091cacd5--8845a56fecf648ab91b5e7ddd726a6bf

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_04efb5e852b1420abfb0087e27ccfbf5 Constant <function custom_fn at 0x7f26e01da170> FM cluster_b937d639eca24b24ad8eba2652d84a92 Constant asin FM dea0c7e666ed40c6b2cecddb2978b5b5 0 a70e14ad2283420ea8cd0baf831d0dff RX(asin(phi)) dea0c7e666ed40c6b2cecddb2978b5b5--a70e14ad2283420ea8cd0baf831d0dff 8d55a4b6cb4340c2aa1dc58f1e151124 1 a890bb96f6f84cffb4fcdfdb80ac404d RX(phi**2 + asin(phi)) a70e14ad2283420ea8cd0baf831d0dff--a890bb96f6f84cffb4fcdfdb80ac404d 766c73a4980241b7a82cbba71287079a a890bb96f6f84cffb4fcdfdb80ac404d--766c73a4980241b7a82cbba71287079a 38d58803a85f495cb8a7dd65a639353b 079e113d75bc42009df9b31b67754c3a RX(asin(phi)) 8d55a4b6cb4340c2aa1dc58f1e151124--079e113d75bc42009df9b31b67754c3a aadf4aa930bc4a1d99853490c1fc683f 2 45891d28ff5349169d628ffc90c6b2e4 RX(phi**2 + asin(phi)) 079e113d75bc42009df9b31b67754c3a--45891d28ff5349169d628ffc90c6b2e4 45891d28ff5349169d628ffc90c6b2e4--38d58803a85f495cb8a7dd65a639353b 5cf443b6ac9d4ad09642c5255ae45077 a5afcfbd4c8d43f3a1218a5917ae1062 RX(asin(phi)) aadf4aa930bc4a1d99853490c1fc683f--a5afcfbd4c8d43f3a1218a5917ae1062 7df0d5f2905e4629a9ba652ab429022a RX(phi**2 + asin(phi)) a5afcfbd4c8d43f3a1218a5917ae1062--7df0d5f2905e4629a9ba652ab429022a 7df0d5f2905e4629a9ba652ab429022a--5cf443b6ac9d4ad09642c5255ae45077

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_185dc033bdb949f0a5e9e04275bc5f2e Exponential Fourier FM cluster_6b57439134aa4f2ea85d829f88dc7ac9 Constant Fourier FM cluster_31b4796881c64a5e8e3fc3a0617373d4 Tower Fourier FM e00dae57e539432c88911b69920ea0f3 0 ad352e725a9d4cc3877f132b46374edc RX(phi) e00dae57e539432c88911b69920ea0f3--ad352e725a9d4cc3877f132b46374edc 639def433a024ebca2b6bd1889ffad67 1 a9accd3b77a34913a5a997c80a38bc4e RX(1.0*phi) ad352e725a9d4cc3877f132b46374edc--a9accd3b77a34913a5a997c80a38bc4e 149c32518420426495787bd6d351dc3b RX(1.0*phi) a9accd3b77a34913a5a997c80a38bc4e--149c32518420426495787bd6d351dc3b 1164728673d348cda606ca9f87dfcb0b 149c32518420426495787bd6d351dc3b--1164728673d348cda606ca9f87dfcb0b c3dbf34467984844ad1c66b452d5ecf2 155e4e3c78a84edcbf25d5cf162be6c3 RX(phi) 639def433a024ebca2b6bd1889ffad67--155e4e3c78a84edcbf25d5cf162be6c3 6bbee8acf3d3473381b3fffff0668b4f 2 45decfca65664f749049746dc91b9fb2 RX(2.0*phi) 155e4e3c78a84edcbf25d5cf162be6c3--45decfca65664f749049746dc91b9fb2 806e56f4e44e420c9cad81b2c37b9a8d RX(2.0*phi) 45decfca65664f749049746dc91b9fb2--806e56f4e44e420c9cad81b2c37b9a8d 806e56f4e44e420c9cad81b2c37b9a8d--c3dbf34467984844ad1c66b452d5ecf2 0f62d3d098094a93a979a0a3c9c9c6f1 181eba4410104ff793018793803b7735 RX(phi) 6bbee8acf3d3473381b3fffff0668b4f--181eba4410104ff793018793803b7735 131544e4b519415fb3d645c4bc3927f8 3 bf2d6a603d0a46a6a496358053ea7be7 RX(3.0*phi) 181eba4410104ff793018793803b7735--bf2d6a603d0a46a6a496358053ea7be7 92d4edb4ba9b46b0a8c92d5ee6674ac9 RX(4.0*phi) bf2d6a603d0a46a6a496358053ea7be7--92d4edb4ba9b46b0a8c92d5ee6674ac9 92d4edb4ba9b46b0a8c92d5ee6674ac9--0f62d3d098094a93a979a0a3c9c9c6f1 2c66074e2ed24d928d396bbd72aeeaeb bd7f76dff38045ae87f6f7f7ee7d3bae RX(phi) 131544e4b519415fb3d645c4bc3927f8--bd7f76dff38045ae87f6f7f7ee7d3bae 576febb53a2047438077106fba730bcc 4 3ab22e2a7c0745fab2d04d1ab75bddf0 RX(4.0*phi) bd7f76dff38045ae87f6f7f7ee7d3bae--3ab22e2a7c0745fab2d04d1ab75bddf0 33a22e894a6341309f42036ebfd8a4d4 RX(8.0*phi) 3ab22e2a7c0745fab2d04d1ab75bddf0--33a22e894a6341309f42036ebfd8a4d4 33a22e894a6341309f42036ebfd8a4d4--2c66074e2ed24d928d396bbd72aeeaeb f68f9dec5c16442881200d0fdd136fe7 77b48ee4bf9c436da426611e92dae2fb RX(phi) 576febb53a2047438077106fba730bcc--77b48ee4bf9c436da426611e92dae2fb ea363c31bc214ab39c96f87b8736a187 RX(5.0*phi) 77b48ee4bf9c436da426611e92dae2fb--ea363c31bc214ab39c96f87b8736a187 41447d46dbbe45748553382c013f6bd5 RX(16.0*phi) ea363c31bc214ab39c96f87b8736a187--41447d46dbbe45748553382c013f6bd5 41447d46dbbe45748553382c013f6bd5--f68f9dec5c16442881200d0fdd136fe7

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 ec70e0a7e6ca47e6b499a7fbf085ea98 0 2b785049faf8476688bb9cfaeb347555 RX(1.0*acos(phi)) ec70e0a7e6ca47e6b499a7fbf085ea98--2b785049faf8476688bb9cfaeb347555 08a8df013bf847639812897626363887 1 a424c4821e30473281cf3b2158fc4873 2b785049faf8476688bb9cfaeb347555--a424c4821e30473281cf3b2158fc4873 fa7955ccd91941dca4369cadd1972432 2e836fb2ecdf48fb973bde7dcc74e7be RX(1.414*acos(phi)) 08a8df013bf847639812897626363887--2e836fb2ecdf48fb973bde7dcc74e7be 3d19fa4f7cf5408d9076da00d4dc1f9f 2 2e836fb2ecdf48fb973bde7dcc74e7be--fa7955ccd91941dca4369cadd1972432 bc81b88eb0214413ba79e103241214b1 f75882a194744b65a5bf6d0bdff93f1f RX(1.732*acos(phi)) 3d19fa4f7cf5408d9076da00d4dc1f9f--f75882a194744b65a5bf6d0bdff93f1f 36c7103ac9244744bd9287b5e1f97071 3 f75882a194744b65a5bf6d0bdff93f1f--bc81b88eb0214413ba79e103241214b1 f9990cbb328940b5832dd59a6a2ddf7d ca211d97ea0d42469b760d204fae2b12 RX(2.0*acos(phi)) 36c7103ac9244744bd9287b5e1f97071--ca211d97ea0d42469b760d204fae2b12 55e6509a4fd5421a95ad01d85de18cd4 4 ca211d97ea0d42469b760d204fae2b12--f9990cbb328940b5832dd59a6a2ddf7d 14e46d381206456f9fd62c16daa631cd 2bb9bf6e711445deb5d76638840a66f0 RX(2.236*acos(phi)) 55e6509a4fd5421a95ad01d85de18cd4--2bb9bf6e711445deb5d76638840a66f0 2bb9bf6e711445deb5d76638840a66f0--14e46d381206456f9fd62c16daa631cd

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 f62a3fb3fbaa4f8cb2999dc3b693ccdc 0 ebcabba6dcd342b1933981b1a1fd4468 RX(1.0*phi*w₀) f62a3fb3fbaa4f8cb2999dc3b693ccdc--ebcabba6dcd342b1933981b1a1fd4468 86043db75c7644a9be424156de71c3ab 1 6a46179b402e4a74813be0306b098430 ebcabba6dcd342b1933981b1a1fd4468--6a46179b402e4a74813be0306b098430 eb5e1617df224689a1cb9507ed3ae6be 45a83ed1458a40feaa29090a8693d0da RX(2.0*phi*w₁) 86043db75c7644a9be424156de71c3ab--45a83ed1458a40feaa29090a8693d0da e85518255127490b9222d4aecc2abfea 2 45a83ed1458a40feaa29090a8693d0da--eb5e1617df224689a1cb9507ed3ae6be d5c91538d24f421b80baba9f5af6e6c9 30a805176c3c4bc6ab492e05c714ac3f RX(4.0*phi*w₂) e85518255127490b9222d4aecc2abfea--30a805176c3c4bc6ab492e05c714ac3f a6d63f442ced44768e81b3e0cb72f5b8 3 30a805176c3c4bc6ab492e05c714ac3f--d5c91538d24f421b80baba9f5af6e6c9 f34e64b36c1244a88366029c21f81277 054c600746bf4a7a85da4524d4802872 RX(8.0*phi*w₃) a6d63f442ced44768e81b3e0cb72f5b8--054c600746bf4a7a85da4524d4802872 e51c6a9c7c1443d986adec42b283fc09 4 054c600746bf4a7a85da4524d4802872--f34e64b36c1244a88366029c21f81277 cfc1a754b06c4174b062f52391639a09 abc49f2806ad436cb9c0e95b28c2d085 RX(16.0*phi*w₄) e51c6a9c7c1443d986adec42b283fc09--abc49f2806ad436cb9c0e95b28c2d085 abc49f2806ad436cb9c0e95b28c2d085--cfc1a754b06c4174b062f52391639a09

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 0d8aa614dc2448e7a6165fd16e2e9d26 0 34bd3d861ca343a09e19e790c3b74236 RY(80.0*acos(w₄*(0.667*x + 1.667))) 0d8aa614dc2448e7a6165fd16e2e9d26--34bd3d861ca343a09e19e790c3b74236 c7db9cfa2b2944c0b3601fcf57d39e21 1 729976ed1f3e4b5bbade03effc509cfb 34bd3d861ca343a09e19e790c3b74236--729976ed1f3e4b5bbade03effc509cfb 352874f091454887b913a46a7dd720ea 3c39d0f063ea4b84b4059840ee738c20 RY(40.0*acos(w₃*(0.667*x + 1.667))) c7db9cfa2b2944c0b3601fcf57d39e21--3c39d0f063ea4b84b4059840ee738c20 0b0d7a4d91404e0aaff2d7943084d0a2 2 3c39d0f063ea4b84b4059840ee738c20--352874f091454887b913a46a7dd720ea 760206a338d4468493f70199ee183bc2 099465450da4491185ef4a48e06fd3c3 RY(20.0*acos(w₂*(0.667*x + 1.667))) 0b0d7a4d91404e0aaff2d7943084d0a2--099465450da4491185ef4a48e06fd3c3 5321165e14a5412fbb34ac3c67916ad1 3 099465450da4491185ef4a48e06fd3c3--760206a338d4468493f70199ee183bc2 4d01cd264cba4f8dbb39fa4ec441f702 7b26efd70e2243d1955aff8e86486604 RY(10.0*acos(w₁*(0.667*x + 1.667))) 5321165e14a5412fbb34ac3c67916ad1--7b26efd70e2243d1955aff8e86486604 286686bec96f45689b6a5ae39c2a23c7 4 7b26efd70e2243d1955aff8e86486604--4d01cd264cba4f8dbb39fa4ec441f702 30d6cfdd820c4a17aa607915471a401e ad0dd17124854beea2600499bf406c18 RY(5.0*acos(w₀*(0.667*x + 1.667))) 286686bec96f45689b6a5ae39c2a23c7--ad0dd17124854beea2600499bf406c18 ad0dd17124854beea2600499bf406c18--30d6cfdd820c4a17aa607915471a401e

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 498693a8f9cd4e14b9ca8c5ba42c0b5b 0 cdd4a95e4a01455d948eabc6ed9cea63 RX(theta₀) 498693a8f9cd4e14b9ca8c5ba42c0b5b--cdd4a95e4a01455d948eabc6ed9cea63 6f055dd3969c4597add066bc552bdee4 1 ce75071afea4466aae8a1e8ef1d15f3b RY(theta₃) cdd4a95e4a01455d948eabc6ed9cea63--ce75071afea4466aae8a1e8ef1d15f3b 317483427825425ab3cf72087519504d RX(theta₆) ce75071afea4466aae8a1e8ef1d15f3b--317483427825425ab3cf72087519504d 2a4ed64cb5bc4b42a5e4953d7dc34524 317483427825425ab3cf72087519504d--2a4ed64cb5bc4b42a5e4953d7dc34524 cda02d6ea25f48c283d4c7e0a18a4fbe 2a4ed64cb5bc4b42a5e4953d7dc34524--cda02d6ea25f48c283d4c7e0a18a4fbe 9e3f6ce5f0ed4c0eb4fcab874bb67836 RX(theta₉) cda02d6ea25f48c283d4c7e0a18a4fbe--9e3f6ce5f0ed4c0eb4fcab874bb67836 fd3cc52dbfac4674b4641a96862dcb8b RY(theta₁₂) 9e3f6ce5f0ed4c0eb4fcab874bb67836--fd3cc52dbfac4674b4641a96862dcb8b a404be3b1a9746d89441fe405fd087fe RX(theta₁₅) fd3cc52dbfac4674b4641a96862dcb8b--a404be3b1a9746d89441fe405fd087fe f4619a7fa2594a4a828c351375c31150 a404be3b1a9746d89441fe405fd087fe--f4619a7fa2594a4a828c351375c31150 96dd04ac0ba543d5ac49a7977495b2f0 f4619a7fa2594a4a828c351375c31150--96dd04ac0ba543d5ac49a7977495b2f0 69d8dd94f0d84f15b67cb9acd9528310 96dd04ac0ba543d5ac49a7977495b2f0--69d8dd94f0d84f15b67cb9acd9528310 8799f00ab2624570a8ce139edb73108a dd6d7334dea543eea75bf7b945e99891 RX(theta₁) 6f055dd3969c4597add066bc552bdee4--dd6d7334dea543eea75bf7b945e99891 1e7a7e83e7ca426c937a3dd8a9bc03ea 2 22e065acd6db49889b8da8ba59fa660b RY(theta₄) dd6d7334dea543eea75bf7b945e99891--22e065acd6db49889b8da8ba59fa660b 0710bd5c93f94e07ba68b60a418492c9 RX(theta₇) 22e065acd6db49889b8da8ba59fa660b--0710bd5c93f94e07ba68b60a418492c9 9153b623dc5b449bba578cac946a6c1a X 0710bd5c93f94e07ba68b60a418492c9--9153b623dc5b449bba578cac946a6c1a 9153b623dc5b449bba578cac946a6c1a--2a4ed64cb5bc4b42a5e4953d7dc34524 b12af4501871403a85a515e12b9456e2 9153b623dc5b449bba578cac946a6c1a--b12af4501871403a85a515e12b9456e2 7f85f6a6504c45298f4dd024469f48d4 RX(theta₁₀) b12af4501871403a85a515e12b9456e2--7f85f6a6504c45298f4dd024469f48d4 3dda4818ce46472ca6cef0a7422706c2 RY(theta₁₃) 7f85f6a6504c45298f4dd024469f48d4--3dda4818ce46472ca6cef0a7422706c2 1ace17d42fb54da684d060793c3be596 RX(theta₁₆) 3dda4818ce46472ca6cef0a7422706c2--1ace17d42fb54da684d060793c3be596 b7ef0b60ca684831bbec5a202cc38953 X 1ace17d42fb54da684d060793c3be596--b7ef0b60ca684831bbec5a202cc38953 b7ef0b60ca684831bbec5a202cc38953--f4619a7fa2594a4a828c351375c31150 5cd1bb5f62e340b29820be858dc956e9 b7ef0b60ca684831bbec5a202cc38953--5cd1bb5f62e340b29820be858dc956e9 5cd1bb5f62e340b29820be858dc956e9--8799f00ab2624570a8ce139edb73108a 2c7dfd070c2948e28e040bc39767c731 830c36ade9314288a5defb8ce1e4ca38 RX(theta₂) 1e7a7e83e7ca426c937a3dd8a9bc03ea--830c36ade9314288a5defb8ce1e4ca38 fdd4fd76992a4dc28145f1e17b164b92 RY(theta₅) 830c36ade9314288a5defb8ce1e4ca38--fdd4fd76992a4dc28145f1e17b164b92 72524ff1509d4ee2bbb7b8b00d5c103c RX(theta₈) fdd4fd76992a4dc28145f1e17b164b92--72524ff1509d4ee2bbb7b8b00d5c103c 331fa55d192c45009aa9c17cf0f23909 72524ff1509d4ee2bbb7b8b00d5c103c--331fa55d192c45009aa9c17cf0f23909 1761fa0aaca240b7a4feb9e610606b8c X 331fa55d192c45009aa9c17cf0f23909--1761fa0aaca240b7a4feb9e610606b8c 1761fa0aaca240b7a4feb9e610606b8c--b12af4501871403a85a515e12b9456e2 eefd0cefac06423d9b9dce7551f55815 RX(theta₁₁) 1761fa0aaca240b7a4feb9e610606b8c--eefd0cefac06423d9b9dce7551f55815 2ddba2ea6fa7465ab4a4be8a6d3d7553 RY(theta₁₄) eefd0cefac06423d9b9dce7551f55815--2ddba2ea6fa7465ab4a4be8a6d3d7553 ac18637905d745368064b1e984ac7fcf RX(theta₁₇) 2ddba2ea6fa7465ab4a4be8a6d3d7553--ac18637905d745368064b1e984ac7fcf 6d8e732a1862478bb52936a7deb3ca87 ac18637905d745368064b1e984ac7fcf--6d8e732a1862478bb52936a7deb3ca87 e0cdcb11fa414b01833b3ebbf28b5beb X 6d8e732a1862478bb52936a7deb3ca87--e0cdcb11fa414b01833b3ebbf28b5beb e0cdcb11fa414b01833b3ebbf28b5beb--5cd1bb5f62e340b29820be858dc956e9 e0cdcb11fa414b01833b3ebbf28b5beb--2c7dfd070c2948e28e040bc39767c731

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 c12beb8443e8484b9ce8afe2a7230af6 0 00e4f3706c314dd59e5f6cbce6e6518e RX(phi₀) c12beb8443e8484b9ce8afe2a7230af6--00e4f3706c314dd59e5f6cbce6e6518e a6d37523c55243a595ed5b98616f2d63 1 a432941dd35b4af0be0a62cddcd29da7 RY(phi₃) 00e4f3706c314dd59e5f6cbce6e6518e--a432941dd35b4af0be0a62cddcd29da7 d40040162aed486082e0f18c58ff7b24 RX(phi₆) a432941dd35b4af0be0a62cddcd29da7--d40040162aed486082e0f18c58ff7b24 abadb32a872646868247118d779e7f12 d40040162aed486082e0f18c58ff7b24--abadb32a872646868247118d779e7f12 af510f3959974ba1a3ce709d3e177cfb abadb32a872646868247118d779e7f12--af510f3959974ba1a3ce709d3e177cfb d8a208d1072c4a27ba3665749884cf31 RX(phi₉) af510f3959974ba1a3ce709d3e177cfb--d8a208d1072c4a27ba3665749884cf31 af765e7cad8f40a387acfec5afb658d7 RY(phi₁₂) d8a208d1072c4a27ba3665749884cf31--af765e7cad8f40a387acfec5afb658d7 28dc86259af347e8ada87cf060386736 RX(phi₁₅) af765e7cad8f40a387acfec5afb658d7--28dc86259af347e8ada87cf060386736 fc5e866f56114f91bf3c1e7fa1643578 28dc86259af347e8ada87cf060386736--fc5e866f56114f91bf3c1e7fa1643578 1ce51a3adf364a808bb76d8a42e85170 fc5e866f56114f91bf3c1e7fa1643578--1ce51a3adf364a808bb76d8a42e85170 5cd127cfae0448589ed9b70670d3d3ce 1ce51a3adf364a808bb76d8a42e85170--5cd127cfae0448589ed9b70670d3d3ce 919a57cb9b724c4fbbfbdfda249da788 3afc87ca22964a5e95d7d84a60e89a34 RX(phi₁) a6d37523c55243a595ed5b98616f2d63--3afc87ca22964a5e95d7d84a60e89a34 1a74c864ad704cc9b8f74a1c9fe87293 2 2a9aa17b89b0432c9308fd76c667e9bd RY(phi₄) 3afc87ca22964a5e95d7d84a60e89a34--2a9aa17b89b0432c9308fd76c667e9bd 6a6c0376fa7649a0aeeb02b16c1a4c43 RX(phi₇) 2a9aa17b89b0432c9308fd76c667e9bd--6a6c0376fa7649a0aeeb02b16c1a4c43 c8ef9c5979ee4e8f92855721726791bc PHASE(phi_ent₀) 6a6c0376fa7649a0aeeb02b16c1a4c43--c8ef9c5979ee4e8f92855721726791bc c8ef9c5979ee4e8f92855721726791bc--abadb32a872646868247118d779e7f12 761f9932ee664c88b8079062d628f416 c8ef9c5979ee4e8f92855721726791bc--761f9932ee664c88b8079062d628f416 d311b30d3ac0477d9b587ca4e09e46e3 RX(phi₁₀) 761f9932ee664c88b8079062d628f416--d311b30d3ac0477d9b587ca4e09e46e3 9df74d550056470c989bd92a0a04a7be RY(phi₁₃) d311b30d3ac0477d9b587ca4e09e46e3--9df74d550056470c989bd92a0a04a7be a05a8c28aedc4d02bf145c0c089d8411 RX(phi₁₆) 9df74d550056470c989bd92a0a04a7be--a05a8c28aedc4d02bf145c0c089d8411 a0e8fba1f6e24775b7ad9b43ca09e954 PHASE(phi_ent₂) a05a8c28aedc4d02bf145c0c089d8411--a0e8fba1f6e24775b7ad9b43ca09e954 a0e8fba1f6e24775b7ad9b43ca09e954--fc5e866f56114f91bf3c1e7fa1643578 f7c604600bd047fb8913a4fa1fb4b1ef a0e8fba1f6e24775b7ad9b43ca09e954--f7c604600bd047fb8913a4fa1fb4b1ef f7c604600bd047fb8913a4fa1fb4b1ef--919a57cb9b724c4fbbfbdfda249da788 0095f4bc2a06436a8d49ce56e8656c3e deab147f6b684728acfa62a1b0831454 RX(phi₂) 1a74c864ad704cc9b8f74a1c9fe87293--deab147f6b684728acfa62a1b0831454 356aa1fac56a4475b37af8973db298d5 RY(phi₅) deab147f6b684728acfa62a1b0831454--356aa1fac56a4475b37af8973db298d5 fbd87ae0ae724796918fceceab2cf100 RX(phi₈) 356aa1fac56a4475b37af8973db298d5--fbd87ae0ae724796918fceceab2cf100 26c9301ec9254ddba8511974f1232770 fbd87ae0ae724796918fceceab2cf100--26c9301ec9254ddba8511974f1232770 322c5e6cde1a4f2eae97d535e6f55da3 PHASE(phi_ent₁) 26c9301ec9254ddba8511974f1232770--322c5e6cde1a4f2eae97d535e6f55da3 322c5e6cde1a4f2eae97d535e6f55da3--761f9932ee664c88b8079062d628f416 df29ed76ae81444595eeac2bb23081bc RX(phi₁₁) 322c5e6cde1a4f2eae97d535e6f55da3--df29ed76ae81444595eeac2bb23081bc 9934952a851545a9ab1c5c346a215ad2 RY(phi₁₄) df29ed76ae81444595eeac2bb23081bc--9934952a851545a9ab1c5c346a215ad2 6ea00bf357644cba826ff2ef525063af RX(phi₁₇) 9934952a851545a9ab1c5c346a215ad2--6ea00bf357644cba826ff2ef525063af b5faac5e240b4bd9adb27295a9a1427c 6ea00bf357644cba826ff2ef525063af--b5faac5e240b4bd9adb27295a9a1427c 688b39209a0e430c9decbb049f5a5f16 PHASE(phi_ent₃) b5faac5e240b4bd9adb27295a9a1427c--688b39209a0e430c9decbb049f5a5f16 688b39209a0e430c9decbb049f5a5f16--f7c604600bd047fb8913a4fa1fb4b1ef 688b39209a0e430c9decbb049f5a5f16--0095f4bc2a06436a8d49ce56e8656c3e

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_57d266ae1a18456dbe7abc1bc36e5acc cluster_c0ae3ef342df402180f1315b52381a26 09164bb99df742ffaf8210d489b56180 0 1cb86c5193a447c8bc6704d43a5ab1c2 RX(theta₀) 09164bb99df742ffaf8210d489b56180--1cb86c5193a447c8bc6704d43a5ab1c2 6f483b32cf294e4eb36b996a293df155 1 82fbb16d347045f9a1d50791b9184f03 RY(theta₃) 1cb86c5193a447c8bc6704d43a5ab1c2--82fbb16d347045f9a1d50791b9184f03 1d3dc35b6550475996d9d36f32e4977b RX(theta₆) 82fbb16d347045f9a1d50791b9184f03--1d3dc35b6550475996d9d36f32e4977b ec29cfe3bced41b68402e653b4097b05 HamEvo 1d3dc35b6550475996d9d36f32e4977b--ec29cfe3bced41b68402e653b4097b05 fc3aa6685ab34ca3a2a8bdfe01b5945c RX(theta₉) ec29cfe3bced41b68402e653b4097b05--fc3aa6685ab34ca3a2a8bdfe01b5945c d501080642524617b4759ee30a316353 RY(theta₁₂) fc3aa6685ab34ca3a2a8bdfe01b5945c--d501080642524617b4759ee30a316353 864e8d7653d14420bfbc94da7baef8a7 RX(theta₁₅) d501080642524617b4759ee30a316353--864e8d7653d14420bfbc94da7baef8a7 4acc01849bfe404998e0fb8f16095254 HamEvo 864e8d7653d14420bfbc94da7baef8a7--4acc01849bfe404998e0fb8f16095254 41d5898dc4de4620a054f9fef8a10a9d 4acc01849bfe404998e0fb8f16095254--41d5898dc4de4620a054f9fef8a10a9d 7b8d6fba01bf45fdb94d7f2240b71618 b76be5ba08ff4a60b8eb3afa897f9f97 RX(theta₁) 6f483b32cf294e4eb36b996a293df155--b76be5ba08ff4a60b8eb3afa897f9f97 3159218fe970442f8b5d5bfffa94ae67 2 bad11f910d294498ad3af7adcf902c70 RY(theta₄) b76be5ba08ff4a60b8eb3afa897f9f97--bad11f910d294498ad3af7adcf902c70 ae483317dd2b464b852a12ef3782ef2d RX(theta₇) bad11f910d294498ad3af7adcf902c70--ae483317dd2b464b852a12ef3782ef2d ef6803925d304bcd99c54cb4a4f57b34 t = theta_t₀ ae483317dd2b464b852a12ef3782ef2d--ef6803925d304bcd99c54cb4a4f57b34 0bbb56ce16ec4230adfa2f32b395be7b RX(theta₁₀) ef6803925d304bcd99c54cb4a4f57b34--0bbb56ce16ec4230adfa2f32b395be7b 3529cea6016b459caac9cbbd53dabee3 RY(theta₁₃) 0bbb56ce16ec4230adfa2f32b395be7b--3529cea6016b459caac9cbbd53dabee3 f27f6722ec494ae1898887d3103d59da RX(theta₁₆) 3529cea6016b459caac9cbbd53dabee3--f27f6722ec494ae1898887d3103d59da 87e52963a6fd43f7bdc558f6f37c6e65 t = theta_t₁ f27f6722ec494ae1898887d3103d59da--87e52963a6fd43f7bdc558f6f37c6e65 87e52963a6fd43f7bdc558f6f37c6e65--7b8d6fba01bf45fdb94d7f2240b71618 81a20fe2b53a482bbd79139a0964fbc4 2f7dbfd8af6640db944abb5db39dfa85 RX(theta₂) 3159218fe970442f8b5d5bfffa94ae67--2f7dbfd8af6640db944abb5db39dfa85 a00cf79f430a4918878377c1b23c761c RY(theta₅) 2f7dbfd8af6640db944abb5db39dfa85--a00cf79f430a4918878377c1b23c761c b717e51a4cbd409fbdee525c313194e8 RX(theta₈) a00cf79f430a4918878377c1b23c761c--b717e51a4cbd409fbdee525c313194e8 3f1323500a814b83a35e4172078de50f b717e51a4cbd409fbdee525c313194e8--3f1323500a814b83a35e4172078de50f c2512fa9cc334fa9b9ca37c05d96ba6f RX(theta₁₁) 3f1323500a814b83a35e4172078de50f--c2512fa9cc334fa9b9ca37c05d96ba6f 39aacf687e2942fdb15437364198b698 RY(theta₁₄) c2512fa9cc334fa9b9ca37c05d96ba6f--39aacf687e2942fdb15437364198b698 304882c1acb64d4fb17ee1f42d998c1d RX(theta₁₇) 39aacf687e2942fdb15437364198b698--304882c1acb64d4fb17ee1f42d998c1d 6acea56f11f143fe914079c1faac38b7 304882c1acb64d4fb17ee1f42d998c1d--6acea56f11f143fe914079c1faac38b7 6acea56f11f143fe914079c1faac38b7--81a20fe2b53a482bbd79139a0964fbc4

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_697177587b7e40d0918a34bc2a2cfc62 cluster_b93ef049eda34c1e965701607fa5fdc5 d117f333abf14deba73b17b5c01abb06 0 0ab7ce7ca6f14a42968c73378198fb55 RX(theta₀) d117f333abf14deba73b17b5c01abb06--0ab7ce7ca6f14a42968c73378198fb55 2020f4282b4048828a00daa3de87799a 1 e74cf231434a4996955ec6e67bc19cd9 RY(theta₆) 0ab7ce7ca6f14a42968c73378198fb55--e74cf231434a4996955ec6e67bc19cd9 82da75ff55564b8c9df8f1818642fab3 RX(theta₁₂) e74cf231434a4996955ec6e67bc19cd9--82da75ff55564b8c9df8f1818642fab3 ffe37d4030bd4f28a9eb742410218616 82da75ff55564b8c9df8f1818642fab3--ffe37d4030bd4f28a9eb742410218616 1e0c5abdc92640d8a5f025c707bb4edc RX(theta₁₈) ffe37d4030bd4f28a9eb742410218616--1e0c5abdc92640d8a5f025c707bb4edc 5d6e405c49cb41dcb16420e781735bb2 RY(theta₂₄) 1e0c5abdc92640d8a5f025c707bb4edc--5d6e405c49cb41dcb16420e781735bb2 532489c67128499080ef0b2754bc07a4 RX(theta₃₀) 5d6e405c49cb41dcb16420e781735bb2--532489c67128499080ef0b2754bc07a4 acdd9ea74d04403dbd83588bb14e3186 532489c67128499080ef0b2754bc07a4--acdd9ea74d04403dbd83588bb14e3186 d8f30f63882e471fb0f7c94fc0074192 acdd9ea74d04403dbd83588bb14e3186--d8f30f63882e471fb0f7c94fc0074192 5fa327ec151e4c5088ef0b805b08f57f 763ce4fa96204b58a7ee612b8abcc059 RX(theta₁) 2020f4282b4048828a00daa3de87799a--763ce4fa96204b58a7ee612b8abcc059 bd61163a46ad4a878b69347a455d7170 2 2cf86e45ee474f46aad446819ab7dbb0 RY(theta₇) 763ce4fa96204b58a7ee612b8abcc059--2cf86e45ee474f46aad446819ab7dbb0 cff96977a00a4e63a7dafae49deed7c0 RX(theta₁₃) 2cf86e45ee474f46aad446819ab7dbb0--cff96977a00a4e63a7dafae49deed7c0 98d0748f28cb44d99701420ae9f6ebd0 cff96977a00a4e63a7dafae49deed7c0--98d0748f28cb44d99701420ae9f6ebd0 ecca990fcb49479f82a85cbffc8e8804 RX(theta₁₉) 98d0748f28cb44d99701420ae9f6ebd0--ecca990fcb49479f82a85cbffc8e8804 1a08ccde136e4d50935057c6d61467ee RY(theta₂₅) ecca990fcb49479f82a85cbffc8e8804--1a08ccde136e4d50935057c6d61467ee 47c073c4a4224e0d8de27340bac49b73 RX(theta₃₁) 1a08ccde136e4d50935057c6d61467ee--47c073c4a4224e0d8de27340bac49b73 48ab3e9bc12b45718f54c38c7d1c88bb 47c073c4a4224e0d8de27340bac49b73--48ab3e9bc12b45718f54c38c7d1c88bb 48ab3e9bc12b45718f54c38c7d1c88bb--5fa327ec151e4c5088ef0b805b08f57f ba1ca1ed695341c891ec1bd4b24e6a6d 87965c37c60548039b5e13266490492b RX(theta₂) bd61163a46ad4a878b69347a455d7170--87965c37c60548039b5e13266490492b 29ec7b64e7704ca881a13566c109a58d 3 5b407142a8144e6da544fd9c72d73b2d RY(theta₈) 87965c37c60548039b5e13266490492b--5b407142a8144e6da544fd9c72d73b2d 7892c6f8cc8c4ae4bd757e930a1b8ec0 RX(theta₁₄) 5b407142a8144e6da544fd9c72d73b2d--7892c6f8cc8c4ae4bd757e930a1b8ec0 19b7d42ffe514449934da0bda09b86cd HamEvo 7892c6f8cc8c4ae4bd757e930a1b8ec0--19b7d42ffe514449934da0bda09b86cd ac53959c1fe74588a0f65616e6779a91 RX(theta₂₀) 19b7d42ffe514449934da0bda09b86cd--ac53959c1fe74588a0f65616e6779a91 5b851dba89aa46be8f5a4afda19aca29 RY(theta₂₆) ac53959c1fe74588a0f65616e6779a91--5b851dba89aa46be8f5a4afda19aca29 dafeb47e65e5442684b954e8f7992c60 RX(theta₃₂) 5b851dba89aa46be8f5a4afda19aca29--dafeb47e65e5442684b954e8f7992c60 f91efe90fb3e44059a0b82846e0cf2a0 HamEvo dafeb47e65e5442684b954e8f7992c60--f91efe90fb3e44059a0b82846e0cf2a0 f91efe90fb3e44059a0b82846e0cf2a0--ba1ca1ed695341c891ec1bd4b24e6a6d 14c3799b901a4f94b52b01dfafb17fc9 776f11cabe98417fa6f1497d305f6102 RX(theta₃) 29ec7b64e7704ca881a13566c109a58d--776f11cabe98417fa6f1497d305f6102 f6f0b69fdc1d486e9a6772e577187f46 4 d6944fc236f14fd2a3efac5748984468 RY(theta₉) 776f11cabe98417fa6f1497d305f6102--d6944fc236f14fd2a3efac5748984468 2768aca0dc0f4522aea0f3817d412676 RX(theta₁₅) d6944fc236f14fd2a3efac5748984468--2768aca0dc0f4522aea0f3817d412676 23b429ab5c96498da51bb53b999a0e8d t = theta_t₀ 2768aca0dc0f4522aea0f3817d412676--23b429ab5c96498da51bb53b999a0e8d cada046bd3654f0f9d2d32da21e13981 RX(theta₂₁) 23b429ab5c96498da51bb53b999a0e8d--cada046bd3654f0f9d2d32da21e13981 b50d945b11774635b74de034762498d5 RY(theta₂₇) cada046bd3654f0f9d2d32da21e13981--b50d945b11774635b74de034762498d5 1bd41bb7bf464d24afd7c611db103c00 RX(theta₃₃) b50d945b11774635b74de034762498d5--1bd41bb7bf464d24afd7c611db103c00 f9dde5c44ad544248d968a1d4608b4fa t = theta_t₁ 1bd41bb7bf464d24afd7c611db103c00--f9dde5c44ad544248d968a1d4608b4fa f9dde5c44ad544248d968a1d4608b4fa--14c3799b901a4f94b52b01dfafb17fc9 66c081354e3b4e7aa310a6ad2ea9ffc9 e3b00d1e048a41248e3402f4e7366fd6 RX(theta₄) f6f0b69fdc1d486e9a6772e577187f46--e3b00d1e048a41248e3402f4e7366fd6 c29ac191b0f846498823056ea9680133 5 a2a878133a1c40bdb735b11cbf56496e RY(theta₁₀) e3b00d1e048a41248e3402f4e7366fd6--a2a878133a1c40bdb735b11cbf56496e 161246820d80453ab1c82e0e4addcbe8 RX(theta₁₆) a2a878133a1c40bdb735b11cbf56496e--161246820d80453ab1c82e0e4addcbe8 348d242e3ee148b5a87e8e2b3a3876a6 161246820d80453ab1c82e0e4addcbe8--348d242e3ee148b5a87e8e2b3a3876a6 2264b7ebfc57434fbfafa382d5b73df4 RX(theta₂₂) 348d242e3ee148b5a87e8e2b3a3876a6--2264b7ebfc57434fbfafa382d5b73df4 8cad7818cb134c958aeb1df99d6b7558 RY(theta₂₈) 2264b7ebfc57434fbfafa382d5b73df4--8cad7818cb134c958aeb1df99d6b7558 91a392fdb9844281b37aa8b913360d15 RX(theta₃₄) 8cad7818cb134c958aeb1df99d6b7558--91a392fdb9844281b37aa8b913360d15 c3aacd19c44e4166a0880748179253fe 91a392fdb9844281b37aa8b913360d15--c3aacd19c44e4166a0880748179253fe c3aacd19c44e4166a0880748179253fe--66c081354e3b4e7aa310a6ad2ea9ffc9 77424770edeb427cb91d35e72d4214c5 9eb2e89b23e241cdbb517b862674026c RX(theta₅) c29ac191b0f846498823056ea9680133--9eb2e89b23e241cdbb517b862674026c 797441e0fc9f4b7692faf70863fead21 RY(theta₁₁) 9eb2e89b23e241cdbb517b862674026c--797441e0fc9f4b7692faf70863fead21 97c2a40ef2744f50aa19c65b59c0571e RX(theta₁₇) 797441e0fc9f4b7692faf70863fead21--97c2a40ef2744f50aa19c65b59c0571e 678546e1ed9d4f018f575ea5172beab7 97c2a40ef2744f50aa19c65b59c0571e--678546e1ed9d4f018f575ea5172beab7 d035957ea18442348b3c992718b1e446 RX(theta₂₃) 678546e1ed9d4f018f575ea5172beab7--d035957ea18442348b3c992718b1e446 945dd3e6002e4be5b96ebbb360873cc7 RY(theta₂₉) d035957ea18442348b3c992718b1e446--945dd3e6002e4be5b96ebbb360873cc7 21652c88a9a2489492e4dc5476cd1031 RX(theta₃₅) 945dd3e6002e4be5b96ebbb360873cc7--21652c88a9a2489492e4dc5476cd1031 248fc8f40a704ab79e65df4a819e82f2 21652c88a9a2489492e4dc5476cd1031--248fc8f40a704ab79e65df4a819e82f2 248fc8f40a704ab79e65df4a819e82f2--77424770edeb427cb91d35e72d4214c5

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_1cf7275cc8474893aa9a097756702124 BPMA-1 cluster_268737dea345489684b67b74bea3cc5d BPMA-0 3f09612f28424ef5a44968bd3c55dee3 0 6badb72790df40d2a413a834cf168131 RX(iia_α₀₀) 3f09612f28424ef5a44968bd3c55dee3--6badb72790df40d2a413a834cf168131 397c4fca84a746758d386935548b7204 1 cd63b017a6a34348b6bac328f159b0a0 RY(iia_α₀₃) 6badb72790df40d2a413a834cf168131--cd63b017a6a34348b6bac328f159b0a0 905cb1ada58c4ff786a871457dcaad8e cd63b017a6a34348b6bac328f159b0a0--905cb1ada58c4ff786a871457dcaad8e f0cec608e3fe495593f0409859e9bc51 905cb1ada58c4ff786a871457dcaad8e--f0cec608e3fe495593f0409859e9bc51 aa2cfaf8b15f4f36b1ccf10775b9fc5d RX(iia_γ₀₀) f0cec608e3fe495593f0409859e9bc51--aa2cfaf8b15f4f36b1ccf10775b9fc5d 6029d304dcaa46b3a8a70b10185aa70b aa2cfaf8b15f4f36b1ccf10775b9fc5d--6029d304dcaa46b3a8a70b10185aa70b c32f2ab90a424cdea4b088ef84366825 6029d304dcaa46b3a8a70b10185aa70b--c32f2ab90a424cdea4b088ef84366825 fa853d8ac0914ad3b1decd2f1e85844a RY(iia_β₀₃) c32f2ab90a424cdea4b088ef84366825--fa853d8ac0914ad3b1decd2f1e85844a d27a93059d204cf68ad39ff6481b2a51 RX(iia_β₀₀) fa853d8ac0914ad3b1decd2f1e85844a--d27a93059d204cf68ad39ff6481b2a51 2e64da3356324d2a9ca36be631d50c52 RX(iia_α₁₀) d27a93059d204cf68ad39ff6481b2a51--2e64da3356324d2a9ca36be631d50c52 f39313b5e6aa41fbb5d6c7bc5da2b1d1 RY(iia_α₁₃) 2e64da3356324d2a9ca36be631d50c52--f39313b5e6aa41fbb5d6c7bc5da2b1d1 4f15f5149898404e9a8d65024e01a9d8 f39313b5e6aa41fbb5d6c7bc5da2b1d1--4f15f5149898404e9a8d65024e01a9d8 95caf232e75e447ebfe846ac43c47a51 4f15f5149898404e9a8d65024e01a9d8--95caf232e75e447ebfe846ac43c47a51 976e52fb73a1440fab73c15c4de8fdca RX(iia_γ₁₀) 95caf232e75e447ebfe846ac43c47a51--976e52fb73a1440fab73c15c4de8fdca 98bc3280125544399a5fccc04f71a1c8 976e52fb73a1440fab73c15c4de8fdca--98bc3280125544399a5fccc04f71a1c8 651c72294eed439aaae7c18881118096 98bc3280125544399a5fccc04f71a1c8--651c72294eed439aaae7c18881118096 dbfbd4434d564a17a8817c20f7c02d6f RY(iia_β₁₃) 651c72294eed439aaae7c18881118096--dbfbd4434d564a17a8817c20f7c02d6f 785ef0d270e04d50b1af9ee711d697bb RX(iia_β₁₀) dbfbd4434d564a17a8817c20f7c02d6f--785ef0d270e04d50b1af9ee711d697bb 26aad44290f74d92bb5787805fbd082e 785ef0d270e04d50b1af9ee711d697bb--26aad44290f74d92bb5787805fbd082e e7220c5cd15946ec8a9d2f502c6d455c fdafb429da254c87a2f66b3464c7ab73 RX(iia_α₀₁) 397c4fca84a746758d386935548b7204--fdafb429da254c87a2f66b3464c7ab73 274e9f7b27854c208c84246433677db4 2 fd9cd5fedc9b45048f92f5c74f7f3232 RY(iia_α₀₄) fdafb429da254c87a2f66b3464c7ab73--fd9cd5fedc9b45048f92f5c74f7f3232 ae9c9372b35c4196a28bb7a2f729d95c X fd9cd5fedc9b45048f92f5c74f7f3232--ae9c9372b35c4196a28bb7a2f729d95c ae9c9372b35c4196a28bb7a2f729d95c--905cb1ada58c4ff786a871457dcaad8e 9193a771d9154b9ba3e33e882d933757 ae9c9372b35c4196a28bb7a2f729d95c--9193a771d9154b9ba3e33e882d933757 4bfdee5b509b468d8fe8d7aa73d90a5f RX(iia_γ₀₁) 9193a771d9154b9ba3e33e882d933757--4bfdee5b509b468d8fe8d7aa73d90a5f 12cab1bfb3b6492baf0e772992ca2495 4bfdee5b509b468d8fe8d7aa73d90a5f--12cab1bfb3b6492baf0e772992ca2495 3ba7b30d937d49df8e906dbe989f7211 X 12cab1bfb3b6492baf0e772992ca2495--3ba7b30d937d49df8e906dbe989f7211 3ba7b30d937d49df8e906dbe989f7211--c32f2ab90a424cdea4b088ef84366825 329af505e4a14627be77d6b211894356 RY(iia_β₀₄) 3ba7b30d937d49df8e906dbe989f7211--329af505e4a14627be77d6b211894356 263a7941f8374af6855f920df8a5da1b RX(iia_β₀₁) 329af505e4a14627be77d6b211894356--263a7941f8374af6855f920df8a5da1b 4d880331acc74ae4a47bc37f01e3ff93 RX(iia_α₁₁) 263a7941f8374af6855f920df8a5da1b--4d880331acc74ae4a47bc37f01e3ff93 64d1a0c8a5394ddda30dc99472d5bc82 RY(iia_α₁₄) 4d880331acc74ae4a47bc37f01e3ff93--64d1a0c8a5394ddda30dc99472d5bc82 73ecc63b175c4808b3da60f35b02b3fb X 64d1a0c8a5394ddda30dc99472d5bc82--73ecc63b175c4808b3da60f35b02b3fb 73ecc63b175c4808b3da60f35b02b3fb--4f15f5149898404e9a8d65024e01a9d8 7e1102f4f33c4894ac76a34248b75813 73ecc63b175c4808b3da60f35b02b3fb--7e1102f4f33c4894ac76a34248b75813 2e0f54457e3e486381a90d1d8a1f3d75 RX(iia_γ₁₁) 7e1102f4f33c4894ac76a34248b75813--2e0f54457e3e486381a90d1d8a1f3d75 eb965b79f5714796840fc95be79fc9ca 2e0f54457e3e486381a90d1d8a1f3d75--eb965b79f5714796840fc95be79fc9ca 219e35b36d0746229cf0e4b7aee55cb1 X eb965b79f5714796840fc95be79fc9ca--219e35b36d0746229cf0e4b7aee55cb1 219e35b36d0746229cf0e4b7aee55cb1--651c72294eed439aaae7c18881118096 26651fd78ab844d5b210bc32ec8140d5 RY(iia_β₁₄) 219e35b36d0746229cf0e4b7aee55cb1--26651fd78ab844d5b210bc32ec8140d5 f9c2fc8d659a440dbd94b0a772962b8e RX(iia_β₁₁) 26651fd78ab844d5b210bc32ec8140d5--f9c2fc8d659a440dbd94b0a772962b8e f9c2fc8d659a440dbd94b0a772962b8e--e7220c5cd15946ec8a9d2f502c6d455c aadcc3d0e6074103bf6f82f46d35284e 0ad938cf698943efb23397864a0c06dc RX(iia_α₀₂) 274e9f7b27854c208c84246433677db4--0ad938cf698943efb23397864a0c06dc 65200b49c253476494179f91c4864951 RY(iia_α₀₅) 0ad938cf698943efb23397864a0c06dc--65200b49c253476494179f91c4864951 4e92c0579fa34e82a36cb9b785d1448b 65200b49c253476494179f91c4864951--4e92c0579fa34e82a36cb9b785d1448b 6958feae0112453d81bb1e87b92b9cca X 4e92c0579fa34e82a36cb9b785d1448b--6958feae0112453d81bb1e87b92b9cca 6958feae0112453d81bb1e87b92b9cca--9193a771d9154b9ba3e33e882d933757 1c4503a4f1764cb8940fb6eb220da39c RX(iia_γ₀₂) 6958feae0112453d81bb1e87b92b9cca--1c4503a4f1764cb8940fb6eb220da39c bab5c0cf1a1241a59f13e1cf381436d4 X 1c4503a4f1764cb8940fb6eb220da39c--bab5c0cf1a1241a59f13e1cf381436d4 bab5c0cf1a1241a59f13e1cf381436d4--12cab1bfb3b6492baf0e772992ca2495 5d18dc02e68849f6ae5c842c2657c8ca bab5c0cf1a1241a59f13e1cf381436d4--5d18dc02e68849f6ae5c842c2657c8ca b655ddce384046cd882e8295b7592b0a RY(iia_β₀₅) 5d18dc02e68849f6ae5c842c2657c8ca--b655ddce384046cd882e8295b7592b0a 3babdfb2f626448ea2f8da7cbdfbd479 RX(iia_β₀₂) b655ddce384046cd882e8295b7592b0a--3babdfb2f626448ea2f8da7cbdfbd479 04d4e3464c3d4f998315934563aea093 RX(iia_α₁₂) 3babdfb2f626448ea2f8da7cbdfbd479--04d4e3464c3d4f998315934563aea093 fe6623b812f64d7bb8643822638cff3e RY(iia_α₁₅) 04d4e3464c3d4f998315934563aea093--fe6623b812f64d7bb8643822638cff3e ff40283a596643b68569752b6e5456e4 fe6623b812f64d7bb8643822638cff3e--ff40283a596643b68569752b6e5456e4 82b54ea56c8f4e94a36e74e6727d00e1 X ff40283a596643b68569752b6e5456e4--82b54ea56c8f4e94a36e74e6727d00e1 82b54ea56c8f4e94a36e74e6727d00e1--7e1102f4f33c4894ac76a34248b75813 714db2118cd84ca9bde3b11f3a5d323a RX(iia_γ₁₂) 82b54ea56c8f4e94a36e74e6727d00e1--714db2118cd84ca9bde3b11f3a5d323a 2dde60c87f094a9bb181b19136e11c66 X 714db2118cd84ca9bde3b11f3a5d323a--2dde60c87f094a9bb181b19136e11c66 2dde60c87f094a9bb181b19136e11c66--eb965b79f5714796840fc95be79fc9ca 969827493cf64200b6eddda2172f94d6 2dde60c87f094a9bb181b19136e11c66--969827493cf64200b6eddda2172f94d6 dc0e581f483d4f3b8cef88d7934dccbe RY(iia_β₁₅) 969827493cf64200b6eddda2172f94d6--dc0e581f483d4f3b8cef88d7934dccbe dd081827ebfc43f496fed9c9bbdebdb6 RX(iia_β₁₂) dc0e581f483d4f3b8cef88d7934dccbe--dd081827ebfc43f496fed9c9bbdebdb6 dd081827ebfc43f496fed9c9bbdebdb6--aadcc3d0e6074103bf6f82f46d35284e