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_70759a15f7b541ba968fa1a95ed346ad Constant Chebyshev FM cluster_ec37f93286f84165bc027f4a57ba2098 Constant Fourier FM df30d47eff0a450fa4bee27ded1fbd8c 0 ab5e1f6c5bd545c5a10586015b0253e7 RX(phi) df30d47eff0a450fa4bee27ded1fbd8c--ab5e1f6c5bd545c5a10586015b0253e7 cd131ce0bc3d4ca38ecff398996cd900 1 4ec415a9cee04d3b911221ece418644b RX(acos(phi)) ab5e1f6c5bd545c5a10586015b0253e7--4ec415a9cee04d3b911221ece418644b 19adeb508cdf413b9588791a7992d606 4ec415a9cee04d3b911221ece418644b--19adeb508cdf413b9588791a7992d606 4254c43c40b148cc8b4e92e7b1cdca5d 34a1dfd1f2444cbd97e9b3ad1da66698 RX(phi) cd131ce0bc3d4ca38ecff398996cd900--34a1dfd1f2444cbd97e9b3ad1da66698 646073a27788456eb5e40b03420217cf 2 d730d8de64f84dd4a5f8f75dd1110c02 RX(acos(phi)) 34a1dfd1f2444cbd97e9b3ad1da66698--d730d8de64f84dd4a5f8f75dd1110c02 d730d8de64f84dd4a5f8f75dd1110c02--4254c43c40b148cc8b4e92e7b1cdca5d 88b39a0d6f50444e823cd75f23a88afb 51659df67c314f1f8ea98007a7066b71 RX(phi) 646073a27788456eb5e40b03420217cf--51659df67c314f1f8ea98007a7066b71 8582959b143f4298a632532d5132ea84 RX(acos(phi)) 51659df67c314f1f8ea98007a7066b71--8582959b143f4298a632532d5132ea84 8582959b143f4298a632532d5132ea84--88b39a0d6f50444e823cd75f23a88afb

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_63f4f6e37dfb40f0a3984b3acaaea4c4 Constant <function custom_fn at 0x7fa95bd1b9a0> FM cluster_9fba9a5b07d940b181c74bc910e88516 Constant asin FM 95e82857bb6746068d424e4a9dc25c8e 0 23a5befc273a41ce88dda7c675158670 RX(asin(phi)) 95e82857bb6746068d424e4a9dc25c8e--23a5befc273a41ce88dda7c675158670 bdb629a1695440e7b82f6b39b96de200 1 cb222f9059154e02a0db7883ef432a0d RX(phi**2 + asin(phi)) 23a5befc273a41ce88dda7c675158670--cb222f9059154e02a0db7883ef432a0d ee80d0102752485c8d9cd4ba4d9b9aa6 cb222f9059154e02a0db7883ef432a0d--ee80d0102752485c8d9cd4ba4d9b9aa6 6d2999d8e65a431786c1b4c2c7cd6121 3f38214b6d0e493da58b1fc467824642 RX(asin(phi)) bdb629a1695440e7b82f6b39b96de200--3f38214b6d0e493da58b1fc467824642 a2732d4772544aef99376016c8907ab0 2 1ae98cf3e11a4974ab42b1e9335fe60d RX(phi**2 + asin(phi)) 3f38214b6d0e493da58b1fc467824642--1ae98cf3e11a4974ab42b1e9335fe60d 1ae98cf3e11a4974ab42b1e9335fe60d--6d2999d8e65a431786c1b4c2c7cd6121 46a5aa0a22cf476eae0bebd500abaec9 6c1f7ebc67d943088731a0b0eec9fa78 RX(asin(phi)) a2732d4772544aef99376016c8907ab0--6c1f7ebc67d943088731a0b0eec9fa78 99fe1e31cae1422fbec39e9f0061e250 RX(phi**2 + asin(phi)) 6c1f7ebc67d943088731a0b0eec9fa78--99fe1e31cae1422fbec39e9f0061e250 99fe1e31cae1422fbec39e9f0061e250--46a5aa0a22cf476eae0bebd500abaec9

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_ac0ab80d2f02456dbc3746216d1a309d Exponential Fourier FM cluster_bf970cf827494d49b7b785c88941d5c9 Constant Fourier FM cluster_b22eed5cdbaf430a9a463f3f5fac7718 Tower Fourier FM 315f50fca82f4c57acf7dbea2192d4db 0 2ce1475ba4844e9380e89299d37a8e6d RX(phi) 315f50fca82f4c57acf7dbea2192d4db--2ce1475ba4844e9380e89299d37a8e6d 1bb4bc504ec0499496e2360a3aec60cf 1 cfa0bd5d7b794885998303c5d88d7554 RX(1.0*phi) 2ce1475ba4844e9380e89299d37a8e6d--cfa0bd5d7b794885998303c5d88d7554 f9ef39338ce44e07a4707cfa108975d0 RX(1.0*phi) cfa0bd5d7b794885998303c5d88d7554--f9ef39338ce44e07a4707cfa108975d0 98aee60b727f4b25bf449d460abba9bd f9ef39338ce44e07a4707cfa108975d0--98aee60b727f4b25bf449d460abba9bd e041cfb6e4054bf0b4a546109901de1d 75f6b3e87eee4cdc9661b96b5eecb7e6 RX(phi) 1bb4bc504ec0499496e2360a3aec60cf--75f6b3e87eee4cdc9661b96b5eecb7e6 e4ecd23a654044caa5e5e4ccff01a0f6 2 2727a0625a744f00b1290ccf0e4d5be3 RX(2.0*phi) 75f6b3e87eee4cdc9661b96b5eecb7e6--2727a0625a744f00b1290ccf0e4d5be3 0c3d32cd36674859a705fc37b25a10b4 RX(2.0*phi) 2727a0625a744f00b1290ccf0e4d5be3--0c3d32cd36674859a705fc37b25a10b4 0c3d32cd36674859a705fc37b25a10b4--e041cfb6e4054bf0b4a546109901de1d f9c530649a2144e58ace9036bdb7cb4e a355c46cc0154ba883d1fadd7596ae90 RX(phi) e4ecd23a654044caa5e5e4ccff01a0f6--a355c46cc0154ba883d1fadd7596ae90 0aeab37ae1054bc1a385c43e8fcfecb7 3 f0e21f33bb5f4e10b63dc69752c81130 RX(3.0*phi) a355c46cc0154ba883d1fadd7596ae90--f0e21f33bb5f4e10b63dc69752c81130 22e3252634bc4791907623c625d87c26 RX(4.0*phi) f0e21f33bb5f4e10b63dc69752c81130--22e3252634bc4791907623c625d87c26 22e3252634bc4791907623c625d87c26--f9c530649a2144e58ace9036bdb7cb4e bbd0658735d6452fb8a73c1cab4e9fea 45b51fced9854b5c8d174572b9697243 RX(phi) 0aeab37ae1054bc1a385c43e8fcfecb7--45b51fced9854b5c8d174572b9697243 af21e7a2301448688d5c2993937982d1 4 4a0436187c6e49a38493556c5fc15fcc RX(4.0*phi) 45b51fced9854b5c8d174572b9697243--4a0436187c6e49a38493556c5fc15fcc e49100b9c7c047c4ae9fd5aa72589983 RX(8.0*phi) 4a0436187c6e49a38493556c5fc15fcc--e49100b9c7c047c4ae9fd5aa72589983 e49100b9c7c047c4ae9fd5aa72589983--bbd0658735d6452fb8a73c1cab4e9fea f541f3cc8f3b46d5838fdb2226c03e05 eda9f2c74653431a9874eaaf14e319b3 RX(phi) af21e7a2301448688d5c2993937982d1--eda9f2c74653431a9874eaaf14e319b3 0abc12f8888a49f6bd1de345d0dec3fb RX(5.0*phi) eda9f2c74653431a9874eaaf14e319b3--0abc12f8888a49f6bd1de345d0dec3fb cb25a55f8f014fb0babac909cb97c7d5 RX(16.0*phi) 0abc12f8888a49f6bd1de345d0dec3fb--cb25a55f8f014fb0babac909cb97c7d5 cb25a55f8f014fb0babac909cb97c7d5--f541f3cc8f3b46d5838fdb2226c03e05

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 86378aac4ea64af7a2d68e9ccc0c0335 0 67e602d0bc5740ac9a1bd7a6b47b10e4 RX(1.0*acos(phi)) 86378aac4ea64af7a2d68e9ccc0c0335--67e602d0bc5740ac9a1bd7a6b47b10e4 4c41db90d437428cbf5a98fdcf23a5b6 1 08540c2878fc48929b953365c82d7ffa 67e602d0bc5740ac9a1bd7a6b47b10e4--08540c2878fc48929b953365c82d7ffa 74a94c0700c142ffbbf67226ff59e5ee 5b0b92663d104b93beeeea87ebd7cbd6 RX(1.414*acos(phi)) 4c41db90d437428cbf5a98fdcf23a5b6--5b0b92663d104b93beeeea87ebd7cbd6 054551ae1c1d4e23b2fe33fdfdd44e67 2 5b0b92663d104b93beeeea87ebd7cbd6--74a94c0700c142ffbbf67226ff59e5ee 4cbc9e14a27c45de81199f4342ae9351 0a960d0674934982953585e94e18a0e9 RX(1.732*acos(phi)) 054551ae1c1d4e23b2fe33fdfdd44e67--0a960d0674934982953585e94e18a0e9 2721a8e528a54bc193eedcf7390152d1 3 0a960d0674934982953585e94e18a0e9--4cbc9e14a27c45de81199f4342ae9351 7ebc082ce39447dcb0ff6822b3c0cca7 b57043ad8c064fbf9f0bf299d334e33d RX(2.0*acos(phi)) 2721a8e528a54bc193eedcf7390152d1--b57043ad8c064fbf9f0bf299d334e33d 6abb19dc34964233a76c84da08a6b7f5 4 b57043ad8c064fbf9f0bf299d334e33d--7ebc082ce39447dcb0ff6822b3c0cca7 e9df0f452d4a4f32a516a649060c7247 80d9da3c45e942c1867f6c45d2855583 RX(2.236*acos(phi)) 6abb19dc34964233a76c84da08a6b7f5--80d9da3c45e942c1867f6c45d2855583 80d9da3c45e942c1867f6c45d2855583--e9df0f452d4a4f32a516a649060c7247

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 24dcefa30e36428e85103bcb217eff7a 0 a3ca17fc3cd84f3e8316fff4772e9641 RX(1.0*phi*w₀) 24dcefa30e36428e85103bcb217eff7a--a3ca17fc3cd84f3e8316fff4772e9641 82091263097841e3935ca44bf296c323 1 9e814eadc40f4e13a9e3f327d83dc238 a3ca17fc3cd84f3e8316fff4772e9641--9e814eadc40f4e13a9e3f327d83dc238 9cb690ca654041579b0855f588f0165e 9951fbc7640048b68c1185b928cbd5e0 RX(2.0*phi*w₁) 82091263097841e3935ca44bf296c323--9951fbc7640048b68c1185b928cbd5e0 06b9791944634c6899b07d1e97747170 2 9951fbc7640048b68c1185b928cbd5e0--9cb690ca654041579b0855f588f0165e fb0b621a808c4c07b4b4e05d42d46de5 9eea5bd6614448b2956786c17a8ec50b RX(4.0*phi*w₂) 06b9791944634c6899b07d1e97747170--9eea5bd6614448b2956786c17a8ec50b 5cf6f4b8573c4ebd9c25326f792512e8 3 9eea5bd6614448b2956786c17a8ec50b--fb0b621a808c4c07b4b4e05d42d46de5 61a2c125b42f4bb8802390ab34549909 546249580d9b417081cd02f92bd03b42 RX(8.0*phi*w₃) 5cf6f4b8573c4ebd9c25326f792512e8--546249580d9b417081cd02f92bd03b42 14dff316e6bb44be9a65ccfa444654ec 4 546249580d9b417081cd02f92bd03b42--61a2c125b42f4bb8802390ab34549909 eb4b66cab3ab48a39799eec3c0b01f51 88d7aa01b01e40bbb59029a9412aa968 RX(16.0*phi*w₄) 14dff316e6bb44be9a65ccfa444654ec--88d7aa01b01e40bbb59029a9412aa968 88d7aa01b01e40bbb59029a9412aa968--eb4b66cab3ab48a39799eec3c0b01f51

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 160c0cc08c0a4e5eb793765350ea360f 0 3799b1bc9151408a843b68b55f65c7cc RY(80.0*acos(w₄*(0.667*x + 1.667))) 160c0cc08c0a4e5eb793765350ea360f--3799b1bc9151408a843b68b55f65c7cc 76f3a1c92e634cd4ad1c8f1c6805aff9 1 e4f1b5e0dae34fed9b17a336052e88c3 3799b1bc9151408a843b68b55f65c7cc--e4f1b5e0dae34fed9b17a336052e88c3 92eb864e2ba545908e9b427de052d1b7 a3aa3621c03e4d1bab516b49cec1f241 RY(40.0*acos(w₃*(0.667*x + 1.667))) 76f3a1c92e634cd4ad1c8f1c6805aff9--a3aa3621c03e4d1bab516b49cec1f241 6129b6e10d6c4527afc93cb17c614150 2 a3aa3621c03e4d1bab516b49cec1f241--92eb864e2ba545908e9b427de052d1b7 4a315f6899a242cda7a2c6f5659b5d3a bd5b0fcbfb9f4bde9aead8e2143363b9 RY(20.0*acos(w₂*(0.667*x + 1.667))) 6129b6e10d6c4527afc93cb17c614150--bd5b0fcbfb9f4bde9aead8e2143363b9 077bc08c159e428fa7e5020770b68a09 3 bd5b0fcbfb9f4bde9aead8e2143363b9--4a315f6899a242cda7a2c6f5659b5d3a f30cf73713bf469f86fcdf285064e280 112e6aba33764a49adf18110d5c41116 RY(10.0*acos(w₁*(0.667*x + 1.667))) 077bc08c159e428fa7e5020770b68a09--112e6aba33764a49adf18110d5c41116 729db48b12274b5789866a74103c64c4 4 112e6aba33764a49adf18110d5c41116--f30cf73713bf469f86fcdf285064e280 595b4e645c8849ff9707438d9bba4368 393c2df2c9b54c9d8a34f81b9f2bbc2e RY(5.0*acos(w₀*(0.667*x + 1.667))) 729db48b12274b5789866a74103c64c4--393c2df2c9b54c9d8a34f81b9f2bbc2e 393c2df2c9b54c9d8a34f81b9f2bbc2e--595b4e645c8849ff9707438d9bba4368

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 87e26f1900ab4f91a741dd609e7afbe8 0 d45df327a2d24085b7781de05baed308 RX(theta₀) 87e26f1900ab4f91a741dd609e7afbe8--d45df327a2d24085b7781de05baed308 379f11f69f8d415eac1285e556d5db63 1 d5ec6d8f021c49fe8264d31facd6c602 RY(theta₃) d45df327a2d24085b7781de05baed308--d5ec6d8f021c49fe8264d31facd6c602 48d25e638fed4226a69c7c1452d49379 RX(theta₆) d5ec6d8f021c49fe8264d31facd6c602--48d25e638fed4226a69c7c1452d49379 8d0c51a300ae4635ac503019b47dcc41 48d25e638fed4226a69c7c1452d49379--8d0c51a300ae4635ac503019b47dcc41 573915ae04e441a185f3297def484c23 8d0c51a300ae4635ac503019b47dcc41--573915ae04e441a185f3297def484c23 517b93f674a247fda9297862505faebd RX(theta₉) 573915ae04e441a185f3297def484c23--517b93f674a247fda9297862505faebd 065c4acb7b13460e81c1a5c95c24b203 RY(theta₁₂) 517b93f674a247fda9297862505faebd--065c4acb7b13460e81c1a5c95c24b203 0ce545b1272347edbbcacf089be32bee RX(theta₁₅) 065c4acb7b13460e81c1a5c95c24b203--0ce545b1272347edbbcacf089be32bee 76fd639e367f49409b42bcdd53844d71 0ce545b1272347edbbcacf089be32bee--76fd639e367f49409b42bcdd53844d71 750306c08d1d477291571a65d0fe49fc 76fd639e367f49409b42bcdd53844d71--750306c08d1d477291571a65d0fe49fc c23aa6e8ca0d457487e5904b5d93b1a6 750306c08d1d477291571a65d0fe49fc--c23aa6e8ca0d457487e5904b5d93b1a6 50f2c8a10e7d48cd8a64c7628c920de9 6c36cfb3cb2b446c81f9ce9cd0cefe28 RX(theta₁) 379f11f69f8d415eac1285e556d5db63--6c36cfb3cb2b446c81f9ce9cd0cefe28 724a8e7e047047778a88e5ad4447cda3 2 7bf6d3d8044e4b2a8c25881af72cacff RY(theta₄) 6c36cfb3cb2b446c81f9ce9cd0cefe28--7bf6d3d8044e4b2a8c25881af72cacff 8831e90407e04f598992d7bbec903cde RX(theta₇) 7bf6d3d8044e4b2a8c25881af72cacff--8831e90407e04f598992d7bbec903cde 4a0aef29752f4f98b90218550a202281 X 8831e90407e04f598992d7bbec903cde--4a0aef29752f4f98b90218550a202281 4a0aef29752f4f98b90218550a202281--8d0c51a300ae4635ac503019b47dcc41 3078ef0293e548ccbde8396856c3a0ec 4a0aef29752f4f98b90218550a202281--3078ef0293e548ccbde8396856c3a0ec 2085445f8d0047c2871d9a8a42330b0a RX(theta₁₀) 3078ef0293e548ccbde8396856c3a0ec--2085445f8d0047c2871d9a8a42330b0a 950b5a65124d470f84a8a61b00fbc71d RY(theta₁₃) 2085445f8d0047c2871d9a8a42330b0a--950b5a65124d470f84a8a61b00fbc71d e30ab41e994e479cbac1dde9c06eeafc RX(theta₁₆) 950b5a65124d470f84a8a61b00fbc71d--e30ab41e994e479cbac1dde9c06eeafc 0a3fee6ccd214346a23ecae07ea45a0c X e30ab41e994e479cbac1dde9c06eeafc--0a3fee6ccd214346a23ecae07ea45a0c 0a3fee6ccd214346a23ecae07ea45a0c--76fd639e367f49409b42bcdd53844d71 f7a60b1f102647d8acc76f1a236989fe 0a3fee6ccd214346a23ecae07ea45a0c--f7a60b1f102647d8acc76f1a236989fe f7a60b1f102647d8acc76f1a236989fe--50f2c8a10e7d48cd8a64c7628c920de9 ab4c0a9e2edf45899b5ed600340ff5cb 0a19365e7ea14278afbd95987b317a85 RX(theta₂) 724a8e7e047047778a88e5ad4447cda3--0a19365e7ea14278afbd95987b317a85 5dd206cbe1004f929a707409785764a7 RY(theta₅) 0a19365e7ea14278afbd95987b317a85--5dd206cbe1004f929a707409785764a7 11868c2047434d2e838bb1550435e70e RX(theta₈) 5dd206cbe1004f929a707409785764a7--11868c2047434d2e838bb1550435e70e c86911634a2e4e68b2f95f22e9750971 11868c2047434d2e838bb1550435e70e--c86911634a2e4e68b2f95f22e9750971 67d4c1a0d4604643bb17b792ed0b2610 X c86911634a2e4e68b2f95f22e9750971--67d4c1a0d4604643bb17b792ed0b2610 67d4c1a0d4604643bb17b792ed0b2610--3078ef0293e548ccbde8396856c3a0ec 7965dd3bccaa4f9da2f808f64df0467f RX(theta₁₁) 67d4c1a0d4604643bb17b792ed0b2610--7965dd3bccaa4f9da2f808f64df0467f 8f4f8c28b1ec4e74acc0fa9d30f9322e RY(theta₁₄) 7965dd3bccaa4f9da2f808f64df0467f--8f4f8c28b1ec4e74acc0fa9d30f9322e 3431f80a34b043cc84e7880028c64cdb RX(theta₁₇) 8f4f8c28b1ec4e74acc0fa9d30f9322e--3431f80a34b043cc84e7880028c64cdb 09a90345b4b849eaba2245152ea60292 3431f80a34b043cc84e7880028c64cdb--09a90345b4b849eaba2245152ea60292 97bfac7b168640a299b4f520fea9d651 X 09a90345b4b849eaba2245152ea60292--97bfac7b168640a299b4f520fea9d651 97bfac7b168640a299b4f520fea9d651--f7a60b1f102647d8acc76f1a236989fe 97bfac7b168640a299b4f520fea9d651--ab4c0a9e2edf45899b5ed600340ff5cb

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 94ccc9dfcf3147a09b0b4739849a1c4f 0 a856c499bd09468092a53aac5c3accd6 RX(phi₀) 94ccc9dfcf3147a09b0b4739849a1c4f--a856c499bd09468092a53aac5c3accd6 473a1ec183ac4cb4a98fce8c824adc99 1 866dcac307df470582e51a52607c9006 RY(phi₃) a856c499bd09468092a53aac5c3accd6--866dcac307df470582e51a52607c9006 2bdb67bfc07445a7a84fb57a277206da RX(phi₆) 866dcac307df470582e51a52607c9006--2bdb67bfc07445a7a84fb57a277206da 4f8b206562994438a5501942f21758fb 2bdb67bfc07445a7a84fb57a277206da--4f8b206562994438a5501942f21758fb 6dfbeb30902d418e9e64229680fd5760 4f8b206562994438a5501942f21758fb--6dfbeb30902d418e9e64229680fd5760 2e4a46b04ef340b98841046f7498a644 RX(phi₉) 6dfbeb30902d418e9e64229680fd5760--2e4a46b04ef340b98841046f7498a644 4a6381343e614273b24c02a4cc923ed1 RY(phi₁₂) 2e4a46b04ef340b98841046f7498a644--4a6381343e614273b24c02a4cc923ed1 fb5705b3215946d4b30e81c7b553f41b RX(phi₁₅) 4a6381343e614273b24c02a4cc923ed1--fb5705b3215946d4b30e81c7b553f41b 8ad3248ed33e4933b0e9c1ecf6ac05c6 fb5705b3215946d4b30e81c7b553f41b--8ad3248ed33e4933b0e9c1ecf6ac05c6 efd053d8e09d43b1afd477ca26145a32 8ad3248ed33e4933b0e9c1ecf6ac05c6--efd053d8e09d43b1afd477ca26145a32 74466c98f16a4d56a9a67cceea07fb41 efd053d8e09d43b1afd477ca26145a32--74466c98f16a4d56a9a67cceea07fb41 cd1e0f93b2164a3682af330b070a13ed 1b8cc26353a940c3bfb50b2fb891db7a RX(phi₁) 473a1ec183ac4cb4a98fce8c824adc99--1b8cc26353a940c3bfb50b2fb891db7a 9404ca30cb624f8ea8a9cc031424ce09 2 fb6c4f0fc66443abbcbbd921a6ca1ebe RY(phi₄) 1b8cc26353a940c3bfb50b2fb891db7a--fb6c4f0fc66443abbcbbd921a6ca1ebe cc1cb6eff0ce4ceaad787a143a1b13b7 RX(phi₇) fb6c4f0fc66443abbcbbd921a6ca1ebe--cc1cb6eff0ce4ceaad787a143a1b13b7 d59af3602c954c2598518b82bac88220 PHASE(phi_ent₀) cc1cb6eff0ce4ceaad787a143a1b13b7--d59af3602c954c2598518b82bac88220 d59af3602c954c2598518b82bac88220--4f8b206562994438a5501942f21758fb 03660a1620fc492c8c9ce3e8be347318 d59af3602c954c2598518b82bac88220--03660a1620fc492c8c9ce3e8be347318 943321c73d194610bc6faa61ea95d73c RX(phi₁₀) 03660a1620fc492c8c9ce3e8be347318--943321c73d194610bc6faa61ea95d73c 468a4e96df9f43f3b93c3846abde1ecd RY(phi₁₃) 943321c73d194610bc6faa61ea95d73c--468a4e96df9f43f3b93c3846abde1ecd f366b184b16146d3ba08ede5bb4f3ea7 RX(phi₁₆) 468a4e96df9f43f3b93c3846abde1ecd--f366b184b16146d3ba08ede5bb4f3ea7 1497f353965046e09de7cda4e000e78a PHASE(phi_ent₂) f366b184b16146d3ba08ede5bb4f3ea7--1497f353965046e09de7cda4e000e78a 1497f353965046e09de7cda4e000e78a--8ad3248ed33e4933b0e9c1ecf6ac05c6 d39c10d176514174a1c3d9332c045db5 1497f353965046e09de7cda4e000e78a--d39c10d176514174a1c3d9332c045db5 d39c10d176514174a1c3d9332c045db5--cd1e0f93b2164a3682af330b070a13ed c053c23767f047af815e97f944bc4a8e 986505b1667b40029ca2b269863cd7e7 RX(phi₂) 9404ca30cb624f8ea8a9cc031424ce09--986505b1667b40029ca2b269863cd7e7 69c85ee4b26b436a868d0e7e8c13b4e2 RY(phi₅) 986505b1667b40029ca2b269863cd7e7--69c85ee4b26b436a868d0e7e8c13b4e2 4f02c5aae4474aa296318d07f167c227 RX(phi₈) 69c85ee4b26b436a868d0e7e8c13b4e2--4f02c5aae4474aa296318d07f167c227 847be7a087e54a07abf4c1d6d38a2629 4f02c5aae4474aa296318d07f167c227--847be7a087e54a07abf4c1d6d38a2629 e57bdb294f814420b2b42d003248838e PHASE(phi_ent₁) 847be7a087e54a07abf4c1d6d38a2629--e57bdb294f814420b2b42d003248838e e57bdb294f814420b2b42d003248838e--03660a1620fc492c8c9ce3e8be347318 4e97e953a8b5407db7fa4623c4fcdf9c RX(phi₁₁) e57bdb294f814420b2b42d003248838e--4e97e953a8b5407db7fa4623c4fcdf9c 5fb1d65413614479897f416290970202 RY(phi₁₄) 4e97e953a8b5407db7fa4623c4fcdf9c--5fb1d65413614479897f416290970202 1f8aa3129ec84c1f953c216c730206a3 RX(phi₁₇) 5fb1d65413614479897f416290970202--1f8aa3129ec84c1f953c216c730206a3 2ede78234a7e4584be51126b17474439 1f8aa3129ec84c1f953c216c730206a3--2ede78234a7e4584be51126b17474439 e0955b1e3a21404b91d12787b0ef3c45 PHASE(phi_ent₃) 2ede78234a7e4584be51126b17474439--e0955b1e3a21404b91d12787b0ef3c45 e0955b1e3a21404b91d12787b0ef3c45--d39c10d176514174a1c3d9332c045db5 e0955b1e3a21404b91d12787b0ef3c45--c053c23767f047af815e97f944bc4a8e

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_90bbb123a8c84f66a6af9dd5dd938b55 cluster_e001db1282a44d68b593a822b806c777 80d06fb77d76484ebc3eab6863f1e560 0 954d0ce676df45499d6daa1f6c8c6d90 RX(theta₀) 80d06fb77d76484ebc3eab6863f1e560--954d0ce676df45499d6daa1f6c8c6d90 b0777dd35e2348b4847300bdc9426ab1 1 50ed206a705a422fadcae1e1d5d86650 RY(theta₃) 954d0ce676df45499d6daa1f6c8c6d90--50ed206a705a422fadcae1e1d5d86650 8c32b021909e4bb189619add27198923 RX(theta₆) 50ed206a705a422fadcae1e1d5d86650--8c32b021909e4bb189619add27198923 f0e171ac89ce402595933de51c1d1cc3 HamEvo 8c32b021909e4bb189619add27198923--f0e171ac89ce402595933de51c1d1cc3 e05eec5a9320419d98d478a0e6eb1247 RX(theta₉) f0e171ac89ce402595933de51c1d1cc3--e05eec5a9320419d98d478a0e6eb1247 af7074b2cac74c0f8260e29f603dfc52 RY(theta₁₂) e05eec5a9320419d98d478a0e6eb1247--af7074b2cac74c0f8260e29f603dfc52 4494612d7fa943e6b28ce6d959397bd4 RX(theta₁₅) af7074b2cac74c0f8260e29f603dfc52--4494612d7fa943e6b28ce6d959397bd4 22da7b7b32a84afeb4d56bc424e0fd3f HamEvo 4494612d7fa943e6b28ce6d959397bd4--22da7b7b32a84afeb4d56bc424e0fd3f 3ea1cdbcc3a54ceb984844639eb4b856 22da7b7b32a84afeb4d56bc424e0fd3f--3ea1cdbcc3a54ceb984844639eb4b856 392952b41b394f80a228e75d5346d26d 7cae968acf4c4b2d917416d0183f3467 RX(theta₁) b0777dd35e2348b4847300bdc9426ab1--7cae968acf4c4b2d917416d0183f3467 2f2a2a1cf9b94f36ba862a06382cae1c 2 118a36650524496f8fd490e55419ee0e RY(theta₄) 7cae968acf4c4b2d917416d0183f3467--118a36650524496f8fd490e55419ee0e 44eef4b9476f4f03ac91016d93b21684 RX(theta₇) 118a36650524496f8fd490e55419ee0e--44eef4b9476f4f03ac91016d93b21684 e22ab3e0a14b400e853bdbf3dcb476dd t = theta_t₀ 44eef4b9476f4f03ac91016d93b21684--e22ab3e0a14b400e853bdbf3dcb476dd 96bf7fd5f51b4b7e856ed4a218bbb47f RX(theta₁₀) e22ab3e0a14b400e853bdbf3dcb476dd--96bf7fd5f51b4b7e856ed4a218bbb47f 39a95292a4bb4da589cb58af6e005a32 RY(theta₁₃) 96bf7fd5f51b4b7e856ed4a218bbb47f--39a95292a4bb4da589cb58af6e005a32 ac4bac55c5534ceea735dc6bb1657a9d RX(theta₁₆) 39a95292a4bb4da589cb58af6e005a32--ac4bac55c5534ceea735dc6bb1657a9d c7bdcfd2d0414215b272a0c4d81a13dd t = theta_t₁ ac4bac55c5534ceea735dc6bb1657a9d--c7bdcfd2d0414215b272a0c4d81a13dd c7bdcfd2d0414215b272a0c4d81a13dd--392952b41b394f80a228e75d5346d26d 0d805eeae53540e090665b5daa44a202 8518b27cea66445ba0bb2026b0c49aa2 RX(theta₂) 2f2a2a1cf9b94f36ba862a06382cae1c--8518b27cea66445ba0bb2026b0c49aa2 fa7991544f184d95b85ff2b5a80356cd RY(theta₅) 8518b27cea66445ba0bb2026b0c49aa2--fa7991544f184d95b85ff2b5a80356cd c48abfc99a10426593b4d096ce402bca RX(theta₈) fa7991544f184d95b85ff2b5a80356cd--c48abfc99a10426593b4d096ce402bca e6cf595a681e492d9ad9e9fa5fca3476 c48abfc99a10426593b4d096ce402bca--e6cf595a681e492d9ad9e9fa5fca3476 8ae205c78b634af1ba5e8809b7dd450b RX(theta₁₁) e6cf595a681e492d9ad9e9fa5fca3476--8ae205c78b634af1ba5e8809b7dd450b 05964090798247af95c6904b9cb9ddf1 RY(theta₁₄) 8ae205c78b634af1ba5e8809b7dd450b--05964090798247af95c6904b9cb9ddf1 863093ff24ea401b91720c7a528377c1 RX(theta₁₇) 05964090798247af95c6904b9cb9ddf1--863093ff24ea401b91720c7a528377c1 e9859f0fec6c4f3fb8ef04abd70a4362 863093ff24ea401b91720c7a528377c1--e9859f0fec6c4f3fb8ef04abd70a4362 e9859f0fec6c4f3fb8ef04abd70a4362--0d805eeae53540e090665b5daa44a202

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_9ab2d68ff1554978898fcba4200f988f cluster_a7f62477e669425b97ea7be359b6fb49 b42e17e3643d4c29a2a80954acdd9512 0 41a9543075d046e7921215fec4e1b267 RX(theta₀) b42e17e3643d4c29a2a80954acdd9512--41a9543075d046e7921215fec4e1b267 f2bc9c0bfc6f4880b8a984d55594259e 1 1d80a32470e34dff89b4a236d581a433 RY(theta₆) 41a9543075d046e7921215fec4e1b267--1d80a32470e34dff89b4a236d581a433 f0d0d050029a40c5b1199d95f2da1e6e RX(theta₁₂) 1d80a32470e34dff89b4a236d581a433--f0d0d050029a40c5b1199d95f2da1e6e ad4e4cddd8924ecc83f671b4e3c34f21 f0d0d050029a40c5b1199d95f2da1e6e--ad4e4cddd8924ecc83f671b4e3c34f21 104fb609b34a4d7b91be6cf77e186e58 RX(theta₁₈) ad4e4cddd8924ecc83f671b4e3c34f21--104fb609b34a4d7b91be6cf77e186e58 f4e5fbda81324d16a6f392382ac1aacd RY(theta₂₄) 104fb609b34a4d7b91be6cf77e186e58--f4e5fbda81324d16a6f392382ac1aacd d1084d89d4c342fabbfaf74aded9b807 RX(theta₃₀) f4e5fbda81324d16a6f392382ac1aacd--d1084d89d4c342fabbfaf74aded9b807 256c13334b2a49cb8968bb635acc644b d1084d89d4c342fabbfaf74aded9b807--256c13334b2a49cb8968bb635acc644b f078c4257975480cb73c1f41f95f9aa2 256c13334b2a49cb8968bb635acc644b--f078c4257975480cb73c1f41f95f9aa2 bfe2e0fee8b24881a9f97c81eea3ec2b 68966f600ecb48e09836ed4988b19cc6 RX(theta₁) f2bc9c0bfc6f4880b8a984d55594259e--68966f600ecb48e09836ed4988b19cc6 dcb356cabedf424e861d99d4cfc5edec 2 f014d938d73b44f897b7a07274a6d336 RY(theta₇) 68966f600ecb48e09836ed4988b19cc6--f014d938d73b44f897b7a07274a6d336 4fa658deb0d14a89b8643a05b8cbc625 RX(theta₁₃) f014d938d73b44f897b7a07274a6d336--4fa658deb0d14a89b8643a05b8cbc625 afc4aa63cb614a399532da46fdd7ec44 4fa658deb0d14a89b8643a05b8cbc625--afc4aa63cb614a399532da46fdd7ec44 b3e40a97181744ca8f8d3c8f6ca21624 RX(theta₁₉) afc4aa63cb614a399532da46fdd7ec44--b3e40a97181744ca8f8d3c8f6ca21624 c75e1da9e7c140b8bcfe23b948c6b0d5 RY(theta₂₅) b3e40a97181744ca8f8d3c8f6ca21624--c75e1da9e7c140b8bcfe23b948c6b0d5 2e12b6d51e5e4efeac7e61a6e5a504df RX(theta₃₁) c75e1da9e7c140b8bcfe23b948c6b0d5--2e12b6d51e5e4efeac7e61a6e5a504df 51aa61f7f40f4f1ca62a397a2533b91d 2e12b6d51e5e4efeac7e61a6e5a504df--51aa61f7f40f4f1ca62a397a2533b91d 51aa61f7f40f4f1ca62a397a2533b91d--bfe2e0fee8b24881a9f97c81eea3ec2b a2d2944c18e24e8bb8dbac6e7ee3df0d 608ff2cd5a104d5aa6f1878871cdd2fe RX(theta₂) dcb356cabedf424e861d99d4cfc5edec--608ff2cd5a104d5aa6f1878871cdd2fe 0a2b17f2a574479691babc27a498a7da 3 1a089ba9d3024ff88cfbb0f4c49b1e0d RY(theta₈) 608ff2cd5a104d5aa6f1878871cdd2fe--1a089ba9d3024ff88cfbb0f4c49b1e0d b7d36a99f4194750876d45904e2e81d8 RX(theta₁₄) 1a089ba9d3024ff88cfbb0f4c49b1e0d--b7d36a99f4194750876d45904e2e81d8 b91afc66cf7b45a892192c2b366421b6 HamEvo b7d36a99f4194750876d45904e2e81d8--b91afc66cf7b45a892192c2b366421b6 1d3ca6e9a48945a99952813ec8ff40e4 RX(theta₂₀) b91afc66cf7b45a892192c2b366421b6--1d3ca6e9a48945a99952813ec8ff40e4 a42fd600d1fa44ffbe98946dfd0d9135 RY(theta₂₆) 1d3ca6e9a48945a99952813ec8ff40e4--a42fd600d1fa44ffbe98946dfd0d9135 b3a2990c4f7f46caa4cf56218486a3b4 RX(theta₃₂) a42fd600d1fa44ffbe98946dfd0d9135--b3a2990c4f7f46caa4cf56218486a3b4 80f7d4eacd5b4a9097cae54513205ba0 HamEvo b3a2990c4f7f46caa4cf56218486a3b4--80f7d4eacd5b4a9097cae54513205ba0 80f7d4eacd5b4a9097cae54513205ba0--a2d2944c18e24e8bb8dbac6e7ee3df0d 04d532c38595473283e8dd455bc1c083 0453759e2c16484e93edeae04db54612 RX(theta₃) 0a2b17f2a574479691babc27a498a7da--0453759e2c16484e93edeae04db54612 a698d37eb71246fb96a17968c198d7b3 4 301edb7612b44dbc893b4a40485fb31b RY(theta₉) 0453759e2c16484e93edeae04db54612--301edb7612b44dbc893b4a40485fb31b 3a4239d8069d4023b24e948b0ab3e432 RX(theta₁₅) 301edb7612b44dbc893b4a40485fb31b--3a4239d8069d4023b24e948b0ab3e432 da580f001e2a4e5a8907ef92551f3651 t = theta_t₀ 3a4239d8069d4023b24e948b0ab3e432--da580f001e2a4e5a8907ef92551f3651 77764db506794532bdaaf1a326f2b05e RX(theta₂₁) da580f001e2a4e5a8907ef92551f3651--77764db506794532bdaaf1a326f2b05e dedf9a142eaf401cac756b47b5bb8759 RY(theta₂₇) 77764db506794532bdaaf1a326f2b05e--dedf9a142eaf401cac756b47b5bb8759 041f96a46ddf45a1839abb3f989f2444 RX(theta₃₃) dedf9a142eaf401cac756b47b5bb8759--041f96a46ddf45a1839abb3f989f2444 c8052936438d484d9b414f50703e1ec4 t = theta_t₁ 041f96a46ddf45a1839abb3f989f2444--c8052936438d484d9b414f50703e1ec4 c8052936438d484d9b414f50703e1ec4--04d532c38595473283e8dd455bc1c083 0f77c02bebdd44368ddb576a5e47cfbd 6694b53b1cdd4caea6420a03a66f6624 RX(theta₄) a698d37eb71246fb96a17968c198d7b3--6694b53b1cdd4caea6420a03a66f6624 7128345a02e84703a0b3e924f564bffb 5 20f14693a3a8466d81f47dcccfb20b05 RY(theta₁₀) 6694b53b1cdd4caea6420a03a66f6624--20f14693a3a8466d81f47dcccfb20b05 e14e62cd31f44e3bbd5dbced2f370cb3 RX(theta₁₆) 20f14693a3a8466d81f47dcccfb20b05--e14e62cd31f44e3bbd5dbced2f370cb3 584b6c1ac7b14708bf9198fe2f87e4f5 e14e62cd31f44e3bbd5dbced2f370cb3--584b6c1ac7b14708bf9198fe2f87e4f5 ad925395e7c64620bc1ea63152609f55 RX(theta₂₂) 584b6c1ac7b14708bf9198fe2f87e4f5--ad925395e7c64620bc1ea63152609f55 50bb2e50fd8843ee9ed294f51e8758a4 RY(theta₂₈) ad925395e7c64620bc1ea63152609f55--50bb2e50fd8843ee9ed294f51e8758a4 28deea3563eb4480a2278f38bab4c863 RX(theta₃₄) 50bb2e50fd8843ee9ed294f51e8758a4--28deea3563eb4480a2278f38bab4c863 87942503d9554e468b1e49f4ccde885a 28deea3563eb4480a2278f38bab4c863--87942503d9554e468b1e49f4ccde885a 87942503d9554e468b1e49f4ccde885a--0f77c02bebdd44368ddb576a5e47cfbd 353fd256dcbc4db5bfc3afcb580eeea9 055e73f1278b4910b1096b28511f2bf1 RX(theta₅) 7128345a02e84703a0b3e924f564bffb--055e73f1278b4910b1096b28511f2bf1 d6b93285c6b543398f91b8b45844480c RY(theta₁₁) 055e73f1278b4910b1096b28511f2bf1--d6b93285c6b543398f91b8b45844480c fb62211b2599451392ec9dbd922c2d0b RX(theta₁₇) d6b93285c6b543398f91b8b45844480c--fb62211b2599451392ec9dbd922c2d0b cc40286a30574796b30015ab1945d1d5 fb62211b2599451392ec9dbd922c2d0b--cc40286a30574796b30015ab1945d1d5 523d519dc3e145d29e41a739000d9e10 RX(theta₂₃) cc40286a30574796b30015ab1945d1d5--523d519dc3e145d29e41a739000d9e10 a112fa8c5e2d4483b9cfbac4f721a51c RY(theta₂₉) 523d519dc3e145d29e41a739000d9e10--a112fa8c5e2d4483b9cfbac4f721a51c 1d794eb62c1f4661a687577f828b39be RX(theta₃₅) a112fa8c5e2d4483b9cfbac4f721a51c--1d794eb62c1f4661a687577f828b39be 71cde6d6c26345a0b9fcbc3f19409d51 1d794eb62c1f4661a687577f828b39be--71cde6d6c26345a0b9fcbc3f19409d51 71cde6d6c26345a0b9fcbc3f19409d51--353fd256dcbc4db5bfc3afcb580eeea9

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_00724589234d4c8d8cd6eb243ced8779 BPMA-1 cluster_5e0f4feb884f48e085247cf7ab1e3595 BPMA-0 02c80b238de8419abb6315d5d4741e2d 0 99ae27fb9f5f47dbbe4c297a52f83307 RX(iia_α₀₀) 02c80b238de8419abb6315d5d4741e2d--99ae27fb9f5f47dbbe4c297a52f83307 c19b15c0cae849199236ce0ca73dcec5 1 52da5d0321744d0abfe025eab94aa9f5 RY(iia_α₀₃) 99ae27fb9f5f47dbbe4c297a52f83307--52da5d0321744d0abfe025eab94aa9f5 e3d8f1a7a6294f58bbdcf996c3a18cc5 52da5d0321744d0abfe025eab94aa9f5--e3d8f1a7a6294f58bbdcf996c3a18cc5 d667b68dfe2f4964beda8610e01689d2 e3d8f1a7a6294f58bbdcf996c3a18cc5--d667b68dfe2f4964beda8610e01689d2 725c9a70b5e0425197a62fbd6d279d85 RX(iia_γ₀₀) d667b68dfe2f4964beda8610e01689d2--725c9a70b5e0425197a62fbd6d279d85 e443c94be5ce4ceca18584ebaea088dd 725c9a70b5e0425197a62fbd6d279d85--e443c94be5ce4ceca18584ebaea088dd 0148269ff9ad464c9b947e74d37eecc2 e443c94be5ce4ceca18584ebaea088dd--0148269ff9ad464c9b947e74d37eecc2 f8f9c982ae1e49faa887c5c58205fd1f RY(iia_β₀₃) 0148269ff9ad464c9b947e74d37eecc2--f8f9c982ae1e49faa887c5c58205fd1f 6a6b4ff81b2c49829c5df0fb4bffc2fb RX(iia_β₀₀) f8f9c982ae1e49faa887c5c58205fd1f--6a6b4ff81b2c49829c5df0fb4bffc2fb 6c56abf0aab5496ba88f7b860d1497e9 RX(iia_α₁₀) 6a6b4ff81b2c49829c5df0fb4bffc2fb--6c56abf0aab5496ba88f7b860d1497e9 55f3e5978dc548ee8c0aa679ca47b8c0 RY(iia_α₁₃) 6c56abf0aab5496ba88f7b860d1497e9--55f3e5978dc548ee8c0aa679ca47b8c0 9960df0fad814a198219487f30264846 55f3e5978dc548ee8c0aa679ca47b8c0--9960df0fad814a198219487f30264846 750d1a7654624ebe96be4c6aea63fdd2 9960df0fad814a198219487f30264846--750d1a7654624ebe96be4c6aea63fdd2 681e77aab3df441287c81ca72ac0e82f RX(iia_γ₁₀) 750d1a7654624ebe96be4c6aea63fdd2--681e77aab3df441287c81ca72ac0e82f 6c73b161f8f844f3a7c056958aa45908 681e77aab3df441287c81ca72ac0e82f--6c73b161f8f844f3a7c056958aa45908 21cc749ac90544e19ccb7ff8d86bef2d 6c73b161f8f844f3a7c056958aa45908--21cc749ac90544e19ccb7ff8d86bef2d b744b565daaa4ae2adabf3ee8e63781c RY(iia_β₁₃) 21cc749ac90544e19ccb7ff8d86bef2d--b744b565daaa4ae2adabf3ee8e63781c 0ddc6f4978fc49668d4e4f7489197490 RX(iia_β₁₀) b744b565daaa4ae2adabf3ee8e63781c--0ddc6f4978fc49668d4e4f7489197490 ee24ed97758e4f689965ad360567a047 0ddc6f4978fc49668d4e4f7489197490--ee24ed97758e4f689965ad360567a047 baad225ea75c4e7fb060de2b049ca784 c758f3c403444fe6b9f1585813fdb743 RX(iia_α₀₁) c19b15c0cae849199236ce0ca73dcec5--c758f3c403444fe6b9f1585813fdb743 8ee3a80f55e547659e612f92fb3f3b0f 2 0d2f9cabeb4f4165928e3ff3718ee2c2 RY(iia_α₀₄) c758f3c403444fe6b9f1585813fdb743--0d2f9cabeb4f4165928e3ff3718ee2c2 f8f32be696dc4ff6bd8f1c86264d4575 X 0d2f9cabeb4f4165928e3ff3718ee2c2--f8f32be696dc4ff6bd8f1c86264d4575 f8f32be696dc4ff6bd8f1c86264d4575--e3d8f1a7a6294f58bbdcf996c3a18cc5 8f1c0c2e764f4c0d9fb0c71555fefca1 f8f32be696dc4ff6bd8f1c86264d4575--8f1c0c2e764f4c0d9fb0c71555fefca1 6db41d90fa4b4725a32711a9282820c8 RX(iia_γ₀₁) 8f1c0c2e764f4c0d9fb0c71555fefca1--6db41d90fa4b4725a32711a9282820c8 d8ba82f7fb2545a5878e8d669caf2e81 6db41d90fa4b4725a32711a9282820c8--d8ba82f7fb2545a5878e8d669caf2e81 8ee617b12b0d49b4ac96101b2bbb4f57 X d8ba82f7fb2545a5878e8d669caf2e81--8ee617b12b0d49b4ac96101b2bbb4f57 8ee617b12b0d49b4ac96101b2bbb4f57--0148269ff9ad464c9b947e74d37eecc2 fbb5cdcdaab542babb47a208cfdf2315 RY(iia_β₀₄) 8ee617b12b0d49b4ac96101b2bbb4f57--fbb5cdcdaab542babb47a208cfdf2315 133976236074470ab07f0c19d7918850 RX(iia_β₀₁) fbb5cdcdaab542babb47a208cfdf2315--133976236074470ab07f0c19d7918850 f4e98da62abb4714a10980a5761f271b RX(iia_α₁₁) 133976236074470ab07f0c19d7918850--f4e98da62abb4714a10980a5761f271b c829c885ab3c44f4aeb20ff8926c5be3 RY(iia_α₁₄) f4e98da62abb4714a10980a5761f271b--c829c885ab3c44f4aeb20ff8926c5be3 cbc20b3f5f954cf5a6e635f3db7c2c23 X c829c885ab3c44f4aeb20ff8926c5be3--cbc20b3f5f954cf5a6e635f3db7c2c23 cbc20b3f5f954cf5a6e635f3db7c2c23--9960df0fad814a198219487f30264846 ff90cf10bbc1471997da857eef99ce65 cbc20b3f5f954cf5a6e635f3db7c2c23--ff90cf10bbc1471997da857eef99ce65 bdcd0b9d6d454a43ae1c62b6a55be971 RX(iia_γ₁₁) ff90cf10bbc1471997da857eef99ce65--bdcd0b9d6d454a43ae1c62b6a55be971 68231e96ad1042298307dbff6e583ff8 bdcd0b9d6d454a43ae1c62b6a55be971--68231e96ad1042298307dbff6e583ff8 ecf44e02240448da98213d7ff0c49f3f X 68231e96ad1042298307dbff6e583ff8--ecf44e02240448da98213d7ff0c49f3f ecf44e02240448da98213d7ff0c49f3f--21cc749ac90544e19ccb7ff8d86bef2d ca97aa36e08c4f46b85087060f4446cc RY(iia_β₁₄) ecf44e02240448da98213d7ff0c49f3f--ca97aa36e08c4f46b85087060f4446cc 66f625b30717417396bfb281295e1ae8 RX(iia_β₁₁) ca97aa36e08c4f46b85087060f4446cc--66f625b30717417396bfb281295e1ae8 66f625b30717417396bfb281295e1ae8--baad225ea75c4e7fb060de2b049ca784 0b68b9aec9d74c1dbee743ebc0e7f5c4 23d71885e98d49efb4216d04f33a9e34 RX(iia_α₀₂) 8ee3a80f55e547659e612f92fb3f3b0f--23d71885e98d49efb4216d04f33a9e34 944d39c1374443698ff79f4910968828 RY(iia_α₀₅) 23d71885e98d49efb4216d04f33a9e34--944d39c1374443698ff79f4910968828 d38e55d15fea432fa6377f18bb56c912 944d39c1374443698ff79f4910968828--d38e55d15fea432fa6377f18bb56c912 69cc59579c9a4b2593118214a18fa5a1 X d38e55d15fea432fa6377f18bb56c912--69cc59579c9a4b2593118214a18fa5a1 69cc59579c9a4b2593118214a18fa5a1--8f1c0c2e764f4c0d9fb0c71555fefca1 a33307c43251445a990d226a455f020b RX(iia_γ₀₂) 69cc59579c9a4b2593118214a18fa5a1--a33307c43251445a990d226a455f020b b89fbf7c2cf14d079fbff2710614adc3 X a33307c43251445a990d226a455f020b--b89fbf7c2cf14d079fbff2710614adc3 b89fbf7c2cf14d079fbff2710614adc3--d8ba82f7fb2545a5878e8d669caf2e81 f963a1ae9cf940cab28e2d7fb0e5b733 b89fbf7c2cf14d079fbff2710614adc3--f963a1ae9cf940cab28e2d7fb0e5b733 f9989d2b034c4e02a762b29e0cc0ca77 RY(iia_β₀₅) f963a1ae9cf940cab28e2d7fb0e5b733--f9989d2b034c4e02a762b29e0cc0ca77 bc3b2bdbd11640e4826df14ba780ae27 RX(iia_β₀₂) f9989d2b034c4e02a762b29e0cc0ca77--bc3b2bdbd11640e4826df14ba780ae27 03c38e789ff44000a9513fc07c220ba7 RX(iia_α₁₂) bc3b2bdbd11640e4826df14ba780ae27--03c38e789ff44000a9513fc07c220ba7 7ebef395dbcb483ebf43d6131d62fa7f RY(iia_α₁₅) 03c38e789ff44000a9513fc07c220ba7--7ebef395dbcb483ebf43d6131d62fa7f 1ac0ee22ed9d401587e07130982df4fe 7ebef395dbcb483ebf43d6131d62fa7f--1ac0ee22ed9d401587e07130982df4fe d090ff3d20d84092bbccd1a02a8c2bcf X 1ac0ee22ed9d401587e07130982df4fe--d090ff3d20d84092bbccd1a02a8c2bcf d090ff3d20d84092bbccd1a02a8c2bcf--ff90cf10bbc1471997da857eef99ce65 1087433a22974aa1b9deddfc84a23bf9 RX(iia_γ₁₂) d090ff3d20d84092bbccd1a02a8c2bcf--1087433a22974aa1b9deddfc84a23bf9 f50eea4c76cf49bc866c1190e2313b08 X 1087433a22974aa1b9deddfc84a23bf9--f50eea4c76cf49bc866c1190e2313b08 f50eea4c76cf49bc866c1190e2313b08--68231e96ad1042298307dbff6e583ff8 1460c19fb8554aab8f07fb192b43ee5e f50eea4c76cf49bc866c1190e2313b08--1460c19fb8554aab8f07fb192b43ee5e 60d872d53f24474088c56a1e2577fbff RY(iia_β₁₅) 1460c19fb8554aab8f07fb192b43ee5e--60d872d53f24474088c56a1e2577fbff 4cc90e19e824473ebe5c9c5367b9104d RX(iia_β₁₂) 60d872d53f24474088c56a1e2577fbff--4cc90e19e824473ebe5c9c5367b9104d 4cc90e19e824473ebe5c9c5367b9104d--0b68b9aec9d74c1dbee743ebc0e7f5c4