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_d164f77e6268451985386f0700e1f6ee Constant Chebyshev FM cluster_bbd85d04461f42b5a766c26676df9c46 Constant Fourier FM e652cb02251546e59728c36e3fdcf5de 0 3083b54d6206413dade27779f4863c08 RX(phi) e652cb02251546e59728c36e3fdcf5de--3083b54d6206413dade27779f4863c08 e062e4a41ea8469d9ecc866c27d79738 1 e6e1869c86ad4201a63e7c069bc6f272 RX(acos(phi)) 3083b54d6206413dade27779f4863c08--e6e1869c86ad4201a63e7c069bc6f272 3c0d4c38b0394a3fa8287057f699a14d e6e1869c86ad4201a63e7c069bc6f272--3c0d4c38b0394a3fa8287057f699a14d ea4a7dd5bd21428484c8a1a1f53fe108 08070c2aa67141b9902bb09cfcdaa1d5 RX(phi) e062e4a41ea8469d9ecc866c27d79738--08070c2aa67141b9902bb09cfcdaa1d5 9425f3f9e7b44d9da944749a3949d9a6 2 a2c58b84c8394fcb8f03587e85981e6c RX(acos(phi)) 08070c2aa67141b9902bb09cfcdaa1d5--a2c58b84c8394fcb8f03587e85981e6c a2c58b84c8394fcb8f03587e85981e6c--ea4a7dd5bd21428484c8a1a1f53fe108 f0e34ca6ef114cfd83aaaaeb2c8b59fd dbef91e6743c47c49ab27aa8af1b5690 RX(phi) 9425f3f9e7b44d9da944749a3949d9a6--dbef91e6743c47c49ab27aa8af1b5690 2a8ad882de5144b5a1ef621005028a46 RX(acos(phi)) dbef91e6743c47c49ab27aa8af1b5690--2a8ad882de5144b5a1ef621005028a46 2a8ad882de5144b5a1ef621005028a46--f0e34ca6ef114cfd83aaaaeb2c8b59fd

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_999e410a900c40698aad64766a5e690c Constant <function custom_fn at 0x7f815936c430> FM cluster_6ec05e7cb5d94e64b97fa869e7cf4256 Constant asin FM 814551105abb42bbaee843044fe27173 0 df0765f94f324f4e80cfd08b81755633 RX(asin(phi)) 814551105abb42bbaee843044fe27173--df0765f94f324f4e80cfd08b81755633 fb45bf6faa8d4e02b53cd307213d4e47 1 19d78e5b1114433e8fb27377de20440c RX(phi**2 + asin(phi)) df0765f94f324f4e80cfd08b81755633--19d78e5b1114433e8fb27377de20440c df810461dc4343b0827413676f05212b 19d78e5b1114433e8fb27377de20440c--df810461dc4343b0827413676f05212b 04796345cc02454cbda1d0a499a19b7b 1ed2d03d660041e4808139a17c8e58fa RX(asin(phi)) fb45bf6faa8d4e02b53cd307213d4e47--1ed2d03d660041e4808139a17c8e58fa 2abbbbccfb624199be6a335792f52650 2 5466887317044a8b90ba32cbff77b903 RX(phi**2 + asin(phi)) 1ed2d03d660041e4808139a17c8e58fa--5466887317044a8b90ba32cbff77b903 5466887317044a8b90ba32cbff77b903--04796345cc02454cbda1d0a499a19b7b 39e7d6220c0442f4b3908bbe283bdb76 853c5df493074c6598015b65139f9495 RX(asin(phi)) 2abbbbccfb624199be6a335792f52650--853c5df493074c6598015b65139f9495 54ffcbaf0a334f248c03ad797426086a RX(phi**2 + asin(phi)) 853c5df493074c6598015b65139f9495--54ffcbaf0a334f248c03ad797426086a 54ffcbaf0a334f248c03ad797426086a--39e7d6220c0442f4b3908bbe283bdb76

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_5bae8a25e09a45efb9b7adbf0ccfc6bb Exponential Fourier FM cluster_184ace91209443af97de06c5399f43bb Constant Fourier FM cluster_65da035f64cc4c30bacb027741230fcb Tower Fourier FM 474272789dbf467496ffa5b185fc5ba9 0 5b7a6beb6b29467592c026875782e56b RX(phi) 474272789dbf467496ffa5b185fc5ba9--5b7a6beb6b29467592c026875782e56b 05fe295a08b14345aa1a8e489300b4a2 1 1c6825e03f9f4ec7a6e5682086ca86a7 RX(1.0*phi) 5b7a6beb6b29467592c026875782e56b--1c6825e03f9f4ec7a6e5682086ca86a7 76845bbc47d941a6b4e69caa3c6d148b RX(1.0*phi) 1c6825e03f9f4ec7a6e5682086ca86a7--76845bbc47d941a6b4e69caa3c6d148b 3a2f84ce46304bd5be13ce95d7542d35 76845bbc47d941a6b4e69caa3c6d148b--3a2f84ce46304bd5be13ce95d7542d35 5b2ad77078314d9e8b03e81b9e1ac935 23c71e77b46c4041a3f952fca19ee6ab RX(phi) 05fe295a08b14345aa1a8e489300b4a2--23c71e77b46c4041a3f952fca19ee6ab 1d949e3bc5eb4a4a87b3d21e8b862adc 2 0be2ed8c453d49e6aa49bd30faae8942 RX(2.0*phi) 23c71e77b46c4041a3f952fca19ee6ab--0be2ed8c453d49e6aa49bd30faae8942 d4a3206744cb4e2db4dd99e08d2940f1 RX(2.0*phi) 0be2ed8c453d49e6aa49bd30faae8942--d4a3206744cb4e2db4dd99e08d2940f1 d4a3206744cb4e2db4dd99e08d2940f1--5b2ad77078314d9e8b03e81b9e1ac935 8d3e3779aafa4d17b384a15dee2776ac e5bbc8627ce14fa5b33d94c51382c79d RX(phi) 1d949e3bc5eb4a4a87b3d21e8b862adc--e5bbc8627ce14fa5b33d94c51382c79d 6da3bb5c927848e3aeb5344875c2a003 3 9be5b62d879b49348da6fd7994714337 RX(3.0*phi) e5bbc8627ce14fa5b33d94c51382c79d--9be5b62d879b49348da6fd7994714337 eec16c10f7b44b569eb653d88e65881e RX(4.0*phi) 9be5b62d879b49348da6fd7994714337--eec16c10f7b44b569eb653d88e65881e eec16c10f7b44b569eb653d88e65881e--8d3e3779aafa4d17b384a15dee2776ac 71375855ad5244c58d07c023a513721d ef947ecb6be7486fb360d8a00be74d6d RX(phi) 6da3bb5c927848e3aeb5344875c2a003--ef947ecb6be7486fb360d8a00be74d6d 1077d58498be40e09eb361b83b34201c 4 b5ae839d15074354a0a2a5f3140538ac RX(4.0*phi) ef947ecb6be7486fb360d8a00be74d6d--b5ae839d15074354a0a2a5f3140538ac e2c968aa146049bb98e6237645f2af18 RX(8.0*phi) b5ae839d15074354a0a2a5f3140538ac--e2c968aa146049bb98e6237645f2af18 e2c968aa146049bb98e6237645f2af18--71375855ad5244c58d07c023a513721d af579d605af54fafb2643f3304609452 42c61f1915ad43dfb6c97dd929c257b6 RX(phi) 1077d58498be40e09eb361b83b34201c--42c61f1915ad43dfb6c97dd929c257b6 27c4a2850ee6454b86afc93d35eb329a RX(5.0*phi) 42c61f1915ad43dfb6c97dd929c257b6--27c4a2850ee6454b86afc93d35eb329a 9efde9b521484e949faac301b2220999 RX(16.0*phi) 27c4a2850ee6454b86afc93d35eb329a--9efde9b521484e949faac301b2220999 9efde9b521484e949faac301b2220999--af579d605af54fafb2643f3304609452

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 06a7b34e1dd44600a211ab4a7f8a5846 0 9e8155c20ae54a6aa017daf1aa4b9f8f RX(1.0*acos(phi)) 06a7b34e1dd44600a211ab4a7f8a5846--9e8155c20ae54a6aa017daf1aa4b9f8f 52e2b48da27746238fc864fd1fea1988 1 cd4626d50d8941c481942b5d31bfe356 9e8155c20ae54a6aa017daf1aa4b9f8f--cd4626d50d8941c481942b5d31bfe356 fe4fcf3b51054b92840333e100c0cd44 3f92bf82673a48e4ac1404dfad9999ab RX(1.414*acos(phi)) 52e2b48da27746238fc864fd1fea1988--3f92bf82673a48e4ac1404dfad9999ab e6fd11846757422d893d7b4e9c629540 2 3f92bf82673a48e4ac1404dfad9999ab--fe4fcf3b51054b92840333e100c0cd44 375d0dd18afa4d9d911dcb577f1ff9cc 3e01e6c95f9d45a787896f848d7afd83 RX(1.732*acos(phi)) e6fd11846757422d893d7b4e9c629540--3e01e6c95f9d45a787896f848d7afd83 529afea665e842758c728dd7b2629259 3 3e01e6c95f9d45a787896f848d7afd83--375d0dd18afa4d9d911dcb577f1ff9cc b1671dcd90e84510888b1002e8cbfc78 48e107a59fc64a238093fb845e1f0fa1 RX(2.0*acos(phi)) 529afea665e842758c728dd7b2629259--48e107a59fc64a238093fb845e1f0fa1 04f13a7f1ed04497ad1b5d56568fbb1e 4 48e107a59fc64a238093fb845e1f0fa1--b1671dcd90e84510888b1002e8cbfc78 47d92959b6e2465b95a6e66719c76c56 a7ac2e75e91643488491878ba1c9af2f RX(2.236*acos(phi)) 04f13a7f1ed04497ad1b5d56568fbb1e--a7ac2e75e91643488491878ba1c9af2f a7ac2e75e91643488491878ba1c9af2f--47d92959b6e2465b95a6e66719c76c56

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 cacf773dd3944c53858eabc904408ac0 0 0876aade797346f39923dfd9ba86ff54 RX(1.0*phi*w₀) cacf773dd3944c53858eabc904408ac0--0876aade797346f39923dfd9ba86ff54 33562748217e487f85090797fd592fb7 1 355d198d63af4d1abd87b510dd3e9007 0876aade797346f39923dfd9ba86ff54--355d198d63af4d1abd87b510dd3e9007 b5579fc337db45cabf238f5dacd274a2 76424cc8efe246b6be931948be40aca8 RX(2.0*phi*w₁) 33562748217e487f85090797fd592fb7--76424cc8efe246b6be931948be40aca8 f3374448a0324fea820ab9684a0a349a 2 76424cc8efe246b6be931948be40aca8--b5579fc337db45cabf238f5dacd274a2 79fe502fe30e43b391345574ed8bd422 dfd4e2b84c5047a3a7d1737d9b4539cb RX(4.0*phi*w₂) f3374448a0324fea820ab9684a0a349a--dfd4e2b84c5047a3a7d1737d9b4539cb 0126582997174e0499387160a0090f41 3 dfd4e2b84c5047a3a7d1737d9b4539cb--79fe502fe30e43b391345574ed8bd422 ebb2df1c8d2f47b6ac4f8d3ec546d7a1 d3476b3a487549dda6da4ac6b3e21e59 RX(8.0*phi*w₃) 0126582997174e0499387160a0090f41--d3476b3a487549dda6da4ac6b3e21e59 de8691aecd834e0fb74a3a8471cf4dfe 4 d3476b3a487549dda6da4ac6b3e21e59--ebb2df1c8d2f47b6ac4f8d3ec546d7a1 008dba9276bb414087991b46f1ab4beb 58f1c6bf173d4a55b4661d677911fc38 RX(16.0*phi*w₄) de8691aecd834e0fb74a3a8471cf4dfe--58f1c6bf173d4a55b4661d677911fc38 58f1c6bf173d4a55b4661d677911fc38--008dba9276bb414087991b46f1ab4beb

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 c185553aee014f978aed234908dde394 0 885b3db8834d453bac19e8a53e8321b6 RY(80.0*acos(w₄*(0.667*x + 1.667))) c185553aee014f978aed234908dde394--885b3db8834d453bac19e8a53e8321b6 f6d7a5b6b64b412ba634858b2f19fe94 1 76e22c06110f432c9d14f5ee7d7fed26 885b3db8834d453bac19e8a53e8321b6--76e22c06110f432c9d14f5ee7d7fed26 a943cbf0ab0e4925a2bfed2ed3e883dd 5b441faa358d47d4b4040ea1e7113a88 RY(40.0*acos(w₃*(0.667*x + 1.667))) f6d7a5b6b64b412ba634858b2f19fe94--5b441faa358d47d4b4040ea1e7113a88 9e5abf302a8e40fa9f76807f1b16d63a 2 5b441faa358d47d4b4040ea1e7113a88--a943cbf0ab0e4925a2bfed2ed3e883dd f3cf118b39304e4cbe00a5115b65dd89 6498a0ee8ac84bc9865f12e20155ad25 RY(20.0*acos(w₂*(0.667*x + 1.667))) 9e5abf302a8e40fa9f76807f1b16d63a--6498a0ee8ac84bc9865f12e20155ad25 5c38f0b1d1c446ad98abecb59b59a41b 3 6498a0ee8ac84bc9865f12e20155ad25--f3cf118b39304e4cbe00a5115b65dd89 77623452b4ee462c93ba472cefb9aa91 bf0db1e5e81e479bbf9c7814e1ce9fcb RY(10.0*acos(w₁*(0.667*x + 1.667))) 5c38f0b1d1c446ad98abecb59b59a41b--bf0db1e5e81e479bbf9c7814e1ce9fcb 145bd20b05f0457b8ba5e7ba61930118 4 bf0db1e5e81e479bbf9c7814e1ce9fcb--77623452b4ee462c93ba472cefb9aa91 fddc4e9e9cfb452ca518d537f7d223c6 1e556ae8e9414ccb9bc2c1836b088a35 RY(5.0*acos(w₀*(0.667*x + 1.667))) 145bd20b05f0457b8ba5e7ba61930118--1e556ae8e9414ccb9bc2c1836b088a35 1e556ae8e9414ccb9bc2c1836b088a35--fddc4e9e9cfb452ca518d537f7d223c6

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 f216bb1cf13a4ab8bb246dc09f4dab7d 0 0f084dcc58fd40e0b307f614c89562e5 RX(theta₀) f216bb1cf13a4ab8bb246dc09f4dab7d--0f084dcc58fd40e0b307f614c89562e5 90ca9f6a44494e428dabdcdbef60cd62 1 bf09afb0052f43e0a6650358f2c9dba1 RY(theta₃) 0f084dcc58fd40e0b307f614c89562e5--bf09afb0052f43e0a6650358f2c9dba1 6e901d3027f14e78a9f489a7c3ecc2d4 RX(theta₆) bf09afb0052f43e0a6650358f2c9dba1--6e901d3027f14e78a9f489a7c3ecc2d4 f9b02f4024264b06b4defb699c89d198 6e901d3027f14e78a9f489a7c3ecc2d4--f9b02f4024264b06b4defb699c89d198 adcd69d591704530866c20b874843157 f9b02f4024264b06b4defb699c89d198--adcd69d591704530866c20b874843157 999548ac1fa74d8aba14dcd6d57f0b89 RX(theta₉) adcd69d591704530866c20b874843157--999548ac1fa74d8aba14dcd6d57f0b89 9d21af9c794047058b2624cdd9d11bc3 RY(theta₁₂) 999548ac1fa74d8aba14dcd6d57f0b89--9d21af9c794047058b2624cdd9d11bc3 524c7434444e497eaac6748c17838966 RX(theta₁₅) 9d21af9c794047058b2624cdd9d11bc3--524c7434444e497eaac6748c17838966 d45bb094f9f94fc19bd7dd880279e5fe 524c7434444e497eaac6748c17838966--d45bb094f9f94fc19bd7dd880279e5fe a8f5e6fc3fe8469c919593208a82a42a d45bb094f9f94fc19bd7dd880279e5fe--a8f5e6fc3fe8469c919593208a82a42a 0509f970c3ae4ddabcd95f90c5e6bbfd a8f5e6fc3fe8469c919593208a82a42a--0509f970c3ae4ddabcd95f90c5e6bbfd 79c1afb306b74f0db83d91af4183459b 153796fe5df14fe4a6cf1a7539176335 RX(theta₁) 90ca9f6a44494e428dabdcdbef60cd62--153796fe5df14fe4a6cf1a7539176335 3b0e07bf4b934378b4690fa6685f3136 2 ccca1589629a4b189453bfc00c46c57d RY(theta₄) 153796fe5df14fe4a6cf1a7539176335--ccca1589629a4b189453bfc00c46c57d 1a1cf859e3704962b9ed5ad1826971a7 RX(theta₇) ccca1589629a4b189453bfc00c46c57d--1a1cf859e3704962b9ed5ad1826971a7 bee7fed56f0644848f7ba3749b68ca9b X 1a1cf859e3704962b9ed5ad1826971a7--bee7fed56f0644848f7ba3749b68ca9b bee7fed56f0644848f7ba3749b68ca9b--f9b02f4024264b06b4defb699c89d198 0047421e7dd64000b9dc1027e2f809da bee7fed56f0644848f7ba3749b68ca9b--0047421e7dd64000b9dc1027e2f809da 9a21918948394fb5b102c2fbebf3fd34 RX(theta₁₀) 0047421e7dd64000b9dc1027e2f809da--9a21918948394fb5b102c2fbebf3fd34 6a64802e83a94939bab14aead486ece1 RY(theta₁₃) 9a21918948394fb5b102c2fbebf3fd34--6a64802e83a94939bab14aead486ece1 8b1d5e299f234f1fabb56b386d8d0507 RX(theta₁₆) 6a64802e83a94939bab14aead486ece1--8b1d5e299f234f1fabb56b386d8d0507 4f671b4f41fd422caa78e908b7dae8b6 X 8b1d5e299f234f1fabb56b386d8d0507--4f671b4f41fd422caa78e908b7dae8b6 4f671b4f41fd422caa78e908b7dae8b6--d45bb094f9f94fc19bd7dd880279e5fe b5823ee61b22467d9ecc79af9de0cc33 4f671b4f41fd422caa78e908b7dae8b6--b5823ee61b22467d9ecc79af9de0cc33 b5823ee61b22467d9ecc79af9de0cc33--79c1afb306b74f0db83d91af4183459b 0ff759f980da492cb074d4ce9f2ac56f 5cadb3d97e4b4ce09cd9f1a512dd9b02 RX(theta₂) 3b0e07bf4b934378b4690fa6685f3136--5cadb3d97e4b4ce09cd9f1a512dd9b02 64710232422242b4ad8e323a9efced26 RY(theta₅) 5cadb3d97e4b4ce09cd9f1a512dd9b02--64710232422242b4ad8e323a9efced26 1347634baa8f494db96a984fc55f6e1e RX(theta₈) 64710232422242b4ad8e323a9efced26--1347634baa8f494db96a984fc55f6e1e 212b656366d842a2b8da53cf48b15a1e 1347634baa8f494db96a984fc55f6e1e--212b656366d842a2b8da53cf48b15a1e b3d08d81aef2460ca5f137a55f05791c X 212b656366d842a2b8da53cf48b15a1e--b3d08d81aef2460ca5f137a55f05791c b3d08d81aef2460ca5f137a55f05791c--0047421e7dd64000b9dc1027e2f809da 998e39717fe648f3911acbc060ec7cb0 RX(theta₁₁) b3d08d81aef2460ca5f137a55f05791c--998e39717fe648f3911acbc060ec7cb0 6b63ccaf04d447dba046980381e361cb RY(theta₁₄) 998e39717fe648f3911acbc060ec7cb0--6b63ccaf04d447dba046980381e361cb 1592c2f91ca64a4db802e8985cb6f33a RX(theta₁₇) 6b63ccaf04d447dba046980381e361cb--1592c2f91ca64a4db802e8985cb6f33a bd22594e1e4643e4b44ebc1d6c6ca59a 1592c2f91ca64a4db802e8985cb6f33a--bd22594e1e4643e4b44ebc1d6c6ca59a 4b82e2ee23df4bf5939f79f03daf84ff X bd22594e1e4643e4b44ebc1d6c6ca59a--4b82e2ee23df4bf5939f79f03daf84ff 4b82e2ee23df4bf5939f79f03daf84ff--b5823ee61b22467d9ecc79af9de0cc33 4b82e2ee23df4bf5939f79f03daf84ff--0ff759f980da492cb074d4ce9f2ac56f

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 132790f2ca054aeab70e3e7e0d9da034 0 23493b1e49ad46e89a44e6cda932248c RX(phi₀) 132790f2ca054aeab70e3e7e0d9da034--23493b1e49ad46e89a44e6cda932248c a3f3d97b29194a59b8cdf8ac008cd960 1 5cbb2991dc6b48a8baa066b704c7f0b8 RY(phi₃) 23493b1e49ad46e89a44e6cda932248c--5cbb2991dc6b48a8baa066b704c7f0b8 568546f1a89a43cfbd62b4416586a744 RX(phi₆) 5cbb2991dc6b48a8baa066b704c7f0b8--568546f1a89a43cfbd62b4416586a744 e53f61e2975047e5a5652dff7423d4d8 568546f1a89a43cfbd62b4416586a744--e53f61e2975047e5a5652dff7423d4d8 136393cb5c23423ebf52c11932c89444 e53f61e2975047e5a5652dff7423d4d8--136393cb5c23423ebf52c11932c89444 aff4d189e56845669137a096580e8fe8 RX(phi₉) 136393cb5c23423ebf52c11932c89444--aff4d189e56845669137a096580e8fe8 c22e0b63b3c84722b3a6393d5755be24 RY(phi₁₂) aff4d189e56845669137a096580e8fe8--c22e0b63b3c84722b3a6393d5755be24 385ad0886089421a973e6b9c7d1d42b1 RX(phi₁₅) c22e0b63b3c84722b3a6393d5755be24--385ad0886089421a973e6b9c7d1d42b1 2cde1bdad94d485db6dfd7f6f597eaf0 385ad0886089421a973e6b9c7d1d42b1--2cde1bdad94d485db6dfd7f6f597eaf0 4066e94a95954fe5852650ecbcba539e 2cde1bdad94d485db6dfd7f6f597eaf0--4066e94a95954fe5852650ecbcba539e 0cda8776cd764b8781109ea474ed6e46 4066e94a95954fe5852650ecbcba539e--0cda8776cd764b8781109ea474ed6e46 5775b5e664d649a0b9c5bf5d9fa3d437 e677cd78244c43698c6173dae1e2f64e RX(phi₁) a3f3d97b29194a59b8cdf8ac008cd960--e677cd78244c43698c6173dae1e2f64e c23fa3de07ae4c459edef11ab4a03d8f 2 0d0600d5f7724e07ad39e3f1f53dbe63 RY(phi₄) e677cd78244c43698c6173dae1e2f64e--0d0600d5f7724e07ad39e3f1f53dbe63 0f06856a330b48dca0c68a8a14ca2330 RX(phi₇) 0d0600d5f7724e07ad39e3f1f53dbe63--0f06856a330b48dca0c68a8a14ca2330 33323ef5a1894644bbb7ad5f74c6f453 PHASE(phi_ent₀) 0f06856a330b48dca0c68a8a14ca2330--33323ef5a1894644bbb7ad5f74c6f453 33323ef5a1894644bbb7ad5f74c6f453--e53f61e2975047e5a5652dff7423d4d8 1798c28296e744809e45eee125f5864f 33323ef5a1894644bbb7ad5f74c6f453--1798c28296e744809e45eee125f5864f e0fdf855e7e544e4b6e630a34de63f90 RX(phi₁₀) 1798c28296e744809e45eee125f5864f--e0fdf855e7e544e4b6e630a34de63f90 5a5355f643d946ee98a56c7a2b6a0283 RY(phi₁₃) e0fdf855e7e544e4b6e630a34de63f90--5a5355f643d946ee98a56c7a2b6a0283 cb91dfa610294fb795ee6f37997c3148 RX(phi₁₆) 5a5355f643d946ee98a56c7a2b6a0283--cb91dfa610294fb795ee6f37997c3148 ddc7b2329f104ae68eb3fb198d1847d5 PHASE(phi_ent₂) cb91dfa610294fb795ee6f37997c3148--ddc7b2329f104ae68eb3fb198d1847d5 ddc7b2329f104ae68eb3fb198d1847d5--2cde1bdad94d485db6dfd7f6f597eaf0 30cfa347f7f44a4eab93b3c590e34fc6 ddc7b2329f104ae68eb3fb198d1847d5--30cfa347f7f44a4eab93b3c590e34fc6 30cfa347f7f44a4eab93b3c590e34fc6--5775b5e664d649a0b9c5bf5d9fa3d437 af56b4cc6497432383e447fa7b6f143a c67bb102e43e4294af63c158456d6a7b RX(phi₂) c23fa3de07ae4c459edef11ab4a03d8f--c67bb102e43e4294af63c158456d6a7b c0983f0a0c7f4c3cbbf15f53dcbc89b5 RY(phi₅) c67bb102e43e4294af63c158456d6a7b--c0983f0a0c7f4c3cbbf15f53dcbc89b5 2fc0af0d16b54008aadfcc36a9ad4882 RX(phi₈) c0983f0a0c7f4c3cbbf15f53dcbc89b5--2fc0af0d16b54008aadfcc36a9ad4882 5c1c7d70156746ef82d888528ce13f95 2fc0af0d16b54008aadfcc36a9ad4882--5c1c7d70156746ef82d888528ce13f95 061443d0008c4d07ad4e3feb245a2dba PHASE(phi_ent₁) 5c1c7d70156746ef82d888528ce13f95--061443d0008c4d07ad4e3feb245a2dba 061443d0008c4d07ad4e3feb245a2dba--1798c28296e744809e45eee125f5864f 6ac9123b5da24c508bcbf12cacb6dfac RX(phi₁₁) 061443d0008c4d07ad4e3feb245a2dba--6ac9123b5da24c508bcbf12cacb6dfac 0c99173bd34048369c59faee42500039 RY(phi₁₄) 6ac9123b5da24c508bcbf12cacb6dfac--0c99173bd34048369c59faee42500039 aa447066daea453dba2e8a8a9ff193c0 RX(phi₁₇) 0c99173bd34048369c59faee42500039--aa447066daea453dba2e8a8a9ff193c0 06ba8c21a30d4796a86cd4d03498bdd8 aa447066daea453dba2e8a8a9ff193c0--06ba8c21a30d4796a86cd4d03498bdd8 d601657444544069a8a0aebb64a79c7c PHASE(phi_ent₃) 06ba8c21a30d4796a86cd4d03498bdd8--d601657444544069a8a0aebb64a79c7c d601657444544069a8a0aebb64a79c7c--30cfa347f7f44a4eab93b3c590e34fc6 d601657444544069a8a0aebb64a79c7c--af56b4cc6497432383e447fa7b6f143a

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_32a2dea361eb4a2f8a4fdcaf3cd0b25d cluster_1d73a078015a44499e21f476532d7797 e84e3eeb35a443b3a9651a955b25b879 0 3e44a2fb941c4dcf800591db6d1cf4f1 RX(theta₀) e84e3eeb35a443b3a9651a955b25b879--3e44a2fb941c4dcf800591db6d1cf4f1 0cf6dbbeda1d4821a9b3c34ce6f3cf7c 1 afc913bac5a04c8199ca034267efa3ba RY(theta₃) 3e44a2fb941c4dcf800591db6d1cf4f1--afc913bac5a04c8199ca034267efa3ba 60be0d5b6ac64bb1b10e59261dcee30e RX(theta₆) afc913bac5a04c8199ca034267efa3ba--60be0d5b6ac64bb1b10e59261dcee30e aaa4a27b14e845a19376d63736ffdfe8 HamEvo 60be0d5b6ac64bb1b10e59261dcee30e--aaa4a27b14e845a19376d63736ffdfe8 15c8a4be4d5540f682ae10ab8a3bd4df RX(theta₉) aaa4a27b14e845a19376d63736ffdfe8--15c8a4be4d5540f682ae10ab8a3bd4df 737c969965f3439487f2dd5748940ffe RY(theta₁₂) 15c8a4be4d5540f682ae10ab8a3bd4df--737c969965f3439487f2dd5748940ffe 1180fafd4b9c4e43b2aa36a59fc1e919 RX(theta₁₅) 737c969965f3439487f2dd5748940ffe--1180fafd4b9c4e43b2aa36a59fc1e919 4776bb384e7947dda120095103c2a6fa HamEvo 1180fafd4b9c4e43b2aa36a59fc1e919--4776bb384e7947dda120095103c2a6fa b9b802602a4e4c8ba8bc472b3a608fec 4776bb384e7947dda120095103c2a6fa--b9b802602a4e4c8ba8bc472b3a608fec 04fb6d3934044df3b26f00d0ed3366f9 06beea953b884658abf87990fcf04d80 RX(theta₁) 0cf6dbbeda1d4821a9b3c34ce6f3cf7c--06beea953b884658abf87990fcf04d80 b905f1dbe7224e7a82dd741f7e0728c8 2 e7e84220449f43ee821b20e0b8420943 RY(theta₄) 06beea953b884658abf87990fcf04d80--e7e84220449f43ee821b20e0b8420943 0f1af4c9d0f64c40aa212509548429b8 RX(theta₇) e7e84220449f43ee821b20e0b8420943--0f1af4c9d0f64c40aa212509548429b8 bc29962a225d4f9998b784d31f716a76 t = theta_t₀ 0f1af4c9d0f64c40aa212509548429b8--bc29962a225d4f9998b784d31f716a76 0c0b470a68f04c9d991c72d71ab4ba11 RX(theta₁₀) bc29962a225d4f9998b784d31f716a76--0c0b470a68f04c9d991c72d71ab4ba11 de6ef843eec44c1fb9d9037c5207e351 RY(theta₁₃) 0c0b470a68f04c9d991c72d71ab4ba11--de6ef843eec44c1fb9d9037c5207e351 6c9bf4ec046249479e12925fed5aed2c RX(theta₁₆) de6ef843eec44c1fb9d9037c5207e351--6c9bf4ec046249479e12925fed5aed2c 1035f4780d624cc6b684576974271799 t = theta_t₁ 6c9bf4ec046249479e12925fed5aed2c--1035f4780d624cc6b684576974271799 1035f4780d624cc6b684576974271799--04fb6d3934044df3b26f00d0ed3366f9 6ada83d72e264612a8748397180999f9 5b9832cb433140dab0c3730770af4b9d RX(theta₂) b905f1dbe7224e7a82dd741f7e0728c8--5b9832cb433140dab0c3730770af4b9d 26dc66ecafaa4302940fe9eff522226f RY(theta₅) 5b9832cb433140dab0c3730770af4b9d--26dc66ecafaa4302940fe9eff522226f b373c5e0b51c459daafcc509d7c4e7d7 RX(theta₈) 26dc66ecafaa4302940fe9eff522226f--b373c5e0b51c459daafcc509d7c4e7d7 a0920df12ddc4e1faed61e577fc6c476 b373c5e0b51c459daafcc509d7c4e7d7--a0920df12ddc4e1faed61e577fc6c476 10c52240f9774f01bf48b592e6b0badc RX(theta₁₁) a0920df12ddc4e1faed61e577fc6c476--10c52240f9774f01bf48b592e6b0badc 969ea84fb5d94a25977a568e6a4d98ff RY(theta₁₄) 10c52240f9774f01bf48b592e6b0badc--969ea84fb5d94a25977a568e6a4d98ff b5827c58ad784bccb924e63a1a0908d7 RX(theta₁₇) 969ea84fb5d94a25977a568e6a4d98ff--b5827c58ad784bccb924e63a1a0908d7 897f7cfc5f0b4b958c2bbd0d10690678 b5827c58ad784bccb924e63a1a0908d7--897f7cfc5f0b4b958c2bbd0d10690678 897f7cfc5f0b4b958c2bbd0d10690678--6ada83d72e264612a8748397180999f9

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_1a9916179af044559489af9f56eca406 cluster_cd2dba71725a47abb7d7bd09b991e895 f0e7b4d001f647cc93e7582763871ecf 0 06ec1f4c2a9a4db18ae70fc6719432ce RX(theta₀) f0e7b4d001f647cc93e7582763871ecf--06ec1f4c2a9a4db18ae70fc6719432ce 10ccdb619689459e967b52fdd5778554 1 4fff3efab2004fdd9720cdd911f5f346 RY(theta₆) 06ec1f4c2a9a4db18ae70fc6719432ce--4fff3efab2004fdd9720cdd911f5f346 3b916e21e9de4266b099a827e3cd3179 RX(theta₁₂) 4fff3efab2004fdd9720cdd911f5f346--3b916e21e9de4266b099a827e3cd3179 c728f7f1da25432bab61fbcd8291b218 3b916e21e9de4266b099a827e3cd3179--c728f7f1da25432bab61fbcd8291b218 02849fe4490648268b070d6abbebf0d7 RX(theta₁₈) c728f7f1da25432bab61fbcd8291b218--02849fe4490648268b070d6abbebf0d7 a66f97f81ff6449db4067e3dea560528 RY(theta₂₄) 02849fe4490648268b070d6abbebf0d7--a66f97f81ff6449db4067e3dea560528 6f6341d0a36f4587b8d51c5e72a1b677 RX(theta₃₀) a66f97f81ff6449db4067e3dea560528--6f6341d0a36f4587b8d51c5e72a1b677 56cd7ddee5cb4ebf85fd58ca99269d2c 6f6341d0a36f4587b8d51c5e72a1b677--56cd7ddee5cb4ebf85fd58ca99269d2c 78a22b0711a842a49ba7d412cb592c0e 56cd7ddee5cb4ebf85fd58ca99269d2c--78a22b0711a842a49ba7d412cb592c0e 3cb22f902d9c42b1b21f4666b3885c3f 6930c4ffbb5b441c8eb262a8207a5638 RX(theta₁) 10ccdb619689459e967b52fdd5778554--6930c4ffbb5b441c8eb262a8207a5638 ae333d3352d849d0aee0ad55afd72e05 2 f7c181f9a16a48db86eb56b79c1eca91 RY(theta₇) 6930c4ffbb5b441c8eb262a8207a5638--f7c181f9a16a48db86eb56b79c1eca91 a9d008278c404af0861e7b3b05e9a661 RX(theta₁₃) f7c181f9a16a48db86eb56b79c1eca91--a9d008278c404af0861e7b3b05e9a661 48389d12e1004d67a148f4835a6232fb a9d008278c404af0861e7b3b05e9a661--48389d12e1004d67a148f4835a6232fb 58c8c803d5304dfc978b2b5735487355 RX(theta₁₉) 48389d12e1004d67a148f4835a6232fb--58c8c803d5304dfc978b2b5735487355 f24b7b31d1714a939b2f8d851b5318fb RY(theta₂₅) 58c8c803d5304dfc978b2b5735487355--f24b7b31d1714a939b2f8d851b5318fb 7f239b6d41f844cdbd03e782034872a3 RX(theta₃₁) f24b7b31d1714a939b2f8d851b5318fb--7f239b6d41f844cdbd03e782034872a3 c88b47abd1ff4276bb7e86588f367c88 7f239b6d41f844cdbd03e782034872a3--c88b47abd1ff4276bb7e86588f367c88 c88b47abd1ff4276bb7e86588f367c88--3cb22f902d9c42b1b21f4666b3885c3f dba45901dbf241e5b12907d0ad718ee1 7574d473768b496295cc86f6aa4cd66c RX(theta₂) ae333d3352d849d0aee0ad55afd72e05--7574d473768b496295cc86f6aa4cd66c 4bf2ce3cb29e49f288704b5f98cf2526 3 ac7dc0f7a7d64c989bf49a5349b870d8 RY(theta₈) 7574d473768b496295cc86f6aa4cd66c--ac7dc0f7a7d64c989bf49a5349b870d8 9e5443acd1364668aaf938fd1988971e RX(theta₁₄) ac7dc0f7a7d64c989bf49a5349b870d8--9e5443acd1364668aaf938fd1988971e 54bdeb788fbf406f86906380850e9e45 HamEvo 9e5443acd1364668aaf938fd1988971e--54bdeb788fbf406f86906380850e9e45 f585eb42d207408ebe9c91dbe08413e9 RX(theta₂₀) 54bdeb788fbf406f86906380850e9e45--f585eb42d207408ebe9c91dbe08413e9 8d426e99bfee4b9a8ab7871d377b39d4 RY(theta₂₆) f585eb42d207408ebe9c91dbe08413e9--8d426e99bfee4b9a8ab7871d377b39d4 680e626a97f047e48c41a7f722941bd3 RX(theta₃₂) 8d426e99bfee4b9a8ab7871d377b39d4--680e626a97f047e48c41a7f722941bd3 dc0b16022d054891b8afed2690644609 HamEvo 680e626a97f047e48c41a7f722941bd3--dc0b16022d054891b8afed2690644609 dc0b16022d054891b8afed2690644609--dba45901dbf241e5b12907d0ad718ee1 de99f62895334579b35de7ceef8c7e6e 30e506308c1f48b49b0053f8cf1cec96 RX(theta₃) 4bf2ce3cb29e49f288704b5f98cf2526--30e506308c1f48b49b0053f8cf1cec96 861359f7dd49478eb7ef454e8f9ce9a5 4 2e846808f0414dbd96ca6fe4a65e515e RY(theta₉) 30e506308c1f48b49b0053f8cf1cec96--2e846808f0414dbd96ca6fe4a65e515e 3a95e2413c7f4af7846e67cb0f8ccc6f RX(theta₁₅) 2e846808f0414dbd96ca6fe4a65e515e--3a95e2413c7f4af7846e67cb0f8ccc6f 105375a1407e4b1693411eba0fdfc2b3 t = theta_t₀ 3a95e2413c7f4af7846e67cb0f8ccc6f--105375a1407e4b1693411eba0fdfc2b3 fbc899a0fcdb487c8347856e27eef176 RX(theta₂₁) 105375a1407e4b1693411eba0fdfc2b3--fbc899a0fcdb487c8347856e27eef176 abbe00c5dfda41fdb560765ff5a0d71a RY(theta₂₇) fbc899a0fcdb487c8347856e27eef176--abbe00c5dfda41fdb560765ff5a0d71a 5cafba00c04149d5b3fbea88c6c4e621 RX(theta₃₃) abbe00c5dfda41fdb560765ff5a0d71a--5cafba00c04149d5b3fbea88c6c4e621 3f758551edf4432f836ed996e5466f23 t = theta_t₁ 5cafba00c04149d5b3fbea88c6c4e621--3f758551edf4432f836ed996e5466f23 3f758551edf4432f836ed996e5466f23--de99f62895334579b35de7ceef8c7e6e 75ccb25c13be4bf98d32ee7599575679 37c6b5e1c8d948a0b500a7600d73af62 RX(theta₄) 861359f7dd49478eb7ef454e8f9ce9a5--37c6b5e1c8d948a0b500a7600d73af62 e958c8fbeea142a696d7b557cf90763d 5 ba4037f191f74253978a94b0ef576347 RY(theta₁₀) 37c6b5e1c8d948a0b500a7600d73af62--ba4037f191f74253978a94b0ef576347 3e80bce156d941e499b076a921844ab7 RX(theta₁₆) ba4037f191f74253978a94b0ef576347--3e80bce156d941e499b076a921844ab7 7a26b902d0a6478c99d279ac024d431c 3e80bce156d941e499b076a921844ab7--7a26b902d0a6478c99d279ac024d431c 786fa2d5f12741c29485206537e8857a RX(theta₂₂) 7a26b902d0a6478c99d279ac024d431c--786fa2d5f12741c29485206537e8857a 327a53ad20bf458286fa82f7156b53ec RY(theta₂₈) 786fa2d5f12741c29485206537e8857a--327a53ad20bf458286fa82f7156b53ec a097a1d269bf4de4bba39b0cfea392a9 RX(theta₃₄) 327a53ad20bf458286fa82f7156b53ec--a097a1d269bf4de4bba39b0cfea392a9 4e3ad5371e3e4b30a87b3c52f492c3f4 a097a1d269bf4de4bba39b0cfea392a9--4e3ad5371e3e4b30a87b3c52f492c3f4 4e3ad5371e3e4b30a87b3c52f492c3f4--75ccb25c13be4bf98d32ee7599575679 957e00c8c1a24ee4b5994e1caf9a0565 679647f7c3e64d02b0e02175468812dc RX(theta₅) e958c8fbeea142a696d7b557cf90763d--679647f7c3e64d02b0e02175468812dc fe2a06a9a9324bfd89e16a18cc7b3e62 RY(theta₁₁) 679647f7c3e64d02b0e02175468812dc--fe2a06a9a9324bfd89e16a18cc7b3e62 01983c9006af4010b11e86dbafdb0c70 RX(theta₁₇) fe2a06a9a9324bfd89e16a18cc7b3e62--01983c9006af4010b11e86dbafdb0c70 058d4c9f14b9407fb33a8ea6209a3680 01983c9006af4010b11e86dbafdb0c70--058d4c9f14b9407fb33a8ea6209a3680 41608f413c09456e8acf8598f78c26c1 RX(theta₂₃) 058d4c9f14b9407fb33a8ea6209a3680--41608f413c09456e8acf8598f78c26c1 ba6e1e16c18d4ecc9b3720813f7fa3b0 RY(theta₂₉) 41608f413c09456e8acf8598f78c26c1--ba6e1e16c18d4ecc9b3720813f7fa3b0 f04c95a1d0e140bc89c816e9e98568e3 RX(theta₃₅) ba6e1e16c18d4ecc9b3720813f7fa3b0--f04c95a1d0e140bc89c816e9e98568e3 ba6bcac141744a498a4a19c365882f70 f04c95a1d0e140bc89c816e9e98568e3--ba6bcac141744a498a4a19c365882f70 ba6bcac141744a498a4a19c365882f70--957e00c8c1a24ee4b5994e1caf9a0565

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_ce3175735bf44eb0a54c146f010c430c BPMA-1 cluster_e3596b10c39c454b8af999883e202d79 BPMA-0 d14faee63b40469b8d18cc26e22dbf80 0 4b929124f4884d4e9abd73e123ed0ea2 RX(iia_α₀₀) d14faee63b40469b8d18cc26e22dbf80--4b929124f4884d4e9abd73e123ed0ea2 ed0897d6b2984e3db8c0012d9cfdfa92 1 554bd86e6e7c488f9053be911cfe4fa3 RY(iia_α₀₃) 4b929124f4884d4e9abd73e123ed0ea2--554bd86e6e7c488f9053be911cfe4fa3 40cbe02ac476404cbf86924f2010bb1f 554bd86e6e7c488f9053be911cfe4fa3--40cbe02ac476404cbf86924f2010bb1f 5d296e70d1da45adac954ad7b29f2dc6 40cbe02ac476404cbf86924f2010bb1f--5d296e70d1da45adac954ad7b29f2dc6 24043de3ffe340eda268b49a3e1ad34c RX(iia_γ₀₀) 5d296e70d1da45adac954ad7b29f2dc6--24043de3ffe340eda268b49a3e1ad34c 66f7bd62b94b45b98baae28441d4b4b7 24043de3ffe340eda268b49a3e1ad34c--66f7bd62b94b45b98baae28441d4b4b7 6bb8e42f6d794d7687f1918edbe49c69 66f7bd62b94b45b98baae28441d4b4b7--6bb8e42f6d794d7687f1918edbe49c69 2c1c15f5bddc4536be716fad7680e1a8 RY(iia_β₀₃) 6bb8e42f6d794d7687f1918edbe49c69--2c1c15f5bddc4536be716fad7680e1a8 2f774d3a850d438c8e329eaa03be2b21 RX(iia_β₀₀) 2c1c15f5bddc4536be716fad7680e1a8--2f774d3a850d438c8e329eaa03be2b21 f2fc2018a28346cc835dcecae8747901 RX(iia_α₁₀) 2f774d3a850d438c8e329eaa03be2b21--f2fc2018a28346cc835dcecae8747901 0f46755f4b1a49aea768103c6615f259 RY(iia_α₁₃) f2fc2018a28346cc835dcecae8747901--0f46755f4b1a49aea768103c6615f259 2fd18d8a921148b4876a54de4455ba1a 0f46755f4b1a49aea768103c6615f259--2fd18d8a921148b4876a54de4455ba1a 20832c71093041128eccd8e042ad304a 2fd18d8a921148b4876a54de4455ba1a--20832c71093041128eccd8e042ad304a 2a57d26686ce4cb98d0feb3229b7673a RX(iia_γ₁₀) 20832c71093041128eccd8e042ad304a--2a57d26686ce4cb98d0feb3229b7673a 6c7766190af84ff7bbd0d8ea1e387d1e 2a57d26686ce4cb98d0feb3229b7673a--6c7766190af84ff7bbd0d8ea1e387d1e 954b7cf90eb04826a5f87ef16662f5f9 6c7766190af84ff7bbd0d8ea1e387d1e--954b7cf90eb04826a5f87ef16662f5f9 2c4d9ad4508e4f70a0af3f5fd8f420bd RY(iia_β₁₃) 954b7cf90eb04826a5f87ef16662f5f9--2c4d9ad4508e4f70a0af3f5fd8f420bd edc107da54334f9195cc39100d562825 RX(iia_β₁₀) 2c4d9ad4508e4f70a0af3f5fd8f420bd--edc107da54334f9195cc39100d562825 80329be6fb0f4c4e882d6ca53a6c620f edc107da54334f9195cc39100d562825--80329be6fb0f4c4e882d6ca53a6c620f 48cb51a6264440518732ba4791afa45a 328ec120813641a6a86cc273d013acd1 RX(iia_α₀₁) ed0897d6b2984e3db8c0012d9cfdfa92--328ec120813641a6a86cc273d013acd1 9858b26b45e1442fa2c1d38d0d42e0df 2 1444d873232c413abcc400e939bc690a RY(iia_α₀₄) 328ec120813641a6a86cc273d013acd1--1444d873232c413abcc400e939bc690a 721efa8a5a924f1bad99e9b82f6e7a51 X 1444d873232c413abcc400e939bc690a--721efa8a5a924f1bad99e9b82f6e7a51 721efa8a5a924f1bad99e9b82f6e7a51--40cbe02ac476404cbf86924f2010bb1f 7a9c70a31dbf4de6a1c438d9f79c38e7 721efa8a5a924f1bad99e9b82f6e7a51--7a9c70a31dbf4de6a1c438d9f79c38e7 690e2fb0d3754e67a127545cf5d20e74 RX(iia_γ₀₁) 7a9c70a31dbf4de6a1c438d9f79c38e7--690e2fb0d3754e67a127545cf5d20e74 aec87928ccaa4260b4608a422606dbc8 690e2fb0d3754e67a127545cf5d20e74--aec87928ccaa4260b4608a422606dbc8 58d6f5c2778d4761a77bb19c8fac0eec X aec87928ccaa4260b4608a422606dbc8--58d6f5c2778d4761a77bb19c8fac0eec 58d6f5c2778d4761a77bb19c8fac0eec--6bb8e42f6d794d7687f1918edbe49c69 3a8c24a2fd4545c8ba115a0bb034b47a RY(iia_β₀₄) 58d6f5c2778d4761a77bb19c8fac0eec--3a8c24a2fd4545c8ba115a0bb034b47a f4be912c610146ab99fb2ae1ea59a3ae RX(iia_β₀₁) 3a8c24a2fd4545c8ba115a0bb034b47a--f4be912c610146ab99fb2ae1ea59a3ae 4053f9fa58fd4aa8b0dd891d630f878e RX(iia_α₁₁) f4be912c610146ab99fb2ae1ea59a3ae--4053f9fa58fd4aa8b0dd891d630f878e 9c53e5e8be03444aae9f1005f8fbbfc3 RY(iia_α₁₄) 4053f9fa58fd4aa8b0dd891d630f878e--9c53e5e8be03444aae9f1005f8fbbfc3 3a445c820f09430a81e0eecfdcab4de6 X 9c53e5e8be03444aae9f1005f8fbbfc3--3a445c820f09430a81e0eecfdcab4de6 3a445c820f09430a81e0eecfdcab4de6--2fd18d8a921148b4876a54de4455ba1a 5fbb55aa5d4447ae8ceff02d093bf54b 3a445c820f09430a81e0eecfdcab4de6--5fbb55aa5d4447ae8ceff02d093bf54b dfeb468974f740d3899dd4b211f8a8b4 RX(iia_γ₁₁) 5fbb55aa5d4447ae8ceff02d093bf54b--dfeb468974f740d3899dd4b211f8a8b4 9266a21b7d084244b2d958dab6d5dac5 dfeb468974f740d3899dd4b211f8a8b4--9266a21b7d084244b2d958dab6d5dac5 2738a7e12e30494fa7637eb99fe6cc85 X 9266a21b7d084244b2d958dab6d5dac5--2738a7e12e30494fa7637eb99fe6cc85 2738a7e12e30494fa7637eb99fe6cc85--954b7cf90eb04826a5f87ef16662f5f9 90e97e11932a48a9b73781d3438d2506 RY(iia_β₁₄) 2738a7e12e30494fa7637eb99fe6cc85--90e97e11932a48a9b73781d3438d2506 b61379a8521d432c99b64445c5fe2970 RX(iia_β₁₁) 90e97e11932a48a9b73781d3438d2506--b61379a8521d432c99b64445c5fe2970 b61379a8521d432c99b64445c5fe2970--48cb51a6264440518732ba4791afa45a e63fd7d0374c40f1b6d1e9633e143f82 cfaeb882dae04f1990d0ff5f76f045c8 RX(iia_α₀₂) 9858b26b45e1442fa2c1d38d0d42e0df--cfaeb882dae04f1990d0ff5f76f045c8 15f85a5ce2cf46cb93af4bb14800291a RY(iia_α₀₅) cfaeb882dae04f1990d0ff5f76f045c8--15f85a5ce2cf46cb93af4bb14800291a d1fb7332dcc044c4b3a71930fafd8292 15f85a5ce2cf46cb93af4bb14800291a--d1fb7332dcc044c4b3a71930fafd8292 4d40884046fc416980d83fdc52f362d2 X d1fb7332dcc044c4b3a71930fafd8292--4d40884046fc416980d83fdc52f362d2 4d40884046fc416980d83fdc52f362d2--7a9c70a31dbf4de6a1c438d9f79c38e7 5d21a9ba293d45d6892854d384e272ba RX(iia_γ₀₂) 4d40884046fc416980d83fdc52f362d2--5d21a9ba293d45d6892854d384e272ba 33dd11e1009f4eb9baab38a4abf1f41d X 5d21a9ba293d45d6892854d384e272ba--33dd11e1009f4eb9baab38a4abf1f41d 33dd11e1009f4eb9baab38a4abf1f41d--aec87928ccaa4260b4608a422606dbc8 0dc20dbad71b4e21858b58fc9cd2f37e 33dd11e1009f4eb9baab38a4abf1f41d--0dc20dbad71b4e21858b58fc9cd2f37e 945304a1d03f45db9bcee2ebeadcd40a RY(iia_β₀₅) 0dc20dbad71b4e21858b58fc9cd2f37e--945304a1d03f45db9bcee2ebeadcd40a 573f1ffb23b644efb5d7b52610e91373 RX(iia_β₀₂) 945304a1d03f45db9bcee2ebeadcd40a--573f1ffb23b644efb5d7b52610e91373 d1b7db0090234d498cf67af7fe7fd57a RX(iia_α₁₂) 573f1ffb23b644efb5d7b52610e91373--d1b7db0090234d498cf67af7fe7fd57a 1281b999b25c4361b97144527d499585 RY(iia_α₁₅) d1b7db0090234d498cf67af7fe7fd57a--1281b999b25c4361b97144527d499585 425e65528a7146b3b90aca686c2944cd 1281b999b25c4361b97144527d499585--425e65528a7146b3b90aca686c2944cd d7f9c9f5a9f14681ba09773fb0dbaad8 X 425e65528a7146b3b90aca686c2944cd--d7f9c9f5a9f14681ba09773fb0dbaad8 d7f9c9f5a9f14681ba09773fb0dbaad8--5fbb55aa5d4447ae8ceff02d093bf54b 17ab3f2ee5a24597b13b8447d39bedab RX(iia_γ₁₂) d7f9c9f5a9f14681ba09773fb0dbaad8--17ab3f2ee5a24597b13b8447d39bedab 2432a98d2f2b4dc8b45c7c465946f4d9 X 17ab3f2ee5a24597b13b8447d39bedab--2432a98d2f2b4dc8b45c7c465946f4d9 2432a98d2f2b4dc8b45c7c465946f4d9--9266a21b7d084244b2d958dab6d5dac5 93b4d323db0d40fdaabfff0d94fa3c02 2432a98d2f2b4dc8b45c7c465946f4d9--93b4d323db0d40fdaabfff0d94fa3c02 abd9c297ba4a4a538a0f583f926b2f55 RY(iia_β₁₅) 93b4d323db0d40fdaabfff0d94fa3c02--abd9c297ba4a4a538a0f583f926b2f55 0f75c23a3a1c4d058e45deae241c2abf RX(iia_β₁₂) abd9c297ba4a4a538a0f583f926b2f55--0f75c23a3a1c4d058e45deae241c2abf 0f75c23a3a1c4d058e45deae241c2abf--e63fd7d0374c40f1b6d1e9633e143f82