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_a27798dba7104505a341d8ef03c29b81 Constant Chebyshev FM cluster_d7957920b1d54db18ed089caf5ac0d66 Constant Fourier FM 9875f751569b466790fdbbdbe53d421f 0 1c2700c79dcc4182a4fab7c5c781ecf1 RX(phi) 9875f751569b466790fdbbdbe53d421f--1c2700c79dcc4182a4fab7c5c781ecf1 81c72f8bcf454ce1883184a84305c916 1 7a05717d7a2d43ee80f53921145958a5 RX(acos(phi)) 1c2700c79dcc4182a4fab7c5c781ecf1--7a05717d7a2d43ee80f53921145958a5 9d1d72a4702c4ca2babb86f076143625 7a05717d7a2d43ee80f53921145958a5--9d1d72a4702c4ca2babb86f076143625 9848f1502fdf4727b5b39459ff7636df 11ba31855cff41fc96fe6a9f899b48be RX(phi) 81c72f8bcf454ce1883184a84305c916--11ba31855cff41fc96fe6a9f899b48be 5c23ab225d2f48f2aa7b9a0b44e01337 2 e5f3943a28e54f889fd5ea1a25136fa4 RX(acos(phi)) 11ba31855cff41fc96fe6a9f899b48be--e5f3943a28e54f889fd5ea1a25136fa4 e5f3943a28e54f889fd5ea1a25136fa4--9848f1502fdf4727b5b39459ff7636df 44cb40b9705d41cd9b068c6150bbea8c 9f74a67345aa42509fdef17fd91c4e8d RX(phi) 5c23ab225d2f48f2aa7b9a0b44e01337--9f74a67345aa42509fdef17fd91c4e8d ea97cd717f2943bebe9188c5561f298d RX(acos(phi)) 9f74a67345aa42509fdef17fd91c4e8d--ea97cd717f2943bebe9188c5561f298d ea97cd717f2943bebe9188c5561f298d--44cb40b9705d41cd9b068c6150bbea8c

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_cd560fda7e784161bfafa2dfa910ff63 Constant <function custom_fn at 0x7f2769d217e0> FM cluster_19f468f0f8654d608593b60156d7523b Constant asin FM 93a00bd066da4875ab44abf8ef01884a 0 a6994f5371284bdf8475afbb9b6ca46f RX(asin(phi)) 93a00bd066da4875ab44abf8ef01884a--a6994f5371284bdf8475afbb9b6ca46f b9c4e837976f451ab5c33add4683ad36 1 0e8b8ad68f484d35b0c7036cf2236965 RX(phi**2 + asin(phi)) a6994f5371284bdf8475afbb9b6ca46f--0e8b8ad68f484d35b0c7036cf2236965 060423e2b773419895bb127cf5deae1a 0e8b8ad68f484d35b0c7036cf2236965--060423e2b773419895bb127cf5deae1a 11f93c45d1f7408db1249314926b0be0 f515efe5e59d4290a1a6f3c9ef8babb0 RX(asin(phi)) b9c4e837976f451ab5c33add4683ad36--f515efe5e59d4290a1a6f3c9ef8babb0 faddade6c5e94e15adc207ea0aa62aef 2 c7f79e4672b2472a847b6de355976008 RX(phi**2 + asin(phi)) f515efe5e59d4290a1a6f3c9ef8babb0--c7f79e4672b2472a847b6de355976008 c7f79e4672b2472a847b6de355976008--11f93c45d1f7408db1249314926b0be0 9dbdc63897874129b3a626d4ff4beeac cccb213d7bd34f318d50cfd897ceaf09 RX(asin(phi)) faddade6c5e94e15adc207ea0aa62aef--cccb213d7bd34f318d50cfd897ceaf09 2ac4697624e148fa80e75e98451b39eb RX(phi**2 + asin(phi)) cccb213d7bd34f318d50cfd897ceaf09--2ac4697624e148fa80e75e98451b39eb 2ac4697624e148fa80e75e98451b39eb--9dbdc63897874129b3a626d4ff4beeac

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_b462c58b69d04643b5ced482d76f26ed Exponential Fourier FM cluster_b4c62f6494ac45688e5447f6a0931046 Constant Fourier FM cluster_1362f26494ae43c296d09b54939619d0 Tower Fourier FM 385db09942eb45d48a0158c09c33ff0a 0 680660348acf4eaeaf1767b6fa3bdbbd RX(phi) 385db09942eb45d48a0158c09c33ff0a--680660348acf4eaeaf1767b6fa3bdbbd f8952bf9c71f4b03a94fa7f589437fca 1 2dd56a3e065f47cbb697d33c3ab2b16a RX(1.0*phi) 680660348acf4eaeaf1767b6fa3bdbbd--2dd56a3e065f47cbb697d33c3ab2b16a 6c47a1e9de9f487facc838a0b9919218 RX(1.0*phi) 2dd56a3e065f47cbb697d33c3ab2b16a--6c47a1e9de9f487facc838a0b9919218 389293634e354716a7f31cd360400f0c 6c47a1e9de9f487facc838a0b9919218--389293634e354716a7f31cd360400f0c 0d962b34223743ba9ff37cce1bc116e1 977f059aec0544ab90ee6bb080cd2a1b RX(phi) f8952bf9c71f4b03a94fa7f589437fca--977f059aec0544ab90ee6bb080cd2a1b 5b2971a6ada04401aa96d2e7353681bb 2 6446102d4f13457aad20fdaf022d9002 RX(2.0*phi) 977f059aec0544ab90ee6bb080cd2a1b--6446102d4f13457aad20fdaf022d9002 58532a970c864cd493b077cbccec1280 RX(2.0*phi) 6446102d4f13457aad20fdaf022d9002--58532a970c864cd493b077cbccec1280 58532a970c864cd493b077cbccec1280--0d962b34223743ba9ff37cce1bc116e1 26c93f4c73484f258a5dae4e57a0e3f0 6c6c93574890414a843840fa7af0e31a RX(phi) 5b2971a6ada04401aa96d2e7353681bb--6c6c93574890414a843840fa7af0e31a a6db431d7d7f414b9ec55064e17c629d 3 09e82ae5ae5547a6b95ab07e6ce9e89a RX(3.0*phi) 6c6c93574890414a843840fa7af0e31a--09e82ae5ae5547a6b95ab07e6ce9e89a 04a2bbca93bd439d8d4cb9bc517de901 RX(4.0*phi) 09e82ae5ae5547a6b95ab07e6ce9e89a--04a2bbca93bd439d8d4cb9bc517de901 04a2bbca93bd439d8d4cb9bc517de901--26c93f4c73484f258a5dae4e57a0e3f0 a8d5dbc9d4f548d4a477b6e3df6a30f3 e1a5f663a1034eee90943a70d9370385 RX(phi) a6db431d7d7f414b9ec55064e17c629d--e1a5f663a1034eee90943a70d9370385 fc9cce24b6a94b959801eb30ae53100c 4 f1059790cc974c008f05f033aac2bc4b RX(4.0*phi) e1a5f663a1034eee90943a70d9370385--f1059790cc974c008f05f033aac2bc4b 4d7fa27f0c01405f9f6ca22d21df1c51 RX(8.0*phi) f1059790cc974c008f05f033aac2bc4b--4d7fa27f0c01405f9f6ca22d21df1c51 4d7fa27f0c01405f9f6ca22d21df1c51--a8d5dbc9d4f548d4a477b6e3df6a30f3 3eb9d3beae6a4ac48b4e799169d8f5d7 8a28b34db545430c977eeade99d9c130 RX(phi) fc9cce24b6a94b959801eb30ae53100c--8a28b34db545430c977eeade99d9c130 ad648cd8c6cd49f2b3f2a57f37dd84cd RX(5.0*phi) 8a28b34db545430c977eeade99d9c130--ad648cd8c6cd49f2b3f2a57f37dd84cd 7002bfa225b44d97a5c1a09768c656c6 RX(16.0*phi) ad648cd8c6cd49f2b3f2a57f37dd84cd--7002bfa225b44d97a5c1a09768c656c6 7002bfa225b44d97a5c1a09768c656c6--3eb9d3beae6a4ac48b4e799169d8f5d7

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 8f0c8e24ea7940e6b3d2cc079737324a 0 6a92b89242474f2b82598eb678f49141 RX(1.0*acos(phi)) 8f0c8e24ea7940e6b3d2cc079737324a--6a92b89242474f2b82598eb678f49141 8176e304af82419db15e371034d020bf 1 53c604de32f744ef897a3091b4667574 6a92b89242474f2b82598eb678f49141--53c604de32f744ef897a3091b4667574 040bc85c12d44bd1ba78a07d7a549854 d43445bb642a4d9999d3f9de4ff69e1a RX(1.414*acos(phi)) 8176e304af82419db15e371034d020bf--d43445bb642a4d9999d3f9de4ff69e1a fad897f57f504206a2a234cba56cd653 2 d43445bb642a4d9999d3f9de4ff69e1a--040bc85c12d44bd1ba78a07d7a549854 84857a8c691a45029ddb70ee1148b66c c442bc65b7164b83ade5800e8bc652f8 RX(1.732*acos(phi)) fad897f57f504206a2a234cba56cd653--c442bc65b7164b83ade5800e8bc652f8 3715f574f0134efc81be5ab5494d1be6 3 c442bc65b7164b83ade5800e8bc652f8--84857a8c691a45029ddb70ee1148b66c be80c872e3c745f4b44e4f9a0665f0a4 413392458f8a47fa9999163517240297 RX(2.0*acos(phi)) 3715f574f0134efc81be5ab5494d1be6--413392458f8a47fa9999163517240297 ad78836c264641fd8a9d67fbe640f7aa 4 413392458f8a47fa9999163517240297--be80c872e3c745f4b44e4f9a0665f0a4 1ed4e947546e40a4aee07d54aa249e82 0e4c6ddfb2ba4d83949d309eb7488e84 RX(2.236*acos(phi)) ad78836c264641fd8a9d67fbe640f7aa--0e4c6ddfb2ba4d83949d309eb7488e84 0e4c6ddfb2ba4d83949d309eb7488e84--1ed4e947546e40a4aee07d54aa249e82

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 52a4b39a19a44faf9ced7780fd914628 0 c1af6e59796043dbb8896a61b4f3a45a RX(1.0*phi*w₀) 52a4b39a19a44faf9ced7780fd914628--c1af6e59796043dbb8896a61b4f3a45a 32d88db0069d40329b2ade5c48267a3e 1 bded54e0c3d149cf8c2020c56e2141d1 c1af6e59796043dbb8896a61b4f3a45a--bded54e0c3d149cf8c2020c56e2141d1 d868f92923e1418694dca8f8839f5a83 3af831cc12b84a119b051b19d3dc34dc RX(2.0*phi*w₁) 32d88db0069d40329b2ade5c48267a3e--3af831cc12b84a119b051b19d3dc34dc 677a780708d2455b8f6eab73768449e9 2 3af831cc12b84a119b051b19d3dc34dc--d868f92923e1418694dca8f8839f5a83 bf163e6e35ef4b05a5215aed3ad90a9b 2b71f66b8fe748a2bd30ea7afdf5b5e5 RX(4.0*phi*w₂) 677a780708d2455b8f6eab73768449e9--2b71f66b8fe748a2bd30ea7afdf5b5e5 95986be1b2e341d9819084237871f657 3 2b71f66b8fe748a2bd30ea7afdf5b5e5--bf163e6e35ef4b05a5215aed3ad90a9b e6f87354f78f4b23a680ef61648029fb e2aa8fb712b740ac952f9ca3acff0599 RX(8.0*phi*w₃) 95986be1b2e341d9819084237871f657--e2aa8fb712b740ac952f9ca3acff0599 30c2c057f8394c19a902b593528a2f03 4 e2aa8fb712b740ac952f9ca3acff0599--e6f87354f78f4b23a680ef61648029fb ca384fbda11748939cd6a69b43e9a602 08e02b3067d949c8b3ad9a041cb2a413 RX(16.0*phi*w₄) 30c2c057f8394c19a902b593528a2f03--08e02b3067d949c8b3ad9a041cb2a413 08e02b3067d949c8b3ad9a041cb2a413--ca384fbda11748939cd6a69b43e9a602

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 9ead2eca855947019261bf50b6c2700e 0 0ce41046ccb248b8b19fcc146e613558 RY(80.0*acos(w₄*(0.667*x + 1.667))) 9ead2eca855947019261bf50b6c2700e--0ce41046ccb248b8b19fcc146e613558 388c750b73ef43f6b913567658a4b8e3 1 2266997e74f54d4b81cbd9013e1254e8 0ce41046ccb248b8b19fcc146e613558--2266997e74f54d4b81cbd9013e1254e8 754603a83fa345009a29c1ad11da8a45 4b3cfa493d644bcaa58b10f72e4d65c6 RY(40.0*acos(w₃*(0.667*x + 1.667))) 388c750b73ef43f6b913567658a4b8e3--4b3cfa493d644bcaa58b10f72e4d65c6 1d4137e3ba6f4f1bbe5145819bb34685 2 4b3cfa493d644bcaa58b10f72e4d65c6--754603a83fa345009a29c1ad11da8a45 9e670e12f307417c9f06033d1215c818 f1ff8d17ee21437fa0b5a62aafd6099a RY(20.0*acos(w₂*(0.667*x + 1.667))) 1d4137e3ba6f4f1bbe5145819bb34685--f1ff8d17ee21437fa0b5a62aafd6099a 793010b8deb849cd862d86ef60b28b5b 3 f1ff8d17ee21437fa0b5a62aafd6099a--9e670e12f307417c9f06033d1215c818 60f2f69a21e841db982b7e26f42195be 613145d006d14d829635525ff438d60e RY(10.0*acos(w₁*(0.667*x + 1.667))) 793010b8deb849cd862d86ef60b28b5b--613145d006d14d829635525ff438d60e bf02d8f697e34a92b871ed210a737264 4 613145d006d14d829635525ff438d60e--60f2f69a21e841db982b7e26f42195be 2f39aad1a8d4416798a636912c81f93d 5c75c7e0d57d44698fbe4b8eb500113c RY(5.0*acos(w₀*(0.667*x + 1.667))) bf02d8f697e34a92b871ed210a737264--5c75c7e0d57d44698fbe4b8eb500113c 5c75c7e0d57d44698fbe4b8eb500113c--2f39aad1a8d4416798a636912c81f93d

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 27ef1f0c44d54286815d1b499168fff5 0 56f0f1d879a74977baf2fa4514e36331 RX(theta₀) 27ef1f0c44d54286815d1b499168fff5--56f0f1d879a74977baf2fa4514e36331 3f0848228cf14c839ce63ef1405d8639 1 981954c726db4774a3399331af8fd90f RY(theta₃) 56f0f1d879a74977baf2fa4514e36331--981954c726db4774a3399331af8fd90f 842639d698844f0db10a4f8daadd9606 RX(theta₆) 981954c726db4774a3399331af8fd90f--842639d698844f0db10a4f8daadd9606 8127dbf931e9473dbe01edc06aa4a061 842639d698844f0db10a4f8daadd9606--8127dbf931e9473dbe01edc06aa4a061 328c0ce4ee8c42e193c8f087fcb51d97 8127dbf931e9473dbe01edc06aa4a061--328c0ce4ee8c42e193c8f087fcb51d97 3172f960160045bd85460610bbe59fbe RX(theta₉) 328c0ce4ee8c42e193c8f087fcb51d97--3172f960160045bd85460610bbe59fbe 0973e7e475644e7c91295ca0bb636295 RY(theta₁₂) 3172f960160045bd85460610bbe59fbe--0973e7e475644e7c91295ca0bb636295 5eabc02b3ee946bf9de8a73c503453d2 RX(theta₁₅) 0973e7e475644e7c91295ca0bb636295--5eabc02b3ee946bf9de8a73c503453d2 a9524a5e54e9441e8c75fe7a64053d72 5eabc02b3ee946bf9de8a73c503453d2--a9524a5e54e9441e8c75fe7a64053d72 496b98892f4940feba6e93455ae1581f a9524a5e54e9441e8c75fe7a64053d72--496b98892f4940feba6e93455ae1581f e496f6051a1c452cb2bc9b6b4cb7f931 496b98892f4940feba6e93455ae1581f--e496f6051a1c452cb2bc9b6b4cb7f931 a3a176851efa49269820c5f3f26b5f73 4870229eac17434f9c19536da8bcbb46 RX(theta₁) 3f0848228cf14c839ce63ef1405d8639--4870229eac17434f9c19536da8bcbb46 4805b73100694923b04ce9dda3ccb66e 2 0a237d3fa61648a0ae55f9c31d21b6ba RY(theta₄) 4870229eac17434f9c19536da8bcbb46--0a237d3fa61648a0ae55f9c31d21b6ba 395593bb581044a8bf3017a04dc7b417 RX(theta₇) 0a237d3fa61648a0ae55f9c31d21b6ba--395593bb581044a8bf3017a04dc7b417 3de21946bdb3435ea562f20e83d09fe6 X 395593bb581044a8bf3017a04dc7b417--3de21946bdb3435ea562f20e83d09fe6 3de21946bdb3435ea562f20e83d09fe6--8127dbf931e9473dbe01edc06aa4a061 c9c56862cbbe41e6be4ee860ca1f1fb5 3de21946bdb3435ea562f20e83d09fe6--c9c56862cbbe41e6be4ee860ca1f1fb5 015855a09d404532b9132f1978f583f3 RX(theta₁₀) c9c56862cbbe41e6be4ee860ca1f1fb5--015855a09d404532b9132f1978f583f3 47ce484260434b8d9b7387b9c57c84e0 RY(theta₁₃) 015855a09d404532b9132f1978f583f3--47ce484260434b8d9b7387b9c57c84e0 c09928a9e3d6454d89281f1896df9da4 RX(theta₁₆) 47ce484260434b8d9b7387b9c57c84e0--c09928a9e3d6454d89281f1896df9da4 d95d10715a2148cf822369c9fd574414 X c09928a9e3d6454d89281f1896df9da4--d95d10715a2148cf822369c9fd574414 d95d10715a2148cf822369c9fd574414--a9524a5e54e9441e8c75fe7a64053d72 8d3f1e87e6a5419ab264bd8e955b1bed d95d10715a2148cf822369c9fd574414--8d3f1e87e6a5419ab264bd8e955b1bed 8d3f1e87e6a5419ab264bd8e955b1bed--a3a176851efa49269820c5f3f26b5f73 1f63499e53084c4fa175a6bd0c0218dc 9631c5fd7188468783456a1b07352d57 RX(theta₂) 4805b73100694923b04ce9dda3ccb66e--9631c5fd7188468783456a1b07352d57 30699d4503af4d6385e63aebdeee8133 RY(theta₅) 9631c5fd7188468783456a1b07352d57--30699d4503af4d6385e63aebdeee8133 80f9b00f400e44349ed85ed97017b93b RX(theta₈) 30699d4503af4d6385e63aebdeee8133--80f9b00f400e44349ed85ed97017b93b fc55807f62ea4d1fbd80dd900900d371 80f9b00f400e44349ed85ed97017b93b--fc55807f62ea4d1fbd80dd900900d371 4090e6a2fa044ed784a297625bea2bd3 X fc55807f62ea4d1fbd80dd900900d371--4090e6a2fa044ed784a297625bea2bd3 4090e6a2fa044ed784a297625bea2bd3--c9c56862cbbe41e6be4ee860ca1f1fb5 db91e2282e954e508f46df551f871868 RX(theta₁₁) 4090e6a2fa044ed784a297625bea2bd3--db91e2282e954e508f46df551f871868 a1106b9ac9584eb5955e087ccf5a3a11 RY(theta₁₄) db91e2282e954e508f46df551f871868--a1106b9ac9584eb5955e087ccf5a3a11 301f3af0e40c47abb713f9ad41d33a62 RX(theta₁₇) a1106b9ac9584eb5955e087ccf5a3a11--301f3af0e40c47abb713f9ad41d33a62 da2aaa12ec114694ba838adff1af511e 301f3af0e40c47abb713f9ad41d33a62--da2aaa12ec114694ba838adff1af511e fd7d6f09e20c4e45ae9d314176f2de0d X da2aaa12ec114694ba838adff1af511e--fd7d6f09e20c4e45ae9d314176f2de0d fd7d6f09e20c4e45ae9d314176f2de0d--8d3f1e87e6a5419ab264bd8e955b1bed fd7d6f09e20c4e45ae9d314176f2de0d--1f63499e53084c4fa175a6bd0c0218dc

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 7f8891d2c854440081dbce8f81592233 0 c31b9b5d98f848ddbd77f67d11715117 RX(phi₀) 7f8891d2c854440081dbce8f81592233--c31b9b5d98f848ddbd77f67d11715117 bb51301841e64e14a296a776b443373f 1 d1165a4bd7a14eedb726c20e253859cb RY(phi₃) c31b9b5d98f848ddbd77f67d11715117--d1165a4bd7a14eedb726c20e253859cb 190f481e8ad944e29e3f91497e98cd80 RX(phi₆) d1165a4bd7a14eedb726c20e253859cb--190f481e8ad944e29e3f91497e98cd80 c9bf8daab9214dabad56eb609737b78a 190f481e8ad944e29e3f91497e98cd80--c9bf8daab9214dabad56eb609737b78a 3dd98176ac7548dcbe1ebb49970fdb9a c9bf8daab9214dabad56eb609737b78a--3dd98176ac7548dcbe1ebb49970fdb9a 2556ddcb6cdd4aaba998b7e2174967be RX(phi₉) 3dd98176ac7548dcbe1ebb49970fdb9a--2556ddcb6cdd4aaba998b7e2174967be a8c52ae0f56c437f81b2870ebe86e29b RY(phi₁₂) 2556ddcb6cdd4aaba998b7e2174967be--a8c52ae0f56c437f81b2870ebe86e29b 1a6287d5296c4743810d3bf6b2ec3090 RX(phi₁₅) a8c52ae0f56c437f81b2870ebe86e29b--1a6287d5296c4743810d3bf6b2ec3090 d2350ad252094c4c8c147cc8155a8bf8 1a6287d5296c4743810d3bf6b2ec3090--d2350ad252094c4c8c147cc8155a8bf8 2d6f028f8e094146ae764fbde878d95d d2350ad252094c4c8c147cc8155a8bf8--2d6f028f8e094146ae764fbde878d95d 2102654c68ae42fe9c5798bb7ea8a449 2d6f028f8e094146ae764fbde878d95d--2102654c68ae42fe9c5798bb7ea8a449 0546ce0e807d497b8f005276c0399ee5 7c4cab7b951d4bbc9be7960bf05f3c5e RX(phi₁) bb51301841e64e14a296a776b443373f--7c4cab7b951d4bbc9be7960bf05f3c5e 39afcf94de8044e4b57aeb71259ab00a 2 84878b73f33549df98cc1a28754eff96 RY(phi₄) 7c4cab7b951d4bbc9be7960bf05f3c5e--84878b73f33549df98cc1a28754eff96 e2255bf7acec4e3f8aee41dea5090514 RX(phi₇) 84878b73f33549df98cc1a28754eff96--e2255bf7acec4e3f8aee41dea5090514 a70c4f5dcfba450191b1da21919e579e PHASE(phi_ent₀) e2255bf7acec4e3f8aee41dea5090514--a70c4f5dcfba450191b1da21919e579e a70c4f5dcfba450191b1da21919e579e--c9bf8daab9214dabad56eb609737b78a 2682610e8c234712b2277ab5de68fa2b a70c4f5dcfba450191b1da21919e579e--2682610e8c234712b2277ab5de68fa2b 582ac989687c4949ae3f597df3432521 RX(phi₁₀) 2682610e8c234712b2277ab5de68fa2b--582ac989687c4949ae3f597df3432521 a0c36f65b30c42b59f701f563602c45b RY(phi₁₃) 582ac989687c4949ae3f597df3432521--a0c36f65b30c42b59f701f563602c45b fd6388e469de4dd98070b2ca9c4dc4de RX(phi₁₆) a0c36f65b30c42b59f701f563602c45b--fd6388e469de4dd98070b2ca9c4dc4de e3113c6eb0bc464e9c513f26377c936d PHASE(phi_ent₂) fd6388e469de4dd98070b2ca9c4dc4de--e3113c6eb0bc464e9c513f26377c936d e3113c6eb0bc464e9c513f26377c936d--d2350ad252094c4c8c147cc8155a8bf8 2ece10b65f3b4d978b754747158a618b e3113c6eb0bc464e9c513f26377c936d--2ece10b65f3b4d978b754747158a618b 2ece10b65f3b4d978b754747158a618b--0546ce0e807d497b8f005276c0399ee5 a68577ed278749c784c3fe8a56d0752f 03ad4f3c697f4223a2c9f06365fabb8c RX(phi₂) 39afcf94de8044e4b57aeb71259ab00a--03ad4f3c697f4223a2c9f06365fabb8c f37875272250470a98537c952daeae97 RY(phi₅) 03ad4f3c697f4223a2c9f06365fabb8c--f37875272250470a98537c952daeae97 9cb16f9560cf48f39a4d0ed66bddbe8f RX(phi₈) f37875272250470a98537c952daeae97--9cb16f9560cf48f39a4d0ed66bddbe8f 33b4cac0fd984731ba926703c6aed6dd 9cb16f9560cf48f39a4d0ed66bddbe8f--33b4cac0fd984731ba926703c6aed6dd 056b1dd3988540f398b45d39cc077b29 PHASE(phi_ent₁) 33b4cac0fd984731ba926703c6aed6dd--056b1dd3988540f398b45d39cc077b29 056b1dd3988540f398b45d39cc077b29--2682610e8c234712b2277ab5de68fa2b 96a520a5d48948f1bcc07d82c1854f36 RX(phi₁₁) 056b1dd3988540f398b45d39cc077b29--96a520a5d48948f1bcc07d82c1854f36 2497ee9b325b49cab5f43e8a6f676f8a RY(phi₁₄) 96a520a5d48948f1bcc07d82c1854f36--2497ee9b325b49cab5f43e8a6f676f8a 09aea1f2b7ca43d8a862c64d34c69b88 RX(phi₁₇) 2497ee9b325b49cab5f43e8a6f676f8a--09aea1f2b7ca43d8a862c64d34c69b88 f817b3d3d6f34479b3831b65f8653052 09aea1f2b7ca43d8a862c64d34c69b88--f817b3d3d6f34479b3831b65f8653052 3897ce5affc24e1a8d6bd8ecbc408acd PHASE(phi_ent₃) f817b3d3d6f34479b3831b65f8653052--3897ce5affc24e1a8d6bd8ecbc408acd 3897ce5affc24e1a8d6bd8ecbc408acd--2ece10b65f3b4d978b754747158a618b 3897ce5affc24e1a8d6bd8ecbc408acd--a68577ed278749c784c3fe8a56d0752f

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_52c13ce0296a4e6d891a777131d0f128 cluster_b22b0038d8db4d9b97ff8c9ec7664443 7abe08b517d1430aa54c7d153d0165d9 0 8050c8e6809a45bc8d7c9d76e9b8fae4 RX(theta₀) 7abe08b517d1430aa54c7d153d0165d9--8050c8e6809a45bc8d7c9d76e9b8fae4 d36495091e724272bc90c850f7113faa 1 5fe8725078954b7989c40fc17c28cd05 RY(theta₃) 8050c8e6809a45bc8d7c9d76e9b8fae4--5fe8725078954b7989c40fc17c28cd05 a249f5459cd8458d830f4dfdbc2f543d RX(theta₆) 5fe8725078954b7989c40fc17c28cd05--a249f5459cd8458d830f4dfdbc2f543d 294b3fdd99e94dad8c4805105615d04f HamEvo a249f5459cd8458d830f4dfdbc2f543d--294b3fdd99e94dad8c4805105615d04f 18fecc05bc404f478bc2d67b15dec1c0 RX(theta₉) 294b3fdd99e94dad8c4805105615d04f--18fecc05bc404f478bc2d67b15dec1c0 c7f1d00aaba94247ad0050ba185aef1c RY(theta₁₂) 18fecc05bc404f478bc2d67b15dec1c0--c7f1d00aaba94247ad0050ba185aef1c 43ed3703a5294f7d960390750cd109fb RX(theta₁₅) c7f1d00aaba94247ad0050ba185aef1c--43ed3703a5294f7d960390750cd109fb 1d5b7e2a51514e14876a637a9fbba32d HamEvo 43ed3703a5294f7d960390750cd109fb--1d5b7e2a51514e14876a637a9fbba32d 0633023131e442a8bc6afd18c4b266ad 1d5b7e2a51514e14876a637a9fbba32d--0633023131e442a8bc6afd18c4b266ad c95d97f4aad640e9a2830543c541d849 194112b4f338461e9a5a301362161da2 RX(theta₁) d36495091e724272bc90c850f7113faa--194112b4f338461e9a5a301362161da2 09913546b1264fa1ace97d25fa1ef704 2 3dfd1ef662754a6b9eab6820e802ec0b RY(theta₄) 194112b4f338461e9a5a301362161da2--3dfd1ef662754a6b9eab6820e802ec0b d204ba6ea62749adad932efc49e3b862 RX(theta₇) 3dfd1ef662754a6b9eab6820e802ec0b--d204ba6ea62749adad932efc49e3b862 b9f2c9c0e79e4ec7a24cb83cfb6f7ba7 t = theta_t₀ d204ba6ea62749adad932efc49e3b862--b9f2c9c0e79e4ec7a24cb83cfb6f7ba7 f7c93f70e9574d8189c8b9530da0f587 RX(theta₁₀) b9f2c9c0e79e4ec7a24cb83cfb6f7ba7--f7c93f70e9574d8189c8b9530da0f587 6a14667a510344859550e38b0265353f RY(theta₁₃) f7c93f70e9574d8189c8b9530da0f587--6a14667a510344859550e38b0265353f 91d4b8c6339b4c879ffe866642c4fbc2 RX(theta₁₆) 6a14667a510344859550e38b0265353f--91d4b8c6339b4c879ffe866642c4fbc2 e1711ade7af3446b9f880095c3ad921b t = theta_t₁ 91d4b8c6339b4c879ffe866642c4fbc2--e1711ade7af3446b9f880095c3ad921b e1711ade7af3446b9f880095c3ad921b--c95d97f4aad640e9a2830543c541d849 1f1f8459cd7448678b8a8c27409fe51b eb908cf246e148be825c303d4adb65ab RX(theta₂) 09913546b1264fa1ace97d25fa1ef704--eb908cf246e148be825c303d4adb65ab 89e5d117b7e248118850656076e90dbb RY(theta₅) eb908cf246e148be825c303d4adb65ab--89e5d117b7e248118850656076e90dbb 25a5863c776c4fd4a572d23b68befb7a RX(theta₈) 89e5d117b7e248118850656076e90dbb--25a5863c776c4fd4a572d23b68befb7a 20f6d776266442efb35ad1273bf9b0ff 25a5863c776c4fd4a572d23b68befb7a--20f6d776266442efb35ad1273bf9b0ff d6b0e9d0ffcb404eb8b9748bc217e815 RX(theta₁₁) 20f6d776266442efb35ad1273bf9b0ff--d6b0e9d0ffcb404eb8b9748bc217e815 9bbae2fc37aa4f30b9ec5e21da76f896 RY(theta₁₄) d6b0e9d0ffcb404eb8b9748bc217e815--9bbae2fc37aa4f30b9ec5e21da76f896 649c286ab5da4326a30cc27424c7c40d RX(theta₁₇) 9bbae2fc37aa4f30b9ec5e21da76f896--649c286ab5da4326a30cc27424c7c40d 5a8672d403bb42768d3d6b47796260f0 649c286ab5da4326a30cc27424c7c40d--5a8672d403bb42768d3d6b47796260f0 5a8672d403bb42768d3d6b47796260f0--1f1f8459cd7448678b8a8c27409fe51b

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_bcd9aaa81ad94d6087bb6a665bcb86d8 cluster_95317e7e6338452aae3bc95411a8320f a438155ce6754d83a3a76e2ec15155b0 0 ce7ad46a3de5493a9cabb8015677dab8 RX(theta₀) a438155ce6754d83a3a76e2ec15155b0--ce7ad46a3de5493a9cabb8015677dab8 184994da88334b1eb02ece12240fbae1 1 e7520feef74d4a259f1aaf0b849101f7 RY(theta₆) ce7ad46a3de5493a9cabb8015677dab8--e7520feef74d4a259f1aaf0b849101f7 629546eccba848dcace8b57f7d4df78f RX(theta₁₂) e7520feef74d4a259f1aaf0b849101f7--629546eccba848dcace8b57f7d4df78f c0414241b7f040fa88329b6b049f35b7 629546eccba848dcace8b57f7d4df78f--c0414241b7f040fa88329b6b049f35b7 98fba424550a42bda409e3d1d219d7e7 RX(theta₁₈) c0414241b7f040fa88329b6b049f35b7--98fba424550a42bda409e3d1d219d7e7 c3d01843c5274e1e8831f4faaea0afa0 RY(theta₂₄) 98fba424550a42bda409e3d1d219d7e7--c3d01843c5274e1e8831f4faaea0afa0 f17c0190b06f45a9899173996789b6ef RX(theta₃₀) c3d01843c5274e1e8831f4faaea0afa0--f17c0190b06f45a9899173996789b6ef 5805f48ecd1545a5a406dae36e9f3dce f17c0190b06f45a9899173996789b6ef--5805f48ecd1545a5a406dae36e9f3dce 28c2af8f46844ccc8c82003d2d58d765 5805f48ecd1545a5a406dae36e9f3dce--28c2af8f46844ccc8c82003d2d58d765 3d19249e0c3c49698cd8a348d6e9810b eb18e1a5c3154b2ba11367bb137ac72b RX(theta₁) 184994da88334b1eb02ece12240fbae1--eb18e1a5c3154b2ba11367bb137ac72b 29910e9a93ac4a06accacef73d7dc61f 2 2d9c9a89237b49cfb7b7e4cd22ab5525 RY(theta₇) eb18e1a5c3154b2ba11367bb137ac72b--2d9c9a89237b49cfb7b7e4cd22ab5525 b8a30400b7e14410b118597de6b3d08a RX(theta₁₃) 2d9c9a89237b49cfb7b7e4cd22ab5525--b8a30400b7e14410b118597de6b3d08a fa4ceb67e5784ad58c68d978c5f4bd50 b8a30400b7e14410b118597de6b3d08a--fa4ceb67e5784ad58c68d978c5f4bd50 2d540523c879451b88f2c9a55fb0d069 RX(theta₁₉) fa4ceb67e5784ad58c68d978c5f4bd50--2d540523c879451b88f2c9a55fb0d069 6627812cffa54474a22fc30ec080344b RY(theta₂₅) 2d540523c879451b88f2c9a55fb0d069--6627812cffa54474a22fc30ec080344b f2311161b58b42628680a01ae37a6933 RX(theta₃₁) 6627812cffa54474a22fc30ec080344b--f2311161b58b42628680a01ae37a6933 d014bca156934746a0d501f91e654587 f2311161b58b42628680a01ae37a6933--d014bca156934746a0d501f91e654587 d014bca156934746a0d501f91e654587--3d19249e0c3c49698cd8a348d6e9810b 4e2cfc186b124bbdbcbddbca1dca0260 0414bb1430b94663b7d21c60c63dc881 RX(theta₂) 29910e9a93ac4a06accacef73d7dc61f--0414bb1430b94663b7d21c60c63dc881 77cac72d2e2b439ea0e2ff358673c7c8 3 9ef028b3aa774cee9308f1503eb8c6d3 RY(theta₈) 0414bb1430b94663b7d21c60c63dc881--9ef028b3aa774cee9308f1503eb8c6d3 322d5433c7a64a0d963c48fc47aea232 RX(theta₁₄) 9ef028b3aa774cee9308f1503eb8c6d3--322d5433c7a64a0d963c48fc47aea232 d8aa8d8181de49b6b284dff7b9298865 HamEvo 322d5433c7a64a0d963c48fc47aea232--d8aa8d8181de49b6b284dff7b9298865 0107f0effff84987a7156b59505ed208 RX(theta₂₀) d8aa8d8181de49b6b284dff7b9298865--0107f0effff84987a7156b59505ed208 ca6a2cf390be424f8c512a08256efa2f RY(theta₂₆) 0107f0effff84987a7156b59505ed208--ca6a2cf390be424f8c512a08256efa2f 93c3c40547d942f4ba5a0b62358edd46 RX(theta₃₂) ca6a2cf390be424f8c512a08256efa2f--93c3c40547d942f4ba5a0b62358edd46 3a92305bf6754f81b23831a15dd50a25 HamEvo 93c3c40547d942f4ba5a0b62358edd46--3a92305bf6754f81b23831a15dd50a25 3a92305bf6754f81b23831a15dd50a25--4e2cfc186b124bbdbcbddbca1dca0260 d780a056139c468b9ad7a96574059e66 1b160629cd25449fad9e5c99ebca1d11 RX(theta₃) 77cac72d2e2b439ea0e2ff358673c7c8--1b160629cd25449fad9e5c99ebca1d11 01a3ed5a882e437dbf4609c1d4606a94 4 5bebeef078d843a99f75ff2c9ed5fcd6 RY(theta₉) 1b160629cd25449fad9e5c99ebca1d11--5bebeef078d843a99f75ff2c9ed5fcd6 1ae3645f0f7044b4bb5e519bd9604e23 RX(theta₁₅) 5bebeef078d843a99f75ff2c9ed5fcd6--1ae3645f0f7044b4bb5e519bd9604e23 0dd87e5b083c46f48ab66ea102aafa83 t = theta_t₀ 1ae3645f0f7044b4bb5e519bd9604e23--0dd87e5b083c46f48ab66ea102aafa83 f15a5748150e4986903aef4ff7d5846c RX(theta₂₁) 0dd87e5b083c46f48ab66ea102aafa83--f15a5748150e4986903aef4ff7d5846c c09f8841390945aa97f5297f1619cc6d RY(theta₂₇) f15a5748150e4986903aef4ff7d5846c--c09f8841390945aa97f5297f1619cc6d 490dc3d33ae742cc8f1716843c15816e RX(theta₃₃) c09f8841390945aa97f5297f1619cc6d--490dc3d33ae742cc8f1716843c15816e c30c3e5ffbec4c4ea60c1c07be426264 t = theta_t₁ 490dc3d33ae742cc8f1716843c15816e--c30c3e5ffbec4c4ea60c1c07be426264 c30c3e5ffbec4c4ea60c1c07be426264--d780a056139c468b9ad7a96574059e66 f7f00b7eab2840e3916463e4795daf49 3e947553a1ba42fb8858ac335f43fcf1 RX(theta₄) 01a3ed5a882e437dbf4609c1d4606a94--3e947553a1ba42fb8858ac335f43fcf1 7e3b19db38fb4e9a87ceb722dd29e9dd 5 6c845ddcf7c44daaabed0cb77f44c8de RY(theta₁₀) 3e947553a1ba42fb8858ac335f43fcf1--6c845ddcf7c44daaabed0cb77f44c8de 9999ce8817054f0390e7379fc150ccb8 RX(theta₁₆) 6c845ddcf7c44daaabed0cb77f44c8de--9999ce8817054f0390e7379fc150ccb8 c3627af217a347048cfa1838335d774d 9999ce8817054f0390e7379fc150ccb8--c3627af217a347048cfa1838335d774d 7d22f6dd31844a6987b29e6df35d93a1 RX(theta₂₂) c3627af217a347048cfa1838335d774d--7d22f6dd31844a6987b29e6df35d93a1 4d9425889ad54016b802ce08e71e8c53 RY(theta₂₈) 7d22f6dd31844a6987b29e6df35d93a1--4d9425889ad54016b802ce08e71e8c53 e6312a22406a47519deec19ff0a0b2d3 RX(theta₃₄) 4d9425889ad54016b802ce08e71e8c53--e6312a22406a47519deec19ff0a0b2d3 3ca2781eaedf49558ee603c7824608d6 e6312a22406a47519deec19ff0a0b2d3--3ca2781eaedf49558ee603c7824608d6 3ca2781eaedf49558ee603c7824608d6--f7f00b7eab2840e3916463e4795daf49 a5518b95174b48f380afbda30c0cae68 e838c41e95b1462186199caecee3b0fe RX(theta₅) 7e3b19db38fb4e9a87ceb722dd29e9dd--e838c41e95b1462186199caecee3b0fe bed7acca9d4f42148ad238301646afd5 RY(theta₁₁) e838c41e95b1462186199caecee3b0fe--bed7acca9d4f42148ad238301646afd5 af39e247f08b46f89df3ddc8f035f56f RX(theta₁₇) bed7acca9d4f42148ad238301646afd5--af39e247f08b46f89df3ddc8f035f56f ae1dda921cc64f00bd492c75022798e8 af39e247f08b46f89df3ddc8f035f56f--ae1dda921cc64f00bd492c75022798e8 39a25dc3a73541af96d4b3a3027e174f RX(theta₂₃) ae1dda921cc64f00bd492c75022798e8--39a25dc3a73541af96d4b3a3027e174f 9d90c949c2454c75b849036071f7022c RY(theta₂₉) 39a25dc3a73541af96d4b3a3027e174f--9d90c949c2454c75b849036071f7022c c59e800719b74c1fbd2c4f36411dfdbd RX(theta₃₅) 9d90c949c2454c75b849036071f7022c--c59e800719b74c1fbd2c4f36411dfdbd 527be0f775ca4d39b4a1d1d78d981651 c59e800719b74c1fbd2c4f36411dfdbd--527be0f775ca4d39b4a1d1d78d981651 527be0f775ca4d39b4a1d1d78d981651--a5518b95174b48f380afbda30c0cae68

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_bfee7c1b9bef4ec18b01115c43986e15 BPMA-1 cluster_48f3b96012e24996b9cfc5b59df90a74 BPMA-0 f177827ba3e24e2a9cf7b3091e8af773 0 689298ba17dd4b03a2485d67a5dcd76d RX(iia_α₀₀) f177827ba3e24e2a9cf7b3091e8af773--689298ba17dd4b03a2485d67a5dcd76d 290ec11becaf4bd1a7c054b83fd908e3 1 6a82ab80414f4ef392709328cb994547 RY(iia_α₀₃) 689298ba17dd4b03a2485d67a5dcd76d--6a82ab80414f4ef392709328cb994547 6c90ef34e4d04de794f31f01e8c27807 6a82ab80414f4ef392709328cb994547--6c90ef34e4d04de794f31f01e8c27807 6d09b820d2ba485da54ea61705cf1994 6c90ef34e4d04de794f31f01e8c27807--6d09b820d2ba485da54ea61705cf1994 a95a02fd781d47368b5c568e924663cc RX(iia_γ₀₀) 6d09b820d2ba485da54ea61705cf1994--a95a02fd781d47368b5c568e924663cc 0a30e9499d7b4546b3e2c22d7aaf1c5e a95a02fd781d47368b5c568e924663cc--0a30e9499d7b4546b3e2c22d7aaf1c5e eb54488d72e8432eba88b0197e7453d7 0a30e9499d7b4546b3e2c22d7aaf1c5e--eb54488d72e8432eba88b0197e7453d7 aa39df1ca8e64cda9436db948c6acc53 RY(iia_β₀₃) eb54488d72e8432eba88b0197e7453d7--aa39df1ca8e64cda9436db948c6acc53 81a8d5a5b5714111a377a31034f845b8 RX(iia_β₀₀) aa39df1ca8e64cda9436db948c6acc53--81a8d5a5b5714111a377a31034f845b8 d45537b088e54434a97d1389dd1d979a RX(iia_α₁₀) 81a8d5a5b5714111a377a31034f845b8--d45537b088e54434a97d1389dd1d979a 3eba2836acf1444da3abd82415d20d6b RY(iia_α₁₃) d45537b088e54434a97d1389dd1d979a--3eba2836acf1444da3abd82415d20d6b 8fec7fab862349d2b47c2d6e90e6025f 3eba2836acf1444da3abd82415d20d6b--8fec7fab862349d2b47c2d6e90e6025f 84e1f6af089d4d03925396fa986d68b6 8fec7fab862349d2b47c2d6e90e6025f--84e1f6af089d4d03925396fa986d68b6 730495bd14504af290f365cb6345badb RX(iia_γ₁₀) 84e1f6af089d4d03925396fa986d68b6--730495bd14504af290f365cb6345badb 722f254d32374f23aeb0bad9da4cf6de 730495bd14504af290f365cb6345badb--722f254d32374f23aeb0bad9da4cf6de 9768436a93a04fff886c5b84929f9e2b 722f254d32374f23aeb0bad9da4cf6de--9768436a93a04fff886c5b84929f9e2b 409345db882a408ba3c20130f0d90430 RY(iia_β₁₃) 9768436a93a04fff886c5b84929f9e2b--409345db882a408ba3c20130f0d90430 eafb5db55a2143b2bf66855089c47fcc RX(iia_β₁₀) 409345db882a408ba3c20130f0d90430--eafb5db55a2143b2bf66855089c47fcc d588af8124ad4934a4209ba72740e9ac eafb5db55a2143b2bf66855089c47fcc--d588af8124ad4934a4209ba72740e9ac 95092613350840cc8c23617fbc07cb56 f248f6d149174ea2ad201a0ea757cf0d RX(iia_α₀₁) 290ec11becaf4bd1a7c054b83fd908e3--f248f6d149174ea2ad201a0ea757cf0d 1cfc1bcf0ba5440b9ff927f831d4c6ce 2 828b6a5197c84bcb95fbf5e0682382b7 RY(iia_α₀₄) f248f6d149174ea2ad201a0ea757cf0d--828b6a5197c84bcb95fbf5e0682382b7 39e0b5512bf341a5838e26df8bfa44c0 X 828b6a5197c84bcb95fbf5e0682382b7--39e0b5512bf341a5838e26df8bfa44c0 39e0b5512bf341a5838e26df8bfa44c0--6c90ef34e4d04de794f31f01e8c27807 345edfbee8d9418cbff25c1428e4b742 39e0b5512bf341a5838e26df8bfa44c0--345edfbee8d9418cbff25c1428e4b742 5f7741a9d8e34cfe9b982895dd578ce0 RX(iia_γ₀₁) 345edfbee8d9418cbff25c1428e4b742--5f7741a9d8e34cfe9b982895dd578ce0 efa3ee03534746e592d61919304052c5 5f7741a9d8e34cfe9b982895dd578ce0--efa3ee03534746e592d61919304052c5 f9f35a6c7427483daba6dac70a8ab834 X efa3ee03534746e592d61919304052c5--f9f35a6c7427483daba6dac70a8ab834 f9f35a6c7427483daba6dac70a8ab834--eb54488d72e8432eba88b0197e7453d7 13d722750c2e4431abcb440689db3727 RY(iia_β₀₄) f9f35a6c7427483daba6dac70a8ab834--13d722750c2e4431abcb440689db3727 86fe268193c641a2aa6c2f9cc5014554 RX(iia_β₀₁) 13d722750c2e4431abcb440689db3727--86fe268193c641a2aa6c2f9cc5014554 078ea6402c534155a7055a67471b8224 RX(iia_α₁₁) 86fe268193c641a2aa6c2f9cc5014554--078ea6402c534155a7055a67471b8224 a52da87fff754f3cbf7ab93b49b11a3f RY(iia_α₁₄) 078ea6402c534155a7055a67471b8224--a52da87fff754f3cbf7ab93b49b11a3f f8b370a693304598ac3d276b1a724269 X a52da87fff754f3cbf7ab93b49b11a3f--f8b370a693304598ac3d276b1a724269 f8b370a693304598ac3d276b1a724269--8fec7fab862349d2b47c2d6e90e6025f 47573d5b39a0491aaca408d80b3968ce f8b370a693304598ac3d276b1a724269--47573d5b39a0491aaca408d80b3968ce 0f1b76bd33f745a2832f6fd2c9c0867f RX(iia_γ₁₁) 47573d5b39a0491aaca408d80b3968ce--0f1b76bd33f745a2832f6fd2c9c0867f 2eb1641f85004f04a16d2b08d82d4709 0f1b76bd33f745a2832f6fd2c9c0867f--2eb1641f85004f04a16d2b08d82d4709 d4991659ec4d4e1ba5d42171a9535460 X 2eb1641f85004f04a16d2b08d82d4709--d4991659ec4d4e1ba5d42171a9535460 d4991659ec4d4e1ba5d42171a9535460--9768436a93a04fff886c5b84929f9e2b 478a108b2ded454db064db9615436f96 RY(iia_β₁₄) d4991659ec4d4e1ba5d42171a9535460--478a108b2ded454db064db9615436f96 1b797f61ebed44528a011800f9f5f121 RX(iia_β₁₁) 478a108b2ded454db064db9615436f96--1b797f61ebed44528a011800f9f5f121 1b797f61ebed44528a011800f9f5f121--95092613350840cc8c23617fbc07cb56 fc10c1a2e91741a8a0e84cc6067c0377 546068c7c75044b3bcb645e07ef4d48f RX(iia_α₀₂) 1cfc1bcf0ba5440b9ff927f831d4c6ce--546068c7c75044b3bcb645e07ef4d48f e28f7d2bfbb04f6ea4ecbd70a9a02047 RY(iia_α₀₅) 546068c7c75044b3bcb645e07ef4d48f--e28f7d2bfbb04f6ea4ecbd70a9a02047 8e4451ed8b3c4855bf5a472c00e5a490 e28f7d2bfbb04f6ea4ecbd70a9a02047--8e4451ed8b3c4855bf5a472c00e5a490 7461c428dce849419241d6e96f406fac X 8e4451ed8b3c4855bf5a472c00e5a490--7461c428dce849419241d6e96f406fac 7461c428dce849419241d6e96f406fac--345edfbee8d9418cbff25c1428e4b742 6e20c5584b4a475390692661849bb50d RX(iia_γ₀₂) 7461c428dce849419241d6e96f406fac--6e20c5584b4a475390692661849bb50d 47d4511a14624182b8a3ac1a692bc015 X 6e20c5584b4a475390692661849bb50d--47d4511a14624182b8a3ac1a692bc015 47d4511a14624182b8a3ac1a692bc015--efa3ee03534746e592d61919304052c5 0c7003e25b224d8d849a809a3689baf3 47d4511a14624182b8a3ac1a692bc015--0c7003e25b224d8d849a809a3689baf3 7916db217e1040299e23e46e9957acc3 RY(iia_β₀₅) 0c7003e25b224d8d849a809a3689baf3--7916db217e1040299e23e46e9957acc3 ec314a51e098484fb687cc120e26706b RX(iia_β₀₂) 7916db217e1040299e23e46e9957acc3--ec314a51e098484fb687cc120e26706b 4ebfd0e6997347f0b175054aaba3b485 RX(iia_α₁₂) ec314a51e098484fb687cc120e26706b--4ebfd0e6997347f0b175054aaba3b485 42e4fcc6353a4389bd433c296f3036ba RY(iia_α₁₅) 4ebfd0e6997347f0b175054aaba3b485--42e4fcc6353a4389bd433c296f3036ba 75eb80d68d71450398e9fe18068fa20a 42e4fcc6353a4389bd433c296f3036ba--75eb80d68d71450398e9fe18068fa20a 22da4c0adcd34c2299448396f29aacb2 X 75eb80d68d71450398e9fe18068fa20a--22da4c0adcd34c2299448396f29aacb2 22da4c0adcd34c2299448396f29aacb2--47573d5b39a0491aaca408d80b3968ce 7e5c0b5b3d5241f8922bb202628d893d RX(iia_γ₁₂) 22da4c0adcd34c2299448396f29aacb2--7e5c0b5b3d5241f8922bb202628d893d 922b993de04c455f9b06cf559065e521 X 7e5c0b5b3d5241f8922bb202628d893d--922b993de04c455f9b06cf559065e521 922b993de04c455f9b06cf559065e521--2eb1641f85004f04a16d2b08d82d4709 92270b2b627b4074af3c38ee6fcdb4de 922b993de04c455f9b06cf559065e521--92270b2b627b4074af3c38ee6fcdb4de a5e0e7c08df1439ea20933d0f61852a9 RY(iia_β₁₅) 92270b2b627b4074af3c38ee6fcdb4de--a5e0e7c08df1439ea20933d0f61852a9 8ccfb87ba75141c1ae485c25e811b3d5 RX(iia_β₁₂) a5e0e7c08df1439ea20933d0f61852a9--8ccfb87ba75141c1ae485c25e811b3d5 8ccfb87ba75141c1ae485c25e811b3d5--fc10c1a2e91741a8a0e84cc6067c0377