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_560fdcaa518b44b69ff2686e5a383f94 Constant Chebyshev FM cluster_ee38e7324d9e48a89106a1a11fa1c961 Constant Fourier FM dfcd51f0a1384bceb7050adcb776c0c9 0 1e15088aa0634057ad9a815b1cf1d32d RX(phi) dfcd51f0a1384bceb7050adcb776c0c9--1e15088aa0634057ad9a815b1cf1d32d 381cf647db964651977841701604a8ee 1 c09a311f004e48b0890dc4513724d927 RX(acos(phi)) 1e15088aa0634057ad9a815b1cf1d32d--c09a311f004e48b0890dc4513724d927 421ad099bf164ddfa79e7b0d9c458ccf c09a311f004e48b0890dc4513724d927--421ad099bf164ddfa79e7b0d9c458ccf 44037b38ca23434194791b0fc0dff401 20af4925dcbd46449a1e5b1aaffc5c76 RX(phi) 381cf647db964651977841701604a8ee--20af4925dcbd46449a1e5b1aaffc5c76 8a1675af178f44e38f5e252584e86701 2 db608663615447fcbc365866d9f2cad0 RX(acos(phi)) 20af4925dcbd46449a1e5b1aaffc5c76--db608663615447fcbc365866d9f2cad0 db608663615447fcbc365866d9f2cad0--44037b38ca23434194791b0fc0dff401 40f53adfa8334f9f956b1b68a0812fa2 ff0e8d929d6a4447859c106901541b30 RX(phi) 8a1675af178f44e38f5e252584e86701--ff0e8d929d6a4447859c106901541b30 b9a4b781515d450a84746102ad8e34be RX(acos(phi)) ff0e8d929d6a4447859c106901541b30--b9a4b781515d450a84746102ad8e34be b9a4b781515d450a84746102ad8e34be--40f53adfa8334f9f956b1b68a0812fa2

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 sub-class of Function
class custom_func(Function):
    @classmethod
    def eval(cls, x):
        return asin(x) + x**2

custom_fm_1 = feature_map(n_qubits, fm_type=custom_func)

