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_b5c5696cf32440e98bfe284cd4ac5377 Constant Chebyshev FM cluster_53c83e2683944ea89bfc87164eb42b85 Constant Fourier FM 3fd4b8fbb0d54338a291196802c6b137 0 857d99847ccf46e38d457ebc04b2f4cd RX(phi) 3fd4b8fbb0d54338a291196802c6b137--857d99847ccf46e38d457ebc04b2f4cd 8a3ddff21e4844ecb9131d35fbb4fb64 1 279c986e184d45b3aaf8a4fedc8cf64f RX(acos(phi)) 857d99847ccf46e38d457ebc04b2f4cd--279c986e184d45b3aaf8a4fedc8cf64f 8c7f4049f7ca49a4ba3383f01e057ebd 279c986e184d45b3aaf8a4fedc8cf64f--8c7f4049f7ca49a4ba3383f01e057ebd c9ae67c6c1644e8894ddd1b839066427 79aa74ae2e304500b5ad7f0202b26d9e RX(phi) 8a3ddff21e4844ecb9131d35fbb4fb64--79aa74ae2e304500b5ad7f0202b26d9e bbc5eff7317e4a118b7f0ea491a66c85 2 b7a893c862374eae99344957402ecdc8 RX(acos(phi)) 79aa74ae2e304500b5ad7f0202b26d9e--b7a893c862374eae99344957402ecdc8 b7a893c862374eae99344957402ecdc8--c9ae67c6c1644e8894ddd1b839066427 d0aeb515bdb44bf0b5ef8b4d54ba4d39 9d8a1b645059461f8aeff870f390bf03 RX(phi) bbc5eff7317e4a118b7f0ea491a66c85--9d8a1b645059461f8aeff870f390bf03 af27d82a0b3348e6839763552218ebcf RX(acos(phi)) 9d8a1b645059461f8aeff870f390bf03--af27d82a0b3348e6839763552218ebcf af27d82a0b3348e6839763552218ebcf--d0aeb515bdb44bf0b5ef8b4d54ba4d39

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_846aade74136488eadfc295742a498b6 Constant <function custom_fn at 0x7fd73c256dd0> FM cluster_090d2e775dd14f6aa004c8d2a3ca2655 Constant asin FM 99139bc734f247fe8a965d79114eab88 0 218b91ec94674644a1f3278411cd8cfe RX(asin(phi)) 99139bc734f247fe8a965d79114eab88--218b91ec94674644a1f3278411cd8cfe df7e560d88f64c11a8a8cea89ef28dc1 1 5aab0a03404142e580fff6f9766193a1 RX(phi**2 + asin(phi)) 218b91ec94674644a1f3278411cd8cfe--5aab0a03404142e580fff6f9766193a1 70f278017e8b4cabbef174d7b7ed5cbd 5aab0a03404142e580fff6f9766193a1--70f278017e8b4cabbef174d7b7ed5cbd 92b9902f45a34392b674f9be9281f4a6 d76a696fdf7c4930997e30d3a3fd0b73 RX(asin(phi)) df7e560d88f64c11a8a8cea89ef28dc1--d76a696fdf7c4930997e30d3a3fd0b73 3069276d39234b50ae9ca568e78cdd0f 2 97bf7cf5b619421db768a3348902e8f2 RX(phi**2 + asin(phi)) d76a696fdf7c4930997e30d3a3fd0b73--97bf7cf5b619421db768a3348902e8f2 97bf7cf5b619421db768a3348902e8f2--92b9902f45a34392b674f9be9281f4a6 b0d36303d58e4d119503983f2550f201 220015c55e354ab382da1e5636a883e7 RX(asin(phi)) 3069276d39234b50ae9ca568e78cdd0f--220015c55e354ab382da1e5636a883e7 47bbd1bf8a3e4da5bd5ddfe1c594bd0e RX(phi**2 + asin(phi)) 220015c55e354ab382da1e5636a883e7--47bbd1bf8a3e4da5bd5ddfe1c594bd0e 47bbd1bf8a3e4da5bd5ddfe1c594bd0e--b0d36303d58e4d119503983f2550f201

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_480091a5833343b99b4362b5b620aea2 Exponential Fourier FM cluster_8a0673b6cc5b4c32b2b11cc00c28bda3 Constant Fourier FM cluster_278bc2705f2e49fda981bcd9e30d0ed9 Tower Fourier FM a286381e07da4e82a1843c744ebb7184 0 f363021c2306449a831d5f28220ffbe4 RX(phi) a286381e07da4e82a1843c744ebb7184--f363021c2306449a831d5f28220ffbe4 b4952329a4524b919e5398e8b09ca6d3 1 93af2cf2455f4337ba84646e14692998 RX(1.0*phi) f363021c2306449a831d5f28220ffbe4--93af2cf2455f4337ba84646e14692998 703e288ae4d6408e8eb0ab70eabc66eb RX(1.0*phi) 93af2cf2455f4337ba84646e14692998--703e288ae4d6408e8eb0ab70eabc66eb 62142730c3bb4f7e945761e326479c44 703e288ae4d6408e8eb0ab70eabc66eb--62142730c3bb4f7e945761e326479c44 05088909aad647bb8a82614b6666ca90 fe5aacadd6db43d0b68fe26823034b34 RX(phi) b4952329a4524b919e5398e8b09ca6d3--fe5aacadd6db43d0b68fe26823034b34 480ff8d7c04e4a53b1862cbd402abce6 2 0298fbaac9094e228e600ef7dca8dbf1 RX(2.0*phi) fe5aacadd6db43d0b68fe26823034b34--0298fbaac9094e228e600ef7dca8dbf1 64ca84eaca0641ea9d6c3e333be8fbea RX(2.0*phi) 0298fbaac9094e228e600ef7dca8dbf1--64ca84eaca0641ea9d6c3e333be8fbea 64ca84eaca0641ea9d6c3e333be8fbea--05088909aad647bb8a82614b6666ca90 fb19bc380c7c4b3c841afe3030372256 4ffadb18ffe443e3b1434272e727f793 RX(phi) 480ff8d7c04e4a53b1862cbd402abce6--4ffadb18ffe443e3b1434272e727f793 84cd6915fc154dc781a49b01c55d3838 3 33cd9bd7be0940429f0ace0b2f5917e3 RX(3.0*phi) 4ffadb18ffe443e3b1434272e727f793--33cd9bd7be0940429f0ace0b2f5917e3 04ab1e9702814cf696560f46b8340dd9 RX(4.0*phi) 33cd9bd7be0940429f0ace0b2f5917e3--04ab1e9702814cf696560f46b8340dd9 04ab1e9702814cf696560f46b8340dd9--fb19bc380c7c4b3c841afe3030372256 913e9a42589b41a7a3de68ebe9d7d00d 1ce83dd3e821429d9d6d1af6824ad73a RX(phi) 84cd6915fc154dc781a49b01c55d3838--1ce83dd3e821429d9d6d1af6824ad73a e10351e5171b4bc28a6653101ad705ce 4 d23da51e25c04154894b429add49bc31 RX(4.0*phi) 1ce83dd3e821429d9d6d1af6824ad73a--d23da51e25c04154894b429add49bc31 e213b573c92c4fc38fddf9582d925968 RX(8.0*phi) d23da51e25c04154894b429add49bc31--e213b573c92c4fc38fddf9582d925968 e213b573c92c4fc38fddf9582d925968--913e9a42589b41a7a3de68ebe9d7d00d 34541191a95041d39191f10bcd888e9c 96d52792e9d74753984312593ae5f6fa RX(phi) e10351e5171b4bc28a6653101ad705ce--96d52792e9d74753984312593ae5f6fa 2f2bc477891249b3a90885b7e630a40a RX(5.0*phi) 96d52792e9d74753984312593ae5f6fa--2f2bc477891249b3a90885b7e630a40a 416655b05fc64a39a55571a101d07860 RX(16.0*phi) 2f2bc477891249b3a90885b7e630a40a--416655b05fc64a39a55571a101d07860 416655b05fc64a39a55571a101d07860--34541191a95041d39191f10bcd888e9c

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 b65b7de209dd4026b4140ec8dc6f4364 0 7beea971e0c64819b6a4bc7eee6dc97c RX(1.0*acos(phi)) b65b7de209dd4026b4140ec8dc6f4364--7beea971e0c64819b6a4bc7eee6dc97c 8ee43fb8fb704a1c90aebc270e7bb99b 1 d7c00c457ea84cd58f05d37b67466cb7 7beea971e0c64819b6a4bc7eee6dc97c--d7c00c457ea84cd58f05d37b67466cb7 37d62624324f4910981e19e29e22efb3 8e2fdc63190941698ffce747ef755cea RX(1.414*acos(phi)) 8ee43fb8fb704a1c90aebc270e7bb99b--8e2fdc63190941698ffce747ef755cea ea40dd3c11444a099b028f25068582bf 2 8e2fdc63190941698ffce747ef755cea--37d62624324f4910981e19e29e22efb3 fee753f0f9a941e0bc71862987143c16 6e79c383f2894b5596d7464cc04cef0d RX(1.732*acos(phi)) ea40dd3c11444a099b028f25068582bf--6e79c383f2894b5596d7464cc04cef0d a4d821bea35746a5b43b289c19a83d06 3 6e79c383f2894b5596d7464cc04cef0d--fee753f0f9a941e0bc71862987143c16 246a66ad834e4470abe303c5c1451ff0 1d9cf879bc304a5f93824f5269d8ec8d RX(2.0*acos(phi)) a4d821bea35746a5b43b289c19a83d06--1d9cf879bc304a5f93824f5269d8ec8d 0626ff1e2d5446adbd4058a0cca2fd64 4 1d9cf879bc304a5f93824f5269d8ec8d--246a66ad834e4470abe303c5c1451ff0 f897b7d6e02840338ab83de60a411764 ff7856c2938f4849a285b7186ef87281 RX(2.236*acos(phi)) 0626ff1e2d5446adbd4058a0cca2fd64--ff7856c2938f4849a285b7186ef87281 ff7856c2938f4849a285b7186ef87281--f897b7d6e02840338ab83de60a411764

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 b8ffb4f1236c449cb4354d65776946ec 0 d688bd8869d7496fb50ffb17a1fe7baf RX(1.0*phi*w₀) b8ffb4f1236c449cb4354d65776946ec--d688bd8869d7496fb50ffb17a1fe7baf b9d44395fe7c41669aca8502bf8853ce 1 abc2979e644f4594b82c1a2f10060c2f d688bd8869d7496fb50ffb17a1fe7baf--abc2979e644f4594b82c1a2f10060c2f 6aaae806b35a4224a1f3702df28b1568 71132043eb4749af8a810af790d3a4b5 RX(2.0*phi*w₁) b9d44395fe7c41669aca8502bf8853ce--71132043eb4749af8a810af790d3a4b5 f5f9590093064be8acef0337e64419f6 2 71132043eb4749af8a810af790d3a4b5--6aaae806b35a4224a1f3702df28b1568 e8e9585bb54f407389c560f5511060e3 11d3ab5ba6e4422ab56ff9ddefe8d30d RX(4.0*phi*w₂) f5f9590093064be8acef0337e64419f6--11d3ab5ba6e4422ab56ff9ddefe8d30d 74a4badcfb17496f8fc25d63b3501f08 3 11d3ab5ba6e4422ab56ff9ddefe8d30d--e8e9585bb54f407389c560f5511060e3 035517503dbc4381b7b0e2c2b24f40e7 751db616ac7540a095320e67f6ae8b99 RX(8.0*phi*w₃) 74a4badcfb17496f8fc25d63b3501f08--751db616ac7540a095320e67f6ae8b99 d5a1066847c34c579cf47755cc63956e 4 751db616ac7540a095320e67f6ae8b99--035517503dbc4381b7b0e2c2b24f40e7 cb733017dfdb4336ab145172eef0793f 47617262401641b8882aeca35347c74a RX(16.0*phi*w₄) d5a1066847c34c579cf47755cc63956e--47617262401641b8882aeca35347c74a 47617262401641b8882aeca35347c74a--cb733017dfdb4336ab145172eef0793f

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 726e17229c6a4769a6a979d759279884 0 8cfb871fdcb34edc9393e36d240a432c RY(80.0*acos(w₄*(0.667*x + 1.667))) 726e17229c6a4769a6a979d759279884--8cfb871fdcb34edc9393e36d240a432c 305fe5b415e5497b981795a1ada499e0 1 2635327008e14c7aae1c64930d70fe92 8cfb871fdcb34edc9393e36d240a432c--2635327008e14c7aae1c64930d70fe92 87f8f11cc43a41f3b9e6de358a1a0ebf 8e6edd7d7b504e0db8f5bebb6fc85047 RY(40.0*acos(w₃*(0.667*x + 1.667))) 305fe5b415e5497b981795a1ada499e0--8e6edd7d7b504e0db8f5bebb6fc85047 0bdde6bfdb9f4513a959c9c9e1610960 2 8e6edd7d7b504e0db8f5bebb6fc85047--87f8f11cc43a41f3b9e6de358a1a0ebf 38eb41f2ae9249b797a3338bf6a732dd 5aa37492789040a3878fc98ec2856ab0 RY(20.0*acos(w₂*(0.667*x + 1.667))) 0bdde6bfdb9f4513a959c9c9e1610960--5aa37492789040a3878fc98ec2856ab0 ad1da223d4fb48458801edf4c2c0e08b 3 5aa37492789040a3878fc98ec2856ab0--38eb41f2ae9249b797a3338bf6a732dd 25624f42270a49f8931dc9851d6aa292 8d67e412b0014514ba62dbcc8d9fe481 RY(10.0*acos(w₁*(0.667*x + 1.667))) ad1da223d4fb48458801edf4c2c0e08b--8d67e412b0014514ba62dbcc8d9fe481 eeff11c5bc884f5b8038f793f14b12fe 4 8d67e412b0014514ba62dbcc8d9fe481--25624f42270a49f8931dc9851d6aa292 e78eb1cd3e954082ab3c936aa8a7bf03 b65d4238c3bb44cc95f71a2c71596376 RY(5.0*acos(w₀*(0.667*x + 1.667))) eeff11c5bc884f5b8038f793f14b12fe--b65d4238c3bb44cc95f71a2c71596376 b65d4238c3bb44cc95f71a2c71596376--e78eb1cd3e954082ab3c936aa8a7bf03

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 25f55d04cdc149899a7f1c102f07bc8a 0 ffbe225c0da1421bb251ed9b4aa8975c RX(theta₀) 25f55d04cdc149899a7f1c102f07bc8a--ffbe225c0da1421bb251ed9b4aa8975c 46c02121102f448cb2e76d379768a1f5 1 526a6db1808846c0afedc7412bffb532 RY(theta₃) ffbe225c0da1421bb251ed9b4aa8975c--526a6db1808846c0afedc7412bffb532 405e7746495a48e3b7f31a26771e6106 RX(theta₆) 526a6db1808846c0afedc7412bffb532--405e7746495a48e3b7f31a26771e6106 e7832b3774624ae5a850b70d14faa278 405e7746495a48e3b7f31a26771e6106--e7832b3774624ae5a850b70d14faa278 843c5b7b90c74ab688008d2d6447804c e7832b3774624ae5a850b70d14faa278--843c5b7b90c74ab688008d2d6447804c 9b51ed90c04e4896b4f982caa4af97d8 RX(theta₉) 843c5b7b90c74ab688008d2d6447804c--9b51ed90c04e4896b4f982caa4af97d8 8e4f8f3366eb4c5da79cbee026996b1c RY(theta₁₂) 9b51ed90c04e4896b4f982caa4af97d8--8e4f8f3366eb4c5da79cbee026996b1c b61a3fdabfc941f5a8495b4d69b262a0 RX(theta₁₅) 8e4f8f3366eb4c5da79cbee026996b1c--b61a3fdabfc941f5a8495b4d69b262a0 07b3bc20975a4f26971707af636de863 b61a3fdabfc941f5a8495b4d69b262a0--07b3bc20975a4f26971707af636de863 9cf2815ed6e6462ca43ad68f79d45306 07b3bc20975a4f26971707af636de863--9cf2815ed6e6462ca43ad68f79d45306 6041be00444049ff82ff001b452cc84f 9cf2815ed6e6462ca43ad68f79d45306--6041be00444049ff82ff001b452cc84f fdd007edfdae4c6fbd098e6d505ab949 5f5ccad78eab44938bbecc7c76e4d09b RX(theta₁) 46c02121102f448cb2e76d379768a1f5--5f5ccad78eab44938bbecc7c76e4d09b e7b957f3ce3b4b6eb620b8ab188f3de9 2 9498f6a7d4db4a778c3f7009a06e3e65 RY(theta₄) 5f5ccad78eab44938bbecc7c76e4d09b--9498f6a7d4db4a778c3f7009a06e3e65 1040971065494e47a4127227b3e42606 RX(theta₇) 9498f6a7d4db4a778c3f7009a06e3e65--1040971065494e47a4127227b3e42606 2f67e08d1b0440b99e96a300918a9f89 X 1040971065494e47a4127227b3e42606--2f67e08d1b0440b99e96a300918a9f89 2f67e08d1b0440b99e96a300918a9f89--e7832b3774624ae5a850b70d14faa278 c05b5ff388a1404092fa3d01ea4be592 2f67e08d1b0440b99e96a300918a9f89--c05b5ff388a1404092fa3d01ea4be592 c2bb50afa1114dab9b6ec68d83f7b5fd RX(theta₁₀) c05b5ff388a1404092fa3d01ea4be592--c2bb50afa1114dab9b6ec68d83f7b5fd 80edf50a49f34fa490b6faee84fbc571 RY(theta₁₃) c2bb50afa1114dab9b6ec68d83f7b5fd--80edf50a49f34fa490b6faee84fbc571 96324e9bd01a465da01194c910e52f5b RX(theta₁₆) 80edf50a49f34fa490b6faee84fbc571--96324e9bd01a465da01194c910e52f5b 53d3884700d84cee8740c3de3924e46b X 96324e9bd01a465da01194c910e52f5b--53d3884700d84cee8740c3de3924e46b 53d3884700d84cee8740c3de3924e46b--07b3bc20975a4f26971707af636de863 7371444df5604d1793e9e437dbc927e1 53d3884700d84cee8740c3de3924e46b--7371444df5604d1793e9e437dbc927e1 7371444df5604d1793e9e437dbc927e1--fdd007edfdae4c6fbd098e6d505ab949 3d0b66982afe477581184be8e7e7be77 9143b379725d491e9f4d36099fd7f341 RX(theta₂) e7b957f3ce3b4b6eb620b8ab188f3de9--9143b379725d491e9f4d36099fd7f341 2aa2702608214fa4add8814e5712ccd7 RY(theta₅) 9143b379725d491e9f4d36099fd7f341--2aa2702608214fa4add8814e5712ccd7 4b3a171c773e48a5b2f214b1ad86d95e RX(theta₈) 2aa2702608214fa4add8814e5712ccd7--4b3a171c773e48a5b2f214b1ad86d95e ad05dc7c94fc4368ad288a53645b07bf 4b3a171c773e48a5b2f214b1ad86d95e--ad05dc7c94fc4368ad288a53645b07bf a9c57b33237644a3bc3ef3ded7d8e13d X ad05dc7c94fc4368ad288a53645b07bf--a9c57b33237644a3bc3ef3ded7d8e13d a9c57b33237644a3bc3ef3ded7d8e13d--c05b5ff388a1404092fa3d01ea4be592 b7e296b1fab1420ca0b1124e324333bf RX(theta₁₁) a9c57b33237644a3bc3ef3ded7d8e13d--b7e296b1fab1420ca0b1124e324333bf 6801dcdd40194ce1bcddcf841182f3a3 RY(theta₁₄) b7e296b1fab1420ca0b1124e324333bf--6801dcdd40194ce1bcddcf841182f3a3 b9c0e6f7edcf43018137864d455a9328 RX(theta₁₇) 6801dcdd40194ce1bcddcf841182f3a3--b9c0e6f7edcf43018137864d455a9328 9ed2e71cecc64476983e0e61653fd072 b9c0e6f7edcf43018137864d455a9328--9ed2e71cecc64476983e0e61653fd072 d296e1b37b5e426d9f2f36fd309a66cc X 9ed2e71cecc64476983e0e61653fd072--d296e1b37b5e426d9f2f36fd309a66cc d296e1b37b5e426d9f2f36fd309a66cc--7371444df5604d1793e9e437dbc927e1 d296e1b37b5e426d9f2f36fd309a66cc--3d0b66982afe477581184be8e7e7be77

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 1ffab9e7c2cb4c9e9796835ec482ce40 0 1784acb2d55a4318b95b01271c406e4e RX(phi₀) 1ffab9e7c2cb4c9e9796835ec482ce40--1784acb2d55a4318b95b01271c406e4e 9816aefa5a314c6697e8c1f203faf92f 1 eb6a37c608874e44991dfbad72c3a780 RY(phi₃) 1784acb2d55a4318b95b01271c406e4e--eb6a37c608874e44991dfbad72c3a780 98ccf3f3d9934b42bee1538014ca3ce3 RX(phi₆) eb6a37c608874e44991dfbad72c3a780--98ccf3f3d9934b42bee1538014ca3ce3 174d10175d3d418db51b6dbe4ca63ee6 98ccf3f3d9934b42bee1538014ca3ce3--174d10175d3d418db51b6dbe4ca63ee6 b4df0fea961b4052ad3d6ecb12bed836 174d10175d3d418db51b6dbe4ca63ee6--b4df0fea961b4052ad3d6ecb12bed836 dc457e866dc244ef9419eca2a370c199 RX(phi₉) b4df0fea961b4052ad3d6ecb12bed836--dc457e866dc244ef9419eca2a370c199 2eba34f673954e4aa386ec7f15512d10 RY(phi₁₂) dc457e866dc244ef9419eca2a370c199--2eba34f673954e4aa386ec7f15512d10 6b43c588e90140969cc2109cdfe257cb RX(phi₁₅) 2eba34f673954e4aa386ec7f15512d10--6b43c588e90140969cc2109cdfe257cb c112cdc9ccaf41ddb15604cbf6d6155d 6b43c588e90140969cc2109cdfe257cb--c112cdc9ccaf41ddb15604cbf6d6155d 4eabe4a76a2e4055aa9ed16d46f35d9a c112cdc9ccaf41ddb15604cbf6d6155d--4eabe4a76a2e4055aa9ed16d46f35d9a bb81bb99a3e540328456348502b733cc 4eabe4a76a2e4055aa9ed16d46f35d9a--bb81bb99a3e540328456348502b733cc 9d18322b92c7432bb28c3b07e6df1d1f 949aa245e3254700b7af624c34a4b9ec RX(phi₁) 9816aefa5a314c6697e8c1f203faf92f--949aa245e3254700b7af624c34a4b9ec 074a3d37dead43f2aa277668675926ce 2 248c66a941ad485a919d466effc658c9 RY(phi₄) 949aa245e3254700b7af624c34a4b9ec--248c66a941ad485a919d466effc658c9 8188f1e17c4d43f1bd4042a7425adba5 RX(phi₇) 248c66a941ad485a919d466effc658c9--8188f1e17c4d43f1bd4042a7425adba5 d75b0d048a28486f8fc45b33cb24c0e6 PHASE(phi_ent₀) 8188f1e17c4d43f1bd4042a7425adba5--d75b0d048a28486f8fc45b33cb24c0e6 d75b0d048a28486f8fc45b33cb24c0e6--174d10175d3d418db51b6dbe4ca63ee6 0b3b1486cf7844ff88ab5015e9ab37c4 d75b0d048a28486f8fc45b33cb24c0e6--0b3b1486cf7844ff88ab5015e9ab37c4 6ff02ec1c4ab488dab412373006f5bd5 RX(phi₁₀) 0b3b1486cf7844ff88ab5015e9ab37c4--6ff02ec1c4ab488dab412373006f5bd5 4fcef3ecf5874afd986cc6946d8b0c00 RY(phi₁₃) 6ff02ec1c4ab488dab412373006f5bd5--4fcef3ecf5874afd986cc6946d8b0c00 8aa227869e3247b799754939604eafa4 RX(phi₁₆) 4fcef3ecf5874afd986cc6946d8b0c00--8aa227869e3247b799754939604eafa4 03d42e244acd439192159cf205fb9b68 PHASE(phi_ent₂) 8aa227869e3247b799754939604eafa4--03d42e244acd439192159cf205fb9b68 03d42e244acd439192159cf205fb9b68--c112cdc9ccaf41ddb15604cbf6d6155d 09725e67164c4c1b9ec9588a66379089 03d42e244acd439192159cf205fb9b68--09725e67164c4c1b9ec9588a66379089 09725e67164c4c1b9ec9588a66379089--9d18322b92c7432bb28c3b07e6df1d1f 4656cb1a6b6c42c59d776b7207f24a8f c54d1fe2c4d84909860bd316112149c2 RX(phi₂) 074a3d37dead43f2aa277668675926ce--c54d1fe2c4d84909860bd316112149c2 f6fa9fc8337b4270908d64b664af50db RY(phi₅) c54d1fe2c4d84909860bd316112149c2--f6fa9fc8337b4270908d64b664af50db e82ceb0ed75a4d8888de4fad2cc96516 RX(phi₈) f6fa9fc8337b4270908d64b664af50db--e82ceb0ed75a4d8888de4fad2cc96516 5d558d80a3f54775a40c843e0027ff0c e82ceb0ed75a4d8888de4fad2cc96516--5d558d80a3f54775a40c843e0027ff0c c9383462d5574804a20b4878c34752a5 PHASE(phi_ent₁) 5d558d80a3f54775a40c843e0027ff0c--c9383462d5574804a20b4878c34752a5 c9383462d5574804a20b4878c34752a5--0b3b1486cf7844ff88ab5015e9ab37c4 9a0ba7739b994415b0052b7958f42edd RX(phi₁₁) c9383462d5574804a20b4878c34752a5--9a0ba7739b994415b0052b7958f42edd 282643fec73f455a9cb04872f393d972 RY(phi₁₄) 9a0ba7739b994415b0052b7958f42edd--282643fec73f455a9cb04872f393d972 eb98fa12706444de87ee4e321be8d099 RX(phi₁₇) 282643fec73f455a9cb04872f393d972--eb98fa12706444de87ee4e321be8d099 1cf36dfe86ae454bbec615abe4da411e eb98fa12706444de87ee4e321be8d099--1cf36dfe86ae454bbec615abe4da411e f28ca5d1ab1445619305a3ccfe96d208 PHASE(phi_ent₃) 1cf36dfe86ae454bbec615abe4da411e--f28ca5d1ab1445619305a3ccfe96d208 f28ca5d1ab1445619305a3ccfe96d208--09725e67164c4c1b9ec9588a66379089 f28ca5d1ab1445619305a3ccfe96d208--4656cb1a6b6c42c59d776b7207f24a8f

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_e3629457de8946268e9700b1855e42cf cluster_c9d50f81b318493db793c21b3fde7e7b 06bb70f9c30e4d92b2e3fa87741df89b 0 cb447981ee164ed8813046cd50fd4c67 RX(theta₀) 06bb70f9c30e4d92b2e3fa87741df89b--cb447981ee164ed8813046cd50fd4c67 ff65898d8dc84d96b0556a9f03f33a92 1 d21505d5e42d449c92ee43511dfc47b0 RY(theta₃) cb447981ee164ed8813046cd50fd4c67--d21505d5e42d449c92ee43511dfc47b0 817bcb3d2d9541faab4e73aa3db5a3ca RX(theta₆) d21505d5e42d449c92ee43511dfc47b0--817bcb3d2d9541faab4e73aa3db5a3ca 0f850b1fc8334bf1b3f3dbd79a35ada0 HamEvo 817bcb3d2d9541faab4e73aa3db5a3ca--0f850b1fc8334bf1b3f3dbd79a35ada0 8ada52855d6146deacfbba362d9c558e RX(theta₉) 0f850b1fc8334bf1b3f3dbd79a35ada0--8ada52855d6146deacfbba362d9c558e b823547daa9f48a2b60080b0b65f9ba1 RY(theta₁₂) 8ada52855d6146deacfbba362d9c558e--b823547daa9f48a2b60080b0b65f9ba1 063393dc9296437b806ca5ca18ff6a23 RX(theta₁₅) b823547daa9f48a2b60080b0b65f9ba1--063393dc9296437b806ca5ca18ff6a23 0418f118f0154795b04280d9f9f1b516 HamEvo 063393dc9296437b806ca5ca18ff6a23--0418f118f0154795b04280d9f9f1b516 27c724d39225459983db012a8ba8f25d 0418f118f0154795b04280d9f9f1b516--27c724d39225459983db012a8ba8f25d 46d9c53b89ba4e4bb6bc30fee75f8f5c 8a2adcf8ff4b40db9feb933404b6b9ed RX(theta₁) ff65898d8dc84d96b0556a9f03f33a92--8a2adcf8ff4b40db9feb933404b6b9ed 27caee36d6c64400b9f5dd46b431f69b 2 69d20d0a1a8f4ead8996e9bbea19fda3 RY(theta₄) 8a2adcf8ff4b40db9feb933404b6b9ed--69d20d0a1a8f4ead8996e9bbea19fda3 a4d73553454f4299bf45c4dc76a91073 RX(theta₇) 69d20d0a1a8f4ead8996e9bbea19fda3--a4d73553454f4299bf45c4dc76a91073 f7dd4621436e41fa81f8f5eb1cb537fa t = theta_t₀ a4d73553454f4299bf45c4dc76a91073--f7dd4621436e41fa81f8f5eb1cb537fa ff4296de1b624749b6bc3a8b17c438f2 RX(theta₁₀) f7dd4621436e41fa81f8f5eb1cb537fa--ff4296de1b624749b6bc3a8b17c438f2 6d7af2f680b4412aac6ac0282414743e RY(theta₁₃) ff4296de1b624749b6bc3a8b17c438f2--6d7af2f680b4412aac6ac0282414743e 98326bf74b284733aa8bd3a6719c317e RX(theta₁₆) 6d7af2f680b4412aac6ac0282414743e--98326bf74b284733aa8bd3a6719c317e 0b4a7f82b96244ea8ca9362def2a14aa t = theta_t₁ 98326bf74b284733aa8bd3a6719c317e--0b4a7f82b96244ea8ca9362def2a14aa 0b4a7f82b96244ea8ca9362def2a14aa--46d9c53b89ba4e4bb6bc30fee75f8f5c f681f50f66be4e999dd8bab26859a598 0fd5390f6af049b89b78a972b6a80e04 RX(theta₂) 27caee36d6c64400b9f5dd46b431f69b--0fd5390f6af049b89b78a972b6a80e04 2ac70e39847d4161872db3008d5b5bed RY(theta₅) 0fd5390f6af049b89b78a972b6a80e04--2ac70e39847d4161872db3008d5b5bed 610980f49c5a4d41a6f6528af1ca679d RX(theta₈) 2ac70e39847d4161872db3008d5b5bed--610980f49c5a4d41a6f6528af1ca679d f276fb594414457c849db3ec3d29091f 610980f49c5a4d41a6f6528af1ca679d--f276fb594414457c849db3ec3d29091f e75b32b493ec4ead850e8cd00ece5924 RX(theta₁₁) f276fb594414457c849db3ec3d29091f--e75b32b493ec4ead850e8cd00ece5924 bfcb3c26b63842d18a39e133b6144cd1 RY(theta₁₄) e75b32b493ec4ead850e8cd00ece5924--bfcb3c26b63842d18a39e133b6144cd1 e1995f86b4f444c3aa822f626bcda379 RX(theta₁₇) bfcb3c26b63842d18a39e133b6144cd1--e1995f86b4f444c3aa822f626bcda379 b7669785f4c049988581068f08e6a7eb e1995f86b4f444c3aa822f626bcda379--b7669785f4c049988581068f08e6a7eb b7669785f4c049988581068f08e6a7eb--f681f50f66be4e999dd8bab26859a598

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_1ecb31dbb9b842a5b0e26b630665510c cluster_a089edd0f01d4ca8945502302335d94d 800ce8c315024c4ab341f967ec95d654 0 5caacec104574b9daec1a0195962fde6 RX(theta₀) 800ce8c315024c4ab341f967ec95d654--5caacec104574b9daec1a0195962fde6 a23e466894ec43aabc9d68c4f082bea1 1 1c4c67d400d04a3e87d2655271175707 RY(theta₆) 5caacec104574b9daec1a0195962fde6--1c4c67d400d04a3e87d2655271175707 972d6ac3b43846c8ab493a25263ebb50 RX(theta₁₂) 1c4c67d400d04a3e87d2655271175707--972d6ac3b43846c8ab493a25263ebb50 7ba8614698a541c09f887358588ce023 972d6ac3b43846c8ab493a25263ebb50--7ba8614698a541c09f887358588ce023 7db83d6d46b84b20aa38b7dc7dd799f7 RX(theta₁₈) 7ba8614698a541c09f887358588ce023--7db83d6d46b84b20aa38b7dc7dd799f7 b714124b63c34cbd93502b313dd10f18 RY(theta₂₄) 7db83d6d46b84b20aa38b7dc7dd799f7--b714124b63c34cbd93502b313dd10f18 219572d9856b41b09d480ab5a54135ba RX(theta₃₀) b714124b63c34cbd93502b313dd10f18--219572d9856b41b09d480ab5a54135ba 01c2931e12a74758937be83be1f97da1 219572d9856b41b09d480ab5a54135ba--01c2931e12a74758937be83be1f97da1 d658f543774f4a87bbf6934e483810df 01c2931e12a74758937be83be1f97da1--d658f543774f4a87bbf6934e483810df 5d3881f42c6645bda98e607b55975fd9 e8b6f13cf2494ea595a100b8f6beccf2 RX(theta₁) a23e466894ec43aabc9d68c4f082bea1--e8b6f13cf2494ea595a100b8f6beccf2 53dc5bd3d195486a9a2eefe243a860e8 2 cf9323c6825e4c9d871666963e2fbff6 RY(theta₇) e8b6f13cf2494ea595a100b8f6beccf2--cf9323c6825e4c9d871666963e2fbff6 aea064d5210340e4948caeae787361c0 RX(theta₁₃) cf9323c6825e4c9d871666963e2fbff6--aea064d5210340e4948caeae787361c0 432218463ff249859c07107bec0564af aea064d5210340e4948caeae787361c0--432218463ff249859c07107bec0564af 6b58fb6313de49cda0a49e1701deccbf RX(theta₁₉) 432218463ff249859c07107bec0564af--6b58fb6313de49cda0a49e1701deccbf d8bfae65e495427cb915d3c82a719336 RY(theta₂₅) 6b58fb6313de49cda0a49e1701deccbf--d8bfae65e495427cb915d3c82a719336 491e46e2087c42cfb046c134b34e6348 RX(theta₃₁) d8bfae65e495427cb915d3c82a719336--491e46e2087c42cfb046c134b34e6348 90a86176a92f49729f4811fa403c96d7 491e46e2087c42cfb046c134b34e6348--90a86176a92f49729f4811fa403c96d7 90a86176a92f49729f4811fa403c96d7--5d3881f42c6645bda98e607b55975fd9 65c908523c50483f981792fa3d3974cd 9b5d8e01d67b41b0acc4f4146dc7b401 RX(theta₂) 53dc5bd3d195486a9a2eefe243a860e8--9b5d8e01d67b41b0acc4f4146dc7b401 186cbeb2ec904e3b89d8540a567a1f29 3 b9a3b54d8ec54f38b52e3d8b2e52f107 RY(theta₈) 9b5d8e01d67b41b0acc4f4146dc7b401--b9a3b54d8ec54f38b52e3d8b2e52f107 e27bb18f5aaf41409e07a3d27ac79fa1 RX(theta₁₄) b9a3b54d8ec54f38b52e3d8b2e52f107--e27bb18f5aaf41409e07a3d27ac79fa1 436b56aa90a64a5eb730b87a12962290 HamEvo e27bb18f5aaf41409e07a3d27ac79fa1--436b56aa90a64a5eb730b87a12962290 7b417e232dda4e2686362b50d64ce510 RX(theta₂₀) 436b56aa90a64a5eb730b87a12962290--7b417e232dda4e2686362b50d64ce510 c363b24d268e4d9788d85a999505b10c RY(theta₂₆) 7b417e232dda4e2686362b50d64ce510--c363b24d268e4d9788d85a999505b10c 02ea70f0f2a24ca299144d7f3e8dcb89 RX(theta₃₂) c363b24d268e4d9788d85a999505b10c--02ea70f0f2a24ca299144d7f3e8dcb89 5e50dd770e8f40608ddb1c3e2b8fe1a7 HamEvo 02ea70f0f2a24ca299144d7f3e8dcb89--5e50dd770e8f40608ddb1c3e2b8fe1a7 5e50dd770e8f40608ddb1c3e2b8fe1a7--65c908523c50483f981792fa3d3974cd 36e1bdc6da604152bfda537e971713a7 2076619466cf40b089b82fff81675cc3 RX(theta₃) 186cbeb2ec904e3b89d8540a567a1f29--2076619466cf40b089b82fff81675cc3 91009ec2767e45469d9e8e520e5b4642 4 91931840d63049f789470ec23112e852 RY(theta₉) 2076619466cf40b089b82fff81675cc3--91931840d63049f789470ec23112e852 a360ebbc5a184ee58077617807f7dae8 RX(theta₁₅) 91931840d63049f789470ec23112e852--a360ebbc5a184ee58077617807f7dae8 e6841b6cfe1c44a9bb2a29276acfa17f t = theta_t₀ a360ebbc5a184ee58077617807f7dae8--e6841b6cfe1c44a9bb2a29276acfa17f ebdcd364f9344077b26a29988e8f72ef RX(theta₂₁) e6841b6cfe1c44a9bb2a29276acfa17f--ebdcd364f9344077b26a29988e8f72ef d25daafbc0c64e9a83e450149c3ca5a0 RY(theta₂₇) ebdcd364f9344077b26a29988e8f72ef--d25daafbc0c64e9a83e450149c3ca5a0 39d2f801fdbb49e683392c1c81d9285d RX(theta₃₃) d25daafbc0c64e9a83e450149c3ca5a0--39d2f801fdbb49e683392c1c81d9285d 6fa7ebd2218c4ac7b82527613d116860 t = theta_t₁ 39d2f801fdbb49e683392c1c81d9285d--6fa7ebd2218c4ac7b82527613d116860 6fa7ebd2218c4ac7b82527613d116860--36e1bdc6da604152bfda537e971713a7 4aea5050ac3144cf8eff1c079b66d4d5 7c7d2bffe380463ab6a2089a0092f6d8 RX(theta₄) 91009ec2767e45469d9e8e520e5b4642--7c7d2bffe380463ab6a2089a0092f6d8 cc656c4565514dab955f4ab62fa6e36a 5 d9f5e4fcc9ae4bdaa2d70c9a9ef19b80 RY(theta₁₀) 7c7d2bffe380463ab6a2089a0092f6d8--d9f5e4fcc9ae4bdaa2d70c9a9ef19b80 b1ce8e4a977d47bb9200279843bf6449 RX(theta₁₆) d9f5e4fcc9ae4bdaa2d70c9a9ef19b80--b1ce8e4a977d47bb9200279843bf6449 e69cf96b9987440594a7ecc9b67d750a b1ce8e4a977d47bb9200279843bf6449--e69cf96b9987440594a7ecc9b67d750a 4c890709edd145a580a585ea31176d08 RX(theta₂₂) e69cf96b9987440594a7ecc9b67d750a--4c890709edd145a580a585ea31176d08 31a0730f63784842802109eda29e9216 RY(theta₂₈) 4c890709edd145a580a585ea31176d08--31a0730f63784842802109eda29e9216 c7d9e8de0eee4ff292c0bce0929912ea RX(theta₃₄) 31a0730f63784842802109eda29e9216--c7d9e8de0eee4ff292c0bce0929912ea 83e54518f192468caf49293b71a683d2 c7d9e8de0eee4ff292c0bce0929912ea--83e54518f192468caf49293b71a683d2 83e54518f192468caf49293b71a683d2--4aea5050ac3144cf8eff1c079b66d4d5 bcd0435e2edc4e749e869aa100020965 323d19d2b69f405bb93f29c776c91dca RX(theta₅) cc656c4565514dab955f4ab62fa6e36a--323d19d2b69f405bb93f29c776c91dca a2b67c0f4beb4c4185afecc42dd4d4b7 RY(theta₁₁) 323d19d2b69f405bb93f29c776c91dca--a2b67c0f4beb4c4185afecc42dd4d4b7 3977d72bf57642c68afd955df73650df RX(theta₁₇) a2b67c0f4beb4c4185afecc42dd4d4b7--3977d72bf57642c68afd955df73650df 085ebe651d424c6c9649525fd17043cd 3977d72bf57642c68afd955df73650df--085ebe651d424c6c9649525fd17043cd e802dbc679194494b164d26f4979961d RX(theta₂₃) 085ebe651d424c6c9649525fd17043cd--e802dbc679194494b164d26f4979961d 5fac4e2b9bfb4d3ebc0cb4040ba038bd RY(theta₂₉) e802dbc679194494b164d26f4979961d--5fac4e2b9bfb4d3ebc0cb4040ba038bd 1d5073eb496c4dedb2b5f9e0153fce7d RX(theta₃₅) 5fac4e2b9bfb4d3ebc0cb4040ba038bd--1d5073eb496c4dedb2b5f9e0153fce7d 5cbd104dec88473db3fe2bdadc6c1176 1d5073eb496c4dedb2b5f9e0153fce7d--5cbd104dec88473db3fe2bdadc6c1176 5cbd104dec88473db3fe2bdadc6c1176--bcd0435e2edc4e749e869aa100020965

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_131a3ee2735942bda03ea71d35a081ef BPMA-1 cluster_d2c15c3eeae24e2e86bb632588344251 BPMA-0 02892ff1b4d04ce1ada0eddefc93513b 0 d39cfd192acb482ab914be99112f66c3 RX(iia_α₀₀) 02892ff1b4d04ce1ada0eddefc93513b--d39cfd192acb482ab914be99112f66c3 f58d6efeec994c18b6802e3238915b5a 1 fad6ef4ff0f94974b27dbff483f4952d RY(iia_α₀₃) d39cfd192acb482ab914be99112f66c3--fad6ef4ff0f94974b27dbff483f4952d 25f2937d3e7944efbe47c22d3706f0e7 fad6ef4ff0f94974b27dbff483f4952d--25f2937d3e7944efbe47c22d3706f0e7 3c699a7d2b8344acb6bc926f9931e3c6 25f2937d3e7944efbe47c22d3706f0e7--3c699a7d2b8344acb6bc926f9931e3c6 b4e411918ecf43ba928c647530fd292a RX(iia_γ₀₀) 3c699a7d2b8344acb6bc926f9931e3c6--b4e411918ecf43ba928c647530fd292a e8345e9b1d63468cab98f13106bc0a96 b4e411918ecf43ba928c647530fd292a--e8345e9b1d63468cab98f13106bc0a96 6db69027e1874ce4b88a1572869a5dc7 e8345e9b1d63468cab98f13106bc0a96--6db69027e1874ce4b88a1572869a5dc7 99da1dc90f40472582c936c697ccb057 RY(iia_β₀₃) 6db69027e1874ce4b88a1572869a5dc7--99da1dc90f40472582c936c697ccb057 71bba7f69a284e75abc61012a611d117 RX(iia_β₀₀) 99da1dc90f40472582c936c697ccb057--71bba7f69a284e75abc61012a611d117 111defafbe1e41aeb3ab7bdb0af1cc19 RX(iia_α₁₀) 71bba7f69a284e75abc61012a611d117--111defafbe1e41aeb3ab7bdb0af1cc19 46b11d1fb6b142ca84f713662d8a86ed RY(iia_α₁₃) 111defafbe1e41aeb3ab7bdb0af1cc19--46b11d1fb6b142ca84f713662d8a86ed be0a18b7777e47829ccc22c62c6fd752 46b11d1fb6b142ca84f713662d8a86ed--be0a18b7777e47829ccc22c62c6fd752 fb3ab2bf3b24434384fc0585837c0f2e be0a18b7777e47829ccc22c62c6fd752--fb3ab2bf3b24434384fc0585837c0f2e 6f72394e2c214a7c86da47a214371ade RX(iia_γ₁₀) fb3ab2bf3b24434384fc0585837c0f2e--6f72394e2c214a7c86da47a214371ade a797a06b514442288cc65ebdd5743dd0 6f72394e2c214a7c86da47a214371ade--a797a06b514442288cc65ebdd5743dd0 ceb60c2e675d4a1c95370f276153e521 a797a06b514442288cc65ebdd5743dd0--ceb60c2e675d4a1c95370f276153e521 fecbc3011a3a4e09a5865ae5c21401b2 RY(iia_β₁₃) ceb60c2e675d4a1c95370f276153e521--fecbc3011a3a4e09a5865ae5c21401b2 28aae94fa96249e98f11405d91007c6c RX(iia_β₁₀) fecbc3011a3a4e09a5865ae5c21401b2--28aae94fa96249e98f11405d91007c6c 04b9de6f62974ea28116440b8a167a2c 28aae94fa96249e98f11405d91007c6c--04b9de6f62974ea28116440b8a167a2c 34a80aaf4ac644548cae243aba01e1a4 e81f2dfcf2c348c59a7044e6243f3020 RX(iia_α₀₁) f58d6efeec994c18b6802e3238915b5a--e81f2dfcf2c348c59a7044e6243f3020 3b732e5051164f70b724d3e02162e3c5 2 332f2eb7d84f43ba9dd082edac958b1f RY(iia_α₀₄) e81f2dfcf2c348c59a7044e6243f3020--332f2eb7d84f43ba9dd082edac958b1f aa4a3b8a562645c99ff0fbedf4c15539 X 332f2eb7d84f43ba9dd082edac958b1f--aa4a3b8a562645c99ff0fbedf4c15539 aa4a3b8a562645c99ff0fbedf4c15539--25f2937d3e7944efbe47c22d3706f0e7 b77b848e2d4a445cb9a82fe4c10e1bbb aa4a3b8a562645c99ff0fbedf4c15539--b77b848e2d4a445cb9a82fe4c10e1bbb bd037789405a410b95c8e167f0feb47e RX(iia_γ₀₁) b77b848e2d4a445cb9a82fe4c10e1bbb--bd037789405a410b95c8e167f0feb47e 82fbcdb8063b4fd3aaf2edf9dce6c755 bd037789405a410b95c8e167f0feb47e--82fbcdb8063b4fd3aaf2edf9dce6c755 a4b72884cd894b7da121249547c4819d X 82fbcdb8063b4fd3aaf2edf9dce6c755--a4b72884cd894b7da121249547c4819d a4b72884cd894b7da121249547c4819d--6db69027e1874ce4b88a1572869a5dc7 dbbe18cb9c85491587a461ed8e491051 RY(iia_β₀₄) a4b72884cd894b7da121249547c4819d--dbbe18cb9c85491587a461ed8e491051 789461d7f0f541ea8b56b9f4a3ad594e RX(iia_β₀₁) dbbe18cb9c85491587a461ed8e491051--789461d7f0f541ea8b56b9f4a3ad594e 6286b0a781bc4ee1a47333300d73bde2 RX(iia_α₁₁) 789461d7f0f541ea8b56b9f4a3ad594e--6286b0a781bc4ee1a47333300d73bde2 705347a74e9645fb84bf3bb2c10dcb92 RY(iia_α₁₄) 6286b0a781bc4ee1a47333300d73bde2--705347a74e9645fb84bf3bb2c10dcb92 ac5a613e4b144391bf2c996406c6981e X 705347a74e9645fb84bf3bb2c10dcb92--ac5a613e4b144391bf2c996406c6981e ac5a613e4b144391bf2c996406c6981e--be0a18b7777e47829ccc22c62c6fd752 6789e0f30f414b1bb2dbe94d9b3ed08c ac5a613e4b144391bf2c996406c6981e--6789e0f30f414b1bb2dbe94d9b3ed08c 681d501f45fe4a8e93dc4de8e3296733 RX(iia_γ₁₁) 6789e0f30f414b1bb2dbe94d9b3ed08c--681d501f45fe4a8e93dc4de8e3296733 ae7e65d1680e4660ba05c5aaa26ea559 681d501f45fe4a8e93dc4de8e3296733--ae7e65d1680e4660ba05c5aaa26ea559 f2e4197578454df4bb3e5f117f11d3e2 X ae7e65d1680e4660ba05c5aaa26ea559--f2e4197578454df4bb3e5f117f11d3e2 f2e4197578454df4bb3e5f117f11d3e2--ceb60c2e675d4a1c95370f276153e521 41c31dbb2489453a995e507109da928e RY(iia_β₁₄) f2e4197578454df4bb3e5f117f11d3e2--41c31dbb2489453a995e507109da928e fa940534784e4fac86fc390c6c40a9ea RX(iia_β₁₁) 41c31dbb2489453a995e507109da928e--fa940534784e4fac86fc390c6c40a9ea fa940534784e4fac86fc390c6c40a9ea--34a80aaf4ac644548cae243aba01e1a4 6f63a0f7a6fa468799162273d164841d d9569614b5e243ce9402df6e1345b217 RX(iia_α₀₂) 3b732e5051164f70b724d3e02162e3c5--d9569614b5e243ce9402df6e1345b217 cacd19ca48854d22bbaac03235157a66 RY(iia_α₀₅) d9569614b5e243ce9402df6e1345b217--cacd19ca48854d22bbaac03235157a66 9cc0351c4cfd49e79f16f1f88ee419a7 cacd19ca48854d22bbaac03235157a66--9cc0351c4cfd49e79f16f1f88ee419a7 c9e0633f674c44d280b3f78c40ada67a X 9cc0351c4cfd49e79f16f1f88ee419a7--c9e0633f674c44d280b3f78c40ada67a c9e0633f674c44d280b3f78c40ada67a--b77b848e2d4a445cb9a82fe4c10e1bbb 18914248be994671a1014003138b4e0e RX(iia_γ₀₂) c9e0633f674c44d280b3f78c40ada67a--18914248be994671a1014003138b4e0e daff16ee6ed94dfbbc831d949866f759 X 18914248be994671a1014003138b4e0e--daff16ee6ed94dfbbc831d949866f759 daff16ee6ed94dfbbc831d949866f759--82fbcdb8063b4fd3aaf2edf9dce6c755 d6ad94d2d0464db89078165d069e4e25 daff16ee6ed94dfbbc831d949866f759--d6ad94d2d0464db89078165d069e4e25 06c90085ed454fd7a865f1b5a19d633e RY(iia_β₀₅) d6ad94d2d0464db89078165d069e4e25--06c90085ed454fd7a865f1b5a19d633e 8243b9b06f1448f0b1bfd09bc3514c06 RX(iia_β₀₂) 06c90085ed454fd7a865f1b5a19d633e--8243b9b06f1448f0b1bfd09bc3514c06 97f33bd2032848f9b12e4737178fe91e RX(iia_α₁₂) 8243b9b06f1448f0b1bfd09bc3514c06--97f33bd2032848f9b12e4737178fe91e e89ec1599d6145a4848942459bc7b339 RY(iia_α₁₅) 97f33bd2032848f9b12e4737178fe91e--e89ec1599d6145a4848942459bc7b339 b71525e40e5f41a880638b25a2d45cc7 e89ec1599d6145a4848942459bc7b339--b71525e40e5f41a880638b25a2d45cc7 7fd5e1431a7b4d21af43ec80a7789fab X b71525e40e5f41a880638b25a2d45cc7--7fd5e1431a7b4d21af43ec80a7789fab 7fd5e1431a7b4d21af43ec80a7789fab--6789e0f30f414b1bb2dbe94d9b3ed08c 21e13a200f114399ae0ba9794a922b5e RX(iia_γ₁₂) 7fd5e1431a7b4d21af43ec80a7789fab--21e13a200f114399ae0ba9794a922b5e 13362bf4b05c420a9c097a8807d3f7ec X 21e13a200f114399ae0ba9794a922b5e--13362bf4b05c420a9c097a8807d3f7ec 13362bf4b05c420a9c097a8807d3f7ec--ae7e65d1680e4660ba05c5aaa26ea559 88031b8bc026492da98f3b8aa6f08f76 13362bf4b05c420a9c097a8807d3f7ec--88031b8bc026492da98f3b8aa6f08f76 a5e0c4e979b74872ad5c51ffb67f85da RY(iia_β₁₅) 88031b8bc026492da98f3b8aa6f08f76--a5e0c4e979b74872ad5c51ffb67f85da c9aec9907b9747c1826788c4bbe0d26a RX(iia_β₁₂) a5e0c4e979b74872ad5c51ffb67f85da--c9aec9907b9747c1826788c4bbe0d26a c9aec9907b9747c1826788c4bbe0d26a--6f63a0f7a6fa468799162273d164841d