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_506dd28aff0648a7b63f6a68ffc47f61 Constant Chebyshev FM cluster_b0bf56d74c794ddda8ea88fc5ea0845e Constant Fourier FM 8179251e20d9466290c5e9a5885f4e6c 0 ff9a9825b7ff41ae93546debdaa50575 RX(phi) 8179251e20d9466290c5e9a5885f4e6c--ff9a9825b7ff41ae93546debdaa50575 b2ce365126754eb7a543e13a1b7de398 1 99f8312b6db84a319440b77479d4d77c RX(acos(phi)) ff9a9825b7ff41ae93546debdaa50575--99f8312b6db84a319440b77479d4d77c 019e050e436f4446b1e1ce35b4a1d1c3 99f8312b6db84a319440b77479d4d77c--019e050e436f4446b1e1ce35b4a1d1c3 8d0dd4ffd48a43d1838821cfbfac88a5 3a31a0e12c2947269e414436b3733a8e RX(phi) b2ce365126754eb7a543e13a1b7de398--3a31a0e12c2947269e414436b3733a8e d2892ffa11b74ed39cbb6b64914e39c2 2 b23868b8156641a0900d0eb77445cdee RX(acos(phi)) 3a31a0e12c2947269e414436b3733a8e--b23868b8156641a0900d0eb77445cdee b23868b8156641a0900d0eb77445cdee--8d0dd4ffd48a43d1838821cfbfac88a5 39136ca920cc4f2ba35c2b935fe86d22 411ae961b92940b09deccb97dbe552c0 RX(phi) d2892ffa11b74ed39cbb6b64914e39c2--411ae961b92940b09deccb97dbe552c0 fd2b145f42f54690b81b899637d23505 RX(acos(phi)) 411ae961b92940b09deccb97dbe552c0--fd2b145f42f54690b81b899637d23505 fd2b145f42f54690b81b899637d23505--39136ca920cc4f2ba35c2b935fe86d22

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_8deb48cca941436a819f23a4d2704d49 Constant <function custom_fn at 0x7f491c382710> FM cluster_aa6e25379eda4597b604da1238878a8e Constant asin FM 48e0cbc3615c4e05b988fb0ab530d213 0 f686c1140de847329dc9fd0b09701e8e RX(asin(phi)) 48e0cbc3615c4e05b988fb0ab530d213--f686c1140de847329dc9fd0b09701e8e eefc6dce3cb049c6b74d20adec1fbfaa 1 16d91f710c7348f9bbd10d5ea39f2a1c RX(phi**2 + asin(phi)) f686c1140de847329dc9fd0b09701e8e--16d91f710c7348f9bbd10d5ea39f2a1c 10930bcab3064070ac9f6722a214fcd7 16d91f710c7348f9bbd10d5ea39f2a1c--10930bcab3064070ac9f6722a214fcd7 d213baa9f6cf4377b16008a78357fcf9 84636920048848eaa11f94e973c734e5 RX(asin(phi)) eefc6dce3cb049c6b74d20adec1fbfaa--84636920048848eaa11f94e973c734e5 58fe9eb4ac344c78b728b8d5dec2d4f7 2 4c273883c226471b9c9e468259cbad5e RX(phi**2 + asin(phi)) 84636920048848eaa11f94e973c734e5--4c273883c226471b9c9e468259cbad5e 4c273883c226471b9c9e468259cbad5e--d213baa9f6cf4377b16008a78357fcf9 2ddd28883e6e441381714658ba513d0c 02723935031f4e549c1bc1432aa72bdb RX(asin(phi)) 58fe9eb4ac344c78b728b8d5dec2d4f7--02723935031f4e549c1bc1432aa72bdb 5512e10a97a54c2ca2c9babcce55213b RX(phi**2 + asin(phi)) 02723935031f4e549c1bc1432aa72bdb--5512e10a97a54c2ca2c9babcce55213b 5512e10a97a54c2ca2c9babcce55213b--2ddd28883e6e441381714658ba513d0c

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_96bc8f659eb2440fbf48f72878aee3f1 Exponential Fourier FM cluster_74d6a1ebddf343e98e20fe904f04c43c Constant Fourier FM cluster_1cc551be80a0484ea40dcede9a39e61e Tower Fourier FM c0862e58e04e42f69a7edad507638808 0 e7cc834a31774aa1a0f0fe4fb2ce0e40 RX(phi) c0862e58e04e42f69a7edad507638808--e7cc834a31774aa1a0f0fe4fb2ce0e40 1be6f2fe731045feb9b030060433bfcf 1 2c63be6809bd42aabb0a6934390dfb7b RX(1.0*phi) e7cc834a31774aa1a0f0fe4fb2ce0e40--2c63be6809bd42aabb0a6934390dfb7b a1f7678d31e2415a838460483c9b0a35 RX(1.0*phi) 2c63be6809bd42aabb0a6934390dfb7b--a1f7678d31e2415a838460483c9b0a35 08d8065d7caf4b05b21e8ea7814f006e a1f7678d31e2415a838460483c9b0a35--08d8065d7caf4b05b21e8ea7814f006e 0a6f4e5efe5440c9979671e4e15acb4b f386f550c6fe4427bf3cc99d497ba4e5 RX(phi) 1be6f2fe731045feb9b030060433bfcf--f386f550c6fe4427bf3cc99d497ba4e5 12a3efd6ca134c279c09e650a2681eac 2 3758a9c361494c37a391b5b93832c4d4 RX(2.0*phi) f386f550c6fe4427bf3cc99d497ba4e5--3758a9c361494c37a391b5b93832c4d4 680a174988f444a0b30a4e5d742214c7 RX(2.0*phi) 3758a9c361494c37a391b5b93832c4d4--680a174988f444a0b30a4e5d742214c7 680a174988f444a0b30a4e5d742214c7--0a6f4e5efe5440c9979671e4e15acb4b fb69dec3865f49369599a099dbbf66f0 f8bad1fc40eb46778be08fd216dff4d7 RX(phi) 12a3efd6ca134c279c09e650a2681eac--f8bad1fc40eb46778be08fd216dff4d7 83cb5f6d60aa4a10970d9faaea8b10da 3 3f5d4c74fc3e4147bfac5f423204a4c3 RX(3.0*phi) f8bad1fc40eb46778be08fd216dff4d7--3f5d4c74fc3e4147bfac5f423204a4c3 a9ee0da5e58149c6bc7ff91604e53417 RX(4.0*phi) 3f5d4c74fc3e4147bfac5f423204a4c3--a9ee0da5e58149c6bc7ff91604e53417 a9ee0da5e58149c6bc7ff91604e53417--fb69dec3865f49369599a099dbbf66f0 415dd89ae30e4dc6b6b1c4931db4468c fb4078e4e30e4aa59aac134b13e3f3d4 RX(phi) 83cb5f6d60aa4a10970d9faaea8b10da--fb4078e4e30e4aa59aac134b13e3f3d4 d97aa8dddb08448582405337ea31124f 4 39ac79d6bb0e4f8bba2c649c34e12586 RX(4.0*phi) fb4078e4e30e4aa59aac134b13e3f3d4--39ac79d6bb0e4f8bba2c649c34e12586 96203e2fde754db2b8389ae3dc3749c0 RX(8.0*phi) 39ac79d6bb0e4f8bba2c649c34e12586--96203e2fde754db2b8389ae3dc3749c0 96203e2fde754db2b8389ae3dc3749c0--415dd89ae30e4dc6b6b1c4931db4468c 84ebb2882da1438096f4941973c81bcd fd3113e94e4b40abb5cf45bfd06ad10d RX(phi) d97aa8dddb08448582405337ea31124f--fd3113e94e4b40abb5cf45bfd06ad10d c2ceb1c0e1ce4e6199dbb1f9b4555f6a RX(5.0*phi) fd3113e94e4b40abb5cf45bfd06ad10d--c2ceb1c0e1ce4e6199dbb1f9b4555f6a 5824c2b28e5a42b2b1e7d93111d1f255 RX(16.0*phi) c2ceb1c0e1ce4e6199dbb1f9b4555f6a--5824c2b28e5a42b2b1e7d93111d1f255 5824c2b28e5a42b2b1e7d93111d1f255--84ebb2882da1438096f4941973c81bcd

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 9f4cf76f6cd8433c91f75f673b6294b1 0 2e0dcd7bc2e248628a1d605fc07fc279 RX(1.0*acos(phi)) 9f4cf76f6cd8433c91f75f673b6294b1--2e0dcd7bc2e248628a1d605fc07fc279 c5d0b609b30c4cdab81a4eb53bca4bae 1 63afad27cb4f42d681ac261cdc2c8e77 2e0dcd7bc2e248628a1d605fc07fc279--63afad27cb4f42d681ac261cdc2c8e77 462c7ba4455e4d1a8f3ecfb8678a8e04 ae482fdcc6704f3493965ee85ec0d3df RX(1.414*acos(phi)) c5d0b609b30c4cdab81a4eb53bca4bae--ae482fdcc6704f3493965ee85ec0d3df 3e635aec9f40403194f08540d22027d0 2 ae482fdcc6704f3493965ee85ec0d3df--462c7ba4455e4d1a8f3ecfb8678a8e04 6a08ed9b3ed4411b8984f210b52568ae bf9cddc7213d4a78bffb4be62dda0301 RX(1.732*acos(phi)) 3e635aec9f40403194f08540d22027d0--bf9cddc7213d4a78bffb4be62dda0301 14624218d95a4890bac96d5f887f7b79 3 bf9cddc7213d4a78bffb4be62dda0301--6a08ed9b3ed4411b8984f210b52568ae 9ac08ad1d1be4f53bb1c1be92f5d31d4 121a0fb0bd55427ba7f488e9b0d7dd4f RX(2.0*acos(phi)) 14624218d95a4890bac96d5f887f7b79--121a0fb0bd55427ba7f488e9b0d7dd4f cc4d33276fd84543bfcfc29c1a9ccfad 4 121a0fb0bd55427ba7f488e9b0d7dd4f--9ac08ad1d1be4f53bb1c1be92f5d31d4 2202f5f8f9234eb284b1aa223195f4e8 765f639a1bbf4a95b63d19940034c092 RX(2.236*acos(phi)) cc4d33276fd84543bfcfc29c1a9ccfad--765f639a1bbf4a95b63d19940034c092 765f639a1bbf4a95b63d19940034c092--2202f5f8f9234eb284b1aa223195f4e8

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 6b7177b173014d06b24d888e8a457b9c 0 7077824feebf48d6a46fdefa4531f8fe RX(1.0*phi*w₀) 6b7177b173014d06b24d888e8a457b9c--7077824feebf48d6a46fdefa4531f8fe 4ab204f2523d4461ad317799fba4771b 1 45a9114f8ea746988c8f2fa218dd995b 7077824feebf48d6a46fdefa4531f8fe--45a9114f8ea746988c8f2fa218dd995b 4ba6de14f109414b80ad9cb261bdd62f 01e3fd39e01f41b8bf33f331a374fbab RX(2.0*phi*w₁) 4ab204f2523d4461ad317799fba4771b--01e3fd39e01f41b8bf33f331a374fbab 592f42d3f37f4c6ca9fe7ff5abbce636 2 01e3fd39e01f41b8bf33f331a374fbab--4ba6de14f109414b80ad9cb261bdd62f 04b4c9766720495d9c59b568682b5f49 57f88c018ed747dcbd31cbc808ebf1d2 RX(4.0*phi*w₂) 592f42d3f37f4c6ca9fe7ff5abbce636--57f88c018ed747dcbd31cbc808ebf1d2 8db5ae74c67b427a88c60512ef2fee9e 3 57f88c018ed747dcbd31cbc808ebf1d2--04b4c9766720495d9c59b568682b5f49 aa0a7376ab204213900a2eedd8ce3af8 155961b911434a9890b543ff7511c5a5 RX(8.0*phi*w₃) 8db5ae74c67b427a88c60512ef2fee9e--155961b911434a9890b543ff7511c5a5 aa510485340b493d880c0b082f507727 4 155961b911434a9890b543ff7511c5a5--aa0a7376ab204213900a2eedd8ce3af8 04136252126443bd8a77cef7256b776b 9031c26e197d439f818133c4566cc278 RX(16.0*phi*w₄) aa510485340b493d880c0b082f507727--9031c26e197d439f818133c4566cc278 9031c26e197d439f818133c4566cc278--04136252126443bd8a77cef7256b776b

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 dd18a0ec74b645a89d85ce822e14c4e8 0 fad16fda73e44f09916784377eac28d7 RY(80.0*acos(w₄*(0.667*x + 1.667))) dd18a0ec74b645a89d85ce822e14c4e8--fad16fda73e44f09916784377eac28d7 12d1b197b278492eabb3b8977712f283 1 71dfd105adc8485e914f6fbd763074e3 fad16fda73e44f09916784377eac28d7--71dfd105adc8485e914f6fbd763074e3 fd7ab06f5fda4a0b8bbe347b42a46689 dff6f54b8aba449e9bec146bd53f5ade RY(40.0*acos(w₃*(0.667*x + 1.667))) 12d1b197b278492eabb3b8977712f283--dff6f54b8aba449e9bec146bd53f5ade 924e0514967f47b1817bd75a7481d9de 2 dff6f54b8aba449e9bec146bd53f5ade--fd7ab06f5fda4a0b8bbe347b42a46689 ddea9e04596f4c5d80ca2c3bcc002d27 403a8f307f5d4c038e362eda4bd659b0 RY(20.0*acos(w₂*(0.667*x + 1.667))) 924e0514967f47b1817bd75a7481d9de--403a8f307f5d4c038e362eda4bd659b0 16cbe17dc68947c4b203038e93daaa4f 3 403a8f307f5d4c038e362eda4bd659b0--ddea9e04596f4c5d80ca2c3bcc002d27 c21ae6454365406b91d74cc7297c2b0b 7e92a9ae7f214872b511fc263365912e RY(10.0*acos(w₁*(0.667*x + 1.667))) 16cbe17dc68947c4b203038e93daaa4f--7e92a9ae7f214872b511fc263365912e f3e11f0ccbc14508934c78fef08d2349 4 7e92a9ae7f214872b511fc263365912e--c21ae6454365406b91d74cc7297c2b0b 06f5879ae4a94f71a666c1990d7d5ad7 7c27c932ae064836b9b98fc10e4ae025 RY(5.0*acos(w₀*(0.667*x + 1.667))) f3e11f0ccbc14508934c78fef08d2349--7c27c932ae064836b9b98fc10e4ae025 7c27c932ae064836b9b98fc10e4ae025--06f5879ae4a94f71a666c1990d7d5ad7

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 7e891bc99d7e4ce1b3d1a87a094d71c0 0 d54f70aa35db41e6ad484211c586b692 RX(theta₀) 7e891bc99d7e4ce1b3d1a87a094d71c0--d54f70aa35db41e6ad484211c586b692 5c25e7b00a2844abb8fdb75f821ff20b 1 f1fe1bcc303b47d8b14b75399011c896 RY(theta₃) d54f70aa35db41e6ad484211c586b692--f1fe1bcc303b47d8b14b75399011c896 a6ace2e4892643cdac68f3e3e578d1f0 RX(theta₆) f1fe1bcc303b47d8b14b75399011c896--a6ace2e4892643cdac68f3e3e578d1f0 732490ce160d4bb78f1a45221cb822c3 a6ace2e4892643cdac68f3e3e578d1f0--732490ce160d4bb78f1a45221cb822c3 1aa6e8de59874555a9a5c4383e6f022c 732490ce160d4bb78f1a45221cb822c3--1aa6e8de59874555a9a5c4383e6f022c 2bbec2604c7c43b2ae5f2a58a61b7d1e RX(theta₉) 1aa6e8de59874555a9a5c4383e6f022c--2bbec2604c7c43b2ae5f2a58a61b7d1e a3f283aca51148b58bc8c9a00ad4d645 RY(theta₁₂) 2bbec2604c7c43b2ae5f2a58a61b7d1e--a3f283aca51148b58bc8c9a00ad4d645 1cd0e3ba189f42049f28437aea847913 RX(theta₁₅) a3f283aca51148b58bc8c9a00ad4d645--1cd0e3ba189f42049f28437aea847913 d29821270dd64fc2838713efc18ae5d9 1cd0e3ba189f42049f28437aea847913--d29821270dd64fc2838713efc18ae5d9 925bab62669342c48a5ca4eb00e94ec4 d29821270dd64fc2838713efc18ae5d9--925bab62669342c48a5ca4eb00e94ec4 fb39fa4cb13d401890ae2fa4095b1ebf 925bab62669342c48a5ca4eb00e94ec4--fb39fa4cb13d401890ae2fa4095b1ebf 8c642d09474b474b99ac36b56e8505d9 777f6245c3af43d2b11ed05ba944de32 RX(theta₁) 5c25e7b00a2844abb8fdb75f821ff20b--777f6245c3af43d2b11ed05ba944de32 5ee1b93c577142089d63b22cf6784d06 2 6443e2f55a784c69b495b63b08a97ce7 RY(theta₄) 777f6245c3af43d2b11ed05ba944de32--6443e2f55a784c69b495b63b08a97ce7 8d91824984ac47e396a58ef02ecf765f RX(theta₇) 6443e2f55a784c69b495b63b08a97ce7--8d91824984ac47e396a58ef02ecf765f e040b62732bc42efbe514c593e81758f X 8d91824984ac47e396a58ef02ecf765f--e040b62732bc42efbe514c593e81758f e040b62732bc42efbe514c593e81758f--732490ce160d4bb78f1a45221cb822c3 27827c78f5ba42fc8d6d40e060e309b6 e040b62732bc42efbe514c593e81758f--27827c78f5ba42fc8d6d40e060e309b6 ad0dff40d8af4bb2941e79f327a43c0a RX(theta₁₀) 27827c78f5ba42fc8d6d40e060e309b6--ad0dff40d8af4bb2941e79f327a43c0a 0f899adfb2894ae1881023d2cf94f710 RY(theta₁₃) ad0dff40d8af4bb2941e79f327a43c0a--0f899adfb2894ae1881023d2cf94f710 50df27cc3518481a92cd064867105756 RX(theta₁₆) 0f899adfb2894ae1881023d2cf94f710--50df27cc3518481a92cd064867105756 2ddc16944f1540fdbcbcd9be694f6c30 X 50df27cc3518481a92cd064867105756--2ddc16944f1540fdbcbcd9be694f6c30 2ddc16944f1540fdbcbcd9be694f6c30--d29821270dd64fc2838713efc18ae5d9 8f23215f4ac448c6b67520b387c1ab1f 2ddc16944f1540fdbcbcd9be694f6c30--8f23215f4ac448c6b67520b387c1ab1f 8f23215f4ac448c6b67520b387c1ab1f--8c642d09474b474b99ac36b56e8505d9 4ac832d37d7d40a0a90142fe5a5afd2d ebeb8d8f622343359b6b5dc19da8654e RX(theta₂) 5ee1b93c577142089d63b22cf6784d06--ebeb8d8f622343359b6b5dc19da8654e 0aa70047b6014ed88466448362b341ad RY(theta₅) ebeb8d8f622343359b6b5dc19da8654e--0aa70047b6014ed88466448362b341ad 94f2447c60bd4139b9f0d8e9409d97fd RX(theta₈) 0aa70047b6014ed88466448362b341ad--94f2447c60bd4139b9f0d8e9409d97fd f56f67ba92e94d4eaa09445783ba6887 94f2447c60bd4139b9f0d8e9409d97fd--f56f67ba92e94d4eaa09445783ba6887 0b1e75a5607f424ca59e189f902d8b07 X f56f67ba92e94d4eaa09445783ba6887--0b1e75a5607f424ca59e189f902d8b07 0b1e75a5607f424ca59e189f902d8b07--27827c78f5ba42fc8d6d40e060e309b6 90daaa42d9934060994280eceabf5b7d RX(theta₁₁) 0b1e75a5607f424ca59e189f902d8b07--90daaa42d9934060994280eceabf5b7d 6b49f12a78144c63b89f6f0c97357d80 RY(theta₁₄) 90daaa42d9934060994280eceabf5b7d--6b49f12a78144c63b89f6f0c97357d80 c556539210a343fda91b137e0b0f812b RX(theta₁₇) 6b49f12a78144c63b89f6f0c97357d80--c556539210a343fda91b137e0b0f812b c02139374b5d46c7ae47160e938e3425 c556539210a343fda91b137e0b0f812b--c02139374b5d46c7ae47160e938e3425 e4e6a768a6304f7ab0138e4995854e39 X c02139374b5d46c7ae47160e938e3425--e4e6a768a6304f7ab0138e4995854e39 e4e6a768a6304f7ab0138e4995854e39--8f23215f4ac448c6b67520b387c1ab1f e4e6a768a6304f7ab0138e4995854e39--4ac832d37d7d40a0a90142fe5a5afd2d

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 b1f616ca4fdb40208ada24d20f3e4c9b 0 f88af1f235b149e9b285f5f211d96ab7 RX(phi₀) b1f616ca4fdb40208ada24d20f3e4c9b--f88af1f235b149e9b285f5f211d96ab7 65da93b4db72468c8873ae13d2691798 1 c93e7c28f2204e6299020ec9f0530678 RY(phi₃) f88af1f235b149e9b285f5f211d96ab7--c93e7c28f2204e6299020ec9f0530678 69a3b26665ee4a569925c90a4d0497cd RX(phi₆) c93e7c28f2204e6299020ec9f0530678--69a3b26665ee4a569925c90a4d0497cd 47a84a126fa44cd6aec1a2bce1694dd2 69a3b26665ee4a569925c90a4d0497cd--47a84a126fa44cd6aec1a2bce1694dd2 15576694b7334b9190d17e9eff04bdfb 47a84a126fa44cd6aec1a2bce1694dd2--15576694b7334b9190d17e9eff04bdfb 2018c964b7574233b67df835c0c87ab2 RX(phi₉) 15576694b7334b9190d17e9eff04bdfb--2018c964b7574233b67df835c0c87ab2 91c13105d6594a839a501d956ac5d4aa RY(phi₁₂) 2018c964b7574233b67df835c0c87ab2--91c13105d6594a839a501d956ac5d4aa c10e1dc5f7e64675bc011e39e135a690 RX(phi₁₅) 91c13105d6594a839a501d956ac5d4aa--c10e1dc5f7e64675bc011e39e135a690 0e53241aac2542c4a37e66e45ca6dd5c c10e1dc5f7e64675bc011e39e135a690--0e53241aac2542c4a37e66e45ca6dd5c d3ded36e53d24d0385c3cb07024ec368 0e53241aac2542c4a37e66e45ca6dd5c--d3ded36e53d24d0385c3cb07024ec368 d7a299a19f994c6daa339399f0dac6a9 d3ded36e53d24d0385c3cb07024ec368--d7a299a19f994c6daa339399f0dac6a9 25b54e2160814b4ebce181da2ed33084 d31d2ccf22b34e6cb89e84c7bb65716c RX(phi₁) 65da93b4db72468c8873ae13d2691798--d31d2ccf22b34e6cb89e84c7bb65716c 8af77f5df2274ac895be7bd7fd3017d1 2 124695bf3f9842d4abd8dbbfef75ed76 RY(phi₄) d31d2ccf22b34e6cb89e84c7bb65716c--124695bf3f9842d4abd8dbbfef75ed76 084f45567c8c46108f032b343e2d3a35 RX(phi₇) 124695bf3f9842d4abd8dbbfef75ed76--084f45567c8c46108f032b343e2d3a35 b14edbcbe4154fe2ae5e2f370366b5b2 PHASE(phi_ent₀) 084f45567c8c46108f032b343e2d3a35--b14edbcbe4154fe2ae5e2f370366b5b2 b14edbcbe4154fe2ae5e2f370366b5b2--47a84a126fa44cd6aec1a2bce1694dd2 b5ffb76aed3a45d1ab700802443ddc42 b14edbcbe4154fe2ae5e2f370366b5b2--b5ffb76aed3a45d1ab700802443ddc42 80e70737127c48d78035e120f8663ed5 RX(phi₁₀) b5ffb76aed3a45d1ab700802443ddc42--80e70737127c48d78035e120f8663ed5 b046ac196ea84c4eab02936da9c87644 RY(phi₁₃) 80e70737127c48d78035e120f8663ed5--b046ac196ea84c4eab02936da9c87644 7195df55ab0a4e658318590bcac16c1c RX(phi₁₆) b046ac196ea84c4eab02936da9c87644--7195df55ab0a4e658318590bcac16c1c a4f596ce13c4469688c6ec8eddc1c6ad PHASE(phi_ent₂) 7195df55ab0a4e658318590bcac16c1c--a4f596ce13c4469688c6ec8eddc1c6ad a4f596ce13c4469688c6ec8eddc1c6ad--0e53241aac2542c4a37e66e45ca6dd5c bd481f71a07341a9995b574ee807bd3c a4f596ce13c4469688c6ec8eddc1c6ad--bd481f71a07341a9995b574ee807bd3c bd481f71a07341a9995b574ee807bd3c--25b54e2160814b4ebce181da2ed33084 c1f7141c796a4471b465db0af7325d4a e9a872fc916e4d7692be7a58dbef5f9a RX(phi₂) 8af77f5df2274ac895be7bd7fd3017d1--e9a872fc916e4d7692be7a58dbef5f9a af67bde03dab435a927814ca2e64b8d6 RY(phi₅) e9a872fc916e4d7692be7a58dbef5f9a--af67bde03dab435a927814ca2e64b8d6 b3904681f0fe466488d3e9fd3adf153e RX(phi₈) af67bde03dab435a927814ca2e64b8d6--b3904681f0fe466488d3e9fd3adf153e 6819aecef2964507b0b2e1ee49f5d5b9 b3904681f0fe466488d3e9fd3adf153e--6819aecef2964507b0b2e1ee49f5d5b9 8025478be82444cf870dd7ea903c7fe7 PHASE(phi_ent₁) 6819aecef2964507b0b2e1ee49f5d5b9--8025478be82444cf870dd7ea903c7fe7 8025478be82444cf870dd7ea903c7fe7--b5ffb76aed3a45d1ab700802443ddc42 9c82205bbf294f08923a8a8b498b55bf RX(phi₁₁) 8025478be82444cf870dd7ea903c7fe7--9c82205bbf294f08923a8a8b498b55bf e29903675f8a4e97875ae6001652c116 RY(phi₁₄) 9c82205bbf294f08923a8a8b498b55bf--e29903675f8a4e97875ae6001652c116 233334224766446594abc8696e1fa7a0 RX(phi₁₇) e29903675f8a4e97875ae6001652c116--233334224766446594abc8696e1fa7a0 4096209234554deca0deb3de2c0e85f0 233334224766446594abc8696e1fa7a0--4096209234554deca0deb3de2c0e85f0 0a5511d89d6c42e9a880a1e75b3fe0a5 PHASE(phi_ent₃) 4096209234554deca0deb3de2c0e85f0--0a5511d89d6c42e9a880a1e75b3fe0a5 0a5511d89d6c42e9a880a1e75b3fe0a5--bd481f71a07341a9995b574ee807bd3c 0a5511d89d6c42e9a880a1e75b3fe0a5--c1f7141c796a4471b465db0af7325d4a

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_a83973e8b7e649c99adce6ee25218c9c cluster_51f61fbed12143b5a41e7b556464e584 3a4e2b2304f54aefa017ae24b9e60650 0 2b39a08a17b54f76b00e9ae159752b13 RX(theta₀) 3a4e2b2304f54aefa017ae24b9e60650--2b39a08a17b54f76b00e9ae159752b13 bec3012000f84912a5a0e3d1a568d61d 1 feb6db11e5da468ba9e772a7500a8317 RY(theta₃) 2b39a08a17b54f76b00e9ae159752b13--feb6db11e5da468ba9e772a7500a8317 29c7c70d3be84d57b9b5245797aff97a RX(theta₆) feb6db11e5da468ba9e772a7500a8317--29c7c70d3be84d57b9b5245797aff97a 501ad047f2724551840d91f894c05a92 HamEvo 29c7c70d3be84d57b9b5245797aff97a--501ad047f2724551840d91f894c05a92 a62d7725dbd84063ba2e07dff3fa1a69 RX(theta₉) 501ad047f2724551840d91f894c05a92--a62d7725dbd84063ba2e07dff3fa1a69 119a3df1f5c944ef9a65e28e0009c3ab RY(theta₁₂) a62d7725dbd84063ba2e07dff3fa1a69--119a3df1f5c944ef9a65e28e0009c3ab 059b841c3ea042849ebcb67330d6a62a RX(theta₁₅) 119a3df1f5c944ef9a65e28e0009c3ab--059b841c3ea042849ebcb67330d6a62a 9fbe6c0af62649728f4a3d83dbf91506 HamEvo 059b841c3ea042849ebcb67330d6a62a--9fbe6c0af62649728f4a3d83dbf91506 b7c54132c6b344dda1a9c688ab1b1673 9fbe6c0af62649728f4a3d83dbf91506--b7c54132c6b344dda1a9c688ab1b1673 1a8ef1d4301b46769055c77cc6aeb9d9 2dfb704984474cecb0b174eba5953454 RX(theta₁) bec3012000f84912a5a0e3d1a568d61d--2dfb704984474cecb0b174eba5953454 3ff851b2f2884247b87bd3d827493c07 2 1e2aa38de1e247feb7df62a466c2ac58 RY(theta₄) 2dfb704984474cecb0b174eba5953454--1e2aa38de1e247feb7df62a466c2ac58 c6f854ee30014331b3519e4af4c592b1 RX(theta₇) 1e2aa38de1e247feb7df62a466c2ac58--c6f854ee30014331b3519e4af4c592b1 b60491d4115f47da96a571cec1eb99b3 t = theta_t₀ c6f854ee30014331b3519e4af4c592b1--b60491d4115f47da96a571cec1eb99b3 b8d13a0d02334e0a8ad3ca1f35334c35 RX(theta₁₀) b60491d4115f47da96a571cec1eb99b3--b8d13a0d02334e0a8ad3ca1f35334c35 caeb1feeaef449deb98cc6be120596b3 RY(theta₁₃) b8d13a0d02334e0a8ad3ca1f35334c35--caeb1feeaef449deb98cc6be120596b3 76b1597650794530ad508755cd6694d9 RX(theta₁₆) caeb1feeaef449deb98cc6be120596b3--76b1597650794530ad508755cd6694d9 e56f8678fc61485b80ef29dcb3a916d9 t = theta_t₁ 76b1597650794530ad508755cd6694d9--e56f8678fc61485b80ef29dcb3a916d9 e56f8678fc61485b80ef29dcb3a916d9--1a8ef1d4301b46769055c77cc6aeb9d9 3d968c8c638e45be99da9aa5911eee03 320a32b818ef46558fc8623e6c16d47b RX(theta₂) 3ff851b2f2884247b87bd3d827493c07--320a32b818ef46558fc8623e6c16d47b da3b74f31ca54e77ac39b2b1fd6852f0 RY(theta₅) 320a32b818ef46558fc8623e6c16d47b--da3b74f31ca54e77ac39b2b1fd6852f0 adbf9949494f4ca0bac01e757fac4e24 RX(theta₈) da3b74f31ca54e77ac39b2b1fd6852f0--adbf9949494f4ca0bac01e757fac4e24 939d40ae14c44d6d9e472d2b9a261c64 adbf9949494f4ca0bac01e757fac4e24--939d40ae14c44d6d9e472d2b9a261c64 5942dd7a4afa46a98462a825242de9d3 RX(theta₁₁) 939d40ae14c44d6d9e472d2b9a261c64--5942dd7a4afa46a98462a825242de9d3 37f437a51f5d4374840b821ce9920721 RY(theta₁₄) 5942dd7a4afa46a98462a825242de9d3--37f437a51f5d4374840b821ce9920721 1f31053e4f6548fba2f458e08227b8c4 RX(theta₁₇) 37f437a51f5d4374840b821ce9920721--1f31053e4f6548fba2f458e08227b8c4 62425793e67c4ec686f80302ff729604 1f31053e4f6548fba2f458e08227b8c4--62425793e67c4ec686f80302ff729604 62425793e67c4ec686f80302ff729604--3d968c8c638e45be99da9aa5911eee03

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_eb8cbe3ce7a0412e8caa00f9249b5fe8 cluster_a7f326aaa68f4d5e9850bea0a9f95f40 76ed5e59828c4659a40433c9c03d224c 0 7905074ab2c34153a9268d4ede218f55 RX(theta₀) 76ed5e59828c4659a40433c9c03d224c--7905074ab2c34153a9268d4ede218f55 2d0202abd97149b081134a448cde7015 1 18cbb4f49aa94c7ca6047b4f5f2ddfdb RY(theta₆) 7905074ab2c34153a9268d4ede218f55--18cbb4f49aa94c7ca6047b4f5f2ddfdb 9084f06d63304db08f226a740b1ec172 RX(theta₁₂) 18cbb4f49aa94c7ca6047b4f5f2ddfdb--9084f06d63304db08f226a740b1ec172 e120e02873f1498986b85c25f1b30884 9084f06d63304db08f226a740b1ec172--e120e02873f1498986b85c25f1b30884 d8793cd2608a468c856b7fc6f7ea943d RX(theta₁₈) e120e02873f1498986b85c25f1b30884--d8793cd2608a468c856b7fc6f7ea943d 2bffba80a65d48748307e2c8acac35d9 RY(theta₂₄) d8793cd2608a468c856b7fc6f7ea943d--2bffba80a65d48748307e2c8acac35d9 dcb84d8ce1564d3ba8e0e18076d50482 RX(theta₃₀) 2bffba80a65d48748307e2c8acac35d9--dcb84d8ce1564d3ba8e0e18076d50482 8a640e5d9c09439b812912666571c933 dcb84d8ce1564d3ba8e0e18076d50482--8a640e5d9c09439b812912666571c933 ddcd53eecb164b76b7f722e5e7351c61 8a640e5d9c09439b812912666571c933--ddcd53eecb164b76b7f722e5e7351c61 e1d51ecfcc0b406ba87492f83e9caae9 eb4547b7ae684af4937aa52dd09aaebf RX(theta₁) 2d0202abd97149b081134a448cde7015--eb4547b7ae684af4937aa52dd09aaebf a50051f090d247128a355f5beb200971 2 8018690130df48048b8e7753f04b61d4 RY(theta₇) eb4547b7ae684af4937aa52dd09aaebf--8018690130df48048b8e7753f04b61d4 d2b83e13d6a9480c9cd6f685de9975fb RX(theta₁₃) 8018690130df48048b8e7753f04b61d4--d2b83e13d6a9480c9cd6f685de9975fb 7157bee2b0a84c7cb539adae71850ca7 d2b83e13d6a9480c9cd6f685de9975fb--7157bee2b0a84c7cb539adae71850ca7 f94282408d8e437499f672095e4cef20 RX(theta₁₉) 7157bee2b0a84c7cb539adae71850ca7--f94282408d8e437499f672095e4cef20 6cd205a438d349859b2ce9782af79028 RY(theta₂₅) f94282408d8e437499f672095e4cef20--6cd205a438d349859b2ce9782af79028 b3d22e785a70468db8415973f815abe3 RX(theta₃₁) 6cd205a438d349859b2ce9782af79028--b3d22e785a70468db8415973f815abe3 06ced0369d494b438105ba8124cda5e5 b3d22e785a70468db8415973f815abe3--06ced0369d494b438105ba8124cda5e5 06ced0369d494b438105ba8124cda5e5--e1d51ecfcc0b406ba87492f83e9caae9 442293b260cf465b8f4a342e9bdb0603 db9812c8940440fd813e10f5399d3b88 RX(theta₂) a50051f090d247128a355f5beb200971--db9812c8940440fd813e10f5399d3b88 411cb5f49a584762b7642e2f87725bb6 3 b14c4d3558de4c52a0b8116a5bc26fa1 RY(theta₈) db9812c8940440fd813e10f5399d3b88--b14c4d3558de4c52a0b8116a5bc26fa1 2b298bddeb174b0885b6a56a2632944c RX(theta₁₄) b14c4d3558de4c52a0b8116a5bc26fa1--2b298bddeb174b0885b6a56a2632944c d6bc5e78232b4ccda3e144826e9d8731 HamEvo 2b298bddeb174b0885b6a56a2632944c--d6bc5e78232b4ccda3e144826e9d8731 a5321586226b48a8ac6437718333a27e RX(theta₂₀) d6bc5e78232b4ccda3e144826e9d8731--a5321586226b48a8ac6437718333a27e 25cf3b1f87494725b3a85969cc3e54bd RY(theta₂₆) a5321586226b48a8ac6437718333a27e--25cf3b1f87494725b3a85969cc3e54bd c36d2e74469b41a4b0bc3d8bb63d8d30 RX(theta₃₂) 25cf3b1f87494725b3a85969cc3e54bd--c36d2e74469b41a4b0bc3d8bb63d8d30 2447ea47ef2f4caca4a8517ba890de8b HamEvo c36d2e74469b41a4b0bc3d8bb63d8d30--2447ea47ef2f4caca4a8517ba890de8b 2447ea47ef2f4caca4a8517ba890de8b--442293b260cf465b8f4a342e9bdb0603 75cb19b5309443fe89f3d5253f0fe508 2e72f954141d46ecaac96e20f2d5e39d RX(theta₃) 411cb5f49a584762b7642e2f87725bb6--2e72f954141d46ecaac96e20f2d5e39d e8c63b459ba1498ab8b08823034b38fe 4 591bdb874e834b278fbf86d0aa20e677 RY(theta₉) 2e72f954141d46ecaac96e20f2d5e39d--591bdb874e834b278fbf86d0aa20e677 9764a8933287434ca281f94e99ad71b2 RX(theta₁₅) 591bdb874e834b278fbf86d0aa20e677--9764a8933287434ca281f94e99ad71b2 bce9bfbc37c946c191b834d0097f5dad t = theta_t₀ 9764a8933287434ca281f94e99ad71b2--bce9bfbc37c946c191b834d0097f5dad a53136c983964ce09f1dfa6a69de3afd RX(theta₂₁) bce9bfbc37c946c191b834d0097f5dad--a53136c983964ce09f1dfa6a69de3afd 6ed629c0126d4132b30eb74d444a75f9 RY(theta₂₇) a53136c983964ce09f1dfa6a69de3afd--6ed629c0126d4132b30eb74d444a75f9 8b6edeb388a549749f10194c5c971ffe RX(theta₃₃) 6ed629c0126d4132b30eb74d444a75f9--8b6edeb388a549749f10194c5c971ffe 8654af75fcb24119bf450acac825e3b4 t = theta_t₁ 8b6edeb388a549749f10194c5c971ffe--8654af75fcb24119bf450acac825e3b4 8654af75fcb24119bf450acac825e3b4--75cb19b5309443fe89f3d5253f0fe508 c1f14a7b3661477ca5541e10d7635e0c 85f13c2c68164e72955b4349f137ff69 RX(theta₄) e8c63b459ba1498ab8b08823034b38fe--85f13c2c68164e72955b4349f137ff69 b864117111af4453af250660d98de619 5 39fa6a251a18488f82e2041110e39899 RY(theta₁₀) 85f13c2c68164e72955b4349f137ff69--39fa6a251a18488f82e2041110e39899 e599b8ff24b84634b04d938099dcb7e9 RX(theta₁₆) 39fa6a251a18488f82e2041110e39899--e599b8ff24b84634b04d938099dcb7e9 8655fbfe0ab1498caba94cdaeee89909 e599b8ff24b84634b04d938099dcb7e9--8655fbfe0ab1498caba94cdaeee89909 aed5e19646f74cc6868529018b31535a RX(theta₂₂) 8655fbfe0ab1498caba94cdaeee89909--aed5e19646f74cc6868529018b31535a d03e0a5f769e488aa734a4664c517c25 RY(theta₂₈) aed5e19646f74cc6868529018b31535a--d03e0a5f769e488aa734a4664c517c25 b555ccc8f9dd430c86891fa79c5ec509 RX(theta₃₄) d03e0a5f769e488aa734a4664c517c25--b555ccc8f9dd430c86891fa79c5ec509 0976bdcc31294e188520248247ad2d50 b555ccc8f9dd430c86891fa79c5ec509--0976bdcc31294e188520248247ad2d50 0976bdcc31294e188520248247ad2d50--c1f14a7b3661477ca5541e10d7635e0c b165cf998f09424bbc0239877296eaec 4b81bdbb778844e1bda5d298d9a26cb0 RX(theta₅) b864117111af4453af250660d98de619--4b81bdbb778844e1bda5d298d9a26cb0 9c3de41545284f63b66468057e2187fc RY(theta₁₁) 4b81bdbb778844e1bda5d298d9a26cb0--9c3de41545284f63b66468057e2187fc 6a9f12e0b91542449001fbba09e29d7b RX(theta₁₇) 9c3de41545284f63b66468057e2187fc--6a9f12e0b91542449001fbba09e29d7b e3c445e36941413a87af378eba3b2355 6a9f12e0b91542449001fbba09e29d7b--e3c445e36941413a87af378eba3b2355 f5686c7d4f424f43aad1d235f88b136f RX(theta₂₃) e3c445e36941413a87af378eba3b2355--f5686c7d4f424f43aad1d235f88b136f 7502480c7dc94bd0a80f4c851d62ce2e RY(theta₂₉) f5686c7d4f424f43aad1d235f88b136f--7502480c7dc94bd0a80f4c851d62ce2e c9d974d2a0da4f568f9fe14022057f66 RX(theta₃₅) 7502480c7dc94bd0a80f4c851d62ce2e--c9d974d2a0da4f568f9fe14022057f66 69c28e2279714eceac493b52f6bbc583 c9d974d2a0da4f568f9fe14022057f66--69c28e2279714eceac493b52f6bbc583 69c28e2279714eceac493b52f6bbc583--b165cf998f09424bbc0239877296eaec

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_46666f91baa548aebbaf715e1b2f01e3 BPMA-1 cluster_4c53af4b531942c58e7b5289c467bb36 BPMA-0 47cfe747bdc5412997b33390bc3a4a38 0 a17cde668a35411da6537b7a898e0b0e RX(iia_α₀₀) 47cfe747bdc5412997b33390bc3a4a38--a17cde668a35411da6537b7a898e0b0e 788f6149130d4089874c6ad6ea58c2f0 1 0154c4e7b03d4654a4ebdc750c78edcd RY(iia_α₀₃) a17cde668a35411da6537b7a898e0b0e--0154c4e7b03d4654a4ebdc750c78edcd 86f431a57a334f2a8831be5761d290c3 0154c4e7b03d4654a4ebdc750c78edcd--86f431a57a334f2a8831be5761d290c3 9950032fee7346099838e79bde883860 86f431a57a334f2a8831be5761d290c3--9950032fee7346099838e79bde883860 0300424ba9664ae1a69f5a9b252f6c1c RX(iia_γ₀₀) 9950032fee7346099838e79bde883860--0300424ba9664ae1a69f5a9b252f6c1c 7cded3bec795407bae864dc3ee79e194 0300424ba9664ae1a69f5a9b252f6c1c--7cded3bec795407bae864dc3ee79e194 38f9f58b550e4bdf8f3d507a2159de25 7cded3bec795407bae864dc3ee79e194--38f9f58b550e4bdf8f3d507a2159de25 ebc9072c4a574dc8940ad972ef246f3b RY(iia_β₀₃) 38f9f58b550e4bdf8f3d507a2159de25--ebc9072c4a574dc8940ad972ef246f3b 213291cd496144b7885200d506117d1b RX(iia_β₀₀) ebc9072c4a574dc8940ad972ef246f3b--213291cd496144b7885200d506117d1b 65d85d58217c4c378eebc8dcdf484a03 RX(iia_α₁₀) 213291cd496144b7885200d506117d1b--65d85d58217c4c378eebc8dcdf484a03 4b607eae992c416e860699b937a23543 RY(iia_α₁₃) 65d85d58217c4c378eebc8dcdf484a03--4b607eae992c416e860699b937a23543 7b21d5e331b84fd2befd547d90db723b 4b607eae992c416e860699b937a23543--7b21d5e331b84fd2befd547d90db723b 978ec8c6863147aabfe0b6844bb3504b 7b21d5e331b84fd2befd547d90db723b--978ec8c6863147aabfe0b6844bb3504b 1be5bc96f10f4d4f826604ca9bf3815e RX(iia_γ₁₀) 978ec8c6863147aabfe0b6844bb3504b--1be5bc96f10f4d4f826604ca9bf3815e 25e7464ef28a4b6c8be14f489da8b222 1be5bc96f10f4d4f826604ca9bf3815e--25e7464ef28a4b6c8be14f489da8b222 0aac8d903e294dd087c4fc813c036878 25e7464ef28a4b6c8be14f489da8b222--0aac8d903e294dd087c4fc813c036878 a870aeac05164cedbd6df19e5a0e3409 RY(iia_β₁₃) 0aac8d903e294dd087c4fc813c036878--a870aeac05164cedbd6df19e5a0e3409 828711353fe04b489c311cf8c540a3e9 RX(iia_β₁₀) a870aeac05164cedbd6df19e5a0e3409--828711353fe04b489c311cf8c540a3e9 b879b7f1d25541e0bddd55facee2bc6e 828711353fe04b489c311cf8c540a3e9--b879b7f1d25541e0bddd55facee2bc6e e07106e1fc0d421a880f5ce1d18d548a c0df652d58d54568858128911b5c251c RX(iia_α₀₁) 788f6149130d4089874c6ad6ea58c2f0--c0df652d58d54568858128911b5c251c 75ebc378d42d40d894123f14671758cd 2 c13de69de442406f9d713d3ad708c3d7 RY(iia_α₀₄) c0df652d58d54568858128911b5c251c--c13de69de442406f9d713d3ad708c3d7 80a19f0427e0469780f014fb38c2bdd6 X c13de69de442406f9d713d3ad708c3d7--80a19f0427e0469780f014fb38c2bdd6 80a19f0427e0469780f014fb38c2bdd6--86f431a57a334f2a8831be5761d290c3 eb16a63a98b241c7b73539e8c4ee989c 80a19f0427e0469780f014fb38c2bdd6--eb16a63a98b241c7b73539e8c4ee989c ca2532ba39d14893998efd4f548a8c63 RX(iia_γ₀₁) eb16a63a98b241c7b73539e8c4ee989c--ca2532ba39d14893998efd4f548a8c63 87a5f933a5b6458c82bc2c3f5a3ece11 ca2532ba39d14893998efd4f548a8c63--87a5f933a5b6458c82bc2c3f5a3ece11 94f00dc9218249aa957c9fe4fce58574 X 87a5f933a5b6458c82bc2c3f5a3ece11--94f00dc9218249aa957c9fe4fce58574 94f00dc9218249aa957c9fe4fce58574--38f9f58b550e4bdf8f3d507a2159de25 7df72d858cff4fca8597ef17ccad42f8 RY(iia_β₀₄) 94f00dc9218249aa957c9fe4fce58574--7df72d858cff4fca8597ef17ccad42f8 034470111bef4b6ebb854b83771e298c RX(iia_β₀₁) 7df72d858cff4fca8597ef17ccad42f8--034470111bef4b6ebb854b83771e298c fb4901915e54402fa946ed6235033b82 RX(iia_α₁₁) 034470111bef4b6ebb854b83771e298c--fb4901915e54402fa946ed6235033b82 a3029b4719de41c0b2ba92a693512334 RY(iia_α₁₄) fb4901915e54402fa946ed6235033b82--a3029b4719de41c0b2ba92a693512334 df1462b9036846e2a912856110fff27b X a3029b4719de41c0b2ba92a693512334--df1462b9036846e2a912856110fff27b df1462b9036846e2a912856110fff27b--7b21d5e331b84fd2befd547d90db723b 82962e49e18341f0b4c014269d4cd687 df1462b9036846e2a912856110fff27b--82962e49e18341f0b4c014269d4cd687 65e2ff2ceef44b96b497c08578e9d02d RX(iia_γ₁₁) 82962e49e18341f0b4c014269d4cd687--65e2ff2ceef44b96b497c08578e9d02d 014a07090c6a470e87e537c56ff5cfdb 65e2ff2ceef44b96b497c08578e9d02d--014a07090c6a470e87e537c56ff5cfdb eac42883b3534902a06516ea41be3b27 X 014a07090c6a470e87e537c56ff5cfdb--eac42883b3534902a06516ea41be3b27 eac42883b3534902a06516ea41be3b27--0aac8d903e294dd087c4fc813c036878 0402e746cb2b4b0ca1586747517396fb RY(iia_β₁₄) eac42883b3534902a06516ea41be3b27--0402e746cb2b4b0ca1586747517396fb 4b800533b39e412fb84a40f6b3da7755 RX(iia_β₁₁) 0402e746cb2b4b0ca1586747517396fb--4b800533b39e412fb84a40f6b3da7755 4b800533b39e412fb84a40f6b3da7755--e07106e1fc0d421a880f5ce1d18d548a 2c544a47314d47e489f5bdea1e1d4ace 301c1981803242b8a071f664a01bedb3 RX(iia_α₀₂) 75ebc378d42d40d894123f14671758cd--301c1981803242b8a071f664a01bedb3 df1bddd3d9524837baf51e37cc7db231 RY(iia_α₀₅) 301c1981803242b8a071f664a01bedb3--df1bddd3d9524837baf51e37cc7db231 940ec4c65cc54ce39345b3d64c49e3c3 df1bddd3d9524837baf51e37cc7db231--940ec4c65cc54ce39345b3d64c49e3c3 507c4379afce4e648843478e82535c07 X 940ec4c65cc54ce39345b3d64c49e3c3--507c4379afce4e648843478e82535c07 507c4379afce4e648843478e82535c07--eb16a63a98b241c7b73539e8c4ee989c f55df5235d6b4003b7c2ba7dafc750be RX(iia_γ₀₂) 507c4379afce4e648843478e82535c07--f55df5235d6b4003b7c2ba7dafc750be 8f325bd00ad840b8afb7714d5f01f0bc X f55df5235d6b4003b7c2ba7dafc750be--8f325bd00ad840b8afb7714d5f01f0bc 8f325bd00ad840b8afb7714d5f01f0bc--87a5f933a5b6458c82bc2c3f5a3ece11 3cc5ba174a464e1ca1fdd3617e3a0455 8f325bd00ad840b8afb7714d5f01f0bc--3cc5ba174a464e1ca1fdd3617e3a0455 bc31d0b5b7a74db78cbde07b89265070 RY(iia_β₀₅) 3cc5ba174a464e1ca1fdd3617e3a0455--bc31d0b5b7a74db78cbde07b89265070 26dc04ae09a5478d831307ef22d36d0b RX(iia_β₀₂) bc31d0b5b7a74db78cbde07b89265070--26dc04ae09a5478d831307ef22d36d0b 72db784988964816a610dafa138a14eb RX(iia_α₁₂) 26dc04ae09a5478d831307ef22d36d0b--72db784988964816a610dafa138a14eb ed29d466fa5a46fdb5e10a5b334ca4e5 RY(iia_α₁₅) 72db784988964816a610dafa138a14eb--ed29d466fa5a46fdb5e10a5b334ca4e5 9cc8bb3c9ed140ea9253ec202162c254 ed29d466fa5a46fdb5e10a5b334ca4e5--9cc8bb3c9ed140ea9253ec202162c254 b9702b4b3cee49ccbe6f0a5c4ffc46e7 X 9cc8bb3c9ed140ea9253ec202162c254--b9702b4b3cee49ccbe6f0a5c4ffc46e7 b9702b4b3cee49ccbe6f0a5c4ffc46e7--82962e49e18341f0b4c014269d4cd687 d17a208004d24d8c8aa813e549307fac RX(iia_γ₁₂) b9702b4b3cee49ccbe6f0a5c4ffc46e7--d17a208004d24d8c8aa813e549307fac 8d1a7a037163431ea9fe3381c8129fc8 X d17a208004d24d8c8aa813e549307fac--8d1a7a037163431ea9fe3381c8129fc8 8d1a7a037163431ea9fe3381c8129fc8--014a07090c6a470e87e537c56ff5cfdb 400712ef25764e7fafdf963af68fb518 8d1a7a037163431ea9fe3381c8129fc8--400712ef25764e7fafdf963af68fb518 8d1878617d5e4a0b9d4e587837668736 RY(iia_β₁₅) 400712ef25764e7fafdf963af68fb518--8d1878617d5e4a0b9d4e587837668736 b6aee338489e4080aed0d3b3913e1fb0 RX(iia_β₁₂) 8d1878617d5e4a0b9d4e587837668736--b6aee338489e4080aed0d3b3913e1fb0 b6aee338489e4080aed0d3b3913e1fb0--2c544a47314d47e489f5bdea1e1d4ace