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_b7ed7686728c4f97a6c4fd5e9db1be83 Constant Chebyshev FM cluster_60416f4e6290424c8e194b195b1b29c5 Constant Fourier FM 552787c661ef4d45b0c5ddcdfda629b8 0 57df58b962b841038795d2b6478fe80e RX(phi) 552787c661ef4d45b0c5ddcdfda629b8--57df58b962b841038795d2b6478fe80e a636d682c9514f198f6a971f7e888205 1 58ee037182d045528588b397fce1bf70 RX(acos(phi)) 57df58b962b841038795d2b6478fe80e--58ee037182d045528588b397fce1bf70 b58ee08a15b34a2cb725cdc68b9bd241 58ee037182d045528588b397fce1bf70--b58ee08a15b34a2cb725cdc68b9bd241 618d3b2ff22c4896806c5750ad408c46 20b5182bc1014214898c4205ddcb2ee5 RX(phi) a636d682c9514f198f6a971f7e888205--20b5182bc1014214898c4205ddcb2ee5 cf29dce7623e45b482392471a8afbf01 2 c9facedee7504047b3ba8759a3a32989 RX(acos(phi)) 20b5182bc1014214898c4205ddcb2ee5--c9facedee7504047b3ba8759a3a32989 c9facedee7504047b3ba8759a3a32989--618d3b2ff22c4896806c5750ad408c46 851d09e83d5045a7802e27f18f1a674e 3d215929b5f24949b2d585719fb5dc3b RX(phi) cf29dce7623e45b482392471a8afbf01--3d215929b5f24949b2d585719fb5dc3b 7c1e6c6cf23646ba8a5af5ea6db63a1c RX(acos(phi)) 3d215929b5f24949b2d585719fb5dc3b--7c1e6c6cf23646ba8a5af5ea6db63a1c 7c1e6c6cf23646ba8a5af5ea6db63a1c--851d09e83d5045a7802e27f18f1a674e

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_8d16e023827744d7b4f6311560de9613 Constant <function custom_fn at 0x7ff868b6aef0> FM cluster_ebc01aaee0004d3fa3d25c213aa299c4 Constant asin FM ccfd6dca1c95476f8cf2f324f26d1b00 0 dd858c8fb78f4968bfd4ffe9089021b8 RX(asin(phi)) ccfd6dca1c95476f8cf2f324f26d1b00--dd858c8fb78f4968bfd4ffe9089021b8 bf69f0709cc640dabf8a914cce04333c 1 d54b43107ce8455f97eaee09d2367df3 RX(phi**2 + asin(phi)) dd858c8fb78f4968bfd4ffe9089021b8--d54b43107ce8455f97eaee09d2367df3 4c47036b40ba47328451218ef2734758 d54b43107ce8455f97eaee09d2367df3--4c47036b40ba47328451218ef2734758 a980c2160cfc41299b2cbbeb3661d0cb 702cd7c30471429f8075b78a65f2df61 RX(asin(phi)) bf69f0709cc640dabf8a914cce04333c--702cd7c30471429f8075b78a65f2df61 cee1da72523649589123a42c99bdb97a 2 bc3d94db8d914091ada09bde5f50abcf RX(phi**2 + asin(phi)) 702cd7c30471429f8075b78a65f2df61--bc3d94db8d914091ada09bde5f50abcf bc3d94db8d914091ada09bde5f50abcf--a980c2160cfc41299b2cbbeb3661d0cb 6b14cd9944ff424293f4e5136db0f9df 378075c13fe54870b1e2a2d807ab391e RX(asin(phi)) cee1da72523649589123a42c99bdb97a--378075c13fe54870b1e2a2d807ab391e d8bd9d7344814fbbbe0d2e68329b6fa9 RX(phi**2 + asin(phi)) 378075c13fe54870b1e2a2d807ab391e--d8bd9d7344814fbbbe0d2e68329b6fa9 d8bd9d7344814fbbbe0d2e68329b6fa9--6b14cd9944ff424293f4e5136db0f9df

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_fc1f6cb4fdd8405f99a8a58c6094f089 Exponential Fourier FM cluster_cd70103ff833419e9099ed0eb4553c5f Constant Fourier FM cluster_dac9d4c577e24856be9ff37bd7d139ed Tower Fourier FM 5acf2363f48841c1b6ae2eca11566403 0 557d3bf227e44960b3177412104be1eb RX(phi) 5acf2363f48841c1b6ae2eca11566403--557d3bf227e44960b3177412104be1eb 370c116b72a246219991684c75da8449 1 12edf27e1f9e4552866a4b8d525da528 RX(1.0*phi) 557d3bf227e44960b3177412104be1eb--12edf27e1f9e4552866a4b8d525da528 adee5c0fce124c1ca8589cb418880c77 RX(1.0*phi) 12edf27e1f9e4552866a4b8d525da528--adee5c0fce124c1ca8589cb418880c77 3d523b74b38445c39d8738385495d2ce adee5c0fce124c1ca8589cb418880c77--3d523b74b38445c39d8738385495d2ce 3ea7fb13f80f410fa8badb0354c15de2 aacbc327c3b24dc9b3d3b7f301d14d13 RX(phi) 370c116b72a246219991684c75da8449--aacbc327c3b24dc9b3d3b7f301d14d13 e3908c93688c4c108c7abcdea338716f 2 c7e78d7aaa9645d0ac43acc4d51f47d5 RX(2.0*phi) aacbc327c3b24dc9b3d3b7f301d14d13--c7e78d7aaa9645d0ac43acc4d51f47d5 46111da40f594436987710c1beda1e50 RX(2.0*phi) c7e78d7aaa9645d0ac43acc4d51f47d5--46111da40f594436987710c1beda1e50 46111da40f594436987710c1beda1e50--3ea7fb13f80f410fa8badb0354c15de2 d8c7b9f593634a338c160d199c172691 4cca80b870aa44f8be40005d938e8cfd RX(phi) e3908c93688c4c108c7abcdea338716f--4cca80b870aa44f8be40005d938e8cfd 2e2a4abf14904c7dac27f99b42395a97 3 90e0898aaf2844d8bb641d7435c6df8c RX(3.0*phi) 4cca80b870aa44f8be40005d938e8cfd--90e0898aaf2844d8bb641d7435c6df8c 93a88a1e659f4234b5714788459984c3 RX(4.0*phi) 90e0898aaf2844d8bb641d7435c6df8c--93a88a1e659f4234b5714788459984c3 93a88a1e659f4234b5714788459984c3--d8c7b9f593634a338c160d199c172691 d8921a7fa71d424c8a5427c4e0ebd924 d358cfd19d7543679365f4d4b78bc7a8 RX(phi) 2e2a4abf14904c7dac27f99b42395a97--d358cfd19d7543679365f4d4b78bc7a8 7ff3bcc579d248669fbd785d8b29a734 4 a67f37b6ea854edbaa51ff65ea2d653e RX(4.0*phi) d358cfd19d7543679365f4d4b78bc7a8--a67f37b6ea854edbaa51ff65ea2d653e c873f44f3c8e4b8b9b36c22fa4b86c3f RX(8.0*phi) a67f37b6ea854edbaa51ff65ea2d653e--c873f44f3c8e4b8b9b36c22fa4b86c3f c873f44f3c8e4b8b9b36c22fa4b86c3f--d8921a7fa71d424c8a5427c4e0ebd924 790f36ba9b5c4f8e8334bd09cbfe7676 827af752ff04406e916a6431fbcfdb70 RX(phi) 7ff3bcc579d248669fbd785d8b29a734--827af752ff04406e916a6431fbcfdb70 6dc73156dda14688b19619d2f0e0a952 RX(5.0*phi) 827af752ff04406e916a6431fbcfdb70--6dc73156dda14688b19619d2f0e0a952 330841284a6b4aa4bed187623811873f RX(16.0*phi) 6dc73156dda14688b19619d2f0e0a952--330841284a6b4aa4bed187623811873f 330841284a6b4aa4bed187623811873f--790f36ba9b5c4f8e8334bd09cbfe7676

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 70c1ba6139004e8098767b4b1735be64 0 556f9ce322dc453487933aa99c4e0357 RX(1.0*acos(phi)) 70c1ba6139004e8098767b4b1735be64--556f9ce322dc453487933aa99c4e0357 0e8ebe17abb6486db64c73e016f7b701 1 614cf1fd8f304ed280b28fa5a0802102 556f9ce322dc453487933aa99c4e0357--614cf1fd8f304ed280b28fa5a0802102 43e31220359a4a36900ab2877abb41b1 5cdfb17e205e47b7a7b622f896e5593d RX(1.414*acos(phi)) 0e8ebe17abb6486db64c73e016f7b701--5cdfb17e205e47b7a7b622f896e5593d 3b52b4aa4f0b4687b0cb3ba863ef3058 2 5cdfb17e205e47b7a7b622f896e5593d--43e31220359a4a36900ab2877abb41b1 86eada34555946b0bacfe7776b478593 d16beb494ce0440fa08fa64dbbb83a72 RX(1.732*acos(phi)) 3b52b4aa4f0b4687b0cb3ba863ef3058--d16beb494ce0440fa08fa64dbbb83a72 160041ce1ea74aa292ccfaf270cde9b7 3 d16beb494ce0440fa08fa64dbbb83a72--86eada34555946b0bacfe7776b478593 e57cc5c73b08441db9e0baa92e64a481 448095c0e4c245da8002d17fa2289316 RX(2.0*acos(phi)) 160041ce1ea74aa292ccfaf270cde9b7--448095c0e4c245da8002d17fa2289316 232f95c52cc44b779836cbb1501fdd3b 4 448095c0e4c245da8002d17fa2289316--e57cc5c73b08441db9e0baa92e64a481 31363c1538cc458e9691c4f8004ed914 616ba47ceaf246669a8f0ea56bbb5fe3 RX(2.236*acos(phi)) 232f95c52cc44b779836cbb1501fdd3b--616ba47ceaf246669a8f0ea56bbb5fe3 616ba47ceaf246669a8f0ea56bbb5fe3--31363c1538cc458e9691c4f8004ed914

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 61dc866eb9cb472c84a452df37c0d162 0 0024068fdfe44010a5ea7c0a2f81cec9 RX(1.0*phi*w₀) 61dc866eb9cb472c84a452df37c0d162--0024068fdfe44010a5ea7c0a2f81cec9 7ae3b31a02f14d978885ea96ccf6420b 1 6bbb7fa7f1364788afba685e912ab56a 0024068fdfe44010a5ea7c0a2f81cec9--6bbb7fa7f1364788afba685e912ab56a 8767fe720df0437fac43f4d2bf6132e4 8d40d67fe60641f597701e4998609895 RX(2.0*phi*w₁) 7ae3b31a02f14d978885ea96ccf6420b--8d40d67fe60641f597701e4998609895 b87304d85302408a837744a7d85722ae 2 8d40d67fe60641f597701e4998609895--8767fe720df0437fac43f4d2bf6132e4 4459795c44e84ff8b0c8cb1e8ecbc8b1 68514c07e4b345a18e61f2f908db16f7 RX(4.0*phi*w₂) b87304d85302408a837744a7d85722ae--68514c07e4b345a18e61f2f908db16f7 483c095af0314ce79bad2d26a7770af3 3 68514c07e4b345a18e61f2f908db16f7--4459795c44e84ff8b0c8cb1e8ecbc8b1 55b4d7a84c4c409f9dcb1868aea9b80e f93a23bb48df4c39911e19c43f32ecc8 RX(8.0*phi*w₃) 483c095af0314ce79bad2d26a7770af3--f93a23bb48df4c39911e19c43f32ecc8 0380c9a627ed444b81427bc9d141295e 4 f93a23bb48df4c39911e19c43f32ecc8--55b4d7a84c4c409f9dcb1868aea9b80e ad8cecd8678c44a98403ed8b455689e6 cc69b3b79bec4c4896c90af11ac42c03 RX(16.0*phi*w₄) 0380c9a627ed444b81427bc9d141295e--cc69b3b79bec4c4896c90af11ac42c03 cc69b3b79bec4c4896c90af11ac42c03--ad8cecd8678c44a98403ed8b455689e6

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 f2074109afa747de9d15ed22b2d8f562 0 5332636081144f109addc74e23d7c4d9 RY(80.0*acos(w₄*(0.667*x + 1.667))) f2074109afa747de9d15ed22b2d8f562--5332636081144f109addc74e23d7c4d9 db89c63fce694807bcd36513312ab254 1 c6d282bd3f5c4ffd90d22a30fc6d226d 5332636081144f109addc74e23d7c4d9--c6d282bd3f5c4ffd90d22a30fc6d226d 0d95e0261ab743bebb3672002a6c45cb 20b2b5a5bc22470b9999c8255db431bb RY(40.0*acos(w₃*(0.667*x + 1.667))) db89c63fce694807bcd36513312ab254--20b2b5a5bc22470b9999c8255db431bb 9e0598af09ee42b39cf0a862c0d89335 2 20b2b5a5bc22470b9999c8255db431bb--0d95e0261ab743bebb3672002a6c45cb c4f6eb98c948424d88411bf31825b897 4f89cb82f4804aeb89d01e91bd056e9c RY(20.0*acos(w₂*(0.667*x + 1.667))) 9e0598af09ee42b39cf0a862c0d89335--4f89cb82f4804aeb89d01e91bd056e9c 7253d284117e4f11a7c4ffec2e444660 3 4f89cb82f4804aeb89d01e91bd056e9c--c4f6eb98c948424d88411bf31825b897 6e71badffaf94ef89bc0f4ddb5ad2bc4 7096a7b52a3541c192a37fb79a6e28f5 RY(10.0*acos(w₁*(0.667*x + 1.667))) 7253d284117e4f11a7c4ffec2e444660--7096a7b52a3541c192a37fb79a6e28f5 1347e59edfaf4bf4864c25579b37e35b 4 7096a7b52a3541c192a37fb79a6e28f5--6e71badffaf94ef89bc0f4ddb5ad2bc4 70ef67013006408ba6b50a6c3b2718c2 d1f3d9cfa6a5489989cc5cb590dafb1c RY(5.0*acos(w₀*(0.667*x + 1.667))) 1347e59edfaf4bf4864c25579b37e35b--d1f3d9cfa6a5489989cc5cb590dafb1c d1f3d9cfa6a5489989cc5cb590dafb1c--70ef67013006408ba6b50a6c3b2718c2

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 dd6b1471cc89439b85a7927d31bc88b4 0 8fdaa6bb785f4833ad13be993c394bbb RX(theta₀) dd6b1471cc89439b85a7927d31bc88b4--8fdaa6bb785f4833ad13be993c394bbb 7b162357230045e1b569d8f62f96c6fb 1 43dce8e850bf4dc9bc83d3cf53f08f5e RY(theta₃) 8fdaa6bb785f4833ad13be993c394bbb--43dce8e850bf4dc9bc83d3cf53f08f5e 9fb10088da8d468ba38a7edf45525254 RX(theta₆) 43dce8e850bf4dc9bc83d3cf53f08f5e--9fb10088da8d468ba38a7edf45525254 3372fa5b50914395a269aa5fece50415 9fb10088da8d468ba38a7edf45525254--3372fa5b50914395a269aa5fece50415 7851773a91064384a3fcc0ef8cee00a4 3372fa5b50914395a269aa5fece50415--7851773a91064384a3fcc0ef8cee00a4 3adad79e086c4949948b13b37c9cc070 RX(theta₉) 7851773a91064384a3fcc0ef8cee00a4--3adad79e086c4949948b13b37c9cc070 ee3648f91bbc484e910d61c1123fa683 RY(theta₁₂) 3adad79e086c4949948b13b37c9cc070--ee3648f91bbc484e910d61c1123fa683 43e6b9ee3c9043aa9cdc1041242f1bad RX(theta₁₅) ee3648f91bbc484e910d61c1123fa683--43e6b9ee3c9043aa9cdc1041242f1bad 032ee92a802144f1977f2be2e84dd3a6 43e6b9ee3c9043aa9cdc1041242f1bad--032ee92a802144f1977f2be2e84dd3a6 74b76c9194d74e11b8321d49600cd05d 032ee92a802144f1977f2be2e84dd3a6--74b76c9194d74e11b8321d49600cd05d 98a6f33568494a18811e69b2045cbd35 74b76c9194d74e11b8321d49600cd05d--98a6f33568494a18811e69b2045cbd35 f9b25c786063416b8bb22afb8831f583 ab06f520270c474cb0ebdba4bba231a5 RX(theta₁) 7b162357230045e1b569d8f62f96c6fb--ab06f520270c474cb0ebdba4bba231a5 c80daaa889744df1a3f2f0c435d5e498 2 5c80f4b6229e441b8dd9132468c2f64c RY(theta₄) ab06f520270c474cb0ebdba4bba231a5--5c80f4b6229e441b8dd9132468c2f64c 327110bc173c409b82117b7410b55f9b RX(theta₇) 5c80f4b6229e441b8dd9132468c2f64c--327110bc173c409b82117b7410b55f9b 09bc4bbee3ad4926892ee2b73303a77c X 327110bc173c409b82117b7410b55f9b--09bc4bbee3ad4926892ee2b73303a77c 09bc4bbee3ad4926892ee2b73303a77c--3372fa5b50914395a269aa5fece50415 b3eb323eeebc4eab92ab6f4ac38030a8 09bc4bbee3ad4926892ee2b73303a77c--b3eb323eeebc4eab92ab6f4ac38030a8 ee4a50472be6446b81222262817991fb RX(theta₁₀) b3eb323eeebc4eab92ab6f4ac38030a8--ee4a50472be6446b81222262817991fb 207cd71293894e4aab6b28614ba49729 RY(theta₁₃) ee4a50472be6446b81222262817991fb--207cd71293894e4aab6b28614ba49729 29d1184126d243eab1b99e6c81c3a906 RX(theta₁₆) 207cd71293894e4aab6b28614ba49729--29d1184126d243eab1b99e6c81c3a906 33bfed87c518438a9b03d686592ec37d X 29d1184126d243eab1b99e6c81c3a906--33bfed87c518438a9b03d686592ec37d 33bfed87c518438a9b03d686592ec37d--032ee92a802144f1977f2be2e84dd3a6 000b6eaa13d84ce988a131bc7a812cf1 33bfed87c518438a9b03d686592ec37d--000b6eaa13d84ce988a131bc7a812cf1 000b6eaa13d84ce988a131bc7a812cf1--f9b25c786063416b8bb22afb8831f583 5436e8d70324423bbf04088710a794a7 b6025cc581a441d7acafa1736a80b8ea RX(theta₂) c80daaa889744df1a3f2f0c435d5e498--b6025cc581a441d7acafa1736a80b8ea 592e7e16fc224db7a411641362da94a7 RY(theta₅) b6025cc581a441d7acafa1736a80b8ea--592e7e16fc224db7a411641362da94a7 9134da77751e43a5888a02b7a4081e8d RX(theta₈) 592e7e16fc224db7a411641362da94a7--9134da77751e43a5888a02b7a4081e8d a19d286d149c4b7f8820ff32f4d9d66c 9134da77751e43a5888a02b7a4081e8d--a19d286d149c4b7f8820ff32f4d9d66c eedbbeb56de34bbfbeb7ce93749d6780 X a19d286d149c4b7f8820ff32f4d9d66c--eedbbeb56de34bbfbeb7ce93749d6780 eedbbeb56de34bbfbeb7ce93749d6780--b3eb323eeebc4eab92ab6f4ac38030a8 e81fd6fd5447478390d43ecd84695bc3 RX(theta₁₁) eedbbeb56de34bbfbeb7ce93749d6780--e81fd6fd5447478390d43ecd84695bc3 dd5c54afd1f44f3c84e42ef34e7769c5 RY(theta₁₄) e81fd6fd5447478390d43ecd84695bc3--dd5c54afd1f44f3c84e42ef34e7769c5 489ed0e0374b4cbbbd16a8ca17efe67e RX(theta₁₇) dd5c54afd1f44f3c84e42ef34e7769c5--489ed0e0374b4cbbbd16a8ca17efe67e 3375146e696c4a7997c0c3f191036a55 489ed0e0374b4cbbbd16a8ca17efe67e--3375146e696c4a7997c0c3f191036a55 4a4e12e491db4e4dac94d4c8cab787b0 X 3375146e696c4a7997c0c3f191036a55--4a4e12e491db4e4dac94d4c8cab787b0 4a4e12e491db4e4dac94d4c8cab787b0--000b6eaa13d84ce988a131bc7a812cf1 4a4e12e491db4e4dac94d4c8cab787b0--5436e8d70324423bbf04088710a794a7

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 b94632f14de74f1e8db3c3c75f7eb9a1 0 52b7e0d622844928bccf31662b61a6eb RX(phi₀) b94632f14de74f1e8db3c3c75f7eb9a1--52b7e0d622844928bccf31662b61a6eb 74fbb70b86fd484e832eca6f94a57c52 1 b63777df2b684ea69d417e9a1ca27752 RY(phi₃) 52b7e0d622844928bccf31662b61a6eb--b63777df2b684ea69d417e9a1ca27752 e94b80a6ad35479eadbc788fb16fb144 RX(phi₆) b63777df2b684ea69d417e9a1ca27752--e94b80a6ad35479eadbc788fb16fb144 ba4b43d698e244b789847643077d582b e94b80a6ad35479eadbc788fb16fb144--ba4b43d698e244b789847643077d582b 7db3feffec344aa099f09fbac79c1fb9 ba4b43d698e244b789847643077d582b--7db3feffec344aa099f09fbac79c1fb9 b100c36258e149b9a19d299179ba4a68 RX(phi₉) 7db3feffec344aa099f09fbac79c1fb9--b100c36258e149b9a19d299179ba4a68 c830c6e14b224b48a023cef4533f790b RY(phi₁₂) b100c36258e149b9a19d299179ba4a68--c830c6e14b224b48a023cef4533f790b f36da3b7a5fd47a1a53bc1cb63e51280 RX(phi₁₅) c830c6e14b224b48a023cef4533f790b--f36da3b7a5fd47a1a53bc1cb63e51280 2d5f664eec144ac7b19d00f0778a7c16 f36da3b7a5fd47a1a53bc1cb63e51280--2d5f664eec144ac7b19d00f0778a7c16 cef2f15c88c14d1c898ba7a948ef108e 2d5f664eec144ac7b19d00f0778a7c16--cef2f15c88c14d1c898ba7a948ef108e 56d73fa1003f47ea8d60c2e730f52ce0 cef2f15c88c14d1c898ba7a948ef108e--56d73fa1003f47ea8d60c2e730f52ce0 7041a37292f5430290df8f5f3f21096e 50961b1b7b324a84a71558c483878114 RX(phi₁) 74fbb70b86fd484e832eca6f94a57c52--50961b1b7b324a84a71558c483878114 28dc324012704b85b41687e992cb1e7d 2 047e4e5e10f440f7b9def4d8fef1f5e8 RY(phi₄) 50961b1b7b324a84a71558c483878114--047e4e5e10f440f7b9def4d8fef1f5e8 9c5d75a0d93c4859a9d9f61d49945afc RX(phi₇) 047e4e5e10f440f7b9def4d8fef1f5e8--9c5d75a0d93c4859a9d9f61d49945afc b2c221de56df42ae937cd4dd8d757dad PHASE(phi_ent₀) 9c5d75a0d93c4859a9d9f61d49945afc--b2c221de56df42ae937cd4dd8d757dad b2c221de56df42ae937cd4dd8d757dad--ba4b43d698e244b789847643077d582b f57d2a37afd24814834fb46ec42feca2 b2c221de56df42ae937cd4dd8d757dad--f57d2a37afd24814834fb46ec42feca2 91482f8492d34baaad8e86499785abdf RX(phi₁₀) f57d2a37afd24814834fb46ec42feca2--91482f8492d34baaad8e86499785abdf eb711253fcf849e28f5c4429aa30f160 RY(phi₁₃) 91482f8492d34baaad8e86499785abdf--eb711253fcf849e28f5c4429aa30f160 6035e6a433df41d88ab2a0f2ae3216e9 RX(phi₁₆) eb711253fcf849e28f5c4429aa30f160--6035e6a433df41d88ab2a0f2ae3216e9 6107b161b6394fd2ac58add468f2dfc8 PHASE(phi_ent₂) 6035e6a433df41d88ab2a0f2ae3216e9--6107b161b6394fd2ac58add468f2dfc8 6107b161b6394fd2ac58add468f2dfc8--2d5f664eec144ac7b19d00f0778a7c16 5525290fe0fb412d9c36fbf840a190e6 6107b161b6394fd2ac58add468f2dfc8--5525290fe0fb412d9c36fbf840a190e6 5525290fe0fb412d9c36fbf840a190e6--7041a37292f5430290df8f5f3f21096e f49a2501f2b549128ce84c6ef1c00467 372059109a644cb5adf369728fce909e RX(phi₂) 28dc324012704b85b41687e992cb1e7d--372059109a644cb5adf369728fce909e 598e3b9ab87f43098327f70c9e866693 RY(phi₅) 372059109a644cb5adf369728fce909e--598e3b9ab87f43098327f70c9e866693 44ec28b0c9824d73a77aed04284f3a07 RX(phi₈) 598e3b9ab87f43098327f70c9e866693--44ec28b0c9824d73a77aed04284f3a07 9546c49631ec40248693c448b2d34083 44ec28b0c9824d73a77aed04284f3a07--9546c49631ec40248693c448b2d34083 21f4dd287f9e44e18bb8354a67844e0c PHASE(phi_ent₁) 9546c49631ec40248693c448b2d34083--21f4dd287f9e44e18bb8354a67844e0c 21f4dd287f9e44e18bb8354a67844e0c--f57d2a37afd24814834fb46ec42feca2 8f2451252641471da13b797125ca4364 RX(phi₁₁) 21f4dd287f9e44e18bb8354a67844e0c--8f2451252641471da13b797125ca4364 0eb0f6b48c904cf1ba7036edbb2117eb RY(phi₁₄) 8f2451252641471da13b797125ca4364--0eb0f6b48c904cf1ba7036edbb2117eb de1e20910397438880e307866a4909f4 RX(phi₁₇) 0eb0f6b48c904cf1ba7036edbb2117eb--de1e20910397438880e307866a4909f4 6b996c834f664938b2626dbd9d081d29 de1e20910397438880e307866a4909f4--6b996c834f664938b2626dbd9d081d29 d903152a441244dba05cffd26377359b PHASE(phi_ent₃) 6b996c834f664938b2626dbd9d081d29--d903152a441244dba05cffd26377359b d903152a441244dba05cffd26377359b--5525290fe0fb412d9c36fbf840a190e6 d903152a441244dba05cffd26377359b--f49a2501f2b549128ce84c6ef1c00467

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_dee5f8cd7eaf468fbc412593c7b067c5 cluster_ab68a7dea864404fbf09bf0b3be1db0d e479345038bb401bbb8a1333adb01dc3 0 95cdfa7c104b4403b1dd923141ed98a8 RX(theta₀) e479345038bb401bbb8a1333adb01dc3--95cdfa7c104b4403b1dd923141ed98a8 0ee751c8409e46a098d352043b218a21 1 cd6fd3f750674d0d96d8be29322e48f6 RY(theta₃) 95cdfa7c104b4403b1dd923141ed98a8--cd6fd3f750674d0d96d8be29322e48f6 ee78b7af192044ceaf26df507cea9079 RX(theta₆) cd6fd3f750674d0d96d8be29322e48f6--ee78b7af192044ceaf26df507cea9079 8df9b55cb10a4874904d11542088cfb9 HamEvo ee78b7af192044ceaf26df507cea9079--8df9b55cb10a4874904d11542088cfb9 22162fca8e024c1b8c7695ef8b64648a RX(theta₉) 8df9b55cb10a4874904d11542088cfb9--22162fca8e024c1b8c7695ef8b64648a 228040e15efc4dd09e64ceb47a10d45d RY(theta₁₂) 22162fca8e024c1b8c7695ef8b64648a--228040e15efc4dd09e64ceb47a10d45d c715339afbc341b7b95659e8f8a811aa RX(theta₁₅) 228040e15efc4dd09e64ceb47a10d45d--c715339afbc341b7b95659e8f8a811aa 0df7f8d71e19405babeba45a8645cf07 HamEvo c715339afbc341b7b95659e8f8a811aa--0df7f8d71e19405babeba45a8645cf07 8579edeab4534cc784ac17bc4c6fd3bd 0df7f8d71e19405babeba45a8645cf07--8579edeab4534cc784ac17bc4c6fd3bd 486daa0d2d114cefbb725a36767e0fd5 86f5d4960cc840d7b5c68f944345e495 RX(theta₁) 0ee751c8409e46a098d352043b218a21--86f5d4960cc840d7b5c68f944345e495 ac68910a10554460b7e8044bdd5a66b3 2 c79013ae3fef4ed5b9f855ce7f12f26e RY(theta₄) 86f5d4960cc840d7b5c68f944345e495--c79013ae3fef4ed5b9f855ce7f12f26e e0d08f43c6a84f7ca28582a20247fe92 RX(theta₇) c79013ae3fef4ed5b9f855ce7f12f26e--e0d08f43c6a84f7ca28582a20247fe92 8372d523f2fb41048d0418f4951e5c05 t = theta_t₀ e0d08f43c6a84f7ca28582a20247fe92--8372d523f2fb41048d0418f4951e5c05 20b005bb406c4c4b982496af8202ff86 RX(theta₁₀) 8372d523f2fb41048d0418f4951e5c05--20b005bb406c4c4b982496af8202ff86 87f31d2e6fec4973b510bca9b3e48a8d RY(theta₁₃) 20b005bb406c4c4b982496af8202ff86--87f31d2e6fec4973b510bca9b3e48a8d 413bc59e9b674d60bbb79b3d0dbe6447 RX(theta₁₆) 87f31d2e6fec4973b510bca9b3e48a8d--413bc59e9b674d60bbb79b3d0dbe6447 f432864e54be431d9108e83bfa3e9a05 t = theta_t₁ 413bc59e9b674d60bbb79b3d0dbe6447--f432864e54be431d9108e83bfa3e9a05 f432864e54be431d9108e83bfa3e9a05--486daa0d2d114cefbb725a36767e0fd5 37b4960c2a0b48f7acb778699c5a2a49 ad0e149aa7494e3cae418f0c14451bde RX(theta₂) ac68910a10554460b7e8044bdd5a66b3--ad0e149aa7494e3cae418f0c14451bde ea57a8a56cf141908b5991c23d83625d RY(theta₅) ad0e149aa7494e3cae418f0c14451bde--ea57a8a56cf141908b5991c23d83625d 84905a545b9b4d298dc04666a39b2ae8 RX(theta₈) ea57a8a56cf141908b5991c23d83625d--84905a545b9b4d298dc04666a39b2ae8 2bd37cb847da4671afeeac00002b91fd 84905a545b9b4d298dc04666a39b2ae8--2bd37cb847da4671afeeac00002b91fd dfa2264b0c674acc96660b3e69adc60f RX(theta₁₁) 2bd37cb847da4671afeeac00002b91fd--dfa2264b0c674acc96660b3e69adc60f dc6d2b9eca744a23a9be8f48f2cc9f07 RY(theta₁₄) dfa2264b0c674acc96660b3e69adc60f--dc6d2b9eca744a23a9be8f48f2cc9f07 3ce2a05fcc0e42a1a32e2529a8fdd2fc RX(theta₁₇) dc6d2b9eca744a23a9be8f48f2cc9f07--3ce2a05fcc0e42a1a32e2529a8fdd2fc 88c6a43d8964479098da8e514db3579d 3ce2a05fcc0e42a1a32e2529a8fdd2fc--88c6a43d8964479098da8e514db3579d 88c6a43d8964479098da8e514db3579d--37b4960c2a0b48f7acb778699c5a2a49

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_d7b334e4e26e42289ee030cfaae84584 cluster_adcc0b9782ef4bec96cae12e3f891435 b1d1bdedd08c463da9d42f340ef29fe1 0 e550ac1bc4fd4f6b874b2979c7c7d017 RX(theta₀) b1d1bdedd08c463da9d42f340ef29fe1--e550ac1bc4fd4f6b874b2979c7c7d017 2b549469cc2f4d408c8ba0caa931157e 1 bc08b30bfb434e6db4c4fcffc56c7633 RY(theta₆) e550ac1bc4fd4f6b874b2979c7c7d017--bc08b30bfb434e6db4c4fcffc56c7633 db352540730c457799b4a88f59449a23 RX(theta₁₂) bc08b30bfb434e6db4c4fcffc56c7633--db352540730c457799b4a88f59449a23 ba03865cfa524ff3a6256cd63c5a3809 db352540730c457799b4a88f59449a23--ba03865cfa524ff3a6256cd63c5a3809 e681e92f58014f918f8bd25e34940887 RX(theta₁₈) ba03865cfa524ff3a6256cd63c5a3809--e681e92f58014f918f8bd25e34940887 97955489b772456ebbdcafa736e35aa4 RY(theta₂₄) e681e92f58014f918f8bd25e34940887--97955489b772456ebbdcafa736e35aa4 b1470aa214b64d9cb78b9b558fcdbcaa RX(theta₃₀) 97955489b772456ebbdcafa736e35aa4--b1470aa214b64d9cb78b9b558fcdbcaa d2cf01a0ebe64d01b70e01a50f53cabb b1470aa214b64d9cb78b9b558fcdbcaa--d2cf01a0ebe64d01b70e01a50f53cabb 410edeeb4b8e46c9aae56e5097aceb7f d2cf01a0ebe64d01b70e01a50f53cabb--410edeeb4b8e46c9aae56e5097aceb7f 48285cde82e74edc8dcd4f3e59dfcf97 b8d79cb483c347fa8f4f0f11248e187b RX(theta₁) 2b549469cc2f4d408c8ba0caa931157e--b8d79cb483c347fa8f4f0f11248e187b fbee6833efb14bd392a8141223a7532e 2 d8cbcce4dca2493da2b3168cd9b18916 RY(theta₇) b8d79cb483c347fa8f4f0f11248e187b--d8cbcce4dca2493da2b3168cd9b18916 6bc9227599344b8bae4232e5ca04f0bc RX(theta₁₃) d8cbcce4dca2493da2b3168cd9b18916--6bc9227599344b8bae4232e5ca04f0bc 204afb8d237f41e997d3c97478e515b5 6bc9227599344b8bae4232e5ca04f0bc--204afb8d237f41e997d3c97478e515b5 234a2d37efde410d8ae4386e68b54cfa RX(theta₁₉) 204afb8d237f41e997d3c97478e515b5--234a2d37efde410d8ae4386e68b54cfa 89535f7210ca4f0aa5f24cb5d90f715e RY(theta₂₅) 234a2d37efde410d8ae4386e68b54cfa--89535f7210ca4f0aa5f24cb5d90f715e 9ba6d48f757f4728b3cacecd3aefaab4 RX(theta₃₁) 89535f7210ca4f0aa5f24cb5d90f715e--9ba6d48f757f4728b3cacecd3aefaab4 2fe298d04a774dcd8dddb0faa31881d5 9ba6d48f757f4728b3cacecd3aefaab4--2fe298d04a774dcd8dddb0faa31881d5 2fe298d04a774dcd8dddb0faa31881d5--48285cde82e74edc8dcd4f3e59dfcf97 48befff59f244b0997a1cdda24bf665b 681cc2219a5542a9abe578517bde38a9 RX(theta₂) fbee6833efb14bd392a8141223a7532e--681cc2219a5542a9abe578517bde38a9 901cf6f6d5f44fd5bab76ca3e13e676c 3 f758240a43f647c8b3879eaff6a7bb82 RY(theta₈) 681cc2219a5542a9abe578517bde38a9--f758240a43f647c8b3879eaff6a7bb82 806dde0c1525482ea37140742787ff5e RX(theta₁₄) f758240a43f647c8b3879eaff6a7bb82--806dde0c1525482ea37140742787ff5e faa25ea7f12c4be688d0f5aa6fb406d0 HamEvo 806dde0c1525482ea37140742787ff5e--faa25ea7f12c4be688d0f5aa6fb406d0 0407ef7b97cd4323b3b98ced26728a3b RX(theta₂₀) faa25ea7f12c4be688d0f5aa6fb406d0--0407ef7b97cd4323b3b98ced26728a3b 8b96fb83e4574d3181ba959129bd25f4 RY(theta₂₆) 0407ef7b97cd4323b3b98ced26728a3b--8b96fb83e4574d3181ba959129bd25f4 3d11bc03f1a2416e905fc0b13dde5594 RX(theta₃₂) 8b96fb83e4574d3181ba959129bd25f4--3d11bc03f1a2416e905fc0b13dde5594 e029015a5d7d4e51b56c4599f9e1112c HamEvo 3d11bc03f1a2416e905fc0b13dde5594--e029015a5d7d4e51b56c4599f9e1112c e029015a5d7d4e51b56c4599f9e1112c--48befff59f244b0997a1cdda24bf665b cf7b97fc85d149cf862c392f8cea06c3 d3af68aaf79b469e8672e60cacc71f43 RX(theta₃) 901cf6f6d5f44fd5bab76ca3e13e676c--d3af68aaf79b469e8672e60cacc71f43 82bcf5b7bcf8495882cc9a85fe319f8c 4 f9ec22b562cc4664ae9c719091677683 RY(theta₉) d3af68aaf79b469e8672e60cacc71f43--f9ec22b562cc4664ae9c719091677683 00aa833c660f41a69f94c737fad6b346 RX(theta₁₅) f9ec22b562cc4664ae9c719091677683--00aa833c660f41a69f94c737fad6b346 885a121c4f554f0bbf5bc97fbd82054f t = theta_t₀ 00aa833c660f41a69f94c737fad6b346--885a121c4f554f0bbf5bc97fbd82054f b8405f73928740e79cc591b31fca8c5e RX(theta₂₁) 885a121c4f554f0bbf5bc97fbd82054f--b8405f73928740e79cc591b31fca8c5e deb59685dbc744b2a86ee61742a1f18e RY(theta₂₇) b8405f73928740e79cc591b31fca8c5e--deb59685dbc744b2a86ee61742a1f18e 0924464f9bfa4be0beb11b7c79e42f5d RX(theta₃₃) deb59685dbc744b2a86ee61742a1f18e--0924464f9bfa4be0beb11b7c79e42f5d b0aa540686ad4dce881e82bc69b7e185 t = theta_t₁ 0924464f9bfa4be0beb11b7c79e42f5d--b0aa540686ad4dce881e82bc69b7e185 b0aa540686ad4dce881e82bc69b7e185--cf7b97fc85d149cf862c392f8cea06c3 2ab77c62987d4dab8b768f4fac5c102b 811b66a01a06408c95d05928aa5a9a1f RX(theta₄) 82bcf5b7bcf8495882cc9a85fe319f8c--811b66a01a06408c95d05928aa5a9a1f 96f79e28ffd648ba9dc6e38ce7cb9e68 5 2e07ab933eb84489972aa057e2715ea8 RY(theta₁₀) 811b66a01a06408c95d05928aa5a9a1f--2e07ab933eb84489972aa057e2715ea8 bcd555ccda424542995f0d11e6226cf3 RX(theta₁₆) 2e07ab933eb84489972aa057e2715ea8--bcd555ccda424542995f0d11e6226cf3 6130243b0def462c88694b5709c202ed bcd555ccda424542995f0d11e6226cf3--6130243b0def462c88694b5709c202ed b1bed4d297db4f8285a993a6481af87a RX(theta₂₂) 6130243b0def462c88694b5709c202ed--b1bed4d297db4f8285a993a6481af87a 9cd0ae9736a14b99ab82f10917191b7e RY(theta₂₈) b1bed4d297db4f8285a993a6481af87a--9cd0ae9736a14b99ab82f10917191b7e 720d283cc6f7493d90a62c1010c78f6c RX(theta₃₄) 9cd0ae9736a14b99ab82f10917191b7e--720d283cc6f7493d90a62c1010c78f6c 76f33797dfb6475584188dc9bf2cd136 720d283cc6f7493d90a62c1010c78f6c--76f33797dfb6475584188dc9bf2cd136 76f33797dfb6475584188dc9bf2cd136--2ab77c62987d4dab8b768f4fac5c102b 53c2346ca41c43a08038e1613fc6e9d1 e2128377f0d0458da608615c2d420ae1 RX(theta₅) 96f79e28ffd648ba9dc6e38ce7cb9e68--e2128377f0d0458da608615c2d420ae1 330b15fc132543e5814ba149c8f5469b RY(theta₁₁) e2128377f0d0458da608615c2d420ae1--330b15fc132543e5814ba149c8f5469b 9d140f5da84245d49a9a3e0194bbad4d RX(theta₁₇) 330b15fc132543e5814ba149c8f5469b--9d140f5da84245d49a9a3e0194bbad4d ed5c0d29b46c413cbaad1e27b8d9a9b3 9d140f5da84245d49a9a3e0194bbad4d--ed5c0d29b46c413cbaad1e27b8d9a9b3 90770e9926e14f9389309dd0058d3439 RX(theta₂₃) ed5c0d29b46c413cbaad1e27b8d9a9b3--90770e9926e14f9389309dd0058d3439 df37f6dbe1a24c39975f5aa0eb7aeb5b RY(theta₂₉) 90770e9926e14f9389309dd0058d3439--df37f6dbe1a24c39975f5aa0eb7aeb5b 3d8c51cb218945fb988ca11d804ec625 RX(theta₃₅) df37f6dbe1a24c39975f5aa0eb7aeb5b--3d8c51cb218945fb988ca11d804ec625 e5e07bcf04e4478c901fa0ccefb87f02 3d8c51cb218945fb988ca11d804ec625--e5e07bcf04e4478c901fa0ccefb87f02 e5e07bcf04e4478c901fa0ccefb87f02--53c2346ca41c43a08038e1613fc6e9d1

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_054dab048ea742bf8b8af0a1ce40025f BPMA-1 cluster_4874dafbfb194750b70673e0740a2e8e BPMA-0 2e3ddb0029f148a28684e60166cff066 0 0d8a5e3d66a84eb4844d075041d2d73f RX(iia_α₀₀) 2e3ddb0029f148a28684e60166cff066--0d8a5e3d66a84eb4844d075041d2d73f d83858e702b54a119f25811858d31247 1 a0877119999e4aba9d9885fcbdeaf65c RY(iia_α₀₃) 0d8a5e3d66a84eb4844d075041d2d73f--a0877119999e4aba9d9885fcbdeaf65c 8df728dafc0144988a8b552ccc13ff2a a0877119999e4aba9d9885fcbdeaf65c--8df728dafc0144988a8b552ccc13ff2a 2152ec362fc14b7783b71759f495e327 8df728dafc0144988a8b552ccc13ff2a--2152ec362fc14b7783b71759f495e327 58899be43e894a0e8379449b7565c951 RX(iia_γ₀₀) 2152ec362fc14b7783b71759f495e327--58899be43e894a0e8379449b7565c951 d615b47c4e11424aa4545e4546d70283 58899be43e894a0e8379449b7565c951--d615b47c4e11424aa4545e4546d70283 5ad02ff8371d44dd8aafa3cc66c79858 d615b47c4e11424aa4545e4546d70283--5ad02ff8371d44dd8aafa3cc66c79858 7708b37c1bae41d7a95f6220e51dbf27 RY(iia_β₀₃) 5ad02ff8371d44dd8aafa3cc66c79858--7708b37c1bae41d7a95f6220e51dbf27 87ea098bdd464291b0a5d4b32cd2c6cf RX(iia_β₀₀) 7708b37c1bae41d7a95f6220e51dbf27--87ea098bdd464291b0a5d4b32cd2c6cf 2263bce2a3e049ee8754a3c1359d0988 RX(iia_α₁₀) 87ea098bdd464291b0a5d4b32cd2c6cf--2263bce2a3e049ee8754a3c1359d0988 481b1c017fae41cca95826cf19e78a85 RY(iia_α₁₃) 2263bce2a3e049ee8754a3c1359d0988--481b1c017fae41cca95826cf19e78a85 49edc92548f54ef082b85d1aa055d02b 481b1c017fae41cca95826cf19e78a85--49edc92548f54ef082b85d1aa055d02b 13f47742c575469d8fa1c31ffc5329ff 49edc92548f54ef082b85d1aa055d02b--13f47742c575469d8fa1c31ffc5329ff 8a0ebdaec4334d57b317c72fce53f2d9 RX(iia_γ₁₀) 13f47742c575469d8fa1c31ffc5329ff--8a0ebdaec4334d57b317c72fce53f2d9 930a4c5fc235468ab21d373399f49f94 8a0ebdaec4334d57b317c72fce53f2d9--930a4c5fc235468ab21d373399f49f94 33a5ac3f7524423c808d3b3c1b7f0d49 930a4c5fc235468ab21d373399f49f94--33a5ac3f7524423c808d3b3c1b7f0d49 30bd7c39edd040f0b23c519e17b8a9c6 RY(iia_β₁₃) 33a5ac3f7524423c808d3b3c1b7f0d49--30bd7c39edd040f0b23c519e17b8a9c6 a1deed59d0514faa9c4bd84a0e7123f2 RX(iia_β₁₀) 30bd7c39edd040f0b23c519e17b8a9c6--a1deed59d0514faa9c4bd84a0e7123f2 9f3ccdcb27484bf2be54ccdfec1a8aac a1deed59d0514faa9c4bd84a0e7123f2--9f3ccdcb27484bf2be54ccdfec1a8aac 6d675009fa3341089a6626df2713ec69 67b14a582c414fcb885a35719511f799 RX(iia_α₀₁) d83858e702b54a119f25811858d31247--67b14a582c414fcb885a35719511f799 a464aa10a1ad4c78a9c0d1db9d80d766 2 fcc186db886548ecb6a007983544fd9a RY(iia_α₀₄) 67b14a582c414fcb885a35719511f799--fcc186db886548ecb6a007983544fd9a 5d01e9445f764dbba49dccaf6c11f40c X fcc186db886548ecb6a007983544fd9a--5d01e9445f764dbba49dccaf6c11f40c 5d01e9445f764dbba49dccaf6c11f40c--8df728dafc0144988a8b552ccc13ff2a ac08298332cc40a88c94d16e1d664c9b 5d01e9445f764dbba49dccaf6c11f40c--ac08298332cc40a88c94d16e1d664c9b 2023b567d75b4488bca8fcdc72081166 RX(iia_γ₀₁) ac08298332cc40a88c94d16e1d664c9b--2023b567d75b4488bca8fcdc72081166 28dcedf7f71143bb904a534730fb8abc 2023b567d75b4488bca8fcdc72081166--28dcedf7f71143bb904a534730fb8abc 9f2d17e8c7c14bb5bbb899ffda5db85a X 28dcedf7f71143bb904a534730fb8abc--9f2d17e8c7c14bb5bbb899ffda5db85a 9f2d17e8c7c14bb5bbb899ffda5db85a--5ad02ff8371d44dd8aafa3cc66c79858 bb1be5c49b15437393411373fdcb7658 RY(iia_β₀₄) 9f2d17e8c7c14bb5bbb899ffda5db85a--bb1be5c49b15437393411373fdcb7658 60f83fecb74c4fbabc70ad2b8d3dd14c RX(iia_β₀₁) bb1be5c49b15437393411373fdcb7658--60f83fecb74c4fbabc70ad2b8d3dd14c dc26a6b87afe4819a1c614f6ed801e0e RX(iia_α₁₁) 60f83fecb74c4fbabc70ad2b8d3dd14c--dc26a6b87afe4819a1c614f6ed801e0e 041e67f4f44b4bac80f5d6e4521daf9c RY(iia_α₁₄) dc26a6b87afe4819a1c614f6ed801e0e--041e67f4f44b4bac80f5d6e4521daf9c 50322d93e66e4fee83e589f2edd4cd7a X 041e67f4f44b4bac80f5d6e4521daf9c--50322d93e66e4fee83e589f2edd4cd7a 50322d93e66e4fee83e589f2edd4cd7a--49edc92548f54ef082b85d1aa055d02b 23b0337cae234c65bbd2bedd7dad1db8 50322d93e66e4fee83e589f2edd4cd7a--23b0337cae234c65bbd2bedd7dad1db8 f56a06e0d08d45a5bcff063e24ec8267 RX(iia_γ₁₁) 23b0337cae234c65bbd2bedd7dad1db8--f56a06e0d08d45a5bcff063e24ec8267 575cbf73a90b45258c49333139049910 f56a06e0d08d45a5bcff063e24ec8267--575cbf73a90b45258c49333139049910 356ebe5b8f874e30b3d0fdccab16aa4d X 575cbf73a90b45258c49333139049910--356ebe5b8f874e30b3d0fdccab16aa4d 356ebe5b8f874e30b3d0fdccab16aa4d--33a5ac3f7524423c808d3b3c1b7f0d49 a9da3f4d7a8940f797dfbf575053f341 RY(iia_β₁₄) 356ebe5b8f874e30b3d0fdccab16aa4d--a9da3f4d7a8940f797dfbf575053f341 e337e6e8df16484c9fd39b5d04486b5d RX(iia_β₁₁) a9da3f4d7a8940f797dfbf575053f341--e337e6e8df16484c9fd39b5d04486b5d e337e6e8df16484c9fd39b5d04486b5d--6d675009fa3341089a6626df2713ec69 47f6c4bde4724fd789969f25977a6aaf 9365be862ca3405bbcf81386ea1cbcb0 RX(iia_α₀₂) a464aa10a1ad4c78a9c0d1db9d80d766--9365be862ca3405bbcf81386ea1cbcb0 7c50b7fd178a4613b1f08c3672f0148f RY(iia_α₀₅) 9365be862ca3405bbcf81386ea1cbcb0--7c50b7fd178a4613b1f08c3672f0148f 2f98a51d016a45ea80ade063de0d323d 7c50b7fd178a4613b1f08c3672f0148f--2f98a51d016a45ea80ade063de0d323d 5e8765572e9c4e5888cbe17026d384b1 X 2f98a51d016a45ea80ade063de0d323d--5e8765572e9c4e5888cbe17026d384b1 5e8765572e9c4e5888cbe17026d384b1--ac08298332cc40a88c94d16e1d664c9b 72adde706a1d4c5c8758cad8254e9080 RX(iia_γ₀₂) 5e8765572e9c4e5888cbe17026d384b1--72adde706a1d4c5c8758cad8254e9080 4e182fbb70f84caa8000390e8d02a986 X 72adde706a1d4c5c8758cad8254e9080--4e182fbb70f84caa8000390e8d02a986 4e182fbb70f84caa8000390e8d02a986--28dcedf7f71143bb904a534730fb8abc 4290229965504f3fbbf42a6d9bd16071 4e182fbb70f84caa8000390e8d02a986--4290229965504f3fbbf42a6d9bd16071 475fb8c64121409bb1d6675a2097d968 RY(iia_β₀₅) 4290229965504f3fbbf42a6d9bd16071--475fb8c64121409bb1d6675a2097d968 549b9475c25341a59335d8bbd3157c29 RX(iia_β₀₂) 475fb8c64121409bb1d6675a2097d968--549b9475c25341a59335d8bbd3157c29 18541382f29943a8896dbc6d084c4dff RX(iia_α₁₂) 549b9475c25341a59335d8bbd3157c29--18541382f29943a8896dbc6d084c4dff 5c88f2b95e4146b3a32ae64d155859e4 RY(iia_α₁₅) 18541382f29943a8896dbc6d084c4dff--5c88f2b95e4146b3a32ae64d155859e4 a39527340ffb465c9248c349f6e51ecb 5c88f2b95e4146b3a32ae64d155859e4--a39527340ffb465c9248c349f6e51ecb 693c235a11b84f2a9976c22a451c51a8 X a39527340ffb465c9248c349f6e51ecb--693c235a11b84f2a9976c22a451c51a8 693c235a11b84f2a9976c22a451c51a8--23b0337cae234c65bbd2bedd7dad1db8 c4a2c9c473c14c05b8faa3f7e4270ded RX(iia_γ₁₂) 693c235a11b84f2a9976c22a451c51a8--c4a2c9c473c14c05b8faa3f7e4270ded 6cea6fdfa225460bb33c1959bc8947fe X c4a2c9c473c14c05b8faa3f7e4270ded--6cea6fdfa225460bb33c1959bc8947fe 6cea6fdfa225460bb33c1959bc8947fe--575cbf73a90b45258c49333139049910 23d7d8ca52514a928f09db7c3cb4a474 6cea6fdfa225460bb33c1959bc8947fe--23d7d8ca52514a928f09db7c3cb4a474 04f3da1fb11349958196b8e3b9888fb1 RY(iia_β₁₅) 23d7d8ca52514a928f09db7c3cb4a474--04f3da1fb11349958196b8e3b9888fb1 b731d1308aa44e0a8cde5b5b3265ba88 RX(iia_β₁₂) 04f3da1fb11349958196b8e3b9888fb1--b731d1308aa44e0a8cde5b5b3265ba88 b731d1308aa44e0a8cde5b5b3265ba88--47f6c4bde4724fd789969f25977a6aaf