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_7031ca46bfdd4d869c1b8b94e7a87473 Constant Chebyshev FM cluster_9299a285fc2a46bca6739b23cfa07974 Constant Fourier FM ea728b87a68e4a66b063d0725a537382 0 c2397c34b0c94d68bda9bda104945860 RX(phi) ea728b87a68e4a66b063d0725a537382--c2397c34b0c94d68bda9bda104945860 6a41d588f8374e10a9005df8ea206c2d 1 7ba9c3e70dbb44b79fcbc221c90c676f RX(acos(phi)) c2397c34b0c94d68bda9bda104945860--7ba9c3e70dbb44b79fcbc221c90c676f a09f8f7ce23e489caa437d70e9a1caf0 7ba9c3e70dbb44b79fcbc221c90c676f--a09f8f7ce23e489caa437d70e9a1caf0 136e7d354cd64c238602159f01b0665b 4cd90b947c4e4a77b5f5dadd42930dc9 RX(phi) 6a41d588f8374e10a9005df8ea206c2d--4cd90b947c4e4a77b5f5dadd42930dc9 ceccc8fba8184c3d8eca1fae08e05542 2 fa23264c3a8d40e3b0635760da89872a RX(acos(phi)) 4cd90b947c4e4a77b5f5dadd42930dc9--fa23264c3a8d40e3b0635760da89872a fa23264c3a8d40e3b0635760da89872a--136e7d354cd64c238602159f01b0665b 53fdc4d6e8ca4eff8bbd6a97c87b5c0d dbc615384b82491691d14982f3d8efa4 RX(phi) ceccc8fba8184c3d8eca1fae08e05542--dbc615384b82491691d14982f3d8efa4 a2dcb2935f64434f9c33baf97891bc59 RX(acos(phi)) dbc615384b82491691d14982f3d8efa4--a2dcb2935f64434f9c33baf97891bc59 a2dcb2935f64434f9c33baf97891bc59--53fdc4d6e8ca4eff8bbd6a97c87b5c0d

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_5d07f2461c32440a830c1a8ca138eed0 Constant <function custom_fn at 0x7fac58447400> FM cluster_21c48b9553824fe99120d42daeb96faa Constant asin FM 230025e3f05a4c558e80376f9dfad52b 0 f5e9843c079647ddbbd50fb6073e5dff RX(asin(phi)) 230025e3f05a4c558e80376f9dfad52b--f5e9843c079647ddbbd50fb6073e5dff fac14a0ebfa845b3ae3dfb39a4459335 1 4398136f7a404e588246f2e6dd854683 RX(phi**2 + asin(phi)) f5e9843c079647ddbbd50fb6073e5dff--4398136f7a404e588246f2e6dd854683 feadc204136741c9a99829e50bd8c991 4398136f7a404e588246f2e6dd854683--feadc204136741c9a99829e50bd8c991 a2d5c8085ddb4f239c44a71c703c8b4e 5758bc3430c64c7fb4110b3a2430d81d RX(asin(phi)) fac14a0ebfa845b3ae3dfb39a4459335--5758bc3430c64c7fb4110b3a2430d81d 8cde3191b8204659ba92fbbbab2a58a4 2 4646c6efb07649d088328536e0a00039 RX(phi**2 + asin(phi)) 5758bc3430c64c7fb4110b3a2430d81d--4646c6efb07649d088328536e0a00039 4646c6efb07649d088328536e0a00039--a2d5c8085ddb4f239c44a71c703c8b4e 8564fdc86be0402a85f4673c87e131c9 dad2425950b743dc92a0435e584a2c9e RX(asin(phi)) 8cde3191b8204659ba92fbbbab2a58a4--dad2425950b743dc92a0435e584a2c9e 0d70660d694b4204ad508db8d9e29937 RX(phi**2 + asin(phi)) dad2425950b743dc92a0435e584a2c9e--0d70660d694b4204ad508db8d9e29937 0d70660d694b4204ad508db8d9e29937--8564fdc86be0402a85f4673c87e131c9

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_01ca2d81bf0c4337b2f42b505f9ad3d6 Exponential Fourier FM cluster_7369f9cefadb4feb9d367a99fed5100f Constant Fourier FM cluster_3755686027c7440a8168d8861a1c2ce8 Tower Fourier FM 2e9a08b20a704e58bdbf79e3791bef2d 0 0e305557724f403b8446031cf4140ef9 RX(phi) 2e9a08b20a704e58bdbf79e3791bef2d--0e305557724f403b8446031cf4140ef9 a564ed7799a142999146afa2efc5f8e2 1 92880dd623894ffcaae8f931a30fa63a RX(1.0*phi) 0e305557724f403b8446031cf4140ef9--92880dd623894ffcaae8f931a30fa63a 41f5be0452914359a8314757c30ce560 RX(1.0*phi) 92880dd623894ffcaae8f931a30fa63a--41f5be0452914359a8314757c30ce560 ea0218b09c66431e949a8f46e6f0925a 41f5be0452914359a8314757c30ce560--ea0218b09c66431e949a8f46e6f0925a 2e4639bc6f364349ae15578f92bdd9e1 13fed48f61d549329a8ca38f8dfdad71 RX(phi) a564ed7799a142999146afa2efc5f8e2--13fed48f61d549329a8ca38f8dfdad71 8d79313868804b90beb583ab953a75a0 2 44c67dac41a1495e8f3895f4681dfdd3 RX(2.0*phi) 13fed48f61d549329a8ca38f8dfdad71--44c67dac41a1495e8f3895f4681dfdd3 983cc3367a734c68afa8e5f9e9199a9c RX(2.0*phi) 44c67dac41a1495e8f3895f4681dfdd3--983cc3367a734c68afa8e5f9e9199a9c 983cc3367a734c68afa8e5f9e9199a9c--2e4639bc6f364349ae15578f92bdd9e1 841896a3f4264cbbb1eb8db03e30ad7c b657c19efc0549e9af79b1765c0ed258 RX(phi) 8d79313868804b90beb583ab953a75a0--b657c19efc0549e9af79b1765c0ed258 a3cf688068b24d499378bd2a9bf2f764 3 17fc6107c2834dfb91500a4d88f0f6b2 RX(3.0*phi) b657c19efc0549e9af79b1765c0ed258--17fc6107c2834dfb91500a4d88f0f6b2 413a24954ab2493aa70ea17e04a3ddab RX(4.0*phi) 17fc6107c2834dfb91500a4d88f0f6b2--413a24954ab2493aa70ea17e04a3ddab 413a24954ab2493aa70ea17e04a3ddab--841896a3f4264cbbb1eb8db03e30ad7c 3fdd156442ae41ac859eb9d755c58c16 3cf73f427af64e6586ebdca9e78b5315 RX(phi) a3cf688068b24d499378bd2a9bf2f764--3cf73f427af64e6586ebdca9e78b5315 36e3915998f74de3a70adbf1729beb93 4 1b02967907ab4b1ab971f9a2f944ec72 RX(4.0*phi) 3cf73f427af64e6586ebdca9e78b5315--1b02967907ab4b1ab971f9a2f944ec72 b7230bb4cce846faaf6b2f87d5331acc RX(8.0*phi) 1b02967907ab4b1ab971f9a2f944ec72--b7230bb4cce846faaf6b2f87d5331acc b7230bb4cce846faaf6b2f87d5331acc--3fdd156442ae41ac859eb9d755c58c16 7c67e6d9440e464f869d6a0fdad899a7 741d8299bc64461c895a5b005dd08adc RX(phi) 36e3915998f74de3a70adbf1729beb93--741d8299bc64461c895a5b005dd08adc db4bb215f2cd4696908797eb489df8ae RX(5.0*phi) 741d8299bc64461c895a5b005dd08adc--db4bb215f2cd4696908797eb489df8ae 301b54d0e8a1424ebf3bfe66d6a6df9f RX(16.0*phi) db4bb215f2cd4696908797eb489df8ae--301b54d0e8a1424ebf3bfe66d6a6df9f 301b54d0e8a1424ebf3bfe66d6a6df9f--7c67e6d9440e464f869d6a0fdad899a7

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 f23a0022bbad4dd1975c5346c78ede90 0 bb39eca600dc43e596be031d21f7cfeb RX(1.0*acos(phi)) f23a0022bbad4dd1975c5346c78ede90--bb39eca600dc43e596be031d21f7cfeb 8581a39cc62d43c7b93c6f9263d2fb43 1 84c4ec2d2c6d4bbb8f812ac4d4bc8d2d bb39eca600dc43e596be031d21f7cfeb--84c4ec2d2c6d4bbb8f812ac4d4bc8d2d 97d1686cd03d43519ee3743b42a1cf16 43452175c07c469091893fa512ea4849 RX(1.414*acos(phi)) 8581a39cc62d43c7b93c6f9263d2fb43--43452175c07c469091893fa512ea4849 d383c4f21edd4226b7cbfafbb47f35cc 2 43452175c07c469091893fa512ea4849--97d1686cd03d43519ee3743b42a1cf16 f5c424a65bb9460f8a83d8d4f23951db 8fe81e3c8ef04b4d82b4cbabc5d34184 RX(1.732*acos(phi)) d383c4f21edd4226b7cbfafbb47f35cc--8fe81e3c8ef04b4d82b4cbabc5d34184 c8758149a3f8414b9057039f4df6882a 3 8fe81e3c8ef04b4d82b4cbabc5d34184--f5c424a65bb9460f8a83d8d4f23951db b72d25655ba5483ea6d993e9fe32223f d1a6c8ac914c43f888b67c3342fc06e0 RX(2.0*acos(phi)) c8758149a3f8414b9057039f4df6882a--d1a6c8ac914c43f888b67c3342fc06e0 61f6ba04770141b3bc72131e8b89fddd 4 d1a6c8ac914c43f888b67c3342fc06e0--b72d25655ba5483ea6d993e9fe32223f 899215525bfb4fe8b90e1237facf9918 85320d74e25e4e3bad9b95cb2683078b RX(2.236*acos(phi)) 61f6ba04770141b3bc72131e8b89fddd--85320d74e25e4e3bad9b95cb2683078b 85320d74e25e4e3bad9b95cb2683078b--899215525bfb4fe8b90e1237facf9918

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 d2a8e92e6ef24a31bcb8342e61b4bea3 0 15e639cd4d0a415b8b5e500e654d9c2b RX(1.0*phi*w₀) d2a8e92e6ef24a31bcb8342e61b4bea3--15e639cd4d0a415b8b5e500e654d9c2b 203b28540c944be2ac56c96e673ac2a5 1 476599adee564e8a89580f535a0102f7 15e639cd4d0a415b8b5e500e654d9c2b--476599adee564e8a89580f535a0102f7 6394ba09c6464aedb3a3e7e3036ed19c 9c79ceea77614077a888bd8db33884e7 RX(2.0*phi*w₁) 203b28540c944be2ac56c96e673ac2a5--9c79ceea77614077a888bd8db33884e7 cc38ba84a075408e96488a1a802523c7 2 9c79ceea77614077a888bd8db33884e7--6394ba09c6464aedb3a3e7e3036ed19c c8816584645d4d9393eb1fcf5d19d322 bcdcd0337b6044c58d1ce474a3287dcd RX(4.0*phi*w₂) cc38ba84a075408e96488a1a802523c7--bcdcd0337b6044c58d1ce474a3287dcd eff6bbaae1cb4ac2a8d61e947c93f0f0 3 bcdcd0337b6044c58d1ce474a3287dcd--c8816584645d4d9393eb1fcf5d19d322 d929088cd1534c3cb3a0b342cfafa25f 058b27d6993040cb83ce7e4494a9de87 RX(8.0*phi*w₃) eff6bbaae1cb4ac2a8d61e947c93f0f0--058b27d6993040cb83ce7e4494a9de87 c8c5dca2b38d4ce88313cf72cf5d14ca 4 058b27d6993040cb83ce7e4494a9de87--d929088cd1534c3cb3a0b342cfafa25f 991da450efc54d27840e58a3c465ad86 6d9f25b2bb584120bfe0a05ac1812786 RX(16.0*phi*w₄) c8c5dca2b38d4ce88313cf72cf5d14ca--6d9f25b2bb584120bfe0a05ac1812786 6d9f25b2bb584120bfe0a05ac1812786--991da450efc54d27840e58a3c465ad86

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 2b24e7ef99fa4f948eb822a82e317cdb 0 959c056ebe36475f8a45212113f1ad30 RY(80.0*acos(w₄*(0.667*x + 1.667))) 2b24e7ef99fa4f948eb822a82e317cdb--959c056ebe36475f8a45212113f1ad30 5d7c7d1beabe4c23837714384eb5ee7b 1 b0220102930840ab9e0c46567d3dc6f6 959c056ebe36475f8a45212113f1ad30--b0220102930840ab9e0c46567d3dc6f6 30fbc58890c64ad7a6e84b7d998fc8f0 1d83399a3a8040718135a9ba55ea1c2d RY(40.0*acos(w₃*(0.667*x + 1.667))) 5d7c7d1beabe4c23837714384eb5ee7b--1d83399a3a8040718135a9ba55ea1c2d e75a21ac774b403cac5f563b4809d119 2 1d83399a3a8040718135a9ba55ea1c2d--30fbc58890c64ad7a6e84b7d998fc8f0 4b9be8efb58c446981c5b39ac2a1a625 0dd4039eb717420fb20d8ace3b733316 RY(20.0*acos(w₂*(0.667*x + 1.667))) e75a21ac774b403cac5f563b4809d119--0dd4039eb717420fb20d8ace3b733316 57cd2ee69c35479d85a0580b14d0fdfe 3 0dd4039eb717420fb20d8ace3b733316--4b9be8efb58c446981c5b39ac2a1a625 4352ec26944d4e86bc6d58e3567bc5a8 bf6dcf1c22394377b626f1f21d735549 RY(10.0*acos(w₁*(0.667*x + 1.667))) 57cd2ee69c35479d85a0580b14d0fdfe--bf6dcf1c22394377b626f1f21d735549 a2b7905b88364ab8a6082c4549b2717a 4 bf6dcf1c22394377b626f1f21d735549--4352ec26944d4e86bc6d58e3567bc5a8 bd4905c06beb448c8fdaf083f53458cc bb51b0dcd3fc4a08a7851a5ac431d9d0 RY(5.0*acos(w₀*(0.667*x + 1.667))) a2b7905b88364ab8a6082c4549b2717a--bb51b0dcd3fc4a08a7851a5ac431d9d0 bb51b0dcd3fc4a08a7851a5ac431d9d0--bd4905c06beb448c8fdaf083f53458cc

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 8a43f95f63ed4b049e10ec699568a9c5 0 fc91f6a2275d40b79457429236480511 RX(theta₀) 8a43f95f63ed4b049e10ec699568a9c5--fc91f6a2275d40b79457429236480511 a97c835d768e41f3b1681e76597fdeab 1 d6bc181fb5a24c8d85bc8a780e4dab41 RY(theta₃) fc91f6a2275d40b79457429236480511--d6bc181fb5a24c8d85bc8a780e4dab41 a52b905c2eea44f09a51eedc2aaca6db RX(theta₆) d6bc181fb5a24c8d85bc8a780e4dab41--a52b905c2eea44f09a51eedc2aaca6db 8678574d3a1149e4acb4a15575e88ee5 a52b905c2eea44f09a51eedc2aaca6db--8678574d3a1149e4acb4a15575e88ee5 c8382bea77a54dbca31375d37cb7dfd7 8678574d3a1149e4acb4a15575e88ee5--c8382bea77a54dbca31375d37cb7dfd7 26287c164163484791fe85ca81778b10 RX(theta₉) c8382bea77a54dbca31375d37cb7dfd7--26287c164163484791fe85ca81778b10 255e114950c94bafb7ab13d5b54e85d6 RY(theta₁₂) 26287c164163484791fe85ca81778b10--255e114950c94bafb7ab13d5b54e85d6 349a6e5404e1480591e5f89181746c44 RX(theta₁₅) 255e114950c94bafb7ab13d5b54e85d6--349a6e5404e1480591e5f89181746c44 81c8a15c084e45388e30d377a35625e7 349a6e5404e1480591e5f89181746c44--81c8a15c084e45388e30d377a35625e7 ff77fdb5a4ab4106968f619ece5de2e5 81c8a15c084e45388e30d377a35625e7--ff77fdb5a4ab4106968f619ece5de2e5 b53dd93dbc23459480beb234618b375d ff77fdb5a4ab4106968f619ece5de2e5--b53dd93dbc23459480beb234618b375d 7b050a4b4a2841e0b55105e589d4456c df32064bbfaf4749a2e1bb6284b3fb81 RX(theta₁) a97c835d768e41f3b1681e76597fdeab--df32064bbfaf4749a2e1bb6284b3fb81 4ca2e3e1cdbb49489f5939f686ff456c 2 322adbbf3d474001bfe816f65922f10e RY(theta₄) df32064bbfaf4749a2e1bb6284b3fb81--322adbbf3d474001bfe816f65922f10e 2e6b35b6d108445aa4fb49fdef5c8a69 RX(theta₇) 322adbbf3d474001bfe816f65922f10e--2e6b35b6d108445aa4fb49fdef5c8a69 8f11f2264b254089acc66335943e2401 X 2e6b35b6d108445aa4fb49fdef5c8a69--8f11f2264b254089acc66335943e2401 8f11f2264b254089acc66335943e2401--8678574d3a1149e4acb4a15575e88ee5 0519aab726fc44b09f81e8a77def0b6e 8f11f2264b254089acc66335943e2401--0519aab726fc44b09f81e8a77def0b6e 038b6ecf3b5f42e5b9bb4da904acc70d RX(theta₁₀) 0519aab726fc44b09f81e8a77def0b6e--038b6ecf3b5f42e5b9bb4da904acc70d 9f778410315c47ccb38631fcbcbae005 RY(theta₁₃) 038b6ecf3b5f42e5b9bb4da904acc70d--9f778410315c47ccb38631fcbcbae005 a480cf9d4b574f838a286d738efa5c18 RX(theta₁₆) 9f778410315c47ccb38631fcbcbae005--a480cf9d4b574f838a286d738efa5c18 03ec0a18248e400aab7a1aef441acb01 X a480cf9d4b574f838a286d738efa5c18--03ec0a18248e400aab7a1aef441acb01 03ec0a18248e400aab7a1aef441acb01--81c8a15c084e45388e30d377a35625e7 c1c6ee10f8004d3aaa5d1e42c13b0e8e 03ec0a18248e400aab7a1aef441acb01--c1c6ee10f8004d3aaa5d1e42c13b0e8e c1c6ee10f8004d3aaa5d1e42c13b0e8e--7b050a4b4a2841e0b55105e589d4456c a999603afbf54d13a442a4e9ff20873f 63cfb43cf932469281559e13aabf71a8 RX(theta₂) 4ca2e3e1cdbb49489f5939f686ff456c--63cfb43cf932469281559e13aabf71a8 760976d6cec8464082897e0d39df5a14 RY(theta₅) 63cfb43cf932469281559e13aabf71a8--760976d6cec8464082897e0d39df5a14 a900e06ed53a454aafceab4277251761 RX(theta₈) 760976d6cec8464082897e0d39df5a14--a900e06ed53a454aafceab4277251761 89f5d728f4fa4c09bf1199e8d3e92415 a900e06ed53a454aafceab4277251761--89f5d728f4fa4c09bf1199e8d3e92415 7276392f648b4e34b4138306f5aff4f3 X 89f5d728f4fa4c09bf1199e8d3e92415--7276392f648b4e34b4138306f5aff4f3 7276392f648b4e34b4138306f5aff4f3--0519aab726fc44b09f81e8a77def0b6e f7d2a9e21c7f4267a4006027cab46afa RX(theta₁₁) 7276392f648b4e34b4138306f5aff4f3--f7d2a9e21c7f4267a4006027cab46afa 8cfcb0b0e6104887a112fb3189de7543 RY(theta₁₄) f7d2a9e21c7f4267a4006027cab46afa--8cfcb0b0e6104887a112fb3189de7543 cef2398c7fde458baa41d978834649e4 RX(theta₁₇) 8cfcb0b0e6104887a112fb3189de7543--cef2398c7fde458baa41d978834649e4 7de3baa1e2ba441ca794c96875aaf250 cef2398c7fde458baa41d978834649e4--7de3baa1e2ba441ca794c96875aaf250 da354da6a8f04d9db50e695d82475396 X 7de3baa1e2ba441ca794c96875aaf250--da354da6a8f04d9db50e695d82475396 da354da6a8f04d9db50e695d82475396--c1c6ee10f8004d3aaa5d1e42c13b0e8e da354da6a8f04d9db50e695d82475396--a999603afbf54d13a442a4e9ff20873f

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 4c24dbb9b9054fe69278c2eecf918faa 0 1751cf4e283a464ca35a1db759805241 RX(phi₀) 4c24dbb9b9054fe69278c2eecf918faa--1751cf4e283a464ca35a1db759805241 dadd585e194f4511992961ac586c8f69 1 5dfc6af601ca4590909d798b2fa2caa3 RY(phi₃) 1751cf4e283a464ca35a1db759805241--5dfc6af601ca4590909d798b2fa2caa3 0274a2ae885f4d80bb97a2f5f88ced0b RX(phi₆) 5dfc6af601ca4590909d798b2fa2caa3--0274a2ae885f4d80bb97a2f5f88ced0b 3e0137d7c2f34684b84c420b13e333d3 0274a2ae885f4d80bb97a2f5f88ced0b--3e0137d7c2f34684b84c420b13e333d3 22e526ac726844549ef2fd22745fa678 3e0137d7c2f34684b84c420b13e333d3--22e526ac726844549ef2fd22745fa678 8361c4a782144fe9ac10116551462883 RX(phi₉) 22e526ac726844549ef2fd22745fa678--8361c4a782144fe9ac10116551462883 807a77015399453aa3e695a0346eef7d RY(phi₁₂) 8361c4a782144fe9ac10116551462883--807a77015399453aa3e695a0346eef7d 1533b8a511704c5196345fcc10f6b7a0 RX(phi₁₅) 807a77015399453aa3e695a0346eef7d--1533b8a511704c5196345fcc10f6b7a0 f428d47b3bc84db284b6e9a50726446e 1533b8a511704c5196345fcc10f6b7a0--f428d47b3bc84db284b6e9a50726446e ec7aa28f6c774b7ab851e21d78adf916 f428d47b3bc84db284b6e9a50726446e--ec7aa28f6c774b7ab851e21d78adf916 8207a8dbabb041c7bf26f458aa7c64b5 ec7aa28f6c774b7ab851e21d78adf916--8207a8dbabb041c7bf26f458aa7c64b5 73c08130d292481b88af53b9fb7659de cbc0fee7685746c98c9ab02c7d163977 RX(phi₁) dadd585e194f4511992961ac586c8f69--cbc0fee7685746c98c9ab02c7d163977 4f9d644b91544b669f5076e1b8303e77 2 4cde09a07eb5439192d1c17eeebcf93c RY(phi₄) cbc0fee7685746c98c9ab02c7d163977--4cde09a07eb5439192d1c17eeebcf93c e2bd5e4659d94eb6bf588fba617857ce RX(phi₇) 4cde09a07eb5439192d1c17eeebcf93c--e2bd5e4659d94eb6bf588fba617857ce 988181c3a85b4a76af8f7a2da580a59b PHASE(phi_ent₀) e2bd5e4659d94eb6bf588fba617857ce--988181c3a85b4a76af8f7a2da580a59b 988181c3a85b4a76af8f7a2da580a59b--3e0137d7c2f34684b84c420b13e333d3 da9ebb9abb654c708fc18ab2dc9914a7 988181c3a85b4a76af8f7a2da580a59b--da9ebb9abb654c708fc18ab2dc9914a7 b6e5253f478e46fca3b2e98cdaa92326 RX(phi₁₀) da9ebb9abb654c708fc18ab2dc9914a7--b6e5253f478e46fca3b2e98cdaa92326 6721580134d248afb1ac6925c9e123ea RY(phi₁₃) b6e5253f478e46fca3b2e98cdaa92326--6721580134d248afb1ac6925c9e123ea 24b14b1a43c2431b8fcfa32c30e70609 RX(phi₁₆) 6721580134d248afb1ac6925c9e123ea--24b14b1a43c2431b8fcfa32c30e70609 734e8a8423b54cc190fbb341b9b8424f PHASE(phi_ent₂) 24b14b1a43c2431b8fcfa32c30e70609--734e8a8423b54cc190fbb341b9b8424f 734e8a8423b54cc190fbb341b9b8424f--f428d47b3bc84db284b6e9a50726446e 178359cf0e7541c68729408b19f83386 734e8a8423b54cc190fbb341b9b8424f--178359cf0e7541c68729408b19f83386 178359cf0e7541c68729408b19f83386--73c08130d292481b88af53b9fb7659de a0c1ab117e364504b7f6a35b7c781bc0 a7753d9bb9254f87b3cadd24697545dc RX(phi₂) 4f9d644b91544b669f5076e1b8303e77--a7753d9bb9254f87b3cadd24697545dc 19b74429d18844d98429d09677ea1315 RY(phi₅) a7753d9bb9254f87b3cadd24697545dc--19b74429d18844d98429d09677ea1315 f24476b529ac4b43b822653ff25841f7 RX(phi₈) 19b74429d18844d98429d09677ea1315--f24476b529ac4b43b822653ff25841f7 27c36546669d42dc819d3c897a0ad40d f24476b529ac4b43b822653ff25841f7--27c36546669d42dc819d3c897a0ad40d 69e451b88ac34f4ca4ad59120914cbdd PHASE(phi_ent₁) 27c36546669d42dc819d3c897a0ad40d--69e451b88ac34f4ca4ad59120914cbdd 69e451b88ac34f4ca4ad59120914cbdd--da9ebb9abb654c708fc18ab2dc9914a7 88fa6c8c4ec041fd89754e58e22151bb RX(phi₁₁) 69e451b88ac34f4ca4ad59120914cbdd--88fa6c8c4ec041fd89754e58e22151bb f0301844ba50433e8b1fd29ff8787def RY(phi₁₄) 88fa6c8c4ec041fd89754e58e22151bb--f0301844ba50433e8b1fd29ff8787def a84aa3d5bf1f4dc6afea43bce058864e RX(phi₁₇) f0301844ba50433e8b1fd29ff8787def--a84aa3d5bf1f4dc6afea43bce058864e 999216a94fe34a4599a9a11753fd187d a84aa3d5bf1f4dc6afea43bce058864e--999216a94fe34a4599a9a11753fd187d c0189980f47941af8610be0bd57e6fb6 PHASE(phi_ent₃) 999216a94fe34a4599a9a11753fd187d--c0189980f47941af8610be0bd57e6fb6 c0189980f47941af8610be0bd57e6fb6--178359cf0e7541c68729408b19f83386 c0189980f47941af8610be0bd57e6fb6--a0c1ab117e364504b7f6a35b7c781bc0

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_baba2519a18b4bf2baa378415797f93f cluster_e06867dab0e440fb8192e394f5cb65d4 8d1128c095a94fb3a762c636957e5da3 0 c8d6ef48126c4d66ac8188f23b1b7a0c RX(theta₀) 8d1128c095a94fb3a762c636957e5da3--c8d6ef48126c4d66ac8188f23b1b7a0c 1794893512854f48bafe721a0ef08eb7 1 fb625a6415b04b65af26cccbb157c076 RY(theta₃) c8d6ef48126c4d66ac8188f23b1b7a0c--fb625a6415b04b65af26cccbb157c076 b0d3d7ed96ad40bd9988365b966819c7 RX(theta₆) fb625a6415b04b65af26cccbb157c076--b0d3d7ed96ad40bd9988365b966819c7 5c1045c1e9ab492c9c68d38680800b1f HamEvo b0d3d7ed96ad40bd9988365b966819c7--5c1045c1e9ab492c9c68d38680800b1f 8f1ea73668f14654a7438e8572a14657 RX(theta₉) 5c1045c1e9ab492c9c68d38680800b1f--8f1ea73668f14654a7438e8572a14657 3a1aff332b9d4c2e8cc6c7fd31a90cfd RY(theta₁₂) 8f1ea73668f14654a7438e8572a14657--3a1aff332b9d4c2e8cc6c7fd31a90cfd 6d1f4b344398442ba174391974325ad4 RX(theta₁₅) 3a1aff332b9d4c2e8cc6c7fd31a90cfd--6d1f4b344398442ba174391974325ad4 86fc764f7459444b9ce52c34f0e0045b HamEvo 6d1f4b344398442ba174391974325ad4--86fc764f7459444b9ce52c34f0e0045b a19ced8944df4a08b0fd3e301a65cba5 86fc764f7459444b9ce52c34f0e0045b--a19ced8944df4a08b0fd3e301a65cba5 38fb4371eea542f887939f6ab472bb38 19ac3e9276ba4633806a04d653035069 RX(theta₁) 1794893512854f48bafe721a0ef08eb7--19ac3e9276ba4633806a04d653035069 c6b2f38ba8934f1cb379161506b8a548 2 64c4e43c5556449894fffea43b07ca0d RY(theta₄) 19ac3e9276ba4633806a04d653035069--64c4e43c5556449894fffea43b07ca0d 02831cbccad7425f8a16531a77d73d53 RX(theta₇) 64c4e43c5556449894fffea43b07ca0d--02831cbccad7425f8a16531a77d73d53 3524f715139a4ccc8bb64227ffa8c2ea t = theta_t₀ 02831cbccad7425f8a16531a77d73d53--3524f715139a4ccc8bb64227ffa8c2ea f8ed0dba5331480092f80e6652121366 RX(theta₁₀) 3524f715139a4ccc8bb64227ffa8c2ea--f8ed0dba5331480092f80e6652121366 c4c812099fac46ff9b0113e2f299dbcb RY(theta₁₃) f8ed0dba5331480092f80e6652121366--c4c812099fac46ff9b0113e2f299dbcb 7c376029b543429a8c555e7101747975 RX(theta₁₆) c4c812099fac46ff9b0113e2f299dbcb--7c376029b543429a8c555e7101747975 d5ada61f61a940cdba1d1bc00c00b05b t = theta_t₁ 7c376029b543429a8c555e7101747975--d5ada61f61a940cdba1d1bc00c00b05b d5ada61f61a940cdba1d1bc00c00b05b--38fb4371eea542f887939f6ab472bb38 f1748232fdb84aa7890bee25e89cb77a ef8a429777094fdb829a8ac0333b95ba RX(theta₂) c6b2f38ba8934f1cb379161506b8a548--ef8a429777094fdb829a8ac0333b95ba d1f838f47dba43578d22a08d691551c8 RY(theta₅) ef8a429777094fdb829a8ac0333b95ba--d1f838f47dba43578d22a08d691551c8 2f369460c0b5457a89e7577645951eac RX(theta₈) d1f838f47dba43578d22a08d691551c8--2f369460c0b5457a89e7577645951eac 3fe65eabc632415097a208e2820d4b09 2f369460c0b5457a89e7577645951eac--3fe65eabc632415097a208e2820d4b09 7e751089fa29406fb2a0804bbe8095c6 RX(theta₁₁) 3fe65eabc632415097a208e2820d4b09--7e751089fa29406fb2a0804bbe8095c6 78e88cb9611149d1be9a6bad3c120511 RY(theta₁₄) 7e751089fa29406fb2a0804bbe8095c6--78e88cb9611149d1be9a6bad3c120511 ad57f700ad3a4cbb8a8ac84339588586 RX(theta₁₇) 78e88cb9611149d1be9a6bad3c120511--ad57f700ad3a4cbb8a8ac84339588586 7222cb10f7d742428c3f92d4a518368e ad57f700ad3a4cbb8a8ac84339588586--7222cb10f7d742428c3f92d4a518368e 7222cb10f7d742428c3f92d4a518368e--f1748232fdb84aa7890bee25e89cb77a

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_bb375f24187f44a5b62afb94cbeb33e8 cluster_4c128a36642a452bb2cfc3b0a30706e1 64fa5decfa2745f689f260a79539c53a 0 17ab1f7cb2d74b7e932e25c9083ae184 RX(theta₀) 64fa5decfa2745f689f260a79539c53a--17ab1f7cb2d74b7e932e25c9083ae184 f90cf73eabf94d1a81a086dc12238e46 1 bc1a4c6af171450499d7468741b302be RY(theta₆) 17ab1f7cb2d74b7e932e25c9083ae184--bc1a4c6af171450499d7468741b302be 057c6d98ab764da38b01312a63d06123 RX(theta₁₂) bc1a4c6af171450499d7468741b302be--057c6d98ab764da38b01312a63d06123 920ff48f83a54ce69763314dd33b515f 057c6d98ab764da38b01312a63d06123--920ff48f83a54ce69763314dd33b515f 8fe4e228ff95437bbb0a0586008b2014 RX(theta₁₈) 920ff48f83a54ce69763314dd33b515f--8fe4e228ff95437bbb0a0586008b2014 1a9c2ce98d774a3482713bf570595744 RY(theta₂₄) 8fe4e228ff95437bbb0a0586008b2014--1a9c2ce98d774a3482713bf570595744 a34685c89e834219bb5c066bcb9bccdd RX(theta₃₀) 1a9c2ce98d774a3482713bf570595744--a34685c89e834219bb5c066bcb9bccdd 44392100e8c840549066ab5d95f25875 a34685c89e834219bb5c066bcb9bccdd--44392100e8c840549066ab5d95f25875 bcf5562d5024467db97bc6910af8977e 44392100e8c840549066ab5d95f25875--bcf5562d5024467db97bc6910af8977e 9f63e1bed3f44c3cb5d1e5dfbe36bc44 188d728e64234fbb9177a978b48b757b RX(theta₁) f90cf73eabf94d1a81a086dc12238e46--188d728e64234fbb9177a978b48b757b 3466b0d246a445de96f2a5b51e92a974 2 7a06a76326ec437ba3091c059b736192 RY(theta₇) 188d728e64234fbb9177a978b48b757b--7a06a76326ec437ba3091c059b736192 dc2473a464424b2ca86141eeaafccf47 RX(theta₁₃) 7a06a76326ec437ba3091c059b736192--dc2473a464424b2ca86141eeaafccf47 bf30efc6db19432a9732172643a33a6b dc2473a464424b2ca86141eeaafccf47--bf30efc6db19432a9732172643a33a6b 1168a0c156c541e8a8f0035ec7f45443 RX(theta₁₉) bf30efc6db19432a9732172643a33a6b--1168a0c156c541e8a8f0035ec7f45443 f6fe1a29f101478ca2439f6354c99302 RY(theta₂₅) 1168a0c156c541e8a8f0035ec7f45443--f6fe1a29f101478ca2439f6354c99302 a34a64c7ee1545e0bf466bc89720402b RX(theta₃₁) f6fe1a29f101478ca2439f6354c99302--a34a64c7ee1545e0bf466bc89720402b 493cb553f1b14b8885dade0860e00f3a a34a64c7ee1545e0bf466bc89720402b--493cb553f1b14b8885dade0860e00f3a 493cb553f1b14b8885dade0860e00f3a--9f63e1bed3f44c3cb5d1e5dfbe36bc44 094c1bb0f08c44279aebdc8af6498f40 aecdd685add845c5a113aff6612689b1 RX(theta₂) 3466b0d246a445de96f2a5b51e92a974--aecdd685add845c5a113aff6612689b1 43f72e25ed4c44988b7f8abbce520d3f 3 d6301a03f4f742d0a33b02afb96e09d5 RY(theta₈) aecdd685add845c5a113aff6612689b1--d6301a03f4f742d0a33b02afb96e09d5 c5084a55fc884d4d926a678e7a0954ad RX(theta₁₄) d6301a03f4f742d0a33b02afb96e09d5--c5084a55fc884d4d926a678e7a0954ad a1a85c213a264b84898138247b77534c HamEvo c5084a55fc884d4d926a678e7a0954ad--a1a85c213a264b84898138247b77534c 5635549cb1d245f7bc421bc803ae30c6 RX(theta₂₀) a1a85c213a264b84898138247b77534c--5635549cb1d245f7bc421bc803ae30c6 1199325e7b154e8aa54a5e1651f2cf9b RY(theta₂₆) 5635549cb1d245f7bc421bc803ae30c6--1199325e7b154e8aa54a5e1651f2cf9b d36fed8784a34d7892ba544256f7679a RX(theta₃₂) 1199325e7b154e8aa54a5e1651f2cf9b--d36fed8784a34d7892ba544256f7679a ebe1211b13974a4eabf55b3cd3df2469 HamEvo d36fed8784a34d7892ba544256f7679a--ebe1211b13974a4eabf55b3cd3df2469 ebe1211b13974a4eabf55b3cd3df2469--094c1bb0f08c44279aebdc8af6498f40 68415b501b3d4a229e3bd44b0c32b15d d8d14ee9b9fe4853bd4dab49245679a0 RX(theta₃) 43f72e25ed4c44988b7f8abbce520d3f--d8d14ee9b9fe4853bd4dab49245679a0 6c1dabcf1b5641c4acec517427c74933 4 fe97990b58984f8dae59f991a7b0bef2 RY(theta₉) d8d14ee9b9fe4853bd4dab49245679a0--fe97990b58984f8dae59f991a7b0bef2 86aaf4b7062d4f46b27034fb08f25eba RX(theta₁₅) fe97990b58984f8dae59f991a7b0bef2--86aaf4b7062d4f46b27034fb08f25eba bb04c730de8e496eae3769d360ea2a2d t = theta_t₀ 86aaf4b7062d4f46b27034fb08f25eba--bb04c730de8e496eae3769d360ea2a2d b7483da331cd49249d16cf838eea1372 RX(theta₂₁) bb04c730de8e496eae3769d360ea2a2d--b7483da331cd49249d16cf838eea1372 7280a2d9cd4a451d8e4ad919f92294a7 RY(theta₂₇) b7483da331cd49249d16cf838eea1372--7280a2d9cd4a451d8e4ad919f92294a7 b5b7989a19fe48a7bf0b952efa62bfa8 RX(theta₃₃) 7280a2d9cd4a451d8e4ad919f92294a7--b5b7989a19fe48a7bf0b952efa62bfa8 a277048d97d14f2ebbe167a4470a154b t = theta_t₁ b5b7989a19fe48a7bf0b952efa62bfa8--a277048d97d14f2ebbe167a4470a154b a277048d97d14f2ebbe167a4470a154b--68415b501b3d4a229e3bd44b0c32b15d a8e54c35b7414750b4435bba2b1f38af c9d1e57428f943009d5bb00400d78c43 RX(theta₄) 6c1dabcf1b5641c4acec517427c74933--c9d1e57428f943009d5bb00400d78c43 f4c12955301b4fcd8b148e6c3aefe6d7 5 6ed14262e0fb468cae8597d93c18c41d RY(theta₁₀) c9d1e57428f943009d5bb00400d78c43--6ed14262e0fb468cae8597d93c18c41d 996d0a13d1714e099c18ab97b8922073 RX(theta₁₆) 6ed14262e0fb468cae8597d93c18c41d--996d0a13d1714e099c18ab97b8922073 344fc5b73d14478d839bc439c2c0e3c1 996d0a13d1714e099c18ab97b8922073--344fc5b73d14478d839bc439c2c0e3c1 f84a0c5f1b604c12a196733b7eaded51 RX(theta₂₂) 344fc5b73d14478d839bc439c2c0e3c1--f84a0c5f1b604c12a196733b7eaded51 aed48eba3ea040b8befc83a4ca682b44 RY(theta₂₈) f84a0c5f1b604c12a196733b7eaded51--aed48eba3ea040b8befc83a4ca682b44 53fd48a94d1b41d9850c61f651b7d3de RX(theta₃₄) aed48eba3ea040b8befc83a4ca682b44--53fd48a94d1b41d9850c61f651b7d3de 9adcfdac40534a85b1cf540524f40e1a 53fd48a94d1b41d9850c61f651b7d3de--9adcfdac40534a85b1cf540524f40e1a 9adcfdac40534a85b1cf540524f40e1a--a8e54c35b7414750b4435bba2b1f38af 3c738f0fc5d7481e9c2c4defb9e7ccd9 a460fb8e0a7140c29941defe0a7f1d33 RX(theta₅) f4c12955301b4fcd8b148e6c3aefe6d7--a460fb8e0a7140c29941defe0a7f1d33 d3001ec371804c95b444649a192a2394 RY(theta₁₁) a460fb8e0a7140c29941defe0a7f1d33--d3001ec371804c95b444649a192a2394 872c05c4fdaa4610bd90a97fb0b5ba4c RX(theta₁₇) d3001ec371804c95b444649a192a2394--872c05c4fdaa4610bd90a97fb0b5ba4c 82c78c658f9d415c85a6971f6fa0662e 872c05c4fdaa4610bd90a97fb0b5ba4c--82c78c658f9d415c85a6971f6fa0662e 565a179f71a9416793d92c1114f8138e RX(theta₂₃) 82c78c658f9d415c85a6971f6fa0662e--565a179f71a9416793d92c1114f8138e 94ddf003401842f6a75b8870a052f121 RY(theta₂₉) 565a179f71a9416793d92c1114f8138e--94ddf003401842f6a75b8870a052f121 16163e7cf22c4bcb9c6ca072fc0e3a0e RX(theta₃₅) 94ddf003401842f6a75b8870a052f121--16163e7cf22c4bcb9c6ca072fc0e3a0e a03bdd21538d4ff3867795fe5b1cedc4 16163e7cf22c4bcb9c6ca072fc0e3a0e--a03bdd21538d4ff3867795fe5b1cedc4 a03bdd21538d4ff3867795fe5b1cedc4--3c738f0fc5d7481e9c2c4defb9e7ccd9

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_99b3a8236b184eaf85842670f80a09f3 BPMA-1 cluster_023b6ccd028a451f93766100f52a60a2 BPMA-0 283ae9b9c11d453295ee312bff0c06fb 0 8a37e28bd50247539cc11bedafde2a05 RX(iia_α₀₀) 283ae9b9c11d453295ee312bff0c06fb--8a37e28bd50247539cc11bedafde2a05 607e90ef6068418caf285d79c39808d9 1 a490d70effee47cf86b8c2194808aae5 RY(iia_α₀₃) 8a37e28bd50247539cc11bedafde2a05--a490d70effee47cf86b8c2194808aae5 bf371beddd9c490bbda180dc77813c21 a490d70effee47cf86b8c2194808aae5--bf371beddd9c490bbda180dc77813c21 efd86a445a0846b9a704191df680d636 bf371beddd9c490bbda180dc77813c21--efd86a445a0846b9a704191df680d636 db268c998223460d96b226244831fee7 RX(iia_γ₀₀) efd86a445a0846b9a704191df680d636--db268c998223460d96b226244831fee7 8a65e93034d14182be412d40b53b62b1 db268c998223460d96b226244831fee7--8a65e93034d14182be412d40b53b62b1 d2ccb44097b84e65ae91ea282f01577b 8a65e93034d14182be412d40b53b62b1--d2ccb44097b84e65ae91ea282f01577b a060bb5de28a41689e4852b26215183f RY(iia_β₀₃) d2ccb44097b84e65ae91ea282f01577b--a060bb5de28a41689e4852b26215183f ef56f6f64e95407b9a35bb07cc2093ef RX(iia_β₀₀) a060bb5de28a41689e4852b26215183f--ef56f6f64e95407b9a35bb07cc2093ef 3f7dae48713240d3a96c7cdd666ddd4c RX(iia_α₁₀) ef56f6f64e95407b9a35bb07cc2093ef--3f7dae48713240d3a96c7cdd666ddd4c 6e2bb07e952f420fa501f7ec539e118d RY(iia_α₁₃) 3f7dae48713240d3a96c7cdd666ddd4c--6e2bb07e952f420fa501f7ec539e118d a73eec21e18340e7860b4ae0c8b389fc 6e2bb07e952f420fa501f7ec539e118d--a73eec21e18340e7860b4ae0c8b389fc 26dd6c27c683402c937893e74709e3b7 a73eec21e18340e7860b4ae0c8b389fc--26dd6c27c683402c937893e74709e3b7 50d6bd43a41c4143a358a8412bb1718d RX(iia_γ₁₀) 26dd6c27c683402c937893e74709e3b7--50d6bd43a41c4143a358a8412bb1718d 6385ac0e8c0c43619401c17c02c1085e 50d6bd43a41c4143a358a8412bb1718d--6385ac0e8c0c43619401c17c02c1085e 0b6b511a51e94a5b8efdd5929982ba8f 6385ac0e8c0c43619401c17c02c1085e--0b6b511a51e94a5b8efdd5929982ba8f aae2f7dcbc8e48968b5b276130d836dd RY(iia_β₁₃) 0b6b511a51e94a5b8efdd5929982ba8f--aae2f7dcbc8e48968b5b276130d836dd a3ac39acc57c461bbfdbb0aa4fff70a2 RX(iia_β₁₀) aae2f7dcbc8e48968b5b276130d836dd--a3ac39acc57c461bbfdbb0aa4fff70a2 c3215225680b44a5b036554d6ae0c1b8 a3ac39acc57c461bbfdbb0aa4fff70a2--c3215225680b44a5b036554d6ae0c1b8 06460b3cedc243bca1fb43e8b852e193 f21f7d0b74d94a1897a569bc50173439 RX(iia_α₀₁) 607e90ef6068418caf285d79c39808d9--f21f7d0b74d94a1897a569bc50173439 49b446a1fb4f42d7b6e6b04b08ab1ff9 2 779d38b81b9c4d23ba05c1375e3d8267 RY(iia_α₀₄) f21f7d0b74d94a1897a569bc50173439--779d38b81b9c4d23ba05c1375e3d8267 c1311c899eb44da3a0b4151e84d695a3 X 779d38b81b9c4d23ba05c1375e3d8267--c1311c899eb44da3a0b4151e84d695a3 c1311c899eb44da3a0b4151e84d695a3--bf371beddd9c490bbda180dc77813c21 7f66a25ac4f84603bea706a99121b37b c1311c899eb44da3a0b4151e84d695a3--7f66a25ac4f84603bea706a99121b37b ca58c2452b5642aca4af886a62f43216 RX(iia_γ₀₁) 7f66a25ac4f84603bea706a99121b37b--ca58c2452b5642aca4af886a62f43216 70fc7bc272494b9dbe108b7daa52f620 ca58c2452b5642aca4af886a62f43216--70fc7bc272494b9dbe108b7daa52f620 263ff5dcf7e343789c0f919c6a6a711f X 70fc7bc272494b9dbe108b7daa52f620--263ff5dcf7e343789c0f919c6a6a711f 263ff5dcf7e343789c0f919c6a6a711f--d2ccb44097b84e65ae91ea282f01577b 2b0546e978a44ce2a69860931c0f8003 RY(iia_β₀₄) 263ff5dcf7e343789c0f919c6a6a711f--2b0546e978a44ce2a69860931c0f8003 abaecce21d3a48d182efe41c89891d1d RX(iia_β₀₁) 2b0546e978a44ce2a69860931c0f8003--abaecce21d3a48d182efe41c89891d1d e3f1a67b23f947febb46ffa4f2d031cf RX(iia_α₁₁) abaecce21d3a48d182efe41c89891d1d--e3f1a67b23f947febb46ffa4f2d031cf 8e59b4318e9b45c09ef6add5616a3c20 RY(iia_α₁₄) e3f1a67b23f947febb46ffa4f2d031cf--8e59b4318e9b45c09ef6add5616a3c20 15232ed341fe431f87aa93fdfb6a55c7 X 8e59b4318e9b45c09ef6add5616a3c20--15232ed341fe431f87aa93fdfb6a55c7 15232ed341fe431f87aa93fdfb6a55c7--a73eec21e18340e7860b4ae0c8b389fc 3a212645e8444d7aa3948a9c04a3ac07 15232ed341fe431f87aa93fdfb6a55c7--3a212645e8444d7aa3948a9c04a3ac07 ad1d4332e3c9447fbd00fc1f8877e745 RX(iia_γ₁₁) 3a212645e8444d7aa3948a9c04a3ac07--ad1d4332e3c9447fbd00fc1f8877e745 e133f22b67824d19a0be8cdf9fd8c60d ad1d4332e3c9447fbd00fc1f8877e745--e133f22b67824d19a0be8cdf9fd8c60d e4cf340a57bd46b3b7918609748c3c1d X e133f22b67824d19a0be8cdf9fd8c60d--e4cf340a57bd46b3b7918609748c3c1d e4cf340a57bd46b3b7918609748c3c1d--0b6b511a51e94a5b8efdd5929982ba8f 0300dc3f1a974190b6fc4455989e635f RY(iia_β₁₄) e4cf340a57bd46b3b7918609748c3c1d--0300dc3f1a974190b6fc4455989e635f f4b86ae5c14646ad847c83b8c0da71be RX(iia_β₁₁) 0300dc3f1a974190b6fc4455989e635f--f4b86ae5c14646ad847c83b8c0da71be f4b86ae5c14646ad847c83b8c0da71be--06460b3cedc243bca1fb43e8b852e193 6c2a19ff6e054028b1cb2dd0498bf991 f2509b7b62cf4e269fab0f3cc7cbec79 RX(iia_α₀₂) 49b446a1fb4f42d7b6e6b04b08ab1ff9--f2509b7b62cf4e269fab0f3cc7cbec79 47ac19da361e498a967fee4cd72aa608 RY(iia_α₀₅) f2509b7b62cf4e269fab0f3cc7cbec79--47ac19da361e498a967fee4cd72aa608 1b2a2778b2904f7085beeca1d2556d3c 47ac19da361e498a967fee4cd72aa608--1b2a2778b2904f7085beeca1d2556d3c feac445681d34c009d9289f3994a3558 X 1b2a2778b2904f7085beeca1d2556d3c--feac445681d34c009d9289f3994a3558 feac445681d34c009d9289f3994a3558--7f66a25ac4f84603bea706a99121b37b e4440ba3c4d645c797b9d2d6c78c630a RX(iia_γ₀₂) feac445681d34c009d9289f3994a3558--e4440ba3c4d645c797b9d2d6c78c630a 743895791d0d4100b083dcbeef4b33ce X e4440ba3c4d645c797b9d2d6c78c630a--743895791d0d4100b083dcbeef4b33ce 743895791d0d4100b083dcbeef4b33ce--70fc7bc272494b9dbe108b7daa52f620 7f1dd4401b924b9aba93e8fed8240814 743895791d0d4100b083dcbeef4b33ce--7f1dd4401b924b9aba93e8fed8240814 3043b1c630a1492a9927f7b64e4b54f5 RY(iia_β₀₅) 7f1dd4401b924b9aba93e8fed8240814--3043b1c630a1492a9927f7b64e4b54f5 a33533fe076d45adb032fd10405e3e1a RX(iia_β₀₂) 3043b1c630a1492a9927f7b64e4b54f5--a33533fe076d45adb032fd10405e3e1a c22dbee1dca14193b53698c44004ca26 RX(iia_α₁₂) a33533fe076d45adb032fd10405e3e1a--c22dbee1dca14193b53698c44004ca26 9466651880dc4510aa4c56b82803af14 RY(iia_α₁₅) c22dbee1dca14193b53698c44004ca26--9466651880dc4510aa4c56b82803af14 29f6e6c1343043b782729bd638ffac93 9466651880dc4510aa4c56b82803af14--29f6e6c1343043b782729bd638ffac93 0b3774d48e714314be099e7489b1f158 X 29f6e6c1343043b782729bd638ffac93--0b3774d48e714314be099e7489b1f158 0b3774d48e714314be099e7489b1f158--3a212645e8444d7aa3948a9c04a3ac07 266e917f15ea4580bf2a9c4ff91ed521 RX(iia_γ₁₂) 0b3774d48e714314be099e7489b1f158--266e917f15ea4580bf2a9c4ff91ed521 c8c297d382eb4542848733d6f7daf99b X 266e917f15ea4580bf2a9c4ff91ed521--c8c297d382eb4542848733d6f7daf99b c8c297d382eb4542848733d6f7daf99b--e133f22b67824d19a0be8cdf9fd8c60d c74053f9f6db4905942d37c98beae9fa c8c297d382eb4542848733d6f7daf99b--c74053f9f6db4905942d37c98beae9fa 52435ab9cf874dcbb2156d449ed0578a RY(iia_β₁₅) c74053f9f6db4905942d37c98beae9fa--52435ab9cf874dcbb2156d449ed0578a fbc73a400b3f4e84ac6f004c450ff0b1 RX(iia_β₁₂) 52435ab9cf874dcbb2156d449ed0578a--fbc73a400b3f4e84ac6f004c450ff0b1 fbc73a400b3f4e84ac6f004c450ff0b1--6c2a19ff6e054028b1cb2dd0498bf991