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_ac96b1d60ef44266a6fe55e7026c7fba Constant Chebyshev FM cluster_ba7a2936b9f74e57bdd0783c3d1677bb Constant Fourier FM 7250427fe28d4729bb28184574f98f7f 0 30ab1ded0af54483b7e52aef8f4b59c4 RX(phi) 7250427fe28d4729bb28184574f98f7f--30ab1ded0af54483b7e52aef8f4b59c4 ceec74450c7b42f78ec424de06d39bf0 1 052e143e50d049be9a24ce107574a4f8 RX(acos(phi)) 30ab1ded0af54483b7e52aef8f4b59c4--052e143e50d049be9a24ce107574a4f8 66064808b17f45508f04eb0a4ecc7750 052e143e50d049be9a24ce107574a4f8--66064808b17f45508f04eb0a4ecc7750 fef4f4d705c7474f931f1c0fb9be2076 5ec8eb3ecf1843c3bcff075d353c8d16 RX(phi) ceec74450c7b42f78ec424de06d39bf0--5ec8eb3ecf1843c3bcff075d353c8d16 c2dd3adcae5a4febb9fd97fe7024a654 2 78ee50f60e1a4b919b7a6a3d00bc0bdc RX(acos(phi)) 5ec8eb3ecf1843c3bcff075d353c8d16--78ee50f60e1a4b919b7a6a3d00bc0bdc 78ee50f60e1a4b919b7a6a3d00bc0bdc--fef4f4d705c7474f931f1c0fb9be2076 b17a6091a5234971a3da781b52b188d0 33a8829a253740c6b8825bf1ff151b4b RX(phi) c2dd3adcae5a4febb9fd97fe7024a654--33a8829a253740c6b8825bf1ff151b4b 8e4fd48d989f444ca5f2419778c27d2d RX(acos(phi)) 33a8829a253740c6b8825bf1ff151b4b--8e4fd48d989f444ca5f2419778c27d2d 8e4fd48d989f444ca5f2419778c27d2d--b17a6091a5234971a3da781b52b188d0

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_7001f98a88e449d0ad213afb2088335b Constant <function custom_fn at 0x7fdcb5bd3f40> FM cluster_b7736247b10140948563d55d0cd85a69 Constant asin FM 9bf741cba8624d228357354b85a373d4 0 5ca08f3d20ed45d9816f6de41b2aedbf RX(asin(phi)) 9bf741cba8624d228357354b85a373d4--5ca08f3d20ed45d9816f6de41b2aedbf dd3fa117565d49eba31f57c986269191 1 0c95ebd4646547ea856d59f341db5628 RX(phi**2 + asin(phi)) 5ca08f3d20ed45d9816f6de41b2aedbf--0c95ebd4646547ea856d59f341db5628 b5b2e701448349b0868329932b212e6a 0c95ebd4646547ea856d59f341db5628--b5b2e701448349b0868329932b212e6a 51cfc443aef74c359e54add7d72a5c8d 08b5425c257b4cb79a6d908c9792761d RX(asin(phi)) dd3fa117565d49eba31f57c986269191--08b5425c257b4cb79a6d908c9792761d 0da1706cb6144a82b298d4c23282c479 2 0dde7e08d8ab4a8e992403de11352bda RX(phi**2 + asin(phi)) 08b5425c257b4cb79a6d908c9792761d--0dde7e08d8ab4a8e992403de11352bda 0dde7e08d8ab4a8e992403de11352bda--51cfc443aef74c359e54add7d72a5c8d b93f4d63b9694a63a7ab1a0f16d939ff 6d696c0afc7a4dedbb563f03f3a0e5a8 RX(asin(phi)) 0da1706cb6144a82b298d4c23282c479--6d696c0afc7a4dedbb563f03f3a0e5a8 dd517d7f054b439e8111de9518488607 RX(phi**2 + asin(phi)) 6d696c0afc7a4dedbb563f03f3a0e5a8--dd517d7f054b439e8111de9518488607 dd517d7f054b439e8111de9518488607--b93f4d63b9694a63a7ab1a0f16d939ff

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_aba30249367748edab0b946c61fa8356 Exponential Fourier FM cluster_54d7456089ad4319ba6accdfac63f229 Constant Fourier FM cluster_34d9a96498874af8bba8f6fd13d84f08 Tower Fourier FM 7ce75a4fb5c742b6a502aa60660dfab2 0 3ba0655ea39e4e829af79ce20bd60de3 RX(phi) 7ce75a4fb5c742b6a502aa60660dfab2--3ba0655ea39e4e829af79ce20bd60de3 eba0c8111b4c4a648aa2aa981efd7b8c 1 a03fd65a96544fcb9e0c32d4f6dc08b0 RX(1.0*phi) 3ba0655ea39e4e829af79ce20bd60de3--a03fd65a96544fcb9e0c32d4f6dc08b0 840a291ffdba4b25a8b32f01b1707a29 RX(1.0*phi) a03fd65a96544fcb9e0c32d4f6dc08b0--840a291ffdba4b25a8b32f01b1707a29 1b07bf19dbeb44f49abf021aa60a6e5f 840a291ffdba4b25a8b32f01b1707a29--1b07bf19dbeb44f49abf021aa60a6e5f 08129244b8b0413d8eaa62d8bcf1e785 9b61a93faaf94221948381e1f8bf6ea8 RX(phi) eba0c8111b4c4a648aa2aa981efd7b8c--9b61a93faaf94221948381e1f8bf6ea8 287fe322306c41a6b7bb9d7eea3794e1 2 8d0db309adb54946b2f6fd0d89f4b601 RX(2.0*phi) 9b61a93faaf94221948381e1f8bf6ea8--8d0db309adb54946b2f6fd0d89f4b601 39b7c655bb6e49e5a705a36144c328ab RX(2.0*phi) 8d0db309adb54946b2f6fd0d89f4b601--39b7c655bb6e49e5a705a36144c328ab 39b7c655bb6e49e5a705a36144c328ab--08129244b8b0413d8eaa62d8bcf1e785 3f3d582e961d44f88cdd368591727bf7 2bf64ba6a12b4c54a06357aee8b52a0d RX(phi) 287fe322306c41a6b7bb9d7eea3794e1--2bf64ba6a12b4c54a06357aee8b52a0d 59392e0aec49412980c18db88c600034 3 9bcafdf79d5f4befa4556057f7065cbb RX(3.0*phi) 2bf64ba6a12b4c54a06357aee8b52a0d--9bcafdf79d5f4befa4556057f7065cbb 5edc84a66a984d65a3bf6ee333a1db1f RX(4.0*phi) 9bcafdf79d5f4befa4556057f7065cbb--5edc84a66a984d65a3bf6ee333a1db1f 5edc84a66a984d65a3bf6ee333a1db1f--3f3d582e961d44f88cdd368591727bf7 3d9e83ac436b481e8edace06929ea66a 5f44773331da4e41aa5c9d5b172548d7 RX(phi) 59392e0aec49412980c18db88c600034--5f44773331da4e41aa5c9d5b172548d7 33dcdb96f37c4d16b532ac3f68d7260f 4 7239fe43a6624a1888c2083f0539efc2 RX(4.0*phi) 5f44773331da4e41aa5c9d5b172548d7--7239fe43a6624a1888c2083f0539efc2 8b368ecfb7754838b86d84705af0f42f RX(8.0*phi) 7239fe43a6624a1888c2083f0539efc2--8b368ecfb7754838b86d84705af0f42f 8b368ecfb7754838b86d84705af0f42f--3d9e83ac436b481e8edace06929ea66a bcea98eef2964acdaf41629d9a2e36ae 10967f52d82a4115af6ff47fe0b23b43 RX(phi) 33dcdb96f37c4d16b532ac3f68d7260f--10967f52d82a4115af6ff47fe0b23b43 2a6983920b7442d08f2f91d7f5be0bad RX(5.0*phi) 10967f52d82a4115af6ff47fe0b23b43--2a6983920b7442d08f2f91d7f5be0bad 995edaefa37c4032a641a1454535bc47 RX(16.0*phi) 2a6983920b7442d08f2f91d7f5be0bad--995edaefa37c4032a641a1454535bc47 995edaefa37c4032a641a1454535bc47--bcea98eef2964acdaf41629d9a2e36ae

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 5d66aceda86e42388aa86e281fb77898 0 4e471ed1d6284f57b93f2f2c6435743c RX(1.0*acos(phi)) 5d66aceda86e42388aa86e281fb77898--4e471ed1d6284f57b93f2f2c6435743c f9be27a97290415db06753640730ee72 1 ec7a4b22c6c44576b70961c971833c3b 4e471ed1d6284f57b93f2f2c6435743c--ec7a4b22c6c44576b70961c971833c3b f5ecaf8a9f5347909624cf84138a2879 91105f84bc8d4a04abd51923e7f46fcc RX(1.414*acos(phi)) f9be27a97290415db06753640730ee72--91105f84bc8d4a04abd51923e7f46fcc 0dbdd90cc7f543218486853400649b06 2 91105f84bc8d4a04abd51923e7f46fcc--f5ecaf8a9f5347909624cf84138a2879 f7363a58bd7f437ea5af035be695d4f9 900971d2b5c24d6eb52c33dc1eb61414 RX(1.732*acos(phi)) 0dbdd90cc7f543218486853400649b06--900971d2b5c24d6eb52c33dc1eb61414 694ac89ecfe14c818c06c74484fd819b 3 900971d2b5c24d6eb52c33dc1eb61414--f7363a58bd7f437ea5af035be695d4f9 5697003bd7d0497ca28bd6baffa6e83a 7d1b8781a7b142bead8dae5f5bc6bd9c RX(2.0*acos(phi)) 694ac89ecfe14c818c06c74484fd819b--7d1b8781a7b142bead8dae5f5bc6bd9c 00f01cac6f294b5f80512459323f22d7 4 7d1b8781a7b142bead8dae5f5bc6bd9c--5697003bd7d0497ca28bd6baffa6e83a 3b1417a33be4437faabbb5dc660a19d6 0ee3458f25414d42a5f8fb182780395a RX(2.236*acos(phi)) 00f01cac6f294b5f80512459323f22d7--0ee3458f25414d42a5f8fb182780395a 0ee3458f25414d42a5f8fb182780395a--3b1417a33be4437faabbb5dc660a19d6

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 3b43899a2ee24b2d8e9c3104bff3ad80 0 c7dedc16f413451fb1f955524c702f3d RX(1.0*phi*w₀) 3b43899a2ee24b2d8e9c3104bff3ad80--c7dedc16f413451fb1f955524c702f3d 3f7b7beefe854226a094310192c36e5f 1 e86ac844daf3494aa3b25dae5bea3b4f c7dedc16f413451fb1f955524c702f3d--e86ac844daf3494aa3b25dae5bea3b4f 02011011d7c04c4e8ec80ba684e04b50 97ad9a284764486fb995adee2ba1e970 RX(2.0*phi*w₁) 3f7b7beefe854226a094310192c36e5f--97ad9a284764486fb995adee2ba1e970 620aba153c9e4621a11e1981baa6ec00 2 97ad9a284764486fb995adee2ba1e970--02011011d7c04c4e8ec80ba684e04b50 1d436739c9f94f12a09aa51c7c379bb2 871b9ad00cf740cbad1671f089805ecb RX(4.0*phi*w₂) 620aba153c9e4621a11e1981baa6ec00--871b9ad00cf740cbad1671f089805ecb 28a062ef5a71439ba54c50b9d38b09ef 3 871b9ad00cf740cbad1671f089805ecb--1d436739c9f94f12a09aa51c7c379bb2 b4c180032fb64662b040053b22279f4f 7e4f714b16ff45768c1bf1526fcb3542 RX(8.0*phi*w₃) 28a062ef5a71439ba54c50b9d38b09ef--7e4f714b16ff45768c1bf1526fcb3542 0883a553f83c4d9a88849df89ebc4897 4 7e4f714b16ff45768c1bf1526fcb3542--b4c180032fb64662b040053b22279f4f 307efeb8986147ed9f89f5d14785c7eb bed0c6eae63743d39163b278aefb4a8b RX(16.0*phi*w₄) 0883a553f83c4d9a88849df89ebc4897--bed0c6eae63743d39163b278aefb4a8b bed0c6eae63743d39163b278aefb4a8b--307efeb8986147ed9f89f5d14785c7eb

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 d6346f5d57ca46dea3bddff291cf9588 0 ae3634490fe74595907ddbcdf5d317c3 RY(80.0*acos(w₄*(0.667*x + 1.667))) d6346f5d57ca46dea3bddff291cf9588--ae3634490fe74595907ddbcdf5d317c3 854c4bc9b2424b7e91e128a37c1dbf38 1 f0a7c99d1a834eae925abba38df6ea89 ae3634490fe74595907ddbcdf5d317c3--f0a7c99d1a834eae925abba38df6ea89 56222434a68d4d738129362d757ecb8d a20276be48a24b359c074724324e4295 RY(40.0*acos(w₃*(0.667*x + 1.667))) 854c4bc9b2424b7e91e128a37c1dbf38--a20276be48a24b359c074724324e4295 d86de4afbb364792a68e25431aead2a3 2 a20276be48a24b359c074724324e4295--56222434a68d4d738129362d757ecb8d 9321b7a01e19455ca76485462344a68a b33f6138906744178b0d3b49ef1fbfc7 RY(20.0*acos(w₂*(0.667*x + 1.667))) d86de4afbb364792a68e25431aead2a3--b33f6138906744178b0d3b49ef1fbfc7 aebd6e19498749249c7899eb3fdb83a2 3 b33f6138906744178b0d3b49ef1fbfc7--9321b7a01e19455ca76485462344a68a 25765255d12545629cd28cad999b3738 d6209b452f3543d684ba5ec3181c7219 RY(10.0*acos(w₁*(0.667*x + 1.667))) aebd6e19498749249c7899eb3fdb83a2--d6209b452f3543d684ba5ec3181c7219 b88a7dc86cd5466697c8beb06badc95f 4 d6209b452f3543d684ba5ec3181c7219--25765255d12545629cd28cad999b3738 3ec401cf965d49db950841498d2c7693 88c3931248324894a80d6c4a58a63b92 RY(5.0*acos(w₀*(0.667*x + 1.667))) b88a7dc86cd5466697c8beb06badc95f--88c3931248324894a80d6c4a58a63b92 88c3931248324894a80d6c4a58a63b92--3ec401cf965d49db950841498d2c7693

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 ecd10fb249f940e091957967a359eb59 0 1f0cf3071ba44778b8edab3f9d9eee0b RX(theta₀) ecd10fb249f940e091957967a359eb59--1f0cf3071ba44778b8edab3f9d9eee0b 0c433604efbb44cb8f8df81ebb5ff3d2 1 3d462874615d4df3871ca67434b40264 RY(theta₃) 1f0cf3071ba44778b8edab3f9d9eee0b--3d462874615d4df3871ca67434b40264 d211b15d4c184ceb838172a5c62c3e89 RX(theta₆) 3d462874615d4df3871ca67434b40264--d211b15d4c184ceb838172a5c62c3e89 bc22f85a6285458eb5cc81a27b2958b5 d211b15d4c184ceb838172a5c62c3e89--bc22f85a6285458eb5cc81a27b2958b5 a91034f4ac314feaa1d19f1040ebf261 bc22f85a6285458eb5cc81a27b2958b5--a91034f4ac314feaa1d19f1040ebf261 bd14bd781bd24b6d9d09e60b224fc1fc RX(theta₉) a91034f4ac314feaa1d19f1040ebf261--bd14bd781bd24b6d9d09e60b224fc1fc 2640df6ba536436aa7bfbdd42e78b1aa RY(theta₁₂) bd14bd781bd24b6d9d09e60b224fc1fc--2640df6ba536436aa7bfbdd42e78b1aa 090230a5ce864ea3820693f0682f7e44 RX(theta₁₅) 2640df6ba536436aa7bfbdd42e78b1aa--090230a5ce864ea3820693f0682f7e44 e3e2e5d1ecba4761821b217e417e5b82 090230a5ce864ea3820693f0682f7e44--e3e2e5d1ecba4761821b217e417e5b82 6c623c9ffd06416fad18a5682e06d111 e3e2e5d1ecba4761821b217e417e5b82--6c623c9ffd06416fad18a5682e06d111 81ba42b9c9174206a3a868d1c1b89d23 6c623c9ffd06416fad18a5682e06d111--81ba42b9c9174206a3a868d1c1b89d23 d7a0319e4c1146e3aa2e61a70597bf99 82b7c184d1aa47d78a713a1004313a73 RX(theta₁) 0c433604efbb44cb8f8df81ebb5ff3d2--82b7c184d1aa47d78a713a1004313a73 9fb681b955064cf4b88270d3c330cd91 2 e6a83f47d5294c1d8181b57e462dca67 RY(theta₄) 82b7c184d1aa47d78a713a1004313a73--e6a83f47d5294c1d8181b57e462dca67 e091d04a510d452da0aaafb29128d5c6 RX(theta₇) e6a83f47d5294c1d8181b57e462dca67--e091d04a510d452da0aaafb29128d5c6 ace704ceaec24df98425697fa5b76eef X e091d04a510d452da0aaafb29128d5c6--ace704ceaec24df98425697fa5b76eef ace704ceaec24df98425697fa5b76eef--bc22f85a6285458eb5cc81a27b2958b5 1e814734001641e18ed8fc3862d34850 ace704ceaec24df98425697fa5b76eef--1e814734001641e18ed8fc3862d34850 1fe3093aedb444fd9d46edf9fe0f1e1f RX(theta₁₀) 1e814734001641e18ed8fc3862d34850--1fe3093aedb444fd9d46edf9fe0f1e1f bba003cec3074d1d8cb1aa4c92ddf3c4 RY(theta₁₃) 1fe3093aedb444fd9d46edf9fe0f1e1f--bba003cec3074d1d8cb1aa4c92ddf3c4 03aa9484d44945ea871b0403650fae6a RX(theta₁₆) bba003cec3074d1d8cb1aa4c92ddf3c4--03aa9484d44945ea871b0403650fae6a b7d55e6159e649cf8dfe4a882722f224 X 03aa9484d44945ea871b0403650fae6a--b7d55e6159e649cf8dfe4a882722f224 b7d55e6159e649cf8dfe4a882722f224--e3e2e5d1ecba4761821b217e417e5b82 bbe92c9ec1174ad0ac58d23a0df485da b7d55e6159e649cf8dfe4a882722f224--bbe92c9ec1174ad0ac58d23a0df485da bbe92c9ec1174ad0ac58d23a0df485da--d7a0319e4c1146e3aa2e61a70597bf99 19c60c42772b44d99b8c720ecf07df4c 695cc515f3e04e08af489b969a7385cb RX(theta₂) 9fb681b955064cf4b88270d3c330cd91--695cc515f3e04e08af489b969a7385cb 2e018fc55fad48d280d1fe06acd032c5 RY(theta₅) 695cc515f3e04e08af489b969a7385cb--2e018fc55fad48d280d1fe06acd032c5 1254976b54c349288a13323ab793b600 RX(theta₈) 2e018fc55fad48d280d1fe06acd032c5--1254976b54c349288a13323ab793b600 f6801a1bd9db458e9a0016043f27e443 1254976b54c349288a13323ab793b600--f6801a1bd9db458e9a0016043f27e443 985b207f1c874fc49bfa3d3a29562cc1 X f6801a1bd9db458e9a0016043f27e443--985b207f1c874fc49bfa3d3a29562cc1 985b207f1c874fc49bfa3d3a29562cc1--1e814734001641e18ed8fc3862d34850 6aa5683d05d84d408aa57fb48df64307 RX(theta₁₁) 985b207f1c874fc49bfa3d3a29562cc1--6aa5683d05d84d408aa57fb48df64307 67195139213c4d9db1c26b4a6af8d5df RY(theta₁₄) 6aa5683d05d84d408aa57fb48df64307--67195139213c4d9db1c26b4a6af8d5df d9ac91ea6cb245d4b5ebffe47d782ed5 RX(theta₁₇) 67195139213c4d9db1c26b4a6af8d5df--d9ac91ea6cb245d4b5ebffe47d782ed5 fb067a6036e14b5f996f25f4dfce45fa d9ac91ea6cb245d4b5ebffe47d782ed5--fb067a6036e14b5f996f25f4dfce45fa 0ae6ae83f45f418fb6c0eac7d32d0387 X fb067a6036e14b5f996f25f4dfce45fa--0ae6ae83f45f418fb6c0eac7d32d0387 0ae6ae83f45f418fb6c0eac7d32d0387--bbe92c9ec1174ad0ac58d23a0df485da 0ae6ae83f45f418fb6c0eac7d32d0387--19c60c42772b44d99b8c720ecf07df4c

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 adbad74dc261461a9f70945aa975e990 0 00b21e05fe2c4fe4b0752fda449edfa6 RX(phi₀) adbad74dc261461a9f70945aa975e990--00b21e05fe2c4fe4b0752fda449edfa6 12ecefe4858a42798f1df81fbf12888d 1 80f32003f1544ed48ae313ec8ab8c2cc RY(phi₃) 00b21e05fe2c4fe4b0752fda449edfa6--80f32003f1544ed48ae313ec8ab8c2cc af47d30b48a34464a35fc7b6bcf2a75f RX(phi₆) 80f32003f1544ed48ae313ec8ab8c2cc--af47d30b48a34464a35fc7b6bcf2a75f 37a9cd32b68f48c293a444644575861a af47d30b48a34464a35fc7b6bcf2a75f--37a9cd32b68f48c293a444644575861a 86a9c57989534f4c9fb4ecd283f2ceb1 37a9cd32b68f48c293a444644575861a--86a9c57989534f4c9fb4ecd283f2ceb1 bf5841b2df0c4635b75196d19e67f04c RX(phi₉) 86a9c57989534f4c9fb4ecd283f2ceb1--bf5841b2df0c4635b75196d19e67f04c 78b9ba61e31f4906a1c7a8eb05651a94 RY(phi₁₂) bf5841b2df0c4635b75196d19e67f04c--78b9ba61e31f4906a1c7a8eb05651a94 c8d3d2f91bee40f5a277508366821a2a RX(phi₁₅) 78b9ba61e31f4906a1c7a8eb05651a94--c8d3d2f91bee40f5a277508366821a2a a589e8b11f16487e91437835d7e0d7e8 c8d3d2f91bee40f5a277508366821a2a--a589e8b11f16487e91437835d7e0d7e8 3bf4993bb5f245829006e9bbf60ff411 a589e8b11f16487e91437835d7e0d7e8--3bf4993bb5f245829006e9bbf60ff411 b180c14ceec54606b13a1779c50d8dc9 3bf4993bb5f245829006e9bbf60ff411--b180c14ceec54606b13a1779c50d8dc9 4c97906be4c64118a168e4e58981f5aa e2b3dd9399144c3d9540555a96e927e3 RX(phi₁) 12ecefe4858a42798f1df81fbf12888d--e2b3dd9399144c3d9540555a96e927e3 4004acc0af1841e8a92b4c8b6508e18f 2 4ce805b1d0de48cb9894f635b9ce68b7 RY(phi₄) e2b3dd9399144c3d9540555a96e927e3--4ce805b1d0de48cb9894f635b9ce68b7 90bb0c2dcff3414a919541ecccc82f17 RX(phi₇) 4ce805b1d0de48cb9894f635b9ce68b7--90bb0c2dcff3414a919541ecccc82f17 0c9ccf4707974d2191c04fb65fe8e854 PHASE(phi_ent₀) 90bb0c2dcff3414a919541ecccc82f17--0c9ccf4707974d2191c04fb65fe8e854 0c9ccf4707974d2191c04fb65fe8e854--37a9cd32b68f48c293a444644575861a 97e82278361f4a32b2b94aa495deb557 0c9ccf4707974d2191c04fb65fe8e854--97e82278361f4a32b2b94aa495deb557 3628789889a74b5181d54e0990333693 RX(phi₁₀) 97e82278361f4a32b2b94aa495deb557--3628789889a74b5181d54e0990333693 5a5f4dd5d2c1431a84bb51f2e51f1054 RY(phi₁₃) 3628789889a74b5181d54e0990333693--5a5f4dd5d2c1431a84bb51f2e51f1054 c052d71702914fb9b7e301b318d565a3 RX(phi₁₆) 5a5f4dd5d2c1431a84bb51f2e51f1054--c052d71702914fb9b7e301b318d565a3 8f10edb366ba4cd89dbe9f387858d59d PHASE(phi_ent₂) c052d71702914fb9b7e301b318d565a3--8f10edb366ba4cd89dbe9f387858d59d 8f10edb366ba4cd89dbe9f387858d59d--a589e8b11f16487e91437835d7e0d7e8 33cf205111094a1a9fe809e6d2c82545 8f10edb366ba4cd89dbe9f387858d59d--33cf205111094a1a9fe809e6d2c82545 33cf205111094a1a9fe809e6d2c82545--4c97906be4c64118a168e4e58981f5aa ac78d6eea79947278add52a6799ad5b0 fe8265d20f564219a270a493d3071144 RX(phi₂) 4004acc0af1841e8a92b4c8b6508e18f--fe8265d20f564219a270a493d3071144 45131705e79d4578bf9cb987807d0a06 RY(phi₅) fe8265d20f564219a270a493d3071144--45131705e79d4578bf9cb987807d0a06 b0ee9a55b98e4012be1c9f89efc76405 RX(phi₈) 45131705e79d4578bf9cb987807d0a06--b0ee9a55b98e4012be1c9f89efc76405 2680c67c968f4e6b9a6ba5fb1b382524 b0ee9a55b98e4012be1c9f89efc76405--2680c67c968f4e6b9a6ba5fb1b382524 7650711225db483f9c56086778df4896 PHASE(phi_ent₁) 2680c67c968f4e6b9a6ba5fb1b382524--7650711225db483f9c56086778df4896 7650711225db483f9c56086778df4896--97e82278361f4a32b2b94aa495deb557 db08ea18850b4a7590d4661cf199026b RX(phi₁₁) 7650711225db483f9c56086778df4896--db08ea18850b4a7590d4661cf199026b 96fc19ab787a4666869dc23c8cd26aa4 RY(phi₁₄) db08ea18850b4a7590d4661cf199026b--96fc19ab787a4666869dc23c8cd26aa4 6080567b9f6e47d8b1f24712c990c42a RX(phi₁₇) 96fc19ab787a4666869dc23c8cd26aa4--6080567b9f6e47d8b1f24712c990c42a 0c25d65b9c1647f7ba6d97efb9094263 6080567b9f6e47d8b1f24712c990c42a--0c25d65b9c1647f7ba6d97efb9094263 1cacdb6c2d0b40e49581258635d0332c PHASE(phi_ent₃) 0c25d65b9c1647f7ba6d97efb9094263--1cacdb6c2d0b40e49581258635d0332c 1cacdb6c2d0b40e49581258635d0332c--33cf205111094a1a9fe809e6d2c82545 1cacdb6c2d0b40e49581258635d0332c--ac78d6eea79947278add52a6799ad5b0

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_15bb349f5cc44095a7a3e78e58cc9619 cluster_7303b30413b6446fa6670664dd66c192 e573fd9b45fc4c32a05b3aeee4e7c37e 0 0147cb73756145e88b110a3c86f7a6c5 RX(theta₀) e573fd9b45fc4c32a05b3aeee4e7c37e--0147cb73756145e88b110a3c86f7a6c5 e5dfb436558741e7b786de5740e81d1c 1 18dfaaa94871436ba6de85d2da178de8 RY(theta₃) 0147cb73756145e88b110a3c86f7a6c5--18dfaaa94871436ba6de85d2da178de8 716cead5f6c94aaca9b543495021e8b1 RX(theta₆) 18dfaaa94871436ba6de85d2da178de8--716cead5f6c94aaca9b543495021e8b1 f7172c8e4f5d4941b3d229f3c2f36f67 HamEvo 716cead5f6c94aaca9b543495021e8b1--f7172c8e4f5d4941b3d229f3c2f36f67 88fe1fb6d8964aff8c7a19c91b4f9313 RX(theta₉) f7172c8e4f5d4941b3d229f3c2f36f67--88fe1fb6d8964aff8c7a19c91b4f9313 3befe4ea746b40d6859ea0fa5ad1b83d RY(theta₁₂) 88fe1fb6d8964aff8c7a19c91b4f9313--3befe4ea746b40d6859ea0fa5ad1b83d 1fa85d3ba8c24a2da9a7f2b00c922442 RX(theta₁₅) 3befe4ea746b40d6859ea0fa5ad1b83d--1fa85d3ba8c24a2da9a7f2b00c922442 64fe6548975e42da9880e799a46735e4 HamEvo 1fa85d3ba8c24a2da9a7f2b00c922442--64fe6548975e42da9880e799a46735e4 292595dbdbd54ce290ecab770c95c46b 64fe6548975e42da9880e799a46735e4--292595dbdbd54ce290ecab770c95c46b 166b6fb724694489903006216e953ebb ccffab166ef94279b590bba11ed5e3c4 RX(theta₁) e5dfb436558741e7b786de5740e81d1c--ccffab166ef94279b590bba11ed5e3c4 58336691f3564bab88939db689c53133 2 24dea53206614ae3af7d66474d1da42d RY(theta₄) ccffab166ef94279b590bba11ed5e3c4--24dea53206614ae3af7d66474d1da42d 61f41bffb0704872a3cf8a536be37486 RX(theta₇) 24dea53206614ae3af7d66474d1da42d--61f41bffb0704872a3cf8a536be37486 ce0bd55e3e574caf9bff0e038f9f6a2f t = theta_t₀ 61f41bffb0704872a3cf8a536be37486--ce0bd55e3e574caf9bff0e038f9f6a2f 3736fe0247174e5f9244087b0b42ada5 RX(theta₁₀) ce0bd55e3e574caf9bff0e038f9f6a2f--3736fe0247174e5f9244087b0b42ada5 819cc265a5884b819dd12b7890a17c44 RY(theta₁₃) 3736fe0247174e5f9244087b0b42ada5--819cc265a5884b819dd12b7890a17c44 2d58b8c32a414ab18c110549b86a2e08 RX(theta₁₆) 819cc265a5884b819dd12b7890a17c44--2d58b8c32a414ab18c110549b86a2e08 cc60a5204f744094b95da7c7e6c638c7 t = theta_t₁ 2d58b8c32a414ab18c110549b86a2e08--cc60a5204f744094b95da7c7e6c638c7 cc60a5204f744094b95da7c7e6c638c7--166b6fb724694489903006216e953ebb e5c8dea642fe45ffa7b89251e77d92a7 c156c1a9fc76422fa6598e6612ca57a5 RX(theta₂) 58336691f3564bab88939db689c53133--c156c1a9fc76422fa6598e6612ca57a5 5e772488ea5442738c768a2f1345ef5a RY(theta₅) c156c1a9fc76422fa6598e6612ca57a5--5e772488ea5442738c768a2f1345ef5a 957a1206984240198eb23dd2d0c20c88 RX(theta₈) 5e772488ea5442738c768a2f1345ef5a--957a1206984240198eb23dd2d0c20c88 ac2266ae0422416292d912825ea55a62 957a1206984240198eb23dd2d0c20c88--ac2266ae0422416292d912825ea55a62 d8104e3c9cf34a6083b466708e0d97f0 RX(theta₁₁) ac2266ae0422416292d912825ea55a62--d8104e3c9cf34a6083b466708e0d97f0 88f9f49b6db64734afe5af5948664ec4 RY(theta₁₄) d8104e3c9cf34a6083b466708e0d97f0--88f9f49b6db64734afe5af5948664ec4 47123ad6e2db4154b520d7f249cf6340 RX(theta₁₇) 88f9f49b6db64734afe5af5948664ec4--47123ad6e2db4154b520d7f249cf6340 a2fe2366801c4b9bb1c9688b8c7727ea 47123ad6e2db4154b520d7f249cf6340--a2fe2366801c4b9bb1c9688b8c7727ea a2fe2366801c4b9bb1c9688b8c7727ea--e5c8dea642fe45ffa7b89251e77d92a7

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_a86659e65b2345b38a06ddc040a5b85c cluster_92bc43d2893b4017b857eb26f193bf3e 358636be2f53403cac88e7fb0618b109 0 090d0fa31a84414b9e937997e2d9fa1a RX(theta₀) 358636be2f53403cac88e7fb0618b109--090d0fa31a84414b9e937997e2d9fa1a 4c641342192544b7a8b855122adf60a4 1 436d2b0126b843dfbb6281c989bb9fd4 RY(theta₆) 090d0fa31a84414b9e937997e2d9fa1a--436d2b0126b843dfbb6281c989bb9fd4 9901bee042904d329890bf703a8ade98 RX(theta₁₂) 436d2b0126b843dfbb6281c989bb9fd4--9901bee042904d329890bf703a8ade98 38ac0bccb7694c1f8b2bdba4f377f43d 9901bee042904d329890bf703a8ade98--38ac0bccb7694c1f8b2bdba4f377f43d 9ce6b5d12c0d42c391179075be9a9489 RX(theta₁₈) 38ac0bccb7694c1f8b2bdba4f377f43d--9ce6b5d12c0d42c391179075be9a9489 8cb438d4cb774e9d8bf647ae693b6767 RY(theta₂₄) 9ce6b5d12c0d42c391179075be9a9489--8cb438d4cb774e9d8bf647ae693b6767 d1a59ac3cfbd40579b19ed5f4da22ab0 RX(theta₃₀) 8cb438d4cb774e9d8bf647ae693b6767--d1a59ac3cfbd40579b19ed5f4da22ab0 294e4af3394e422ba269da272dd659cd d1a59ac3cfbd40579b19ed5f4da22ab0--294e4af3394e422ba269da272dd659cd 4004d0c5f4524dddbee33c4b8c6a3214 294e4af3394e422ba269da272dd659cd--4004d0c5f4524dddbee33c4b8c6a3214 c1305571037045bab3161df449154c09 1547cea83ff94261beff3449d415a59c RX(theta₁) 4c641342192544b7a8b855122adf60a4--1547cea83ff94261beff3449d415a59c b37c2c328cc24348bb85401f64729c87 2 55effc74c483493a96436fb23ba72008 RY(theta₇) 1547cea83ff94261beff3449d415a59c--55effc74c483493a96436fb23ba72008 c164d07fec774e51a64b08540c1fae11 RX(theta₁₃) 55effc74c483493a96436fb23ba72008--c164d07fec774e51a64b08540c1fae11 c136cce710504906a77799e6b31eda0a c164d07fec774e51a64b08540c1fae11--c136cce710504906a77799e6b31eda0a bf8d6f5654dc475f95b29e3e40600f8d RX(theta₁₉) c136cce710504906a77799e6b31eda0a--bf8d6f5654dc475f95b29e3e40600f8d f1d5c596e8154dc2b50cfa0383d1d21f RY(theta₂₅) bf8d6f5654dc475f95b29e3e40600f8d--f1d5c596e8154dc2b50cfa0383d1d21f d57eedf42af14f458c617f6be5ca5a2d RX(theta₃₁) f1d5c596e8154dc2b50cfa0383d1d21f--d57eedf42af14f458c617f6be5ca5a2d 4df766f6a4c44ecba038fc81c5ce299c d57eedf42af14f458c617f6be5ca5a2d--4df766f6a4c44ecba038fc81c5ce299c 4df766f6a4c44ecba038fc81c5ce299c--c1305571037045bab3161df449154c09 d299975e53d640ecaf715cb873776757 4cd6d47f62cc465685b29e2b62429ae6 RX(theta₂) b37c2c328cc24348bb85401f64729c87--4cd6d47f62cc465685b29e2b62429ae6 b51d022a4cd549ecab29076fb5b31290 3 b57c61ef615e4905a8707dba70c07674 RY(theta₈) 4cd6d47f62cc465685b29e2b62429ae6--b57c61ef615e4905a8707dba70c07674 7f6af07fea4243b1beb4bd0a17ec36a5 RX(theta₁₄) b57c61ef615e4905a8707dba70c07674--7f6af07fea4243b1beb4bd0a17ec36a5 d965287b1ec54c528df3b6ad9e9331a1 HamEvo 7f6af07fea4243b1beb4bd0a17ec36a5--d965287b1ec54c528df3b6ad9e9331a1 d3ef7a5aaa9046639a076fe40872fecf RX(theta₂₀) d965287b1ec54c528df3b6ad9e9331a1--d3ef7a5aaa9046639a076fe40872fecf 57c385c502c74e7599d550038e5f918d RY(theta₂₆) d3ef7a5aaa9046639a076fe40872fecf--57c385c502c74e7599d550038e5f918d e10ca68cde9449f0b14458a8b4d2f7f3 RX(theta₃₂) 57c385c502c74e7599d550038e5f918d--e10ca68cde9449f0b14458a8b4d2f7f3 fa89276c15a54a3abc8d737d10ab9636 HamEvo e10ca68cde9449f0b14458a8b4d2f7f3--fa89276c15a54a3abc8d737d10ab9636 fa89276c15a54a3abc8d737d10ab9636--d299975e53d640ecaf715cb873776757 e456c1461be44b4c8ac0532ce97db053 e4262e3a0e164a6cb163d3a80fa80c8b RX(theta₃) b51d022a4cd549ecab29076fb5b31290--e4262e3a0e164a6cb163d3a80fa80c8b 4d6b24f7ff0840669827c17914baf1ac 4 4159f659dde64d1a8904186932172c96 RY(theta₉) e4262e3a0e164a6cb163d3a80fa80c8b--4159f659dde64d1a8904186932172c96 21966822c6504d4d852728d06f68e2f6 RX(theta₁₅) 4159f659dde64d1a8904186932172c96--21966822c6504d4d852728d06f68e2f6 7775fd321bbe493e8858be6f846429ce t = theta_t₀ 21966822c6504d4d852728d06f68e2f6--7775fd321bbe493e8858be6f846429ce 6c854bbacde9440f90347e380d887251 RX(theta₂₁) 7775fd321bbe493e8858be6f846429ce--6c854bbacde9440f90347e380d887251 c33268905358499cb0c78ec4f9008af3 RY(theta₂₇) 6c854bbacde9440f90347e380d887251--c33268905358499cb0c78ec4f9008af3 b6276fdb4d544985918bf7a06ae0b555 RX(theta₃₃) c33268905358499cb0c78ec4f9008af3--b6276fdb4d544985918bf7a06ae0b555 7d87937c1e764dc5a4abc71cf80b2b3a t = theta_t₁ b6276fdb4d544985918bf7a06ae0b555--7d87937c1e764dc5a4abc71cf80b2b3a 7d87937c1e764dc5a4abc71cf80b2b3a--e456c1461be44b4c8ac0532ce97db053 c5d0a59bad50443eaaf7e2c3f39fa1de d2d9cdf7a22f4298ad52626601d65b46 RX(theta₄) 4d6b24f7ff0840669827c17914baf1ac--d2d9cdf7a22f4298ad52626601d65b46 1415deb6683b4bf9b92797436a7765b2 5 a63c42b6f6e54c5fb208be19e6c08c85 RY(theta₁₀) d2d9cdf7a22f4298ad52626601d65b46--a63c42b6f6e54c5fb208be19e6c08c85 715f17c5a9e84a57b7ca6939391f8d82 RX(theta₁₆) a63c42b6f6e54c5fb208be19e6c08c85--715f17c5a9e84a57b7ca6939391f8d82 484d5157134940cc8a2a6a6c6e7ef541 715f17c5a9e84a57b7ca6939391f8d82--484d5157134940cc8a2a6a6c6e7ef541 25c69d7f50904a4fa575184303a7c70e RX(theta₂₂) 484d5157134940cc8a2a6a6c6e7ef541--25c69d7f50904a4fa575184303a7c70e 47e3da352e9246c2a598b3d7b1952b26 RY(theta₂₈) 25c69d7f50904a4fa575184303a7c70e--47e3da352e9246c2a598b3d7b1952b26 80b15ebd96c24ff5986b0e59d8cb1976 RX(theta₃₄) 47e3da352e9246c2a598b3d7b1952b26--80b15ebd96c24ff5986b0e59d8cb1976 377866f7b47a43fd86aa905553de8511 80b15ebd96c24ff5986b0e59d8cb1976--377866f7b47a43fd86aa905553de8511 377866f7b47a43fd86aa905553de8511--c5d0a59bad50443eaaf7e2c3f39fa1de ea0bc73c6935462a9d75737d559b93f8 2421b6591096455b980288d0797f3d4c RX(theta₅) 1415deb6683b4bf9b92797436a7765b2--2421b6591096455b980288d0797f3d4c ba63a2b762f94fe18438a72d0e4c2a69 RY(theta₁₁) 2421b6591096455b980288d0797f3d4c--ba63a2b762f94fe18438a72d0e4c2a69 d687a028fbc6430b9e7b1bbed47033dd RX(theta₁₇) ba63a2b762f94fe18438a72d0e4c2a69--d687a028fbc6430b9e7b1bbed47033dd e824b253d9e346e09458f63d24528892 d687a028fbc6430b9e7b1bbed47033dd--e824b253d9e346e09458f63d24528892 17ae16f4695348858d27a6e335c795b6 RX(theta₂₃) e824b253d9e346e09458f63d24528892--17ae16f4695348858d27a6e335c795b6 a942319fe4d248bb8a660ff26f1353d6 RY(theta₂₉) 17ae16f4695348858d27a6e335c795b6--a942319fe4d248bb8a660ff26f1353d6 170c56d130464e0c9be7379cb7f9316b RX(theta₃₅) a942319fe4d248bb8a660ff26f1353d6--170c56d130464e0c9be7379cb7f9316b c914685e0b28403f93c934578488c567 170c56d130464e0c9be7379cb7f9316b--c914685e0b28403f93c934578488c567 c914685e0b28403f93c934578488c567--ea0bc73c6935462a9d75737d559b93f8

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_e171823f138a4a81aae3fefcbb4c3cd9 BPMA-1 cluster_8345ee4dfaaf4ed7ad42aceb6cdbbabf BPMA-0 22d658a6126e4144ae0db373fd40ca1b 0 20d1c9d84652465187946a16f95b1900 RX(iia_α₀₀) 22d658a6126e4144ae0db373fd40ca1b--20d1c9d84652465187946a16f95b1900 c1247904454f4b4fb9a6c3e15b79f109 1 1ef4a88a27354779ab11130ef23e3507 RY(iia_α₀₃) 20d1c9d84652465187946a16f95b1900--1ef4a88a27354779ab11130ef23e3507 2732301c15fe49808cce86d86b534e3f 1ef4a88a27354779ab11130ef23e3507--2732301c15fe49808cce86d86b534e3f e1dd175c4fa145d28c5bc346c85cfa2a 2732301c15fe49808cce86d86b534e3f--e1dd175c4fa145d28c5bc346c85cfa2a 35a30d9caa3045e8b29dd44eb36b811a RX(iia_γ₀₀) e1dd175c4fa145d28c5bc346c85cfa2a--35a30d9caa3045e8b29dd44eb36b811a 23055f03dd864dafa8f7d805c456e503 35a30d9caa3045e8b29dd44eb36b811a--23055f03dd864dafa8f7d805c456e503 d7c029e279844447868451e76148c6d9 23055f03dd864dafa8f7d805c456e503--d7c029e279844447868451e76148c6d9 2d5309f3f7cd4e5484943b65949f3ec2 RY(iia_β₀₃) d7c029e279844447868451e76148c6d9--2d5309f3f7cd4e5484943b65949f3ec2 bb321e6135804966a264eeddc5f7ad4f RX(iia_β₀₀) 2d5309f3f7cd4e5484943b65949f3ec2--bb321e6135804966a264eeddc5f7ad4f e69b55c6a02d40bfb9ba3527028c516b RX(iia_α₁₀) bb321e6135804966a264eeddc5f7ad4f--e69b55c6a02d40bfb9ba3527028c516b 8bfd32518b304615a23c63362837065a RY(iia_α₁₃) e69b55c6a02d40bfb9ba3527028c516b--8bfd32518b304615a23c63362837065a de6d9ab143584e3a8eb823d1e599438c 8bfd32518b304615a23c63362837065a--de6d9ab143584e3a8eb823d1e599438c ed36b03026c14f008d735ee5cba35384 de6d9ab143584e3a8eb823d1e599438c--ed36b03026c14f008d735ee5cba35384 256e1e142ff04a3a9b48abc8ca41e4a9 RX(iia_γ₁₀) ed36b03026c14f008d735ee5cba35384--256e1e142ff04a3a9b48abc8ca41e4a9 7696070bd36d4e90bd15cc22acb519ab 256e1e142ff04a3a9b48abc8ca41e4a9--7696070bd36d4e90bd15cc22acb519ab 81eabbd49d144436bf79e1d4d9d3ebf5 7696070bd36d4e90bd15cc22acb519ab--81eabbd49d144436bf79e1d4d9d3ebf5 cad904bfa47e4b12b38ae11a53705c43 RY(iia_β₁₃) 81eabbd49d144436bf79e1d4d9d3ebf5--cad904bfa47e4b12b38ae11a53705c43 26b4fe58c7ca4762af4df705bf63f64d RX(iia_β₁₀) cad904bfa47e4b12b38ae11a53705c43--26b4fe58c7ca4762af4df705bf63f64d 994e609414fd4050a05ff17dc9419b4d 26b4fe58c7ca4762af4df705bf63f64d--994e609414fd4050a05ff17dc9419b4d 2bc7a5bcf5a44cac9a3ee8ba6712c4aa 1f00e83933d6497aa84f4b413c5eb966 RX(iia_α₀₁) c1247904454f4b4fb9a6c3e15b79f109--1f00e83933d6497aa84f4b413c5eb966 79892bccbf244e41bff2376d07c6516e 2 e6f215a307ad42768b401c034c47fc1f RY(iia_α₀₄) 1f00e83933d6497aa84f4b413c5eb966--e6f215a307ad42768b401c034c47fc1f f3d504d6f2b94ddda50b052322014e7b X e6f215a307ad42768b401c034c47fc1f--f3d504d6f2b94ddda50b052322014e7b f3d504d6f2b94ddda50b052322014e7b--2732301c15fe49808cce86d86b534e3f 9f87d5e0daf24283a86fa5a87a112412 f3d504d6f2b94ddda50b052322014e7b--9f87d5e0daf24283a86fa5a87a112412 31dea5fb964c4ad68106584bac30e693 RX(iia_γ₀₁) 9f87d5e0daf24283a86fa5a87a112412--31dea5fb964c4ad68106584bac30e693 28eee8d5bcb34ba1bc842b88c4cea981 31dea5fb964c4ad68106584bac30e693--28eee8d5bcb34ba1bc842b88c4cea981 c0275621a74d448e84c0fc81f31a902a X 28eee8d5bcb34ba1bc842b88c4cea981--c0275621a74d448e84c0fc81f31a902a c0275621a74d448e84c0fc81f31a902a--d7c029e279844447868451e76148c6d9 6da41e4fd4b24277bc7c2213c6e7010d RY(iia_β₀₄) c0275621a74d448e84c0fc81f31a902a--6da41e4fd4b24277bc7c2213c6e7010d 984ba9521b0a4ea5ade8095a00063315 RX(iia_β₀₁) 6da41e4fd4b24277bc7c2213c6e7010d--984ba9521b0a4ea5ade8095a00063315 f03016978ee8451599c4210fe9099b32 RX(iia_α₁₁) 984ba9521b0a4ea5ade8095a00063315--f03016978ee8451599c4210fe9099b32 cdee63ea983f4846b0b598bfcd486c67 RY(iia_α₁₄) f03016978ee8451599c4210fe9099b32--cdee63ea983f4846b0b598bfcd486c67 5895bf3fe9e64363a3979dd16176be17 X cdee63ea983f4846b0b598bfcd486c67--5895bf3fe9e64363a3979dd16176be17 5895bf3fe9e64363a3979dd16176be17--de6d9ab143584e3a8eb823d1e599438c cd53717cf3eb479baa37942fee610393 5895bf3fe9e64363a3979dd16176be17--cd53717cf3eb479baa37942fee610393 a5ec41df37c84ceca0f5de2886614307 RX(iia_γ₁₁) cd53717cf3eb479baa37942fee610393--a5ec41df37c84ceca0f5de2886614307 558f2554fd454a098c10604a8b2bd5e5 a5ec41df37c84ceca0f5de2886614307--558f2554fd454a098c10604a8b2bd5e5 e82bcb41c12041a99ff0ba9765e2e51d X 558f2554fd454a098c10604a8b2bd5e5--e82bcb41c12041a99ff0ba9765e2e51d e82bcb41c12041a99ff0ba9765e2e51d--81eabbd49d144436bf79e1d4d9d3ebf5 178055beeca54218a92ee7dc4d5e01f0 RY(iia_β₁₄) e82bcb41c12041a99ff0ba9765e2e51d--178055beeca54218a92ee7dc4d5e01f0 017aadec6b9348aba5d32fc662248411 RX(iia_β₁₁) 178055beeca54218a92ee7dc4d5e01f0--017aadec6b9348aba5d32fc662248411 017aadec6b9348aba5d32fc662248411--2bc7a5bcf5a44cac9a3ee8ba6712c4aa 31e0da3015e943bb9e4725a45a5f4e47 68bf3856d54242b39a447d226c67c8af RX(iia_α₀₂) 79892bccbf244e41bff2376d07c6516e--68bf3856d54242b39a447d226c67c8af 375f1edcb1794194be5d7ea61023532d RY(iia_α₀₅) 68bf3856d54242b39a447d226c67c8af--375f1edcb1794194be5d7ea61023532d dfde548153ec4033a8fc7048327a2b93 375f1edcb1794194be5d7ea61023532d--dfde548153ec4033a8fc7048327a2b93 989171c930c5406083c3395f74db6002 X dfde548153ec4033a8fc7048327a2b93--989171c930c5406083c3395f74db6002 989171c930c5406083c3395f74db6002--9f87d5e0daf24283a86fa5a87a112412 e1d19373b5cb454b9030c342fd8deb40 RX(iia_γ₀₂) 989171c930c5406083c3395f74db6002--e1d19373b5cb454b9030c342fd8deb40 49f8fc51ba6148749428275ee689218a X e1d19373b5cb454b9030c342fd8deb40--49f8fc51ba6148749428275ee689218a 49f8fc51ba6148749428275ee689218a--28eee8d5bcb34ba1bc842b88c4cea981 07c4c12d493749ee94dba05e007b01b4 49f8fc51ba6148749428275ee689218a--07c4c12d493749ee94dba05e007b01b4 d5b22359c1f1430dbecd589298d1ac83 RY(iia_β₀₅) 07c4c12d493749ee94dba05e007b01b4--d5b22359c1f1430dbecd589298d1ac83 6090eb0dc49c4d96a1f19d598fa431fb RX(iia_β₀₂) d5b22359c1f1430dbecd589298d1ac83--6090eb0dc49c4d96a1f19d598fa431fb 19e2133af4bb4254a3d37e66cf5a990e RX(iia_α₁₂) 6090eb0dc49c4d96a1f19d598fa431fb--19e2133af4bb4254a3d37e66cf5a990e 62631f16164e4bde85122d2ee44cd2eb RY(iia_α₁₅) 19e2133af4bb4254a3d37e66cf5a990e--62631f16164e4bde85122d2ee44cd2eb b1a31528a4164a70aeeb53e149508914 62631f16164e4bde85122d2ee44cd2eb--b1a31528a4164a70aeeb53e149508914 2127f1d7d31a497b9e06ce9807bafd3c X b1a31528a4164a70aeeb53e149508914--2127f1d7d31a497b9e06ce9807bafd3c 2127f1d7d31a497b9e06ce9807bafd3c--cd53717cf3eb479baa37942fee610393 154236c0d34d4216a9b905b811cd46a1 RX(iia_γ₁₂) 2127f1d7d31a497b9e06ce9807bafd3c--154236c0d34d4216a9b905b811cd46a1 6de469a4537d4c5cae2e56bfb4bde3b0 X 154236c0d34d4216a9b905b811cd46a1--6de469a4537d4c5cae2e56bfb4bde3b0 6de469a4537d4c5cae2e56bfb4bde3b0--558f2554fd454a098c10604a8b2bd5e5 a01414595cca4e919c7167a5af634ad3 6de469a4537d4c5cae2e56bfb4bde3b0--a01414595cca4e919c7167a5af634ad3 e2bc4f2a01ce4fa1b99039af54b9d4a8 RY(iia_β₁₅) a01414595cca4e919c7167a5af634ad3--e2bc4f2a01ce4fa1b99039af54b9d4a8 b4ff9a96a25a4e7fb923db697c5d14ad RX(iia_β₁₂) e2bc4f2a01ce4fa1b99039af54b9d4a8--b4ff9a96a25a4e7fb923db697c5d14ad b4ff9a96a25a4e7fb923db697c5d14ad--31e0da3015e943bb9e4725a45a5f4e47