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_4f248fda61594b0490d6efd839047b31 Constant Chebyshev FM cluster_9b198b2f61e5422fbd56213693a09613 Constant Fourier FM 4db6c65c641f4488aaa4a1c172283bc1 0 18190d973a4447b4bde249a0cd3c9886 RX(phi) 4db6c65c641f4488aaa4a1c172283bc1--18190d973a4447b4bde249a0cd3c9886 11d4d70d57dd4314b806fbcb4db395f6 1 18f89d8e0429438980c37f7c3bb795b9 RX(acos(phi)) 18190d973a4447b4bde249a0cd3c9886--18f89d8e0429438980c37f7c3bb795b9 3b00409a0889442382c4defe7777397c 18f89d8e0429438980c37f7c3bb795b9--3b00409a0889442382c4defe7777397c 6912e453bda74fd19c4d3b0e8e2a1d8e 4a05e2e3ca3149faba61bb3832ae8d4e RX(phi) 11d4d70d57dd4314b806fbcb4db395f6--4a05e2e3ca3149faba61bb3832ae8d4e fc31bdb051ea40b38065b0144bf09b46 2 fddfb555d05f46c6891b13f3e94cd1b5 RX(acos(phi)) 4a05e2e3ca3149faba61bb3832ae8d4e--fddfb555d05f46c6891b13f3e94cd1b5 fddfb555d05f46c6891b13f3e94cd1b5--6912e453bda74fd19c4d3b0e8e2a1d8e b00b89df88d94b3fb9e976364c126c9a 6aa57ac595904f1d915f210ed7c37e78 RX(phi) fc31bdb051ea40b38065b0144bf09b46--6aa57ac595904f1d915f210ed7c37e78 54e6d40fc848439bbe52f5adf4d1ffd9 RX(acos(phi)) 6aa57ac595904f1d915f210ed7c37e78--54e6d40fc848439bbe52f5adf4d1ffd9 54e6d40fc848439bbe52f5adf4d1ffd9--b00b89df88d94b3fb9e976364c126c9a

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_94ceb11e8a45482e9812dde95a7f0ee2 Constant <function custom_fn at 0x7fd680446d40> FM cluster_551e0e859d7b45f9a98c67f529e338d1 Constant asin FM 374603fce2a54f57aea4691874bf73fa 0 e294e1c5cb5c49ec98f7f55f1cb59a86 RX(asin(phi)) 374603fce2a54f57aea4691874bf73fa--e294e1c5cb5c49ec98f7f55f1cb59a86 9acdf01cc1f24052be5e61e0a755dab8 1 f0aa1c6f68a44b5ebaee28d3eb596fe7 RX(phi**2 + asin(phi)) e294e1c5cb5c49ec98f7f55f1cb59a86--f0aa1c6f68a44b5ebaee28d3eb596fe7 9c76e8e9fffc4dc4a49a6671394ae505 f0aa1c6f68a44b5ebaee28d3eb596fe7--9c76e8e9fffc4dc4a49a6671394ae505 b7802d1c610744429320343a00dd397e 39fbd47bf9ba4e01a0acadfb750bff59 RX(asin(phi)) 9acdf01cc1f24052be5e61e0a755dab8--39fbd47bf9ba4e01a0acadfb750bff59 652526533d754ed7a976835cdf6cbe0b 2 0ee316f6b3a74a81ae0b6b50587ba728 RX(phi**2 + asin(phi)) 39fbd47bf9ba4e01a0acadfb750bff59--0ee316f6b3a74a81ae0b6b50587ba728 0ee316f6b3a74a81ae0b6b50587ba728--b7802d1c610744429320343a00dd397e 1eaf5fa5a4aa498fbdca3b43a0d8e170 cf73e57113a645b2bad5a9469f45b12b RX(asin(phi)) 652526533d754ed7a976835cdf6cbe0b--cf73e57113a645b2bad5a9469f45b12b 3b906dd479f74530ab95e06399aa07e6 RX(phi**2 + asin(phi)) cf73e57113a645b2bad5a9469f45b12b--3b906dd479f74530ab95e06399aa07e6 3b906dd479f74530ab95e06399aa07e6--1eaf5fa5a4aa498fbdca3b43a0d8e170

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_0edafcc2982a4cc0a4dbe9c3496f8215 Exponential Fourier FM cluster_c55dbe470db54d60bf9f3b9cc7b4825f Constant Fourier FM cluster_cb6ab145dcc8421cba15a16b5f2011ad Tower Fourier FM cf6e04eb601547a6a76fc7beae3c6d5a 0 558cd9e3ae9f40cd88da8bbb7c4cfbee RX(phi) cf6e04eb601547a6a76fc7beae3c6d5a--558cd9e3ae9f40cd88da8bbb7c4cfbee a82e49f9d87d4867b6a3467ec156b0f7 1 f9a8ce76c0f84716860d6ceb80bc5781 RX(1.0*phi) 558cd9e3ae9f40cd88da8bbb7c4cfbee--f9a8ce76c0f84716860d6ceb80bc5781 fcd808e6947a4e20a0856f7b8002fe55 RX(1.0*phi) f9a8ce76c0f84716860d6ceb80bc5781--fcd808e6947a4e20a0856f7b8002fe55 e05917f355684e7db75ae50fcb277ca4 fcd808e6947a4e20a0856f7b8002fe55--e05917f355684e7db75ae50fcb277ca4 3bb1537ad3fc435c898e8ad039feeae0 9db2e819a5754f519d194f2e65176d32 RX(phi) a82e49f9d87d4867b6a3467ec156b0f7--9db2e819a5754f519d194f2e65176d32 344b541dc79c496dab3f3fed48029701 2 4441c9b8370344788bcb5a8decdd3758 RX(2.0*phi) 9db2e819a5754f519d194f2e65176d32--4441c9b8370344788bcb5a8decdd3758 c9a308e16b7c43debef0fd0663c9209e RX(2.0*phi) 4441c9b8370344788bcb5a8decdd3758--c9a308e16b7c43debef0fd0663c9209e c9a308e16b7c43debef0fd0663c9209e--3bb1537ad3fc435c898e8ad039feeae0 dc4dec82703b43d094ee40accce64719 69b053a76fa74ad0b85cda5f4215c5ec RX(phi) 344b541dc79c496dab3f3fed48029701--69b053a76fa74ad0b85cda5f4215c5ec ea116283acee4cfd8b70565c4361974d 3 023709c08b784d26b3fe4863d81e71c0 RX(3.0*phi) 69b053a76fa74ad0b85cda5f4215c5ec--023709c08b784d26b3fe4863d81e71c0 6cf1287c863e46cfba397c4a7d70e429 RX(4.0*phi) 023709c08b784d26b3fe4863d81e71c0--6cf1287c863e46cfba397c4a7d70e429 6cf1287c863e46cfba397c4a7d70e429--dc4dec82703b43d094ee40accce64719 b6b1c0b485f747488eed773d9713a007 d047bc8df4f84fb198a35d482826cdd6 RX(phi) ea116283acee4cfd8b70565c4361974d--d047bc8df4f84fb198a35d482826cdd6 4b91ef7d345e43d5b9a3b6f8d67c77ca 4 5b36d944e6e54268a9bbb247df82028a RX(4.0*phi) d047bc8df4f84fb198a35d482826cdd6--5b36d944e6e54268a9bbb247df82028a ad0fb32bd174472e8610f28534d67867 RX(8.0*phi) 5b36d944e6e54268a9bbb247df82028a--ad0fb32bd174472e8610f28534d67867 ad0fb32bd174472e8610f28534d67867--b6b1c0b485f747488eed773d9713a007 75c33f2f1c5346188596aa23a6a2b587 b283cd8ce1f34864b4acdf68322cd895 RX(phi) 4b91ef7d345e43d5b9a3b6f8d67c77ca--b283cd8ce1f34864b4acdf68322cd895 4ed9e6aa612343ccac590cc1fb4f10c7 RX(5.0*phi) b283cd8ce1f34864b4acdf68322cd895--4ed9e6aa612343ccac590cc1fb4f10c7 be93094d64b346018448c7f84bb87a7c RX(16.0*phi) 4ed9e6aa612343ccac590cc1fb4f10c7--be93094d64b346018448c7f84bb87a7c be93094d64b346018448c7f84bb87a7c--75c33f2f1c5346188596aa23a6a2b587

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 7e8e813e3a3a4c4aa9d55ddf9315ba81 0 780ccc5b587341db9d566f4913429bca RX(1.0*acos(phi)) 7e8e813e3a3a4c4aa9d55ddf9315ba81--780ccc5b587341db9d566f4913429bca ed4499a62989436b96f54eec9fddc4cb 1 2b0e0deeb9c34d3eb30e2b286897431d 780ccc5b587341db9d566f4913429bca--2b0e0deeb9c34d3eb30e2b286897431d 2c2d1eb505a44f6c882a8417d5f9d4e2 56dea5564ef1419fa81b6be976b693a5 RX(1.414*acos(phi)) ed4499a62989436b96f54eec9fddc4cb--56dea5564ef1419fa81b6be976b693a5 c42a74aa070a44709ba0b5b155501bf3 2 56dea5564ef1419fa81b6be976b693a5--2c2d1eb505a44f6c882a8417d5f9d4e2 3b2cbe98eef64817ac13089df3401ab3 1416107e3218406eb93702536b55df04 RX(1.732*acos(phi)) c42a74aa070a44709ba0b5b155501bf3--1416107e3218406eb93702536b55df04 1535b141335a49d7b6e581a845ecfa09 3 1416107e3218406eb93702536b55df04--3b2cbe98eef64817ac13089df3401ab3 cdab69d8bd5d4069b91d335d561c1c54 dc9f126977ad4a249e00cedabde616e8 RX(2.0*acos(phi)) 1535b141335a49d7b6e581a845ecfa09--dc9f126977ad4a249e00cedabde616e8 c383cd2cfd7d4ab79cf1d8313d545576 4 dc9f126977ad4a249e00cedabde616e8--cdab69d8bd5d4069b91d335d561c1c54 8f323357411749dabd0b7485a4108ca5 e74c1c338e5d4358a3acbf90f950c7a2 RX(2.236*acos(phi)) c383cd2cfd7d4ab79cf1d8313d545576--e74c1c338e5d4358a3acbf90f950c7a2 e74c1c338e5d4358a3acbf90f950c7a2--8f323357411749dabd0b7485a4108ca5

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 ce3d68abd8f747418b0b3e56b88adfd6 0 2d39a6aaf20a4259af8d5e3ad9093ef2 RX(1.0*phi*w₀) ce3d68abd8f747418b0b3e56b88adfd6--2d39a6aaf20a4259af8d5e3ad9093ef2 239590f3b33e4ab88c5b341c76cea17f 1 61dfdb564fd242a68e896013247f3c76 2d39a6aaf20a4259af8d5e3ad9093ef2--61dfdb564fd242a68e896013247f3c76 5cf19f96268c4ab181278f19bb135fde ccf3ce3c38a0484fb303807dde12593a RX(2.0*phi*w₁) 239590f3b33e4ab88c5b341c76cea17f--ccf3ce3c38a0484fb303807dde12593a 6e6abfaf81fa4eb98f68c214b6889641 2 ccf3ce3c38a0484fb303807dde12593a--5cf19f96268c4ab181278f19bb135fde 3c452450420c4b7191ee3e69d99be29c a20ffdde38204a4f8cdcf3bd56d1b0d1 RX(4.0*phi*w₂) 6e6abfaf81fa4eb98f68c214b6889641--a20ffdde38204a4f8cdcf3bd56d1b0d1 e0526c22529c4d799e4a6d24467a83ab 3 a20ffdde38204a4f8cdcf3bd56d1b0d1--3c452450420c4b7191ee3e69d99be29c 3ba139d59e35443e8739b61d67ff1346 901e4f95de074309a4634ccb655ce2d0 RX(8.0*phi*w₃) e0526c22529c4d799e4a6d24467a83ab--901e4f95de074309a4634ccb655ce2d0 444b54a246c34b1b8f6b7129d7bb744d 4 901e4f95de074309a4634ccb655ce2d0--3ba139d59e35443e8739b61d67ff1346 c3e60e449ba2437cb10ee54fcac7c388 ad974ccea5f24cbfaca8fd959be99c58 RX(16.0*phi*w₄) 444b54a246c34b1b8f6b7129d7bb744d--ad974ccea5f24cbfaca8fd959be99c58 ad974ccea5f24cbfaca8fd959be99c58--c3e60e449ba2437cb10ee54fcac7c388

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 a8ee5d15104748cfa298a326e3052495 0 dfa581b2515547e3b53db985b6feb8d5 RY(80.0*acos(w₄*(0.667*x + 1.667))) a8ee5d15104748cfa298a326e3052495--dfa581b2515547e3b53db985b6feb8d5 7e9b686dca3b4dacabe89150d6d0717b 1 233be31e601e4909b0354d625594cff5 dfa581b2515547e3b53db985b6feb8d5--233be31e601e4909b0354d625594cff5 50474000e745410cab90675e0f73fce7 56d81ca105ac46b38ebf022987e06e3f RY(40.0*acos(w₃*(0.667*x + 1.667))) 7e9b686dca3b4dacabe89150d6d0717b--56d81ca105ac46b38ebf022987e06e3f b880452661054350aeb9b5cf2f072bec 2 56d81ca105ac46b38ebf022987e06e3f--50474000e745410cab90675e0f73fce7 7c6fbd774a8245bdb7950a32ef63122e 94f47fc90ed94cce810763bca89e25e4 RY(20.0*acos(w₂*(0.667*x + 1.667))) b880452661054350aeb9b5cf2f072bec--94f47fc90ed94cce810763bca89e25e4 5ec75faa7c074de6851bc9494a9e7085 3 94f47fc90ed94cce810763bca89e25e4--7c6fbd774a8245bdb7950a32ef63122e fe7eadd5f78741e08fa325f1fa476324 5a4babd8a7be4552a752cfb5381aa741 RY(10.0*acos(w₁*(0.667*x + 1.667))) 5ec75faa7c074de6851bc9494a9e7085--5a4babd8a7be4552a752cfb5381aa741 d06dcfb2e3ca4dd4be3d06fa4755f32f 4 5a4babd8a7be4552a752cfb5381aa741--fe7eadd5f78741e08fa325f1fa476324 5a1cc407a6094d629162223216c1b5e7 2f3dda1005ee4091bf8b30f6e99eb97a RY(5.0*acos(w₀*(0.667*x + 1.667))) d06dcfb2e3ca4dd4be3d06fa4755f32f--2f3dda1005ee4091bf8b30f6e99eb97a 2f3dda1005ee4091bf8b30f6e99eb97a--5a1cc407a6094d629162223216c1b5e7

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 9acabebf3bf743dda28a6bf1651237ea 0 25c5cab37ac44bf7b856cafed4a3370b RX(theta₀) 9acabebf3bf743dda28a6bf1651237ea--25c5cab37ac44bf7b856cafed4a3370b 9eada3d9af054d989c77d8aa6ce7927f 1 ad0510ed4c75477787f6b4366ed8d397 RY(theta₃) 25c5cab37ac44bf7b856cafed4a3370b--ad0510ed4c75477787f6b4366ed8d397 e47723feab654cd7b4a03217500956ef RX(theta₆) ad0510ed4c75477787f6b4366ed8d397--e47723feab654cd7b4a03217500956ef 376a9f2094a346ca9af65c554a22169a e47723feab654cd7b4a03217500956ef--376a9f2094a346ca9af65c554a22169a a2b883893551485fbf55faa72d5e0bfa 376a9f2094a346ca9af65c554a22169a--a2b883893551485fbf55faa72d5e0bfa c498a8541e044348ab81c43e1e8eeaf8 RX(theta₉) a2b883893551485fbf55faa72d5e0bfa--c498a8541e044348ab81c43e1e8eeaf8 6361b0012cca4b87bbca27915d8935c8 RY(theta₁₂) c498a8541e044348ab81c43e1e8eeaf8--6361b0012cca4b87bbca27915d8935c8 f8ae423da92d4b448616eaa11dde877f RX(theta₁₅) 6361b0012cca4b87bbca27915d8935c8--f8ae423da92d4b448616eaa11dde877f bd9ef1ff6b794f0f9eb5cb45222e59a7 f8ae423da92d4b448616eaa11dde877f--bd9ef1ff6b794f0f9eb5cb45222e59a7 d7d114126d874a01a0f21b4a47b015d1 bd9ef1ff6b794f0f9eb5cb45222e59a7--d7d114126d874a01a0f21b4a47b015d1 015929f223cf499081d0d18c09822e2e d7d114126d874a01a0f21b4a47b015d1--015929f223cf499081d0d18c09822e2e 62b9a17dd7774b50a273324f1bb89bb1 323ee593ed3a4b7898ed7aca4f02fb53 RX(theta₁) 9eada3d9af054d989c77d8aa6ce7927f--323ee593ed3a4b7898ed7aca4f02fb53 abef1a42bd97428b99ba41f5ee0739ca 2 d5296f5fe28847b6a085dcdbdc5e9151 RY(theta₄) 323ee593ed3a4b7898ed7aca4f02fb53--d5296f5fe28847b6a085dcdbdc5e9151 1b56cafd6c4b4d72a72f20b356548a29 RX(theta₇) d5296f5fe28847b6a085dcdbdc5e9151--1b56cafd6c4b4d72a72f20b356548a29 dbc6bed7b9dc43dbbf89801a0dd10113 X 1b56cafd6c4b4d72a72f20b356548a29--dbc6bed7b9dc43dbbf89801a0dd10113 dbc6bed7b9dc43dbbf89801a0dd10113--376a9f2094a346ca9af65c554a22169a b19bbe7928ae40b4bb616440b8ef3d87 dbc6bed7b9dc43dbbf89801a0dd10113--b19bbe7928ae40b4bb616440b8ef3d87 d8f645e1bac04ad39bf107a53fe7539e RX(theta₁₀) b19bbe7928ae40b4bb616440b8ef3d87--d8f645e1bac04ad39bf107a53fe7539e edb61fc969b14cad8b36e4d389aca21c RY(theta₁₃) d8f645e1bac04ad39bf107a53fe7539e--edb61fc969b14cad8b36e4d389aca21c 39ff12ad40cd4a44957cceae571f758c RX(theta₁₆) edb61fc969b14cad8b36e4d389aca21c--39ff12ad40cd4a44957cceae571f758c 5922a4da259d47c28270575fbcb551d5 X 39ff12ad40cd4a44957cceae571f758c--5922a4da259d47c28270575fbcb551d5 5922a4da259d47c28270575fbcb551d5--bd9ef1ff6b794f0f9eb5cb45222e59a7 f210f445c32f4e658c522a0b26345042 5922a4da259d47c28270575fbcb551d5--f210f445c32f4e658c522a0b26345042 f210f445c32f4e658c522a0b26345042--62b9a17dd7774b50a273324f1bb89bb1 019cfd924f8d4ddfa2f3f28c08902d09 aafa9f10c4c24197af1dca6c675d95da RX(theta₂) abef1a42bd97428b99ba41f5ee0739ca--aafa9f10c4c24197af1dca6c675d95da c428fa1430d34adb9627b7c979051577 RY(theta₅) aafa9f10c4c24197af1dca6c675d95da--c428fa1430d34adb9627b7c979051577 4833451b32cf4dcbbb09d4c58f3085b9 RX(theta₈) c428fa1430d34adb9627b7c979051577--4833451b32cf4dcbbb09d4c58f3085b9 e03101b3329240b292afd496fde18db9 4833451b32cf4dcbbb09d4c58f3085b9--e03101b3329240b292afd496fde18db9 aa145353048f4e0f8e737b774b8e82da X e03101b3329240b292afd496fde18db9--aa145353048f4e0f8e737b774b8e82da aa145353048f4e0f8e737b774b8e82da--b19bbe7928ae40b4bb616440b8ef3d87 60aa21c0cc1c49d8aa11cf7840ee430e RX(theta₁₁) aa145353048f4e0f8e737b774b8e82da--60aa21c0cc1c49d8aa11cf7840ee430e 300be355fa9a47aaa18643502191983b RY(theta₁₄) 60aa21c0cc1c49d8aa11cf7840ee430e--300be355fa9a47aaa18643502191983b a636302e56c648c48348c3ceb7d90694 RX(theta₁₇) 300be355fa9a47aaa18643502191983b--a636302e56c648c48348c3ceb7d90694 a3074faf3ed64f4bb7a79f1e65fa79dc a636302e56c648c48348c3ceb7d90694--a3074faf3ed64f4bb7a79f1e65fa79dc ca419773752442308ece2c20b695922a X a3074faf3ed64f4bb7a79f1e65fa79dc--ca419773752442308ece2c20b695922a ca419773752442308ece2c20b695922a--f210f445c32f4e658c522a0b26345042 ca419773752442308ece2c20b695922a--019cfd924f8d4ddfa2f3f28c08902d09

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 232520fc4c4347cf9c9a9552d12a4cb7 0 90d3afd20c0445918e2d9dd93f4239d4 RX(phi₀) 232520fc4c4347cf9c9a9552d12a4cb7--90d3afd20c0445918e2d9dd93f4239d4 e09da6eafe994deea9506fcf15ba64e2 1 0dfe52646acb4ec3b0b9c18db8981c2a RY(phi₃) 90d3afd20c0445918e2d9dd93f4239d4--0dfe52646acb4ec3b0b9c18db8981c2a c684c1c96088400796a4afc2282d3497 RX(phi₆) 0dfe52646acb4ec3b0b9c18db8981c2a--c684c1c96088400796a4afc2282d3497 8f85d9ca324845f2a1addff42d23238f c684c1c96088400796a4afc2282d3497--8f85d9ca324845f2a1addff42d23238f 9d1341d7cc574785b5fde4c4da0b6720 8f85d9ca324845f2a1addff42d23238f--9d1341d7cc574785b5fde4c4da0b6720 b164a146847449eeabc882be71868c12 RX(phi₉) 9d1341d7cc574785b5fde4c4da0b6720--b164a146847449eeabc882be71868c12 92fb6cf7f24e4c0f9da6ec015ad5985a RY(phi₁₂) b164a146847449eeabc882be71868c12--92fb6cf7f24e4c0f9da6ec015ad5985a 7038712a91454db6828897030091002f RX(phi₁₅) 92fb6cf7f24e4c0f9da6ec015ad5985a--7038712a91454db6828897030091002f 5359be5f53264f429547df6d1b9a3d30 7038712a91454db6828897030091002f--5359be5f53264f429547df6d1b9a3d30 cb8e120d10b34772acbfeb96b9c890d9 5359be5f53264f429547df6d1b9a3d30--cb8e120d10b34772acbfeb96b9c890d9 6668685621f6453ab403d33d5336742f cb8e120d10b34772acbfeb96b9c890d9--6668685621f6453ab403d33d5336742f 8356ab78d87441a6906380706b4e6f2d f3644f54403d4a96b8bdf70e0c2f8722 RX(phi₁) e09da6eafe994deea9506fcf15ba64e2--f3644f54403d4a96b8bdf70e0c2f8722 93fe6e055a0b4b83bea3bb572dc1ac90 2 a733a32815ec4c9fb0fdc5fdfeedfd9c RY(phi₄) f3644f54403d4a96b8bdf70e0c2f8722--a733a32815ec4c9fb0fdc5fdfeedfd9c 0995b4969aa1409a80c11ffe0b4ca74e RX(phi₇) a733a32815ec4c9fb0fdc5fdfeedfd9c--0995b4969aa1409a80c11ffe0b4ca74e b0ce2879c9de477081073b7ba4bf8de5 PHASE(phi_ent₀) 0995b4969aa1409a80c11ffe0b4ca74e--b0ce2879c9de477081073b7ba4bf8de5 b0ce2879c9de477081073b7ba4bf8de5--8f85d9ca324845f2a1addff42d23238f 8a0e7a1863b341e19460d90e5075190a b0ce2879c9de477081073b7ba4bf8de5--8a0e7a1863b341e19460d90e5075190a 519d92f0f0e14af89afe47e4bae42245 RX(phi₁₀) 8a0e7a1863b341e19460d90e5075190a--519d92f0f0e14af89afe47e4bae42245 df27579c7c0d4dce852eb201c4342029 RY(phi₁₃) 519d92f0f0e14af89afe47e4bae42245--df27579c7c0d4dce852eb201c4342029 872c45b7c563467c9547b971ebc3db6f RX(phi₁₆) df27579c7c0d4dce852eb201c4342029--872c45b7c563467c9547b971ebc3db6f 83ecca972a16401386585b84e2f09d0f PHASE(phi_ent₂) 872c45b7c563467c9547b971ebc3db6f--83ecca972a16401386585b84e2f09d0f 83ecca972a16401386585b84e2f09d0f--5359be5f53264f429547df6d1b9a3d30 70851c213f584e17a257b783baebf1f5 83ecca972a16401386585b84e2f09d0f--70851c213f584e17a257b783baebf1f5 70851c213f584e17a257b783baebf1f5--8356ab78d87441a6906380706b4e6f2d da40661960b946b38b8f6d1248d14af3 64259a81c8dd4938be51755adb7cbe7f RX(phi₂) 93fe6e055a0b4b83bea3bb572dc1ac90--64259a81c8dd4938be51755adb7cbe7f 19b9a22cc3a24b8ca122e1cf7c4e34d1 RY(phi₅) 64259a81c8dd4938be51755adb7cbe7f--19b9a22cc3a24b8ca122e1cf7c4e34d1 53c82e606c71442a99e62b17c482cd72 RX(phi₈) 19b9a22cc3a24b8ca122e1cf7c4e34d1--53c82e606c71442a99e62b17c482cd72 9669cf2e9475488ca61d67c2353739ee 53c82e606c71442a99e62b17c482cd72--9669cf2e9475488ca61d67c2353739ee be32266101e246a6ba5877b46719ff38 PHASE(phi_ent₁) 9669cf2e9475488ca61d67c2353739ee--be32266101e246a6ba5877b46719ff38 be32266101e246a6ba5877b46719ff38--8a0e7a1863b341e19460d90e5075190a aa810b5036614c0d9a7e36982134756a RX(phi₁₁) be32266101e246a6ba5877b46719ff38--aa810b5036614c0d9a7e36982134756a 62049e230d804aca9e14f4eece002c9a RY(phi₁₄) aa810b5036614c0d9a7e36982134756a--62049e230d804aca9e14f4eece002c9a 3509db46f4584785b2ba0af40f05bd7a RX(phi₁₇) 62049e230d804aca9e14f4eece002c9a--3509db46f4584785b2ba0af40f05bd7a 5b96f23e0ca04465a59ab94c82a916c5 3509db46f4584785b2ba0af40f05bd7a--5b96f23e0ca04465a59ab94c82a916c5 2e77926348034f6a963cbfcd6ef8c04f PHASE(phi_ent₃) 5b96f23e0ca04465a59ab94c82a916c5--2e77926348034f6a963cbfcd6ef8c04f 2e77926348034f6a963cbfcd6ef8c04f--70851c213f584e17a257b783baebf1f5 2e77926348034f6a963cbfcd6ef8c04f--da40661960b946b38b8f6d1248d14af3

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_0e6aabd5e2ce4d01abb2f54a21967c93 cluster_80d3bc50fbf2492cb3be2a833b224450 131934128b3d4702bd9289e119c80a3f 0 4c2acc81119f4368915178efb055a534 RX(theta₀) 131934128b3d4702bd9289e119c80a3f--4c2acc81119f4368915178efb055a534 0bfa6d712b6540d4bb240ea45546b532 1 4a7a22aea080402986488baebba075b6 RY(theta₃) 4c2acc81119f4368915178efb055a534--4a7a22aea080402986488baebba075b6 a22d592610b3494cad6e794fdaa53a4d RX(theta₆) 4a7a22aea080402986488baebba075b6--a22d592610b3494cad6e794fdaa53a4d 1144df4b2f2848e78c9110ec6ba04c00 HamEvo a22d592610b3494cad6e794fdaa53a4d--1144df4b2f2848e78c9110ec6ba04c00 83674bc64e504c0d8b607ad51a6ffd31 RX(theta₉) 1144df4b2f2848e78c9110ec6ba04c00--83674bc64e504c0d8b607ad51a6ffd31 e3a56da9d87a41bd8c7c840cefc75d88 RY(theta₁₂) 83674bc64e504c0d8b607ad51a6ffd31--e3a56da9d87a41bd8c7c840cefc75d88 695f26a40f4c485a87dc60ae39cb63b2 RX(theta₁₅) e3a56da9d87a41bd8c7c840cefc75d88--695f26a40f4c485a87dc60ae39cb63b2 54335b4bae144b92bd4cc26ec6e5d6f3 HamEvo 695f26a40f4c485a87dc60ae39cb63b2--54335b4bae144b92bd4cc26ec6e5d6f3 220f94552c9b4e4a9cb17bf6c1d77c2a 54335b4bae144b92bd4cc26ec6e5d6f3--220f94552c9b4e4a9cb17bf6c1d77c2a 00dc4506fdfa45a98eb900bb2143b5d8 44f9efb5180742dea9cfe4b5e9932d6e RX(theta₁) 0bfa6d712b6540d4bb240ea45546b532--44f9efb5180742dea9cfe4b5e9932d6e d0248da8c86d4b85acd5371f620a01a5 2 7a481ee8432243be8ea7d8e36074fd68 RY(theta₄) 44f9efb5180742dea9cfe4b5e9932d6e--7a481ee8432243be8ea7d8e36074fd68 37c6ed1529104fe8a9d0839e93ff45ac RX(theta₇) 7a481ee8432243be8ea7d8e36074fd68--37c6ed1529104fe8a9d0839e93ff45ac d2595fd0afa24234b2c7d0ad1bdac9fb t = theta_t₀ 37c6ed1529104fe8a9d0839e93ff45ac--d2595fd0afa24234b2c7d0ad1bdac9fb b320605f2a8c416e8041b8b1b6601872 RX(theta₁₀) d2595fd0afa24234b2c7d0ad1bdac9fb--b320605f2a8c416e8041b8b1b6601872 7a8e3005f08c4762a67c955c70afd81d RY(theta₁₃) b320605f2a8c416e8041b8b1b6601872--7a8e3005f08c4762a67c955c70afd81d bc0ae6906a2844eb82edd53e9e0dc384 RX(theta₁₆) 7a8e3005f08c4762a67c955c70afd81d--bc0ae6906a2844eb82edd53e9e0dc384 01db8207939745d7b777a2da46d0d134 t = theta_t₁ bc0ae6906a2844eb82edd53e9e0dc384--01db8207939745d7b777a2da46d0d134 01db8207939745d7b777a2da46d0d134--00dc4506fdfa45a98eb900bb2143b5d8 3f33cbea6a1446749f112913b3e2098a 6ba9fbe2e34f4f48bcb36005d9af97b0 RX(theta₂) d0248da8c86d4b85acd5371f620a01a5--6ba9fbe2e34f4f48bcb36005d9af97b0 c79aaeb81b284ebb9c83a3852945d31e RY(theta₅) 6ba9fbe2e34f4f48bcb36005d9af97b0--c79aaeb81b284ebb9c83a3852945d31e b7bb412f8a044a4f8ef04021375b445b RX(theta₈) c79aaeb81b284ebb9c83a3852945d31e--b7bb412f8a044a4f8ef04021375b445b 6d5ad815b7ff488b9436c308c21ab214 b7bb412f8a044a4f8ef04021375b445b--6d5ad815b7ff488b9436c308c21ab214 f9da00b7e39949cba1c56763b2693fb5 RX(theta₁₁) 6d5ad815b7ff488b9436c308c21ab214--f9da00b7e39949cba1c56763b2693fb5 07d47060eb9a441185926733195afcdc RY(theta₁₄) f9da00b7e39949cba1c56763b2693fb5--07d47060eb9a441185926733195afcdc abd330e2f31b4a3aa86a267cbf4029f4 RX(theta₁₇) 07d47060eb9a441185926733195afcdc--abd330e2f31b4a3aa86a267cbf4029f4 52ac86bccb814a008ec8fe5735682823 abd330e2f31b4a3aa86a267cbf4029f4--52ac86bccb814a008ec8fe5735682823 52ac86bccb814a008ec8fe5735682823--3f33cbea6a1446749f112913b3e2098a

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_0c500970c2ce4f39a3c55336c8d14fc6 cluster_cc5172643f76488099698ff43ffaf79b 4fb8ae353af24910a8df018f3fa3b88b 0 544b420d78bc4419a17e7dcdfbdec69d RX(theta₀) 4fb8ae353af24910a8df018f3fa3b88b--544b420d78bc4419a17e7dcdfbdec69d 88cd7587a4434d88820fed11a8ca8f18 1 00d7c9252e974ff5b3a01c8c8a489edb RY(theta₆) 544b420d78bc4419a17e7dcdfbdec69d--00d7c9252e974ff5b3a01c8c8a489edb 810e221470754f96b2824643088fda5d RX(theta₁₂) 00d7c9252e974ff5b3a01c8c8a489edb--810e221470754f96b2824643088fda5d 1bbc9c50c4e6451aa92c12581cf637d9 810e221470754f96b2824643088fda5d--1bbc9c50c4e6451aa92c12581cf637d9 2dba3d22b44f48ecaf4467b539227918 RX(theta₁₈) 1bbc9c50c4e6451aa92c12581cf637d9--2dba3d22b44f48ecaf4467b539227918 4bbc196a50c14abe9e194da12cfa7663 RY(theta₂₄) 2dba3d22b44f48ecaf4467b539227918--4bbc196a50c14abe9e194da12cfa7663 d134e3d9f893466d91bf0b8bc9578ae9 RX(theta₃₀) 4bbc196a50c14abe9e194da12cfa7663--d134e3d9f893466d91bf0b8bc9578ae9 654bedc88c9449ec91cf51c30022c0d7 d134e3d9f893466d91bf0b8bc9578ae9--654bedc88c9449ec91cf51c30022c0d7 adb52b779dc344bda157013fb1150f35 654bedc88c9449ec91cf51c30022c0d7--adb52b779dc344bda157013fb1150f35 1709a6074f364fe5a2f85931deb22949 35e7a19aeae14616b4e263f9fe197147 RX(theta₁) 88cd7587a4434d88820fed11a8ca8f18--35e7a19aeae14616b4e263f9fe197147 9a530898a4d3433989d5f98b8b03bb27 2 04fc46367dfd4e4bb24437889513dafd RY(theta₇) 35e7a19aeae14616b4e263f9fe197147--04fc46367dfd4e4bb24437889513dafd b641369cfe914535a4b48b5049593ed7 RX(theta₁₃) 04fc46367dfd4e4bb24437889513dafd--b641369cfe914535a4b48b5049593ed7 82048b0ee95b4762bb1de75be89bb767 b641369cfe914535a4b48b5049593ed7--82048b0ee95b4762bb1de75be89bb767 b333084837fc46dd848b249c40bb87fd RX(theta₁₉) 82048b0ee95b4762bb1de75be89bb767--b333084837fc46dd848b249c40bb87fd 0f78bd6e7d0a4c79adf1f57ab5eef12a RY(theta₂₅) b333084837fc46dd848b249c40bb87fd--0f78bd6e7d0a4c79adf1f57ab5eef12a 9e5158ea0c7342c894a7dac2cc59ad52 RX(theta₃₁) 0f78bd6e7d0a4c79adf1f57ab5eef12a--9e5158ea0c7342c894a7dac2cc59ad52 db1defca3b21490baa45cc1963a4f06f 9e5158ea0c7342c894a7dac2cc59ad52--db1defca3b21490baa45cc1963a4f06f db1defca3b21490baa45cc1963a4f06f--1709a6074f364fe5a2f85931deb22949 39c17714293347e083aecb7ecbf2fe95 cb4fa0404e164f1b9efa3c45f58b2c57 RX(theta₂) 9a530898a4d3433989d5f98b8b03bb27--cb4fa0404e164f1b9efa3c45f58b2c57 219431e54da444f1b07e82470bbca41b 3 be62c0fdbaa74a18ab1d41a2d68657ee RY(theta₈) cb4fa0404e164f1b9efa3c45f58b2c57--be62c0fdbaa74a18ab1d41a2d68657ee 8c2222bb572b483a908542c8c27e510f RX(theta₁₄) be62c0fdbaa74a18ab1d41a2d68657ee--8c2222bb572b483a908542c8c27e510f 8e5b6815844c4f5fb8e57fa1415cbac0 HamEvo 8c2222bb572b483a908542c8c27e510f--8e5b6815844c4f5fb8e57fa1415cbac0 cc931acebf75426783b8ceb3712d3992 RX(theta₂₀) 8e5b6815844c4f5fb8e57fa1415cbac0--cc931acebf75426783b8ceb3712d3992 ae4205e7b51c477a8bd1c331b8fbedf9 RY(theta₂₆) cc931acebf75426783b8ceb3712d3992--ae4205e7b51c477a8bd1c331b8fbedf9 ba7951d7b93041b0acb31c26b8f7effe RX(theta₃₂) ae4205e7b51c477a8bd1c331b8fbedf9--ba7951d7b93041b0acb31c26b8f7effe a682c7540a364209bc737e923bcde43a HamEvo ba7951d7b93041b0acb31c26b8f7effe--a682c7540a364209bc737e923bcde43a a682c7540a364209bc737e923bcde43a--39c17714293347e083aecb7ecbf2fe95 d03002bb6d9a4e0f8750432b1b5a9bb6 d86119021a224ce1b5c3f27cdd9deeee RX(theta₃) 219431e54da444f1b07e82470bbca41b--d86119021a224ce1b5c3f27cdd9deeee 914b0281a0de4569bec65abd502ba9bd 4 e88fe55faa81492db597899d85487418 RY(theta₉) d86119021a224ce1b5c3f27cdd9deeee--e88fe55faa81492db597899d85487418 93d9147d857849b1bc28ab1f3bc5f6b4 RX(theta₁₅) e88fe55faa81492db597899d85487418--93d9147d857849b1bc28ab1f3bc5f6b4 5d4a4ee2d86e4051a0824695b06dded8 t = theta_t₀ 93d9147d857849b1bc28ab1f3bc5f6b4--5d4a4ee2d86e4051a0824695b06dded8 8ef5c63990c745809e730f95ab0783e3 RX(theta₂₁) 5d4a4ee2d86e4051a0824695b06dded8--8ef5c63990c745809e730f95ab0783e3 0928e5758a3b49ebb020c1904140c3e3 RY(theta₂₇) 8ef5c63990c745809e730f95ab0783e3--0928e5758a3b49ebb020c1904140c3e3 a8755ca5e49a44ea93249626370fafd5 RX(theta₃₃) 0928e5758a3b49ebb020c1904140c3e3--a8755ca5e49a44ea93249626370fafd5 d8436be78de64ba9ad56415c27e864a1 t = theta_t₁ a8755ca5e49a44ea93249626370fafd5--d8436be78de64ba9ad56415c27e864a1 d8436be78de64ba9ad56415c27e864a1--d03002bb6d9a4e0f8750432b1b5a9bb6 b58570e3305549ab8419d5bd46b8ce12 cc925e3f060942e19e9fcad6599266be RX(theta₄) 914b0281a0de4569bec65abd502ba9bd--cc925e3f060942e19e9fcad6599266be 352d07e0abd14ef9b8a95bbeb282b190 5 9d395378fdb04102b03277d2d3e382e1 RY(theta₁₀) cc925e3f060942e19e9fcad6599266be--9d395378fdb04102b03277d2d3e382e1 e582910fa5e44ddea752512ca53aee75 RX(theta₁₆) 9d395378fdb04102b03277d2d3e382e1--e582910fa5e44ddea752512ca53aee75 b33371f90c574b35b9c602cae4cbe116 e582910fa5e44ddea752512ca53aee75--b33371f90c574b35b9c602cae4cbe116 d3985cab654d48028b4b37bead5a8412 RX(theta₂₂) b33371f90c574b35b9c602cae4cbe116--d3985cab654d48028b4b37bead5a8412 67e3ac2405e640a9af4e57d7cdae3843 RY(theta₂₈) d3985cab654d48028b4b37bead5a8412--67e3ac2405e640a9af4e57d7cdae3843 e4c35f1871d54535865295fd6387c991 RX(theta₃₄) 67e3ac2405e640a9af4e57d7cdae3843--e4c35f1871d54535865295fd6387c991 796eb16b23414d47a752c842defd215e e4c35f1871d54535865295fd6387c991--796eb16b23414d47a752c842defd215e 796eb16b23414d47a752c842defd215e--b58570e3305549ab8419d5bd46b8ce12 a5517ec14e3d45d7ba39fc9d14a8460d d23c1c8953c24fd28ec8a62dcae764ab RX(theta₅) 352d07e0abd14ef9b8a95bbeb282b190--d23c1c8953c24fd28ec8a62dcae764ab a28f63fb992945689db1ebc1bd6ffac6 RY(theta₁₁) d23c1c8953c24fd28ec8a62dcae764ab--a28f63fb992945689db1ebc1bd6ffac6 1daf2c735e8e4041b30cd4c2098db211 RX(theta₁₇) a28f63fb992945689db1ebc1bd6ffac6--1daf2c735e8e4041b30cd4c2098db211 effc26290ba64e7a9ec10570a9d4d1c4 1daf2c735e8e4041b30cd4c2098db211--effc26290ba64e7a9ec10570a9d4d1c4 d3eb2d4304d147119aeb8e95697b2310 RX(theta₂₃) effc26290ba64e7a9ec10570a9d4d1c4--d3eb2d4304d147119aeb8e95697b2310 9edf5dd361a34e91973dc4b03005e4d9 RY(theta₂₉) d3eb2d4304d147119aeb8e95697b2310--9edf5dd361a34e91973dc4b03005e4d9 875aad2c614740a1a42eb07e5fc008cc RX(theta₃₅) 9edf5dd361a34e91973dc4b03005e4d9--875aad2c614740a1a42eb07e5fc008cc 1dc34b93920045c796881171c492ebee 875aad2c614740a1a42eb07e5fc008cc--1dc34b93920045c796881171c492ebee 1dc34b93920045c796881171c492ebee--a5517ec14e3d45d7ba39fc9d14a8460d

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_73d4a9f8d1814756b37ac4e115bca281 BPMA-1 cluster_f81c23212ad44a21acda8acb67de3a4e BPMA-0 4770f84e4e744dcea09556a4d3b0eaa5 0 595024ca5a5940c5a82eb535497ca24a RX(iia_α₀₀) 4770f84e4e744dcea09556a4d3b0eaa5--595024ca5a5940c5a82eb535497ca24a 7966559152cb4279991007a55f2bbc31 1 d3dce54f557b4adf99ab32b83fd91edc RY(iia_α₀₃) 595024ca5a5940c5a82eb535497ca24a--d3dce54f557b4adf99ab32b83fd91edc 3a1ba24f24774ea0a1387c27d5557205 d3dce54f557b4adf99ab32b83fd91edc--3a1ba24f24774ea0a1387c27d5557205 672a8c748b37435eb1f38c5b9fe6126a 3a1ba24f24774ea0a1387c27d5557205--672a8c748b37435eb1f38c5b9fe6126a f8e3a78b83cf49cab6dd5809fafa25b1 RX(iia_γ₀₀) 672a8c748b37435eb1f38c5b9fe6126a--f8e3a78b83cf49cab6dd5809fafa25b1 c1cd9e68686c48b5a7dbfdc63c285783 f8e3a78b83cf49cab6dd5809fafa25b1--c1cd9e68686c48b5a7dbfdc63c285783 980e87319e9645bc991f0303ec06202b c1cd9e68686c48b5a7dbfdc63c285783--980e87319e9645bc991f0303ec06202b 52ff35a2d99146d9b4f7d8822221a89b RY(iia_β₀₃) 980e87319e9645bc991f0303ec06202b--52ff35a2d99146d9b4f7d8822221a89b c312fe1177e141d1a12fc57268b90df4 RX(iia_β₀₀) 52ff35a2d99146d9b4f7d8822221a89b--c312fe1177e141d1a12fc57268b90df4 d6209f9b13224445ae68d0782ab452fe RX(iia_α₁₀) c312fe1177e141d1a12fc57268b90df4--d6209f9b13224445ae68d0782ab452fe 02eee44994224536be0a11175af1fff9 RY(iia_α₁₃) d6209f9b13224445ae68d0782ab452fe--02eee44994224536be0a11175af1fff9 bf2d256484ba486498032522cd0a716f 02eee44994224536be0a11175af1fff9--bf2d256484ba486498032522cd0a716f 27a44e026d634c6e905fb492175e663f bf2d256484ba486498032522cd0a716f--27a44e026d634c6e905fb492175e663f cf629fe6fc674cc88de035bc039bb0b5 RX(iia_γ₁₀) 27a44e026d634c6e905fb492175e663f--cf629fe6fc674cc88de035bc039bb0b5 a5c765186f634ab986e8a0d65ca389a7 cf629fe6fc674cc88de035bc039bb0b5--a5c765186f634ab986e8a0d65ca389a7 12b2dceb4a534212aefd28a5858489f6 a5c765186f634ab986e8a0d65ca389a7--12b2dceb4a534212aefd28a5858489f6 d9a51531f3c5487dbedc1243694439a1 RY(iia_β₁₃) 12b2dceb4a534212aefd28a5858489f6--d9a51531f3c5487dbedc1243694439a1 fe1d1da340b34553a67ef1a42a3a86a7 RX(iia_β₁₀) d9a51531f3c5487dbedc1243694439a1--fe1d1da340b34553a67ef1a42a3a86a7 953de2ac36fc4a448f2ca0004192d753 fe1d1da340b34553a67ef1a42a3a86a7--953de2ac36fc4a448f2ca0004192d753 dcfc3e4473214d1cae7a8bde5df3595c 97261ffed9eb4a2babd45733c93e9e77 RX(iia_α₀₁) 7966559152cb4279991007a55f2bbc31--97261ffed9eb4a2babd45733c93e9e77 68580e0857a24effb9a7e6a691a00751 2 e7b4069bc87e4b819831abefeb920a4f RY(iia_α₀₄) 97261ffed9eb4a2babd45733c93e9e77--e7b4069bc87e4b819831abefeb920a4f 6ff0abcb320846ad914050e24b46c1a0 X e7b4069bc87e4b819831abefeb920a4f--6ff0abcb320846ad914050e24b46c1a0 6ff0abcb320846ad914050e24b46c1a0--3a1ba24f24774ea0a1387c27d5557205 4877eea5ed874ef78dc8be216b965036 6ff0abcb320846ad914050e24b46c1a0--4877eea5ed874ef78dc8be216b965036 f73d7c25089d4767bc33d585106b7a1e RX(iia_γ₀₁) 4877eea5ed874ef78dc8be216b965036--f73d7c25089d4767bc33d585106b7a1e 425aa788fc6c4395a59e2c8efbeb84c5 f73d7c25089d4767bc33d585106b7a1e--425aa788fc6c4395a59e2c8efbeb84c5 1f233a3b3e9d4e508ea55dde464a583e X 425aa788fc6c4395a59e2c8efbeb84c5--1f233a3b3e9d4e508ea55dde464a583e 1f233a3b3e9d4e508ea55dde464a583e--980e87319e9645bc991f0303ec06202b 0db50c5e59074023af6cecffee7015e4 RY(iia_β₀₄) 1f233a3b3e9d4e508ea55dde464a583e--0db50c5e59074023af6cecffee7015e4 40ddb7c9119e416994420d5857270634 RX(iia_β₀₁) 0db50c5e59074023af6cecffee7015e4--40ddb7c9119e416994420d5857270634 edbd291959ad41a9b26d7a1f72d5ecc4 RX(iia_α₁₁) 40ddb7c9119e416994420d5857270634--edbd291959ad41a9b26d7a1f72d5ecc4 dc0e81ba58e8419a8d1cba52bc9fe02e RY(iia_α₁₄) edbd291959ad41a9b26d7a1f72d5ecc4--dc0e81ba58e8419a8d1cba52bc9fe02e 49c6c900e3db449ba80f39450a7a5289 X dc0e81ba58e8419a8d1cba52bc9fe02e--49c6c900e3db449ba80f39450a7a5289 49c6c900e3db449ba80f39450a7a5289--bf2d256484ba486498032522cd0a716f 8ee5396f415d411d955812e7e5b01136 49c6c900e3db449ba80f39450a7a5289--8ee5396f415d411d955812e7e5b01136 33b56a4411ff4f8ab0e46f5c86ac3994 RX(iia_γ₁₁) 8ee5396f415d411d955812e7e5b01136--33b56a4411ff4f8ab0e46f5c86ac3994 39d08667da3f43b2a02c62d66874f4cd 33b56a4411ff4f8ab0e46f5c86ac3994--39d08667da3f43b2a02c62d66874f4cd b53393025e1545efaeed686aa471012c X 39d08667da3f43b2a02c62d66874f4cd--b53393025e1545efaeed686aa471012c b53393025e1545efaeed686aa471012c--12b2dceb4a534212aefd28a5858489f6 08baa996a674485b870293a296a946b9 RY(iia_β₁₄) b53393025e1545efaeed686aa471012c--08baa996a674485b870293a296a946b9 48c169aa28414dea9cbdc468353f0e80 RX(iia_β₁₁) 08baa996a674485b870293a296a946b9--48c169aa28414dea9cbdc468353f0e80 48c169aa28414dea9cbdc468353f0e80--dcfc3e4473214d1cae7a8bde5df3595c 69ad249031114990ac6b656eb46b5914 06ec186aa1794bac9853deb060b48a36 RX(iia_α₀₂) 68580e0857a24effb9a7e6a691a00751--06ec186aa1794bac9853deb060b48a36 d726256848154da1a25f2d1bb4dd267e RY(iia_α₀₅) 06ec186aa1794bac9853deb060b48a36--d726256848154da1a25f2d1bb4dd267e dd9c88901454422fa7e258b0980a395f d726256848154da1a25f2d1bb4dd267e--dd9c88901454422fa7e258b0980a395f 65b07f2b5951411d8f3eb8e5c81e4f21 X dd9c88901454422fa7e258b0980a395f--65b07f2b5951411d8f3eb8e5c81e4f21 65b07f2b5951411d8f3eb8e5c81e4f21--4877eea5ed874ef78dc8be216b965036 670f92618eba44e3a58ea0e5542e1405 RX(iia_γ₀₂) 65b07f2b5951411d8f3eb8e5c81e4f21--670f92618eba44e3a58ea0e5542e1405 c3882375e8e444c095345f0826b96209 X 670f92618eba44e3a58ea0e5542e1405--c3882375e8e444c095345f0826b96209 c3882375e8e444c095345f0826b96209--425aa788fc6c4395a59e2c8efbeb84c5 309df0caeb824f30af52e8163a1ea17f c3882375e8e444c095345f0826b96209--309df0caeb824f30af52e8163a1ea17f 8f82a874b57d4d839edb72e4090cf37f RY(iia_β₀₅) 309df0caeb824f30af52e8163a1ea17f--8f82a874b57d4d839edb72e4090cf37f fe51b94335ad4d909baf89525e944981 RX(iia_β₀₂) 8f82a874b57d4d839edb72e4090cf37f--fe51b94335ad4d909baf89525e944981 4b494eb6883b4c7d8860de36dde8fac2 RX(iia_α₁₂) fe51b94335ad4d909baf89525e944981--4b494eb6883b4c7d8860de36dde8fac2 cb33212ea0b840f3b73f3032a9bdf07c RY(iia_α₁₅) 4b494eb6883b4c7d8860de36dde8fac2--cb33212ea0b840f3b73f3032a9bdf07c 5a009b7f618d4c2a95dcf5b3fe739548 cb33212ea0b840f3b73f3032a9bdf07c--5a009b7f618d4c2a95dcf5b3fe739548 a0dc6176049b4482a88281e9807fe862 X 5a009b7f618d4c2a95dcf5b3fe739548--a0dc6176049b4482a88281e9807fe862 a0dc6176049b4482a88281e9807fe862--8ee5396f415d411d955812e7e5b01136 5a8b8801b4394e15b0c794c20ee0b4ba RX(iia_γ₁₂) a0dc6176049b4482a88281e9807fe862--5a8b8801b4394e15b0c794c20ee0b4ba a27c390ab8c64d6ca71bfcf85b6f96f3 X 5a8b8801b4394e15b0c794c20ee0b4ba--a27c390ab8c64d6ca71bfcf85b6f96f3 a27c390ab8c64d6ca71bfcf85b6f96f3--39d08667da3f43b2a02c62d66874f4cd f26db5395a484dd8b4d73a75465f118d a27c390ab8c64d6ca71bfcf85b6f96f3--f26db5395a484dd8b4d73a75465f118d 7ad2e2f41f3d4c9995b6bd54986407dc RY(iia_β₁₅) f26db5395a484dd8b4d73a75465f118d--7ad2e2f41f3d4c9995b6bd54986407dc 913fa50804aa4b73857dc1b560ba3251 RX(iia_β₁₂) 7ad2e2f41f3d4c9995b6bd54986407dc--913fa50804aa4b73857dc1b560ba3251 913fa50804aa4b73857dc1b560ba3251--69ad249031114990ac6b656eb46b5914