block = chain(custom_fm_0, custom_fm_1)
%3 cluster_e4129ff547814d4fae8c846f8f8107ec Constant custom_func FM cluster_7765e244eff747c5a358b51864573c4a Constant asin FM 3504c4192fee4170b9a5fdf1d08b00ad 0 8879e07d0b9748fcb14652484ad8ffc8 RX(asin(phi)) 3504c4192fee4170b9a5fdf1d08b00ad--8879e07d0b9748fcb14652484ad8ffc8 e6827434b5754aa8adfd80e0473791b2 1 0df0e6e1520746f9aeaffd43f7996e45 RX(phi**2 + asin(phi)) 8879e07d0b9748fcb14652484ad8ffc8--0df0e6e1520746f9aeaffd43f7996e45 4b9e3a3dbc0242ab83db0425b7da5460 0df0e6e1520746f9aeaffd43f7996e45--4b9e3a3dbc0242ab83db0425b7da5460 4d4708ce869f41108fd117ba95db85f0 50e9eae26075484d9a652f5a7fa8e72c RX(asin(phi)) e6827434b5754aa8adfd80e0473791b2--50e9eae26075484d9a652f5a7fa8e72c 2936cc323bfe4a49abd158d87c480ff6 2 917f44a2edb24dbd8fa2f2705d31078e RX(phi**2 + asin(phi)) 50e9eae26075484d9a652f5a7fa8e72c--917f44a2edb24dbd8fa2f2705d31078e 917f44a2edb24dbd8fa2f2705d31078e--4d4708ce869f41108fd117ba95db85f0 8bccf4ca923e4d4aad279ef2df51b79d bc5a44861bf34fb999118b842060c365 RX(asin(phi)) 2936cc323bfe4a49abd158d87c480ff6--bc5a44861bf34fb999118b842060c365 82da01a7ebfb4b4ca9949f98b70a02cf RX(phi**2 + asin(phi)) bc5a44861bf34fb999118b842060c365--82da01a7ebfb4b4ca9949f98b70a02cf 82da01a7ebfb4b4ca9949f98b70a02cf--8bccf4ca923e4d4aad279ef2df51b79d

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_bca62dbcd66948a7802bb8cd3124a2a0 Exponential Fourier FM cluster_88f3e3ed5dd64bd9834dd7d32a89239f Constant Fourier FM cluster_02c892bbc48d4396a89aff6eec542b15 Tower Fourier FM 2acd3739032b441699eb9448aa633952 0 c277b3c40907452fa654ef33bd2cd9b6 RX(phi) 2acd3739032b441699eb9448aa633952--c277b3c40907452fa654ef33bd2cd9b6 8db5a4903f364acda23e4a2f5f46aad7 1 2b569fb3999f442f955ad2e8a4cd28d4 RX(1.0*phi) c277b3c40907452fa654ef33bd2cd9b6--2b569fb3999f442f955ad2e8a4cd28d4 f1cbab8e4b14422d9c3d5bea6eed864f RX(1.0*phi) 2b569fb3999f442f955ad2e8a4cd28d4--f1cbab8e4b14422d9c3d5bea6eed864f b20dd3da204048ef96a825aff5744c0c f1cbab8e4b14422d9c3d5bea6eed864f--b20dd3da204048ef96a825aff5744c0c 3158582b0eee47c58c404975ac18ce8e dbab37856ac14cc8a0235193edc3d215 RX(phi) 8db5a4903f364acda23e4a2f5f46aad7--dbab37856ac14cc8a0235193edc3d215 441e39e205fb4fa0a943532fe5d8cdac 2 ceee16f96d7649128d101d6c3293dfaa RX(2.0*phi) dbab37856ac14cc8a0235193edc3d215--ceee16f96d7649128d101d6c3293dfaa bc2ff3ae8d744e15aebc4b80e966ab05 RX(2.0*phi) ceee16f96d7649128d101d6c3293dfaa--bc2ff3ae8d744e15aebc4b80e966ab05 bc2ff3ae8d744e15aebc4b80e966ab05--3158582b0eee47c58c404975ac18ce8e 4086edbe8472477589d653bc684bece9 befd91ea770c46f993b3c1ace89da1d9 RX(phi) 441e39e205fb4fa0a943532fe5d8cdac--befd91ea770c46f993b3c1ace89da1d9 c94809115adc43ba848edece17c116bf 3 38acf6e13b854eb6b7f841ff88d8a921 RX(3.0*phi) befd91ea770c46f993b3c1ace89da1d9--38acf6e13b854eb6b7f841ff88d8a921 bfb5b8122ad0448a86fe9c7e1e421a22 RX(4.0*phi) 38acf6e13b854eb6b7f841ff88d8a921--bfb5b8122ad0448a86fe9c7e1e421a22 bfb5b8122ad0448a86fe9c7e1e421a22--4086edbe8472477589d653bc684bece9 c35eaa6cd4ae43b3b257a386177815c1 e4781caa8c004aec8cfa38df9c984c7b RX(phi) c94809115adc43ba848edece17c116bf--e4781caa8c004aec8cfa38df9c984c7b 7f0b85dfacb048288a8245e76142df84 4 c43b6155351346489b10741196b66a44 RX(4.0*phi) e4781caa8c004aec8cfa38df9c984c7b--c43b6155351346489b10741196b66a44 90a2447e0acb4dbe8f557999b0c7d8c1 RX(8.0*phi) c43b6155351346489b10741196b66a44--90a2447e0acb4dbe8f557999b0c7d8c1 90a2447e0acb4dbe8f557999b0c7d8c1--c35eaa6cd4ae43b3b257a386177815c1 38eb9e774fcb4c3b98f7ec48ddea1cd7 703f61e5f6824b559f7f09524f8782be RX(phi) 7f0b85dfacb048288a8245e76142df84--703f61e5f6824b559f7f09524f8782be bbb9a5f3b33c4a6490a2fbad84af3d28 RX(5.0*phi) 703f61e5f6824b559f7f09524f8782be--bbb9a5f3b33c4a6490a2fbad84af3d28 f8c4435a90cb44b7b37b0b42f6b6812a RX(16.0*phi) bbb9a5f3b33c4a6490a2fbad84af3d28--f8c4435a90cb44b7b37b0b42f6b6812a f8c4435a90cb44b7b37b0b42f6b6812a--38eb9e774fcb4c3b98f7ec48ddea1cd7

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 9da57c4ca55d49fca98857be9c63728b 0 e4de81714d374b0886bcfe8c60e003f0 RX(1.0*acos(phi)) 9da57c4ca55d49fca98857be9c63728b--e4de81714d374b0886bcfe8c60e003f0 fe5ef0e7daa74473ab258865dc02341f 1 10b747cc84ee40eeb86773971162e9dd e4de81714d374b0886bcfe8c60e003f0--10b747cc84ee40eeb86773971162e9dd d7640d9241df40409e553caa5985a66b 287bd9f90b5543cd8900f2db5cea4b36 RX(1.414*acos(phi)) fe5ef0e7daa74473ab258865dc02341f--287bd9f90b5543cd8900f2db5cea4b36 10c0db2f14564992b6c7b0e6c43ec746 2 287bd9f90b5543cd8900f2db5cea4b36--d7640d9241df40409e553caa5985a66b fc8515ae4a794a1da8b6a4365da1ea30 fb2f179c96b945f395ab184bd170fc8d RX(1.732*acos(phi)) 10c0db2f14564992b6c7b0e6c43ec746--fb2f179c96b945f395ab184bd170fc8d 57efd7b6ee784302b80a099c38173111 3 fb2f179c96b945f395ab184bd170fc8d--fc8515ae4a794a1da8b6a4365da1ea30 daeedf6496a84933ae2ee115d4f80a9b 7709bf7eda2f4e0cab94afd41c1ddd66 RX(2.0*acos(phi)) 57efd7b6ee784302b80a099c38173111--7709bf7eda2f4e0cab94afd41c1ddd66 8afb2b354782431f9fdf2c819a3d8a3a 4 7709bf7eda2f4e0cab94afd41c1ddd66--daeedf6496a84933ae2ee115d4f80a9b 762f833bfd7e4e33a0c77eddb11accc1 b6cee5423e2c4bcbad0f984dca9985fb RX(2.236*acos(phi)) 8afb2b354782431f9fdf2c819a3d8a3a--b6cee5423e2c4bcbad0f984dca9985fb b6cee5423e2c4bcbad0f984dca9985fb--762f833bfd7e4e33a0c77eddb11accc1

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
)
%3 b9ab2fdc07bf4a9496cfc504594986ae 0 cf22c9dd916a4626b693d03be65db981 RY(80.0*acos(0.667*x + 1.667)) b9ab2fdc07bf4a9496cfc504594986ae--cf22c9dd916a4626b693d03be65db981 b5d2896bec7c41989df7c74090330433 1 e4700aab671b443ba7ec83f308395658 cf22c9dd916a4626b693d03be65db981--e4700aab671b443ba7ec83f308395658 2d24d77f46f447bbacf655f7d52d1f34 444dccdd8b5a464a88d522d7c7bdbb0b RY(40.0*acos(0.667*x + 1.667)) b5d2896bec7c41989df7c74090330433--444dccdd8b5a464a88d522d7c7bdbb0b c762123a383548e08873387c08592c2d 2 444dccdd8b5a464a88d522d7c7bdbb0b--2d24d77f46f447bbacf655f7d52d1f34 84d405dda4834864b80e4df6cd3bdb94 ff16c36eeb3b410a814aaf5217ea9c6d RY(20.0*acos(0.667*x + 1.667)) c762123a383548e08873387c08592c2d--ff16c36eeb3b410a814aaf5217ea9c6d 2fa6b9c06cb242f0ba7043998839d7f8 3 ff16c36eeb3b410a814aaf5217ea9c6d--84d405dda4834864b80e4df6cd3bdb94 43a45ab77e2648128f660e68a04682ec eadf47a809e942eeb7fb3a9a354b62fd RY(10.0*acos(0.667*x + 1.667)) 2fa6b9c06cb242f0ba7043998839d7f8--eadf47a809e942eeb7fb3a9a354b62fd 2562f7605b4f4fbbb33d9ce241357224 4 eadf47a809e942eeb7fb3a9a354b62fd--43a45ab77e2648128f660e68a04682ec 5ededdae4cb84db58511f50530618859 683837353c5242f0ac26e1e0cbed9fb7 RY(5.0*acos(0.667*x + 1.667)) 2562f7605b4f4fbbb33d9ce241357224--683837353c5242f0ac26e1e0cbed9fb7 683837353c5242f0ac26e1e0cbed9fb7--5ededdae4cb84db58511f50530618859

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 e18a779dfb7945f4a954427fc049717a 0 49e20cc4130d4a6fb222e528f949b105 RX(theta₀) e18a779dfb7945f4a954427fc049717a--49e20cc4130d4a6fb222e528f949b105 1d5e436311614e14a342726bc975eca6 1 f581ccf56bd04011b5fa62ee6a81b467 RY(theta₃) 49e20cc4130d4a6fb222e528f949b105--f581ccf56bd04011b5fa62ee6a81b467 96dde83dd450439aa3d640ccbcfd40ec RX(theta₆) f581ccf56bd04011b5fa62ee6a81b467--96dde83dd450439aa3d640ccbcfd40ec 027cf7cda82041fd8f7e8f24481e85b6 96dde83dd450439aa3d640ccbcfd40ec--027cf7cda82041fd8f7e8f24481e85b6 7f4fe8240a1241cabc218c133cb08654 027cf7cda82041fd8f7e8f24481e85b6--7f4fe8240a1241cabc218c133cb08654 d68a5e60c4d841a48da83084c694c308 RX(theta₉) 7f4fe8240a1241cabc218c133cb08654--d68a5e60c4d841a48da83084c694c308 8d7f00ae9b1845628c5e60012002dce7 RY(theta₁₂) d68a5e60c4d841a48da83084c694c308--8d7f00ae9b1845628c5e60012002dce7 e2ae62a7abc34392b035afef0d6897cd RX(theta₁₅) 8d7f00ae9b1845628c5e60012002dce7--e2ae62a7abc34392b035afef0d6897cd 03cf400eb9174a5a8f705fdcd2518af7 e2ae62a7abc34392b035afef0d6897cd--03cf400eb9174a5a8f705fdcd2518af7 b26829db669643a0a784e84a159066e7 03cf400eb9174a5a8f705fdcd2518af7--b26829db669643a0a784e84a159066e7 e7c122cdf8a544e39f6a573b9162f9d4 b26829db669643a0a784e84a159066e7--e7c122cdf8a544e39f6a573b9162f9d4 98fd2aff15b0463a830558e75b4bd09a 9ed12228a97a4224962249d77dd91da5 RX(theta₁) 1d5e436311614e14a342726bc975eca6--9ed12228a97a4224962249d77dd91da5 505111d3a9fd43aeb7199ccd17700605 2 ad07bcb6961543919871d5e80a225a0d RY(theta₄) 9ed12228a97a4224962249d77dd91da5--ad07bcb6961543919871d5e80a225a0d fad06356608d442381b775a33d0e6157 RX(theta₇) ad07bcb6961543919871d5e80a225a0d--fad06356608d442381b775a33d0e6157 a2379b5b8b7447b29270e2c72d800b89 X fad06356608d442381b775a33d0e6157--a2379b5b8b7447b29270e2c72d800b89 a2379b5b8b7447b29270e2c72d800b89--027cf7cda82041fd8f7e8f24481e85b6 0d69c159be944fff8307419a8e536fb2 a2379b5b8b7447b29270e2c72d800b89--0d69c159be944fff8307419a8e536fb2 b7c4cfb550334e6fa60599b3718daa3b RX(theta₁₀) 0d69c159be944fff8307419a8e536fb2--b7c4cfb550334e6fa60599b3718daa3b 961758b7665d47c0aad943e8e8fa6e6c RY(theta₁₃) b7c4cfb550334e6fa60599b3718daa3b--961758b7665d47c0aad943e8e8fa6e6c 12f159e61052428888820b6b2faeb692 RX(theta₁₆) 961758b7665d47c0aad943e8e8fa6e6c--12f159e61052428888820b6b2faeb692 df3139cc26f54be3966d5e9e8a696b29 X 12f159e61052428888820b6b2faeb692--df3139cc26f54be3966d5e9e8a696b29 df3139cc26f54be3966d5e9e8a696b29--03cf400eb9174a5a8f705fdcd2518af7 1c3b0ede5263436cb80dcb882d4f34d4 df3139cc26f54be3966d5e9e8a696b29--1c3b0ede5263436cb80dcb882d4f34d4 1c3b0ede5263436cb80dcb882d4f34d4--98fd2aff15b0463a830558e75b4bd09a ed69979d977e4a9499461c3bb4792af7 fa95f6323c6049888fc2f507b6142886 RX(theta₂) 505111d3a9fd43aeb7199ccd17700605--fa95f6323c6049888fc2f507b6142886 a77c8467ec3c4237845858c9f5089517 RY(theta₅) fa95f6323c6049888fc2f507b6142886--a77c8467ec3c4237845858c9f5089517 f06379f822074c7797e902d5ea98a9c4 RX(theta₈) a77c8467ec3c4237845858c9f5089517--f06379f822074c7797e902d5ea98a9c4 5e5d17c18c5c4f23ad30d56a8c7f9688 f06379f822074c7797e902d5ea98a9c4--5e5d17c18c5c4f23ad30d56a8c7f9688 1aaccef6ea154d07ba2a58472a911819 X 5e5d17c18c5c4f23ad30d56a8c7f9688--1aaccef6ea154d07ba2a58472a911819 1aaccef6ea154d07ba2a58472a911819--0d69c159be944fff8307419a8e536fb2 27afe9185ad5454a9c8b98469cebea34 RX(theta₁₁) 1aaccef6ea154d07ba2a58472a911819--27afe9185ad5454a9c8b98469cebea34 cb70b519f2d64992a68f01291b86832c RY(theta₁₄) 27afe9185ad5454a9c8b98469cebea34--cb70b519f2d64992a68f01291b86832c 01415c75d0cf40a7a75e51c990b0cb9d RX(theta₁₇) cb70b519f2d64992a68f01291b86832c--01415c75d0cf40a7a75e51c990b0cb9d 28da948c21e647e696b7c8eaea4386cd 01415c75d0cf40a7a75e51c990b0cb9d--28da948c21e647e696b7c8eaea4386cd f3380ed633874d369ff78c4a61af07c2 X 28da948c21e647e696b7c8eaea4386cd--f3380ed633874d369ff78c4a61af07c2 f3380ed633874d369ff78c4a61af07c2--1c3b0ede5263436cb80dcb882d4f34d4 f3380ed633874d369ff78c4a61af07c2--ed69979d977e4a9499461c3bb4792af7

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 70fd6ac4c2be4e409b5c0e690841d32d 0 ed2e1d1443d948c2af4bd8e99b524774 RX(phi₀) 70fd6ac4c2be4e409b5c0e690841d32d--ed2e1d1443d948c2af4bd8e99b524774 8ccb94a09274482e9719889cb333f055 1 d682c75485a74ef6a6f76149d280d9fa RY(phi₃) ed2e1d1443d948c2af4bd8e99b524774--d682c75485a74ef6a6f76149d280d9fa 53a001cac69548899d2e0e61c8b940d8 RX(phi₆) d682c75485a74ef6a6f76149d280d9fa--53a001cac69548899d2e0e61c8b940d8 9e287bea793f424bbb784359993221f5 53a001cac69548899d2e0e61c8b940d8--9e287bea793f424bbb784359993221f5 f21571ebb02d473f82d9508e310fa620 9e287bea793f424bbb784359993221f5--f21571ebb02d473f82d9508e310fa620 3b48c1946bbb4956a337276d633f6c64 RX(phi₉) f21571ebb02d473f82d9508e310fa620--3b48c1946bbb4956a337276d633f6c64 61109d793ed9487a90b096184dea6d5b RY(phi₁₂) 3b48c1946bbb4956a337276d633f6c64--61109d793ed9487a90b096184dea6d5b f446462bc85f4835a45249b767adabb5 RX(phi₁₅) 61109d793ed9487a90b096184dea6d5b--f446462bc85f4835a45249b767adabb5 4bf94db7ebd64046832cbe0d2eaaaaf3 f446462bc85f4835a45249b767adabb5--4bf94db7ebd64046832cbe0d2eaaaaf3 e86eb488714b433ab8c98ad4378ffda2 4bf94db7ebd64046832cbe0d2eaaaaf3--e86eb488714b433ab8c98ad4378ffda2 89174edfe4564a4f8c3dd18b55ff36c0 e86eb488714b433ab8c98ad4378ffda2--89174edfe4564a4f8c3dd18b55ff36c0 0e93d82b48f84dc6a474b6dd4e0cc9ba 6edba4c589f84d919a20d01dae83b589 RX(phi₁) 8ccb94a09274482e9719889cb333f055--6edba4c589f84d919a20d01dae83b589 d4a0588a6c4e480b816432f10aa6d1a2 2 535ad55c5e40405fbbc43256768961d5 RY(phi₄) 6edba4c589f84d919a20d01dae83b589--535ad55c5e40405fbbc43256768961d5 74f4c267e9a540e0b1d61b5a377ae8b8 RX(phi₇) 535ad55c5e40405fbbc43256768961d5--74f4c267e9a540e0b1d61b5a377ae8b8 0cac6095565d4031a379f07a1fbffba4 PHASE(phi_ent₀) 74f4c267e9a540e0b1d61b5a377ae8b8--0cac6095565d4031a379f07a1fbffba4 0cac6095565d4031a379f07a1fbffba4--9e287bea793f424bbb784359993221f5 8fa295042097421cbcb838840e8d7e3d 0cac6095565d4031a379f07a1fbffba4--8fa295042097421cbcb838840e8d7e3d c121304fa57e42d6a74005fe442e8d1a RX(phi₁₀) 8fa295042097421cbcb838840e8d7e3d--c121304fa57e42d6a74005fe442e8d1a 1a2248453f6342efbe2a8490be705c73 RY(phi₁₃) c121304fa57e42d6a74005fe442e8d1a--1a2248453f6342efbe2a8490be705c73 1b42eb2cfe5547369ed60afc9a68d6df RX(phi₁₆) 1a2248453f6342efbe2a8490be705c73--1b42eb2cfe5547369ed60afc9a68d6df b9c30f7452dd496884e1910d5fdabcd2 PHASE(phi_ent₂) 1b42eb2cfe5547369ed60afc9a68d6df--b9c30f7452dd496884e1910d5fdabcd2 b9c30f7452dd496884e1910d5fdabcd2--4bf94db7ebd64046832cbe0d2eaaaaf3 1d47b96a468d48f3ab79880f80323490 b9c30f7452dd496884e1910d5fdabcd2--1d47b96a468d48f3ab79880f80323490 1d47b96a468d48f3ab79880f80323490--0e93d82b48f84dc6a474b6dd4e0cc9ba c00ecb99c4ac4f0ca19031d88088e67c 5ac6a501163e43c1ab78b08810761738 RX(phi₂) d4a0588a6c4e480b816432f10aa6d1a2--5ac6a501163e43c1ab78b08810761738 1330d3d64838439cb488143241f67d87 RY(phi₅) 5ac6a501163e43c1ab78b08810761738--1330d3d64838439cb488143241f67d87 c7a7f0526d48448d99e74c7fc996474b RX(phi₈) 1330d3d64838439cb488143241f67d87--c7a7f0526d48448d99e74c7fc996474b 92c41165063f42128c7159e01d6fafe8 c7a7f0526d48448d99e74c7fc996474b--92c41165063f42128c7159e01d6fafe8 c1ade26c9bf14bab9859f6d11b05efe4 PHASE(phi_ent₁) 92c41165063f42128c7159e01d6fafe8--c1ade26c9bf14bab9859f6d11b05efe4 c1ade26c9bf14bab9859f6d11b05efe4--8fa295042097421cbcb838840e8d7e3d f2a860d6571e468fbd3daa71786d7400 RX(phi₁₁) c1ade26c9bf14bab9859f6d11b05efe4--f2a860d6571e468fbd3daa71786d7400 ae4d96d53fec44638aa321346f34485d RY(phi₁₄) f2a860d6571e468fbd3daa71786d7400--ae4d96d53fec44638aa321346f34485d 3113adc8254441a886e4066c8e740347 RX(phi₁₇) ae4d96d53fec44638aa321346f34485d--3113adc8254441a886e4066c8e740347 11fca3a827594846853ae1d025eb6d75 3113adc8254441a886e4066c8e740347--11fca3a827594846853ae1d025eb6d75 345c757e838d446fa4cadb4ffb226914 PHASE(phi_ent₃) 11fca3a827594846853ae1d025eb6d75--345c757e838d446fa4cadb4ffb226914 345c757e838d446fa4cadb4ffb226914--1d47b96a468d48f3ab79880f80323490 345c757e838d446fa4cadb4ffb226914--c00ecb99c4ac4f0ca19031d88088e67c

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_29a01a5e1ec14d10a0500529e9571e8f cluster_0e5ef7873aab4016b46b2a356e26f46c bd0af01394604951b6637e2fe8a5d380 0 d58f516f4687439898e61b13cb4dd761 RX(theta₀) bd0af01394604951b6637e2fe8a5d380--d58f516f4687439898e61b13cb4dd761 6bc88b1808b24c4bb278b63d68bb88d6 1 7e9656e2af0a43588d3779e7fa9e8fe1 RY(theta₃) d58f516f4687439898e61b13cb4dd761--7e9656e2af0a43588d3779e7fa9e8fe1 24502f83fa474284ac4a7185d8213bf8 RX(theta₆) 7e9656e2af0a43588d3779e7fa9e8fe1--24502f83fa474284ac4a7185d8213bf8 62c3399bd30b430c8ca935be0d6aeaf0 HamEvo 24502f83fa474284ac4a7185d8213bf8--62c3399bd30b430c8ca935be0d6aeaf0 4f538a477e484e118839c00352b0dd5a RX(theta₉) 62c3399bd30b430c8ca935be0d6aeaf0--4f538a477e484e118839c00352b0dd5a 09b7a3b2a01343189a01681cad9570a2 RY(theta₁₂) 4f538a477e484e118839c00352b0dd5a--09b7a3b2a01343189a01681cad9570a2 db9940c1cc2844e492ea6cbc37f542df RX(theta₁₅) 09b7a3b2a01343189a01681cad9570a2--db9940c1cc2844e492ea6cbc37f542df 42f20c6d1f844306b436bc9d58b6e0f0 HamEvo db9940c1cc2844e492ea6cbc37f542df--42f20c6d1f844306b436bc9d58b6e0f0 7fd08a16c8b94aefad917dcbf4e6bcde 42f20c6d1f844306b436bc9d58b6e0f0--7fd08a16c8b94aefad917dcbf4e6bcde 2f78de97556041069d0c53ed8f0cb4b1 6d9b84b6e1c04173a888c4fdaf059bcc RX(theta₁) 6bc88b1808b24c4bb278b63d68bb88d6--6d9b84b6e1c04173a888c4fdaf059bcc 703d2de54d104743be8555ed887e1a29 2 53b7f4d65c0c4415808d36c3b64e5e0a RY(theta₄) 6d9b84b6e1c04173a888c4fdaf059bcc--53b7f4d65c0c4415808d36c3b64e5e0a ce8a4752935f4202a029599be8c97ad2 RX(theta₇) 53b7f4d65c0c4415808d36c3b64e5e0a--ce8a4752935f4202a029599be8c97ad2 05bd69703b1245ea96d6f433af15ba77 t = theta_t₀ ce8a4752935f4202a029599be8c97ad2--05bd69703b1245ea96d6f433af15ba77 7a0f149a25384565b555dd40f846a1ae RX(theta₁₀) 05bd69703b1245ea96d6f433af15ba77--7a0f149a25384565b555dd40f846a1ae c1cbe34442594ca79211bc267acd5427 RY(theta₁₃) 7a0f149a25384565b555dd40f846a1ae--c1cbe34442594ca79211bc267acd5427 9c3d75f13d6e4433a817d6003d10a2c2 RX(theta₁₆) c1cbe34442594ca79211bc267acd5427--9c3d75f13d6e4433a817d6003d10a2c2 612433d0cf3e41abb44b00689f215f01 t = theta_t₁ 9c3d75f13d6e4433a817d6003d10a2c2--612433d0cf3e41abb44b00689f215f01 612433d0cf3e41abb44b00689f215f01--2f78de97556041069d0c53ed8f0cb4b1 607f23650f9845219bc6b4a594f892f8 373fc5af2d3b4caba5743d806bb4ab6a RX(theta₂) 703d2de54d104743be8555ed887e1a29--373fc5af2d3b4caba5743d806bb4ab6a 501176588f1d4f9584a4de99f9163221 RY(theta₅) 373fc5af2d3b4caba5743d806bb4ab6a--501176588f1d4f9584a4de99f9163221 00e783dff1a04635883c6777e7c1c0c6 RX(theta₈) 501176588f1d4f9584a4de99f9163221--00e783dff1a04635883c6777e7c1c0c6 c31fb9dc67834678b85bacad6ff844ec 00e783dff1a04635883c6777e7c1c0c6--c31fb9dc67834678b85bacad6ff844ec d9568b7d679d4bf08b69afabe29041f8 RX(theta₁₁) c31fb9dc67834678b85bacad6ff844ec--d9568b7d679d4bf08b69afabe29041f8 9cf5ecf8bf1940e7a1d1464e815ed457 RY(theta₁₄) d9568b7d679d4bf08b69afabe29041f8--9cf5ecf8bf1940e7a1d1464e815ed457 3ad8e84922f3408ebf3fcd9cb9c7fe31 RX(theta₁₇) 9cf5ecf8bf1940e7a1d1464e815ed457--3ad8e84922f3408ebf3fcd9cb9c7fe31 4a512fc56b654443873a1b2580497484 3ad8e84922f3408ebf3fcd9cb9c7fe31--4a512fc56b654443873a1b2580497484 4a512fc56b654443873a1b2580497484--607f23650f9845219bc6b4a594f892f8

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_154f61770c8a48e1aaf7a17abbe7c4f4 cluster_0e26af3d2b8540a6841a05260e6ff693 cd91906f091a48d78bf95645bc235763 0 0f8ba48680b1472cbe9a744590368ff1 RX(theta₀) cd91906f091a48d78bf95645bc235763--0f8ba48680b1472cbe9a744590368ff1 064161d69cda4af28e826d633076a0f0 1 8d1ce07c88bb411ca2ab34923f6cd156 RY(theta₆) 0f8ba48680b1472cbe9a744590368ff1--8d1ce07c88bb411ca2ab34923f6cd156 4ab07139f8bc428d9468cc4e04191429 RX(theta₁₂) 8d1ce07c88bb411ca2ab34923f6cd156--4ab07139f8bc428d9468cc4e04191429 a4f0168bc85e4e2997230561b2fc8554 4ab07139f8bc428d9468cc4e04191429--a4f0168bc85e4e2997230561b2fc8554 07c786389a404902abef44289f4ac02e RX(theta₁₈) a4f0168bc85e4e2997230561b2fc8554--07c786389a404902abef44289f4ac02e 6b5f1a43a5dc4ae488374131c1b58df7 RY(theta₂₄) 07c786389a404902abef44289f4ac02e--6b5f1a43a5dc4ae488374131c1b58df7 29ee591a6ad844fba5ae033d80e687fe RX(theta₃₀) 6b5f1a43a5dc4ae488374131c1b58df7--29ee591a6ad844fba5ae033d80e687fe 1b2f79211636495a8734db6046efaf0f 29ee591a6ad844fba5ae033d80e687fe--1b2f79211636495a8734db6046efaf0f 2fe734544feb4d0ebab3032ce5937b26 1b2f79211636495a8734db6046efaf0f--2fe734544feb4d0ebab3032ce5937b26 c68480d3bd7f4345b841fa9a5f1d0b6d 234edc6c48944458899ec52ed4e911ee RX(theta₁) 064161d69cda4af28e826d633076a0f0--234edc6c48944458899ec52ed4e911ee b3af3c62bb4c4f61b67a80b0c1276eca 2 bcaf6ffc55784b89b752c347c5ee181d RY(theta₇) 234edc6c48944458899ec52ed4e911ee--bcaf6ffc55784b89b752c347c5ee181d 0a12fca6d0ad41098c2067eefde9ba8b RX(theta₁₃) bcaf6ffc55784b89b752c347c5ee181d--0a12fca6d0ad41098c2067eefde9ba8b 3091d8fa06da41bca9d9b39df82dd05a 0a12fca6d0ad41098c2067eefde9ba8b--3091d8fa06da41bca9d9b39df82dd05a e8abc88b8dba41c498071aca9571579b RX(theta₁₉) 3091d8fa06da41bca9d9b39df82dd05a--e8abc88b8dba41c498071aca9571579b f38c83d9a1ad4af2b7a3e7ed69189665 RY(theta₂₅) e8abc88b8dba41c498071aca9571579b--f38c83d9a1ad4af2b7a3e7ed69189665 5b03f8fc29744a809a98c4f3f6c869c4 RX(theta₃₁) f38c83d9a1ad4af2b7a3e7ed69189665--5b03f8fc29744a809a98c4f3f6c869c4 f7aecbe40c63436f9642f07f9dcabd38 5b03f8fc29744a809a98c4f3f6c869c4--f7aecbe40c63436f9642f07f9dcabd38 f7aecbe40c63436f9642f07f9dcabd38--c68480d3bd7f4345b841fa9a5f1d0b6d 0e1dc6e1d6ed4294a11046cdabeb68d1 e4ea7a8ec5c84687ad6bdfce234729b2 RX(theta₂) b3af3c62bb4c4f61b67a80b0c1276eca--e4ea7a8ec5c84687ad6bdfce234729b2 c9632205b82541e885d68ef167a11833 3 a288f8262671486a875a8679546996b2 RY(theta₈) e4ea7a8ec5c84687ad6bdfce234729b2--a288f8262671486a875a8679546996b2 c188a9d437364edf9f3db930def52a0e RX(theta₁₄) a288f8262671486a875a8679546996b2--c188a9d437364edf9f3db930def52a0e 45194000535142549a4a01c507af7b90 HamEvo c188a9d437364edf9f3db930def52a0e--45194000535142549a4a01c507af7b90 e5a17055a06343eab8f3cfe28f0ca2ec RX(theta₂₀) 45194000535142549a4a01c507af7b90--e5a17055a06343eab8f3cfe28f0ca2ec 7bc856fb6bf64a2b8d4b8e281fce77ab RY(theta₂₆) e5a17055a06343eab8f3cfe28f0ca2ec--7bc856fb6bf64a2b8d4b8e281fce77ab 4ca4d00f6fc842b58ce0a9e830a55ca9 RX(theta₃₂) 7bc856fb6bf64a2b8d4b8e281fce77ab--4ca4d00f6fc842b58ce0a9e830a55ca9 72daa4e7a693402c92167cda3156a84a HamEvo 4ca4d00f6fc842b58ce0a9e830a55ca9--72daa4e7a693402c92167cda3156a84a 72daa4e7a693402c92167cda3156a84a--0e1dc6e1d6ed4294a11046cdabeb68d1 360a7c7a46884096b5ac14bb5a4a2cba 89c9662e7b8e492abc1f701101b8a95c RX(theta₃) c9632205b82541e885d68ef167a11833--89c9662e7b8e492abc1f701101b8a95c a935643fd4804b96bc9d13fd4f86ecea 4 ddf5e8d33f234bbc9c41ffdcc00c1e05 RY(theta₉) 89c9662e7b8e492abc1f701101b8a95c--ddf5e8d33f234bbc9c41ffdcc00c1e05 661c0bb015b543d4a27abee2c2147289 RX(theta₁₅) ddf5e8d33f234bbc9c41ffdcc00c1e05--661c0bb015b543d4a27abee2c2147289 e5d6efc2b40a4c1d9ad8af331648bc94 t = theta_t₀ 661c0bb015b543d4a27abee2c2147289--e5d6efc2b40a4c1d9ad8af331648bc94 30d18e609efc452ebb521cde737400ff RX(theta₂₁) e5d6efc2b40a4c1d9ad8af331648bc94--30d18e609efc452ebb521cde737400ff c6154f26183943e89908f836c5392182 RY(theta₂₇) 30d18e609efc452ebb521cde737400ff--c6154f26183943e89908f836c5392182 c4cdec70094e443e905988577d77b48c RX(theta₃₃) c6154f26183943e89908f836c5392182--c4cdec70094e443e905988577d77b48c 2369eb372d3942da9fe068d60261e026 t = theta_t₁ c4cdec70094e443e905988577d77b48c--2369eb372d3942da9fe068d60261e026 2369eb372d3942da9fe068d60261e026--360a7c7a46884096b5ac14bb5a4a2cba 4a4f54c73eb54c2695d4af8df048692c 019f0e9fb5ba4f5c88c6fde53efd85bf RX(theta₄) a935643fd4804b96bc9d13fd4f86ecea--019f0e9fb5ba4f5c88c6fde53efd85bf 034706b3d5714e83909f9b6607a9cdcd 5 d2c12f7191ce48169c4b8b21c2e35eed RY(theta₁₀) 019f0e9fb5ba4f5c88c6fde53efd85bf--d2c12f7191ce48169c4b8b21c2e35eed 341fb6cc17f34da4a753c20880c9abf0 RX(theta₁₆) d2c12f7191ce48169c4b8b21c2e35eed--341fb6cc17f34da4a753c20880c9abf0 488a8cf7ed7e4f7196f829c652683a4b 341fb6cc17f34da4a753c20880c9abf0--488a8cf7ed7e4f7196f829c652683a4b da4fca7d85b64b0a8a850e0626b84fe2 RX(theta₂₂) 488a8cf7ed7e4f7196f829c652683a4b--da4fca7d85b64b0a8a850e0626b84fe2 168bcfc2b510480894c59fc2640b0108 RY(theta₂₈) da4fca7d85b64b0a8a850e0626b84fe2--168bcfc2b510480894c59fc2640b0108 f8cef4db72bf434885098810466747d4 RX(theta₃₄) 168bcfc2b510480894c59fc2640b0108--f8cef4db72bf434885098810466747d4 4360acf72fac4060a3ee09acfa16c780 f8cef4db72bf434885098810466747d4--4360acf72fac4060a3ee09acfa16c780 4360acf72fac4060a3ee09acfa16c780--4a4f54c73eb54c2695d4af8df048692c c2e4bc01a5c44c15bbd809f5bbf52637 94057662fc0f45bdb738a6a155438ed0 RX(theta₅) 034706b3d5714e83909f9b6607a9cdcd--94057662fc0f45bdb738a6a155438ed0 c79446687d3145fb9ccff9759d686655 RY(theta₁₁) 94057662fc0f45bdb738a6a155438ed0--c79446687d3145fb9ccff9759d686655 8c0aeb2eb422435b844c94d3c9662ade RX(theta₁₇) c79446687d3145fb9ccff9759d686655--8c0aeb2eb422435b844c94d3c9662ade b3305f0597ff4b0398754c93ba61bb9f 8c0aeb2eb422435b844c94d3c9662ade--b3305f0597ff4b0398754c93ba61bb9f 55760031fade46a7a49e0cc0e9d4eefa RX(theta₂₃) b3305f0597ff4b0398754c93ba61bb9f--55760031fade46a7a49e0cc0e9d4eefa 46fd9b9f3fd34b46bc4174d13b5c1a90 RY(theta₂₉) 55760031fade46a7a49e0cc0e9d4eefa--46fd9b9f3fd34b46bc4174d13b5c1a90 e45b6db1e090495b875dad462ebe6e9b RX(theta₃₅) 46fd9b9f3fd34b46bc4174d13b5c1a90--e45b6db1e090495b875dad462ebe6e9b f83f324ae5124067863e3bd95dbcdbe4 e45b6db1e090495b875dad462ebe6e9b--f83f324ae5124067863e3bd95dbcdbe4 f83f324ae5124067863e3bd95dbcdbe4--c2e4bc01a5c44c15bbd809f5bbf52637

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_68033c257ddd4a969a5d72af6f76dd86 BPMA-1 cluster_e52003727f5341b69220e9cf8204f61e BPMA-0 c8ff9caf07e2467d9b1291179973f2b8 0 b1055231daf7497db3a9fcddc5effa70 RX(alpha₀₀) c8ff9caf07e2467d9b1291179973f2b8--b1055231daf7497db3a9fcddc5effa70 f770d33252374b109a9b0674b851982f 1 e539e5e2b8874b179752a154ace8102b RY(alpha₀₃) b1055231daf7497db3a9fcddc5effa70--e539e5e2b8874b179752a154ace8102b 170fcc5acdf64204a5c2d1f21219d9cf e539e5e2b8874b179752a154ace8102b--170fcc5acdf64204a5c2d1f21219d9cf ae96d8daf53b43f69ea5ade98d8fe2e0 170fcc5acdf64204a5c2d1f21219d9cf--ae96d8daf53b43f69ea5ade98d8fe2e0 c631bf0509da490ca7304b91f0f40207 RX(gamma₀₀) ae96d8daf53b43f69ea5ade98d8fe2e0--c631bf0509da490ca7304b91f0f40207 f6a23da541bb4e5eb7fbaf7d92da9fd5 c631bf0509da490ca7304b91f0f40207--f6a23da541bb4e5eb7fbaf7d92da9fd5 4916b2c7969046ea80162c72afd99313 f6a23da541bb4e5eb7fbaf7d92da9fd5--4916b2c7969046ea80162c72afd99313 27942f4ecabe4e86ba1df1543577f3fa RY(beta₀₃) 4916b2c7969046ea80162c72afd99313--27942f4ecabe4e86ba1df1543577f3fa 7b5957dd99e9455f8db607bad5015012 RX(beta₀₀) 27942f4ecabe4e86ba1df1543577f3fa--7b5957dd99e9455f8db607bad5015012 2104705da9c644fd8d06831343300024 RX(alpha₁₀) 7b5957dd99e9455f8db607bad5015012--2104705da9c644fd8d06831343300024 55dddc02317944a3aa03539b4fb5ab1a RY(alpha₁₃) 2104705da9c644fd8d06831343300024--55dddc02317944a3aa03539b4fb5ab1a 862ec2f6aad542f19df2db8ea85d89e5 55dddc02317944a3aa03539b4fb5ab1a--862ec2f6aad542f19df2db8ea85d89e5 16743c3d5fcc422db1402bdc4585c1fb 862ec2f6aad542f19df2db8ea85d89e5--16743c3d5fcc422db1402bdc4585c1fb 0fd7d0ed2b104fe69f008fa929da0eb4 RX(gamma₁₀) 16743c3d5fcc422db1402bdc4585c1fb--0fd7d0ed2b104fe69f008fa929da0eb4 45212a95ef004015ad525a8bb3cb25a3 0fd7d0ed2b104fe69f008fa929da0eb4--45212a95ef004015ad525a8bb3cb25a3 0a05b64925764c91a931e91706e6ae7a 45212a95ef004015ad525a8bb3cb25a3--0a05b64925764c91a931e91706e6ae7a 20d5c94647714302b87cc717a202229d RY(beta₁₃) 0a05b64925764c91a931e91706e6ae7a--20d5c94647714302b87cc717a202229d 52f318b7894f48adaeb0359d7cc64b13 RX(beta₁₀) 20d5c94647714302b87cc717a202229d--52f318b7894f48adaeb0359d7cc64b13 959bf4b57b9a49e08b6075387dcda261 52f318b7894f48adaeb0359d7cc64b13--959bf4b57b9a49e08b6075387dcda261 d2691dc015f448beb1ca153abf5d3f87 b1d691273353483fa62635d440b002cf RX(alpha₀₁) f770d33252374b109a9b0674b851982f--b1d691273353483fa62635d440b002cf 228041b0b4a845fdaaa4771c2c8a1b6c 2 cf128507d3d0442cb968e56b55dd9a0b RY(alpha₀₄) b1d691273353483fa62635d440b002cf--cf128507d3d0442cb968e56b55dd9a0b a47c7183f651402a8293553f433f160e X cf128507d3d0442cb968e56b55dd9a0b--a47c7183f651402a8293553f433f160e a47c7183f651402a8293553f433f160e--170fcc5acdf64204a5c2d1f21219d9cf 700b7ee6e08845c2883242ccee8d88b8 a47c7183f651402a8293553f433f160e--700b7ee6e08845c2883242ccee8d88b8 c29be40d5163493ca1adf487c99b7b6f RX(gamma₀₁) 700b7ee6e08845c2883242ccee8d88b8--c29be40d5163493ca1adf487c99b7b6f 58004363282a47998bd6c04b6a047d83 c29be40d5163493ca1adf487c99b7b6f--58004363282a47998bd6c04b6a047d83 877e1fbd6ce343b1b32542c07c02463a X 58004363282a47998bd6c04b6a047d83--877e1fbd6ce343b1b32542c07c02463a 877e1fbd6ce343b1b32542c07c02463a--4916b2c7969046ea80162c72afd99313 758aed3334c2441f953c2c2437d07fe8 RY(beta₀₄) 877e1fbd6ce343b1b32542c07c02463a--758aed3334c2441f953c2c2437d07fe8 37a410bb3e174f5382ab10ea185017e8 RX(beta₀₁) 758aed3334c2441f953c2c2437d07fe8--37a410bb3e174f5382ab10ea185017e8 c3bab8c116044a3fa7f8820ecc9e6c8e RX(alpha₁₁) 37a410bb3e174f5382ab10ea185017e8--c3bab8c116044a3fa7f8820ecc9e6c8e 874b3aece2ab4a59ace69194bfe9a770 RY(alpha₁₄) c3bab8c116044a3fa7f8820ecc9e6c8e--874b3aece2ab4a59ace69194bfe9a770 0687f7f205a3487f8b669856f24dfe3f X 874b3aece2ab4a59ace69194bfe9a770--0687f7f205a3487f8b669856f24dfe3f 0687f7f205a3487f8b669856f24dfe3f--862ec2f6aad542f19df2db8ea85d89e5 d41f0c76ea684a02969744c63db73247 0687f7f205a3487f8b669856f24dfe3f--d41f0c76ea684a02969744c63db73247 3518fa81e5ea4ec7baf7cb8b2c0caacd RX(gamma₁₁) d41f0c76ea684a02969744c63db73247--3518fa81e5ea4ec7baf7cb8b2c0caacd 9c3b243ce1e64208981d441c6ae6ee13 3518fa81e5ea4ec7baf7cb8b2c0caacd--9c3b243ce1e64208981d441c6ae6ee13 a538034962214e028a29b2b62f623a46 X 9c3b243ce1e64208981d441c6ae6ee13--a538034962214e028a29b2b62f623a46 a538034962214e028a29b2b62f623a46--0a05b64925764c91a931e91706e6ae7a 900add26039a4dc19eaf64b77281d03f RY(beta₁₄) a538034962214e028a29b2b62f623a46--900add26039a4dc19eaf64b77281d03f 07f3c1178f834b1da5e80878a3f62efb RX(beta₁₁) 900add26039a4dc19eaf64b77281d03f--07f3c1178f834b1da5e80878a3f62efb 07f3c1178f834b1da5e80878a3f62efb--d2691dc015f448beb1ca153abf5d3f87 1074eff867ad4384be3a2417b10d7035 c99710d2ba3d4dbb861ee59eaef2ff10 RX(alpha₀₂) 228041b0b4a845fdaaa4771c2c8a1b6c--c99710d2ba3d4dbb861ee59eaef2ff10 51269b98c5b34f6e801c949f51fe904a RY(alpha₀₅) c99710d2ba3d4dbb861ee59eaef2ff10--51269b98c5b34f6e801c949f51fe904a 189b68bc68884a958a4a13b278e02647 51269b98c5b34f6e801c949f51fe904a--189b68bc68884a958a4a13b278e02647 6ae45bf5eedb43b9bca6193e97d98381 X 189b68bc68884a958a4a13b278e02647--6ae45bf5eedb43b9bca6193e97d98381 6ae45bf5eedb43b9bca6193e97d98381--700b7ee6e08845c2883242ccee8d88b8 08c46593e75d49a09da8dd2d6cdd8a14 RX(gamma₀₂) 6ae45bf5eedb43b9bca6193e97d98381--08c46593e75d49a09da8dd2d6cdd8a14 7c1725b036434f41a4646f6943dea682 X 08c46593e75d49a09da8dd2d6cdd8a14--7c1725b036434f41a4646f6943dea682 7c1725b036434f41a4646f6943dea682--58004363282a47998bd6c04b6a047d83 f1067b18cd984efbb1fde43a199b620f 7c1725b036434f41a4646f6943dea682--f1067b18cd984efbb1fde43a199b620f 00a2e5c5c8454141b032c32cc94b5cb2 RY(beta₀₅) f1067b18cd984efbb1fde43a199b620f--00a2e5c5c8454141b032c32cc94b5cb2 04e043a913924046b59333fb434a78fe RX(beta₀₂) 00a2e5c5c8454141b032c32cc94b5cb2--04e043a913924046b59333fb434a78fe 156937f63f784bb49d98f10e72f78585 RX(alpha₁₂) 04e043a913924046b59333fb434a78fe--156937f63f784bb49d98f10e72f78585 4344890d155946f095d87efb321a720c RY(alpha₁₅) 156937f63f784bb49d98f10e72f78585--4344890d155946f095d87efb321a720c fe8f8f812c4e42d39599ef2bfae6fdf9 4344890d155946f095d87efb321a720c--fe8f8f812c4e42d39599ef2bfae6fdf9 860e4c4cf4a64a1cad4e37f2a7c7a6a5 X fe8f8f812c4e42d39599ef2bfae6fdf9--860e4c4cf4a64a1cad4e37f2a7c7a6a5 860e4c4cf4a64a1cad4e37f2a7c7a6a5--d41f0c76ea684a02969744c63db73247 f2ee23807b1e49cc9f7a70e2ffff4d43 RX(gamma₁₂) 860e4c4cf4a64a1cad4e37f2a7c7a6a5--f2ee23807b1e49cc9f7a70e2ffff4d43 29b0244bc6f5466ca02d292a240e3d3b X f2ee23807b1e49cc9f7a70e2ffff4d43--29b0244bc6f5466ca02d292a240e3d3b 29b0244bc6f5466ca02d292a240e3d3b--9c3b243ce1e64208981d441c6ae6ee13 952c89df2f9e4956a6b9877282b2df89 29b0244bc6f5466ca02d292a240e3d3b--952c89df2f9e4956a6b9877282b2df89 607d92b6f7e84deb9928bd7662a6fa8a RY(beta₁₅) 952c89df2f9e4956a6b9877282b2df89--607d92b6f7e84deb9928bd7662a6fa8a cc6a3b376eda4384946df487f7073ac7 RX(beta₁₂) 607d92b6f7e84deb9928bd7662a6fa8a--cc6a3b376eda4384946df487f7073ac7 cc6a3b376eda4384946df487f7073ac7--1074eff867ad4384be3a2417b10d7035