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_e5436b6ae2cf462cbc3df277c3cbad4b Constant Chebyshev FM cluster_6a0d9f321f5a4409b37d644a6d9bbba3 Constant Fourier FM 43d9a86306764cd491c57eab6f13864e 0 c77e45737d8247d497df26c30be6ab7e RX(phi) 43d9a86306764cd491c57eab6f13864e--c77e45737d8247d497df26c30be6ab7e 188e22bd81054cb6a49299515143b840 1 adaa9b9e101b41a69bcfa8e094879bba RX(acos(phi)) c77e45737d8247d497df26c30be6ab7e--adaa9b9e101b41a69bcfa8e094879bba 6b31cba7f0bf44a4ab4b5b54850cda00 adaa9b9e101b41a69bcfa8e094879bba--6b31cba7f0bf44a4ab4b5b54850cda00 8e801dcc15754a27958041c214401019 b2c329e61e5745fcb96f707fae8619e2 RX(phi) 188e22bd81054cb6a49299515143b840--b2c329e61e5745fcb96f707fae8619e2 01abe672d8734605a47ff208d4c34a8b 2 146cd1ee7cb04f8e969841a801857bb5 RX(acos(phi)) b2c329e61e5745fcb96f707fae8619e2--146cd1ee7cb04f8e969841a801857bb5 146cd1ee7cb04f8e969841a801857bb5--8e801dcc15754a27958041c214401019 70c205c0a5804296b91fbaafc10e5e84 b43f113c3dfa4f70813c713aa1bd8948 RX(phi) 01abe672d8734605a47ff208d4c34a8b--b43f113c3dfa4f70813c713aa1bd8948 0dd17bee36914693b1d29ad970f22958 RX(acos(phi)) b43f113c3dfa4f70813c713aa1bd8948--0dd17bee36914693b1d29ad970f22958 0dd17bee36914693b1d29ad970f22958--70c205c0a5804296b91fbaafc10e5e84

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_0079e68bfff3491a8b416faedee66086 Constant <function custom_fn at 0x7f5f982df6d0> FM cluster_f2699fbbfdfe44c4a3bf4ab1b0dcc5b9 Constant asin FM 91e867812621444787f119e0d9202467 0 d92a78e2cd5d4486ab6db0e5672d1d71 RX(asin(phi)) 91e867812621444787f119e0d9202467--d92a78e2cd5d4486ab6db0e5672d1d71 9ac97a32cd754d288605799cebf8e5ee 1 decf200c77fa4494bd586fa6821c9590 RX(phi**2 + asin(phi)) d92a78e2cd5d4486ab6db0e5672d1d71--decf200c77fa4494bd586fa6821c9590 ae5f2e0c53314d368c3f1515d67f1b6f decf200c77fa4494bd586fa6821c9590--ae5f2e0c53314d368c3f1515d67f1b6f 93579e63c33240deae8ee3feebc1737f c0fa220e29654cadbc90928dda8f1c8a RX(asin(phi)) 9ac97a32cd754d288605799cebf8e5ee--c0fa220e29654cadbc90928dda8f1c8a 6cab22a662e6486ea1be83a46bc17a58 2 65c0a4978b544ea9bb03acdc48eb1464 RX(phi**2 + asin(phi)) c0fa220e29654cadbc90928dda8f1c8a--65c0a4978b544ea9bb03acdc48eb1464 65c0a4978b544ea9bb03acdc48eb1464--93579e63c33240deae8ee3feebc1737f 2713550be72044e2a5a9c678216a7ca7 03642194d80f4fb296c27cbf71b543d6 RX(asin(phi)) 6cab22a662e6486ea1be83a46bc17a58--03642194d80f4fb296c27cbf71b543d6 038d7c04b5a3406890f52d06ce852b2e RX(phi**2 + asin(phi)) 03642194d80f4fb296c27cbf71b543d6--038d7c04b5a3406890f52d06ce852b2e 038d7c04b5a3406890f52d06ce852b2e--2713550be72044e2a5a9c678216a7ca7

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_640f1f2a47f242b08382a9b14b1edabe Exponential Fourier FM cluster_47f418a5253246809282e93ead2a2aa2 Constant Fourier FM cluster_a66ad0e390b740879fe41b1b9b96c1e5 Tower Fourier FM 47618d1df5dd4862afbbd4b5bd89bfa2 0 a5d9dbcf95964662bd4fd241e03cb382 RX(phi) 47618d1df5dd4862afbbd4b5bd89bfa2--a5d9dbcf95964662bd4fd241e03cb382 b7ced7a2494a4a2da7550b64e1ace786 1 1d77cc48ad3f4addaa0d90122d470bab RX(1.0*phi) a5d9dbcf95964662bd4fd241e03cb382--1d77cc48ad3f4addaa0d90122d470bab a8a71dc6774646ae8026e3901cc508ab RX(1.0*phi) 1d77cc48ad3f4addaa0d90122d470bab--a8a71dc6774646ae8026e3901cc508ab 7b852d7b9edb46009d515757e6579977 a8a71dc6774646ae8026e3901cc508ab--7b852d7b9edb46009d515757e6579977 25aac1df16f24fd3a120b725ff6fc67d a6240b5c41d24b5796279b32c11dcdb1 RX(phi) b7ced7a2494a4a2da7550b64e1ace786--a6240b5c41d24b5796279b32c11dcdb1 f0cd1337bc4c400f82e721ea65d009ab 2 972f24c082fe46edacaee9f5e2cd9b95 RX(2.0*phi) a6240b5c41d24b5796279b32c11dcdb1--972f24c082fe46edacaee9f5e2cd9b95 7b8f9432e39549a59e60e4bd82812291 RX(2.0*phi) 972f24c082fe46edacaee9f5e2cd9b95--7b8f9432e39549a59e60e4bd82812291 7b8f9432e39549a59e60e4bd82812291--25aac1df16f24fd3a120b725ff6fc67d 2079d7cfba9645a386f87fe68b7f01d4 e00a5298764047c19f1cc3d1ac6962d6 RX(phi) f0cd1337bc4c400f82e721ea65d009ab--e00a5298764047c19f1cc3d1ac6962d6 b430a998798f426d982a7d7241da6d4e 3 9245f1921de0456fb12651a9ccaf3b34 RX(3.0*phi) e00a5298764047c19f1cc3d1ac6962d6--9245f1921de0456fb12651a9ccaf3b34 3407be51a87649099d384de486f81bb8 RX(4.0*phi) 9245f1921de0456fb12651a9ccaf3b34--3407be51a87649099d384de486f81bb8 3407be51a87649099d384de486f81bb8--2079d7cfba9645a386f87fe68b7f01d4 b3bd3e7de7814124b3e08986bee13054 edc440cdecaa4628b868e18bb76db430 RX(phi) b430a998798f426d982a7d7241da6d4e--edc440cdecaa4628b868e18bb76db430 1755a982ab0447d2a9c0182e6a51d206 4 561da876fb8d46e0a8401eea1118bf83 RX(4.0*phi) edc440cdecaa4628b868e18bb76db430--561da876fb8d46e0a8401eea1118bf83 d51e90a554074a0fa51bb509d52e0840 RX(8.0*phi) 561da876fb8d46e0a8401eea1118bf83--d51e90a554074a0fa51bb509d52e0840 d51e90a554074a0fa51bb509d52e0840--b3bd3e7de7814124b3e08986bee13054 4fedf6da037a4a20927ded65d89233d0 aea3bdd88e0646cf9b17efe74f07e388 RX(phi) 1755a982ab0447d2a9c0182e6a51d206--aea3bdd88e0646cf9b17efe74f07e388 569a0521e9324c7181e7bb56c274b057 RX(5.0*phi) aea3bdd88e0646cf9b17efe74f07e388--569a0521e9324c7181e7bb56c274b057 5669a643ed3143b19cf26a2c7870cebe RX(16.0*phi) 569a0521e9324c7181e7bb56c274b057--5669a643ed3143b19cf26a2c7870cebe 5669a643ed3143b19cf26a2c7870cebe--4fedf6da037a4a20927ded65d89233d0

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 5de69acd9088458ca6168ea5b05d77c2 0 1e5aa2f4a9204451907d0abcef7c5624 RX(1.0*acos(phi)) 5de69acd9088458ca6168ea5b05d77c2--1e5aa2f4a9204451907d0abcef7c5624 02e45664dfa747eaa8292456ec48a65b 1 f293d63ab13e4258841a001600f505a9 1e5aa2f4a9204451907d0abcef7c5624--f293d63ab13e4258841a001600f505a9 bc28708b1be4402da8e0114fe4f501b8 d7b7a147b8de4813989a6ad9a5f68f31 RX(1.414*acos(phi)) 02e45664dfa747eaa8292456ec48a65b--d7b7a147b8de4813989a6ad9a5f68f31 7c2cb286674a4615bd9a64044a2e3753 2 d7b7a147b8de4813989a6ad9a5f68f31--bc28708b1be4402da8e0114fe4f501b8 3dc855af6ad540e492cb1597a8599c67 b9308e09d59d42d0a93c7e07ea3197e1 RX(1.732*acos(phi)) 7c2cb286674a4615bd9a64044a2e3753--b9308e09d59d42d0a93c7e07ea3197e1 3b472348bb6b467789d40533b18488b3 3 b9308e09d59d42d0a93c7e07ea3197e1--3dc855af6ad540e492cb1597a8599c67 4f3bf4b529f3470a919e8305b647eceb 438ab3ea6c16428a92e24a67ceb4cd73 RX(2.0*acos(phi)) 3b472348bb6b467789d40533b18488b3--438ab3ea6c16428a92e24a67ceb4cd73 c8121969a7924e91b17231732417640d 4 438ab3ea6c16428a92e24a67ceb4cd73--4f3bf4b529f3470a919e8305b647eceb e6e9a8035d8b49008cb38661dde29f28 de49b36f02ef4c11ab90fe4f26b3708f RX(2.236*acos(phi)) c8121969a7924e91b17231732417640d--de49b36f02ef4c11ab90fe4f26b3708f de49b36f02ef4c11ab90fe4f26b3708f--e6e9a8035d8b49008cb38661dde29f28

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 751f669301f84ed2974a20ec1a519e8b 0 9efcd1c01dc4428bab98da595f09247b RX(1.0*phi*w₀) 751f669301f84ed2974a20ec1a519e8b--9efcd1c01dc4428bab98da595f09247b f3897027296549f79d500e17fdf18b90 1 ab8e57328c994b6c90b14ade94ecda8f 9efcd1c01dc4428bab98da595f09247b--ab8e57328c994b6c90b14ade94ecda8f fb2a08cbf93e4c76876a43016e17d2db c37f9d01f23948c190d0252540f6b01e RX(2.0*phi*w₁) f3897027296549f79d500e17fdf18b90--c37f9d01f23948c190d0252540f6b01e 2ddabeaf173647a8ba4f3ebb45370a41 2 c37f9d01f23948c190d0252540f6b01e--fb2a08cbf93e4c76876a43016e17d2db d21ea4d514514612b369e0e91f76a560 0a700170a39142288c55b32d11607353 RX(4.0*phi*w₂) 2ddabeaf173647a8ba4f3ebb45370a41--0a700170a39142288c55b32d11607353 36316b2a5e6b470689d49a3915d7ff20 3 0a700170a39142288c55b32d11607353--d21ea4d514514612b369e0e91f76a560 993d5967cbe843aaaf9b8dc1a3fbc08b 408a086d1b014085aeb25103a687ae23 RX(8.0*phi*w₃) 36316b2a5e6b470689d49a3915d7ff20--408a086d1b014085aeb25103a687ae23 79872c3d8f02476eab2b7f3d46bc5875 4 408a086d1b014085aeb25103a687ae23--993d5967cbe843aaaf9b8dc1a3fbc08b 6d79eb573aa7480ea3e943fb6c7c1035 d3a0307c88fd403f947b3df742ba51d2 RX(16.0*phi*w₄) 79872c3d8f02476eab2b7f3d46bc5875--d3a0307c88fd403f947b3df742ba51d2 d3a0307c88fd403f947b3df742ba51d2--6d79eb573aa7480ea3e943fb6c7c1035

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 42cf23a1d9f740f89ee1f9b76cf42109 0 e66977cdccd642ebbd1a24a97853f827 RY(80.0*acos(w₄*(0.667*x + 1.667))) 42cf23a1d9f740f89ee1f9b76cf42109--e66977cdccd642ebbd1a24a97853f827 c1acfad53d22486fa48293f13880dc95 1 25d0bce6f6eb4cb9aad2906263b08460 e66977cdccd642ebbd1a24a97853f827--25d0bce6f6eb4cb9aad2906263b08460 2ce5eb36b0b24e0f908838f08c150f77 ce9b1c2cebaf442c97978d2018996b3c RY(40.0*acos(w₃*(0.667*x + 1.667))) c1acfad53d22486fa48293f13880dc95--ce9b1c2cebaf442c97978d2018996b3c 48cf4001c9a3498b812c7429510f6a02 2 ce9b1c2cebaf442c97978d2018996b3c--2ce5eb36b0b24e0f908838f08c150f77 1298af0dd3004cf28debbd2474f58c0d 8450b624aca94fbea320988a5bd82783 RY(20.0*acos(w₂*(0.667*x + 1.667))) 48cf4001c9a3498b812c7429510f6a02--8450b624aca94fbea320988a5bd82783 d91b0b58a30548bcb7887d6528b5c534 3 8450b624aca94fbea320988a5bd82783--1298af0dd3004cf28debbd2474f58c0d 9b37785a53ab467bb25471eeddf5f2a1 ba5698efec1f44a4a41291e6c9e2f97a RY(10.0*acos(w₁*(0.667*x + 1.667))) d91b0b58a30548bcb7887d6528b5c534--ba5698efec1f44a4a41291e6c9e2f97a f4c36d12294e433d9586da2ccd51101f 4 ba5698efec1f44a4a41291e6c9e2f97a--9b37785a53ab467bb25471eeddf5f2a1 25828a38783c4d13bf75cc5646a78310 c87789f0985848c68c1c8191d244dd48 RY(5.0*acos(w₀*(0.667*x + 1.667))) f4c36d12294e433d9586da2ccd51101f--c87789f0985848c68c1c8191d244dd48 c87789f0985848c68c1c8191d244dd48--25828a38783c4d13bf75cc5646a78310

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 9cd550f80dab41ceaa0d2a10004948c7 0 26e4c2268954462e96ca7fba730954dd RX(theta₀) 9cd550f80dab41ceaa0d2a10004948c7--26e4c2268954462e96ca7fba730954dd ed7cb7d9a84a433e9406c09baca04252 1 9641b4a56c9a4dd4a7ac93ad8334a67f RY(theta₃) 26e4c2268954462e96ca7fba730954dd--9641b4a56c9a4dd4a7ac93ad8334a67f ba44008c7e71400980e6ffc85202442e RX(theta₆) 9641b4a56c9a4dd4a7ac93ad8334a67f--ba44008c7e71400980e6ffc85202442e e7610b48c0814e37a3ca83a5a558836e ba44008c7e71400980e6ffc85202442e--e7610b48c0814e37a3ca83a5a558836e cc0f8d3505854afca5a2e9b4b8bcf9bd e7610b48c0814e37a3ca83a5a558836e--cc0f8d3505854afca5a2e9b4b8bcf9bd f92e1c5ce4114206b80464ff4701a5ea RX(theta₉) cc0f8d3505854afca5a2e9b4b8bcf9bd--f92e1c5ce4114206b80464ff4701a5ea f43e296badc54f598c69c1e9dc909533 RY(theta₁₂) f92e1c5ce4114206b80464ff4701a5ea--f43e296badc54f598c69c1e9dc909533 fbf61bd78f5c4c7b9858b825f74d1837 RX(theta₁₅) f43e296badc54f598c69c1e9dc909533--fbf61bd78f5c4c7b9858b825f74d1837 45e0bdfc431c47539c2f718bb429c8dc fbf61bd78f5c4c7b9858b825f74d1837--45e0bdfc431c47539c2f718bb429c8dc 6852c248ed7846debc1f6b61803f781f 45e0bdfc431c47539c2f718bb429c8dc--6852c248ed7846debc1f6b61803f781f 9f9f27eaa0a04a7b8dc3edc0ca6d7f19 6852c248ed7846debc1f6b61803f781f--9f9f27eaa0a04a7b8dc3edc0ca6d7f19 96e13272e2dd419e8bff792905006286 b3a3ca4b4d1d4ad3881ac76a94e382ec RX(theta₁) ed7cb7d9a84a433e9406c09baca04252--b3a3ca4b4d1d4ad3881ac76a94e382ec 7b60c1fd0479459bb9898040033b6184 2 56bb063743794f779f751ce7caf699de RY(theta₄) b3a3ca4b4d1d4ad3881ac76a94e382ec--56bb063743794f779f751ce7caf699de 03f800e61c474389aecc9b8bedc15d94 RX(theta₇) 56bb063743794f779f751ce7caf699de--03f800e61c474389aecc9b8bedc15d94 5260480a14884317b1a962f7beda0f9f X 03f800e61c474389aecc9b8bedc15d94--5260480a14884317b1a962f7beda0f9f 5260480a14884317b1a962f7beda0f9f--e7610b48c0814e37a3ca83a5a558836e 91b261a984a04cd0b4829b67f01fe6e5 5260480a14884317b1a962f7beda0f9f--91b261a984a04cd0b4829b67f01fe6e5 ba2a76f8f3c34fb8a146432831855e5d RX(theta₁₀) 91b261a984a04cd0b4829b67f01fe6e5--ba2a76f8f3c34fb8a146432831855e5d eb540f5464e64594b42dc97389c23f54 RY(theta₁₃) ba2a76f8f3c34fb8a146432831855e5d--eb540f5464e64594b42dc97389c23f54 2c53526b8ae54e0f9d0ef58e040222a6 RX(theta₁₆) eb540f5464e64594b42dc97389c23f54--2c53526b8ae54e0f9d0ef58e040222a6 44cd8da1f7924682b0a22a9378c3c65f X 2c53526b8ae54e0f9d0ef58e040222a6--44cd8da1f7924682b0a22a9378c3c65f 44cd8da1f7924682b0a22a9378c3c65f--45e0bdfc431c47539c2f718bb429c8dc 42e45263275d43eb87e6a75e619352a5 44cd8da1f7924682b0a22a9378c3c65f--42e45263275d43eb87e6a75e619352a5 42e45263275d43eb87e6a75e619352a5--96e13272e2dd419e8bff792905006286 7e693ce8f1c14c019111d9f02dbdbe30 292516bb3e0b4c9bae3d5ed0f7535950 RX(theta₂) 7b60c1fd0479459bb9898040033b6184--292516bb3e0b4c9bae3d5ed0f7535950 943f88924d8a4b1596c3949d7281ce74 RY(theta₅) 292516bb3e0b4c9bae3d5ed0f7535950--943f88924d8a4b1596c3949d7281ce74 9d8edf6b0ed64b8785ed247c1cce31a5 RX(theta₈) 943f88924d8a4b1596c3949d7281ce74--9d8edf6b0ed64b8785ed247c1cce31a5 cc08f99ce4d54e8fbf12dbb4fa61baff 9d8edf6b0ed64b8785ed247c1cce31a5--cc08f99ce4d54e8fbf12dbb4fa61baff 41b32262b24b482aafe4302318f1835b X cc08f99ce4d54e8fbf12dbb4fa61baff--41b32262b24b482aafe4302318f1835b 41b32262b24b482aafe4302318f1835b--91b261a984a04cd0b4829b67f01fe6e5 9f0dae86add8482e97bd05d1b3380db5 RX(theta₁₁) 41b32262b24b482aafe4302318f1835b--9f0dae86add8482e97bd05d1b3380db5 2632ceea11e5451c880ac9381512169c RY(theta₁₄) 9f0dae86add8482e97bd05d1b3380db5--2632ceea11e5451c880ac9381512169c 4cd6557617f748299e9fee1656b1942a RX(theta₁₇) 2632ceea11e5451c880ac9381512169c--4cd6557617f748299e9fee1656b1942a 30fecd21780e49c99448d7dbc2aad095 4cd6557617f748299e9fee1656b1942a--30fecd21780e49c99448d7dbc2aad095 bf291345461b42ce851c96546a7d3b78 X 30fecd21780e49c99448d7dbc2aad095--bf291345461b42ce851c96546a7d3b78 bf291345461b42ce851c96546a7d3b78--42e45263275d43eb87e6a75e619352a5 bf291345461b42ce851c96546a7d3b78--7e693ce8f1c14c019111d9f02dbdbe30

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 3ee19ffe97ba4485882d82f49fa77960 0 3646ef6153404e399742ac3d94290fb0 RX(phi₀) 3ee19ffe97ba4485882d82f49fa77960--3646ef6153404e399742ac3d94290fb0 8d9415d564b74f53bfe736676c5174e0 1 27facb281011414f8d671b8ac8f853c2 RY(phi₃) 3646ef6153404e399742ac3d94290fb0--27facb281011414f8d671b8ac8f853c2 777f5c7397a84836a370328592f08139 RX(phi₆) 27facb281011414f8d671b8ac8f853c2--777f5c7397a84836a370328592f08139 29a94a8fd4cf4daaa4566b94f15812f7 777f5c7397a84836a370328592f08139--29a94a8fd4cf4daaa4566b94f15812f7 86ef688858c14137aa3b8832dd29de9c 29a94a8fd4cf4daaa4566b94f15812f7--86ef688858c14137aa3b8832dd29de9c 53f23c5bc7a440419ac3e3d6cb0a4bfb RX(phi₉) 86ef688858c14137aa3b8832dd29de9c--53f23c5bc7a440419ac3e3d6cb0a4bfb 81e37778d39547b89a86fac0b8ffb3d0 RY(phi₁₂) 53f23c5bc7a440419ac3e3d6cb0a4bfb--81e37778d39547b89a86fac0b8ffb3d0 132fd23b49154fe4b716fd847df98749 RX(phi₁₅) 81e37778d39547b89a86fac0b8ffb3d0--132fd23b49154fe4b716fd847df98749 b998b11016c44e6e80f3ba9357dfb6c3 132fd23b49154fe4b716fd847df98749--b998b11016c44e6e80f3ba9357dfb6c3 baadd841006c43d5b15b8e40039ee46c b998b11016c44e6e80f3ba9357dfb6c3--baadd841006c43d5b15b8e40039ee46c 1217d12a19af4073bbd1119dfbde2a3b baadd841006c43d5b15b8e40039ee46c--1217d12a19af4073bbd1119dfbde2a3b 74ace20f8e2449c4b0ca44000edeecf7 1aaca3a9ef6049a9a5e1774bfd699df9 RX(phi₁) 8d9415d564b74f53bfe736676c5174e0--1aaca3a9ef6049a9a5e1774bfd699df9 867fd2098ee64206bbe21c9cd4ce1c0f 2 f59a579a0868413680df188e959d314b RY(phi₄) 1aaca3a9ef6049a9a5e1774bfd699df9--f59a579a0868413680df188e959d314b 3206049320ff45e897ec50c5be28e038 RX(phi₇) f59a579a0868413680df188e959d314b--3206049320ff45e897ec50c5be28e038 ffb083cb0d8649f8aa6fe4460cee3a0f PHASE(phi_ent₀) 3206049320ff45e897ec50c5be28e038--ffb083cb0d8649f8aa6fe4460cee3a0f ffb083cb0d8649f8aa6fe4460cee3a0f--29a94a8fd4cf4daaa4566b94f15812f7 b418a8daa80249e0bbe62f5c3a004d17 ffb083cb0d8649f8aa6fe4460cee3a0f--b418a8daa80249e0bbe62f5c3a004d17 7f7092f79373495abef941cc9ce17ef4 RX(phi₁₀) b418a8daa80249e0bbe62f5c3a004d17--7f7092f79373495abef941cc9ce17ef4 9bf6d835ff124afbb2a69deb152e8313 RY(phi₁₃) 7f7092f79373495abef941cc9ce17ef4--9bf6d835ff124afbb2a69deb152e8313 8b9b527c43804e568ee4e75c39918c68 RX(phi₁₆) 9bf6d835ff124afbb2a69deb152e8313--8b9b527c43804e568ee4e75c39918c68 ca6667f079394db3a8bde0691d0986a8 PHASE(phi_ent₂) 8b9b527c43804e568ee4e75c39918c68--ca6667f079394db3a8bde0691d0986a8 ca6667f079394db3a8bde0691d0986a8--b998b11016c44e6e80f3ba9357dfb6c3 c1c1eb6772404687bb4290655e0e2281 ca6667f079394db3a8bde0691d0986a8--c1c1eb6772404687bb4290655e0e2281 c1c1eb6772404687bb4290655e0e2281--74ace20f8e2449c4b0ca44000edeecf7 cda4d4e7e050453bbebdd0f02283570e 72be390791a64b46a97b8cf6331c7657 RX(phi₂) 867fd2098ee64206bbe21c9cd4ce1c0f--72be390791a64b46a97b8cf6331c7657 94f17ceea9a24f8694dea56432e19e62 RY(phi₅) 72be390791a64b46a97b8cf6331c7657--94f17ceea9a24f8694dea56432e19e62 bbde0d63d7cd415b9e0b7a5b00faf7c6 RX(phi₈) 94f17ceea9a24f8694dea56432e19e62--bbde0d63d7cd415b9e0b7a5b00faf7c6 df242f8e5749470cae72b7a71c4331a6 bbde0d63d7cd415b9e0b7a5b00faf7c6--df242f8e5749470cae72b7a71c4331a6 64242dec0264479e87735089df2bd102 PHASE(phi_ent₁) df242f8e5749470cae72b7a71c4331a6--64242dec0264479e87735089df2bd102 64242dec0264479e87735089df2bd102--b418a8daa80249e0bbe62f5c3a004d17 9772195d4d7b4a3ea9cc5b24c00fee1b RX(phi₁₁) 64242dec0264479e87735089df2bd102--9772195d4d7b4a3ea9cc5b24c00fee1b 5f505b7b97bb44c1b513f4a3722a4ced RY(phi₁₄) 9772195d4d7b4a3ea9cc5b24c00fee1b--5f505b7b97bb44c1b513f4a3722a4ced c1420d4c2cfc464ba82edef017798022 RX(phi₁₇) 5f505b7b97bb44c1b513f4a3722a4ced--c1420d4c2cfc464ba82edef017798022 aadb6424edca41b3906601a8d7baa730 c1420d4c2cfc464ba82edef017798022--aadb6424edca41b3906601a8d7baa730 a40bf38f8cc84234adcf225ddf1d32d3 PHASE(phi_ent₃) aadb6424edca41b3906601a8d7baa730--a40bf38f8cc84234adcf225ddf1d32d3 a40bf38f8cc84234adcf225ddf1d32d3--c1c1eb6772404687bb4290655e0e2281 a40bf38f8cc84234adcf225ddf1d32d3--cda4d4e7e050453bbebdd0f02283570e

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_6dffd1c8f5264ffdbc9d6441b8119be3 cluster_8528e53e2e0d492b839319b1d8794e17 f8fedeb78c6f41d28cac336286b182c5 0 ef704dba82c745dca2ad179445017537 RX(theta₀) f8fedeb78c6f41d28cac336286b182c5--ef704dba82c745dca2ad179445017537 68fca6d7fa7044ee827decc1c11f2867 1 bfb1113da56b428f83998ea60340334a RY(theta₃) ef704dba82c745dca2ad179445017537--bfb1113da56b428f83998ea60340334a b48b933ed67e40efa25dab5a1cd9111e RX(theta₆) bfb1113da56b428f83998ea60340334a--b48b933ed67e40efa25dab5a1cd9111e b15dc60a4b714767b875d6e83b1c7f41 HamEvo b48b933ed67e40efa25dab5a1cd9111e--b15dc60a4b714767b875d6e83b1c7f41 465bc77a0fda4e9b9d5135f095773179 RX(theta₉) b15dc60a4b714767b875d6e83b1c7f41--465bc77a0fda4e9b9d5135f095773179 79544fc7995843208c6bae6f0b381a93 RY(theta₁₂) 465bc77a0fda4e9b9d5135f095773179--79544fc7995843208c6bae6f0b381a93 d2d2d2e96caf4f8b9e84d48044dda1a1 RX(theta₁₅) 79544fc7995843208c6bae6f0b381a93--d2d2d2e96caf4f8b9e84d48044dda1a1 16e3d2872a34455097c183c03478dd52 HamEvo d2d2d2e96caf4f8b9e84d48044dda1a1--16e3d2872a34455097c183c03478dd52 ab1c021ddbe246e6b9f3b5028912b00c 16e3d2872a34455097c183c03478dd52--ab1c021ddbe246e6b9f3b5028912b00c 979594530ab74805a190094e90e9b87b ca3acb32064c49ffab7ed2db197a6385 RX(theta₁) 68fca6d7fa7044ee827decc1c11f2867--ca3acb32064c49ffab7ed2db197a6385 9f5f90ae9ff442b4a54fff853f4988af 2 484c05f5eb8a4a3b94192494ec9c42e6 RY(theta₄) ca3acb32064c49ffab7ed2db197a6385--484c05f5eb8a4a3b94192494ec9c42e6 a650e545b9ab419d81868cfbfb37da72 RX(theta₇) 484c05f5eb8a4a3b94192494ec9c42e6--a650e545b9ab419d81868cfbfb37da72 a5199829237c4ddbbf9e010560340299 t = theta_t₀ a650e545b9ab419d81868cfbfb37da72--a5199829237c4ddbbf9e010560340299 4ddb202d78874f848e1f3c263df7c945 RX(theta₁₀) a5199829237c4ddbbf9e010560340299--4ddb202d78874f848e1f3c263df7c945 8a1de87ea0a940168093b3acfa7733ba RY(theta₁₃) 4ddb202d78874f848e1f3c263df7c945--8a1de87ea0a940168093b3acfa7733ba 225d6f07bff04e19855b65123ddb5b66 RX(theta₁₆) 8a1de87ea0a940168093b3acfa7733ba--225d6f07bff04e19855b65123ddb5b66 5510511ff91a483fa73f1dce3331a2f7 t = theta_t₁ 225d6f07bff04e19855b65123ddb5b66--5510511ff91a483fa73f1dce3331a2f7 5510511ff91a483fa73f1dce3331a2f7--979594530ab74805a190094e90e9b87b a838b34131de428fa91a1161993d3244 13273a2b1f3f4ced81ff7e9b00d90fab RX(theta₂) 9f5f90ae9ff442b4a54fff853f4988af--13273a2b1f3f4ced81ff7e9b00d90fab b999f9d8f09e42aeb90c6675e5e2c76b RY(theta₅) 13273a2b1f3f4ced81ff7e9b00d90fab--b999f9d8f09e42aeb90c6675e5e2c76b e50c4ebd20e84b878b23d309767928f3 RX(theta₈) b999f9d8f09e42aeb90c6675e5e2c76b--e50c4ebd20e84b878b23d309767928f3 a2efb31044684af096e1f1cd534655c3 e50c4ebd20e84b878b23d309767928f3--a2efb31044684af096e1f1cd534655c3 c079753c1bfa479ebd51b32748c36f2b RX(theta₁₁) a2efb31044684af096e1f1cd534655c3--c079753c1bfa479ebd51b32748c36f2b 48b542e519b3478d95d85f858506db7e RY(theta₁₄) c079753c1bfa479ebd51b32748c36f2b--48b542e519b3478d95d85f858506db7e 9b3a34345ca1457793c2edbc136c52ef RX(theta₁₇) 48b542e519b3478d95d85f858506db7e--9b3a34345ca1457793c2edbc136c52ef a67722001ae44d9b9e4a91f8638d9157 9b3a34345ca1457793c2edbc136c52ef--a67722001ae44d9b9e4a91f8638d9157 a67722001ae44d9b9e4a91f8638d9157--a838b34131de428fa91a1161993d3244

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_74937167723040e8acd860ab96435b3d cluster_a25de5b1c9c2492b856c9b250752af30 60a0f0f1c59e4faaaea49dba4e2a47c8 0 ec9a70991dfc4aff9a8045d73dd7ef17 RX(theta₀) 60a0f0f1c59e4faaaea49dba4e2a47c8--ec9a70991dfc4aff9a8045d73dd7ef17 eeea23fcf9044d1b8e9210e93433ce71 1 22d2f86e4b11489bb25cfbad70f02d23 RY(theta₆) ec9a70991dfc4aff9a8045d73dd7ef17--22d2f86e4b11489bb25cfbad70f02d23 e9a561ecdda04aab946d546d66c1558d RX(theta₁₂) 22d2f86e4b11489bb25cfbad70f02d23--e9a561ecdda04aab946d546d66c1558d 81a02c5da2f446df99065df9735dceda e9a561ecdda04aab946d546d66c1558d--81a02c5da2f446df99065df9735dceda 0f06ca1e6f2a4b9d8022d1f2007ed71a RX(theta₁₈) 81a02c5da2f446df99065df9735dceda--0f06ca1e6f2a4b9d8022d1f2007ed71a 0a4e46656cea46919cb2a436e1a9ba41 RY(theta₂₄) 0f06ca1e6f2a4b9d8022d1f2007ed71a--0a4e46656cea46919cb2a436e1a9ba41 85428fead2354ae2aa2024c4adef2224 RX(theta₃₀) 0a4e46656cea46919cb2a436e1a9ba41--85428fead2354ae2aa2024c4adef2224 5bc67abc845f449f8bf89a184ab98fd0 85428fead2354ae2aa2024c4adef2224--5bc67abc845f449f8bf89a184ab98fd0 714dd3b46d82466d958da24ee2d46c76 5bc67abc845f449f8bf89a184ab98fd0--714dd3b46d82466d958da24ee2d46c76 bfe8e8687be44649977f3c8273fc1b74 67f0f9292de441ad95d24df84c5d8de3 RX(theta₁) eeea23fcf9044d1b8e9210e93433ce71--67f0f9292de441ad95d24df84c5d8de3 43cafba56da346a9903d6f8cb3ee5f4a 2 0cd3aaf726a64d05a8e7cfdb87459396 RY(theta₇) 67f0f9292de441ad95d24df84c5d8de3--0cd3aaf726a64d05a8e7cfdb87459396 4552285116da4103a59b5d7edaac1984 RX(theta₁₃) 0cd3aaf726a64d05a8e7cfdb87459396--4552285116da4103a59b5d7edaac1984 cb5fd382839c4f96a9ccd0a1faed51d8 4552285116da4103a59b5d7edaac1984--cb5fd382839c4f96a9ccd0a1faed51d8 faa989a9d4de44859700b3578bce5ef0 RX(theta₁₉) cb5fd382839c4f96a9ccd0a1faed51d8--faa989a9d4de44859700b3578bce5ef0 3d9ae14a61ff4c5a943a08ce5c4ab7ca RY(theta₂₅) faa989a9d4de44859700b3578bce5ef0--3d9ae14a61ff4c5a943a08ce5c4ab7ca 92d4d20b97d04928b88221f9ba0e5b71 RX(theta₃₁) 3d9ae14a61ff4c5a943a08ce5c4ab7ca--92d4d20b97d04928b88221f9ba0e5b71 a1b38e865a0240d0ac87c820cef87447 92d4d20b97d04928b88221f9ba0e5b71--a1b38e865a0240d0ac87c820cef87447 a1b38e865a0240d0ac87c820cef87447--bfe8e8687be44649977f3c8273fc1b74 b39b74c54adc46c9875b0fa0ba8dc617 57417cb2653e43cda1697d443d52910d RX(theta₂) 43cafba56da346a9903d6f8cb3ee5f4a--57417cb2653e43cda1697d443d52910d 8aa52a1543214aed903b639f27a90d49 3 a2f5ea6058ef4740bcdb78bf390adcdd RY(theta₈) 57417cb2653e43cda1697d443d52910d--a2f5ea6058ef4740bcdb78bf390adcdd b7da19c3474447409c7a5ea4dec02449 RX(theta₁₄) a2f5ea6058ef4740bcdb78bf390adcdd--b7da19c3474447409c7a5ea4dec02449 ee43268790f647eabdc26086c1c4dd35 HamEvo b7da19c3474447409c7a5ea4dec02449--ee43268790f647eabdc26086c1c4dd35 43fe7e50daeb487598acdeb32dae5899 RX(theta₂₀) ee43268790f647eabdc26086c1c4dd35--43fe7e50daeb487598acdeb32dae5899 8dd074b504594c50b958563ea7e3ff30 RY(theta₂₆) 43fe7e50daeb487598acdeb32dae5899--8dd074b504594c50b958563ea7e3ff30 ddfb050dc36546aba9f623b6895f67ca RX(theta₃₂) 8dd074b504594c50b958563ea7e3ff30--ddfb050dc36546aba9f623b6895f67ca 6e0d4513a7054a259392aba33d9f4af5 HamEvo ddfb050dc36546aba9f623b6895f67ca--6e0d4513a7054a259392aba33d9f4af5 6e0d4513a7054a259392aba33d9f4af5--b39b74c54adc46c9875b0fa0ba8dc617 48cb379fea344ba58215fb2c0aa54f2d 3cf00f2a0ca34622b9d6d68d4cb61610 RX(theta₃) 8aa52a1543214aed903b639f27a90d49--3cf00f2a0ca34622b9d6d68d4cb61610 530d3586fd0b4a1ead1e039b4eb7ff77 4 d5ef723177514abeaeaa2709182e630d RY(theta₉) 3cf00f2a0ca34622b9d6d68d4cb61610--d5ef723177514abeaeaa2709182e630d 5014dc2a65f146f39763457ed62b9257 RX(theta₁₅) d5ef723177514abeaeaa2709182e630d--5014dc2a65f146f39763457ed62b9257 a769fec316f141b68e7c77f05881be21 t = theta_t₀ 5014dc2a65f146f39763457ed62b9257--a769fec316f141b68e7c77f05881be21 58efa220d9014bcaa332b1acd6e35449 RX(theta₂₁) a769fec316f141b68e7c77f05881be21--58efa220d9014bcaa332b1acd6e35449 4291307cbfa441e38eef064ae4da77e9 RY(theta₂₇) 58efa220d9014bcaa332b1acd6e35449--4291307cbfa441e38eef064ae4da77e9 f85161f7e36f4aafa96ca6a2ca514c39 RX(theta₃₃) 4291307cbfa441e38eef064ae4da77e9--f85161f7e36f4aafa96ca6a2ca514c39 2cf446ae847a409eb454655cbd4eeda5 t = theta_t₁ f85161f7e36f4aafa96ca6a2ca514c39--2cf446ae847a409eb454655cbd4eeda5 2cf446ae847a409eb454655cbd4eeda5--48cb379fea344ba58215fb2c0aa54f2d 4601ef222eb84266af0ca017a24efaaf 1b664f72d858422f8e2242ce4588985c RX(theta₄) 530d3586fd0b4a1ead1e039b4eb7ff77--1b664f72d858422f8e2242ce4588985c 1467745cf77c42ff90485156d41ba174 5 8d8ee173dd964960801c2f8994c4675c RY(theta₁₀) 1b664f72d858422f8e2242ce4588985c--8d8ee173dd964960801c2f8994c4675c 0552aba2744642d5afd52e735491c22c RX(theta₁₆) 8d8ee173dd964960801c2f8994c4675c--0552aba2744642d5afd52e735491c22c d8f384cae2864454a376d69ca2124138 0552aba2744642d5afd52e735491c22c--d8f384cae2864454a376d69ca2124138 9f8a23eb15604156ad0e9ff596963da6 RX(theta₂₂) d8f384cae2864454a376d69ca2124138--9f8a23eb15604156ad0e9ff596963da6 2f06b349257e49ac8274b72a1fc069de RY(theta₂₈) 9f8a23eb15604156ad0e9ff596963da6--2f06b349257e49ac8274b72a1fc069de 15a12923f4f5498f835ebae9d7e00c26 RX(theta₃₄) 2f06b349257e49ac8274b72a1fc069de--15a12923f4f5498f835ebae9d7e00c26 25a3684bbe9b4d6493813647665386d4 15a12923f4f5498f835ebae9d7e00c26--25a3684bbe9b4d6493813647665386d4 25a3684bbe9b4d6493813647665386d4--4601ef222eb84266af0ca017a24efaaf 7079feccd16b4f049fdfaba5a80198c6 1d53b7be1b2749c998abde4985925c20 RX(theta₅) 1467745cf77c42ff90485156d41ba174--1d53b7be1b2749c998abde4985925c20 9f14650af55446508ee1bbe0c33ad86b RY(theta₁₁) 1d53b7be1b2749c998abde4985925c20--9f14650af55446508ee1bbe0c33ad86b 05dbe2147017443f930666e5f4ed7ce3 RX(theta₁₇) 9f14650af55446508ee1bbe0c33ad86b--05dbe2147017443f930666e5f4ed7ce3 c87dbfc843bf44da8c4555bded0190bb 05dbe2147017443f930666e5f4ed7ce3--c87dbfc843bf44da8c4555bded0190bb e43d7d69f6d0425e9c5fd396b6b51067 RX(theta₂₃) c87dbfc843bf44da8c4555bded0190bb--e43d7d69f6d0425e9c5fd396b6b51067 a874cf324122457ba111783e31081282 RY(theta₂₉) e43d7d69f6d0425e9c5fd396b6b51067--a874cf324122457ba111783e31081282 281119b34de640f18147095426fcd048 RX(theta₃₅) a874cf324122457ba111783e31081282--281119b34de640f18147095426fcd048 43d596dd6f7e4a00a57d26b1cd5dcfb9 281119b34de640f18147095426fcd048--43d596dd6f7e4a00a57d26b1cd5dcfb9 43d596dd6f7e4a00a57d26b1cd5dcfb9--7079feccd16b4f049fdfaba5a80198c6

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_264f25f173ab46a69c3fc8e7fa1235cb BPMA-1 cluster_f4bab094bdaf4ddcad2fffece4dd613d BPMA-0 b1bc960ff0c34cf88098a8ab58d3c523 0 bfaa7587b9e9424ea2eea7a04f103b02 RX(iia_α₀₀) b1bc960ff0c34cf88098a8ab58d3c523--bfaa7587b9e9424ea2eea7a04f103b02 d515b0d730a1480a8e3857e6fde8541d 1 3b76cb4dcdcc498f830d07cb9dc2814d RY(iia_α₀₃) bfaa7587b9e9424ea2eea7a04f103b02--3b76cb4dcdcc498f830d07cb9dc2814d 069796f0a7344c6d83aa4c01a9ced772 3b76cb4dcdcc498f830d07cb9dc2814d--069796f0a7344c6d83aa4c01a9ced772 f7d7ce01cc4948b7977ba80b271218ce 069796f0a7344c6d83aa4c01a9ced772--f7d7ce01cc4948b7977ba80b271218ce 83ecc4b321fa45baae711ee61daeee5a RX(iia_γ₀₀) f7d7ce01cc4948b7977ba80b271218ce--83ecc4b321fa45baae711ee61daeee5a 3cbe25aad20b438ebe52d842cff251e8 83ecc4b321fa45baae711ee61daeee5a--3cbe25aad20b438ebe52d842cff251e8 5fb19d48fce54c25b087586667f95b46 3cbe25aad20b438ebe52d842cff251e8--5fb19d48fce54c25b087586667f95b46 b458e1a716224e5385886fde369be6e5 RY(iia_β₀₃) 5fb19d48fce54c25b087586667f95b46--b458e1a716224e5385886fde369be6e5 7069ff68b9c04e329e3f967ed1a41dd9 RX(iia_β₀₀) b458e1a716224e5385886fde369be6e5--7069ff68b9c04e329e3f967ed1a41dd9 63ed9aef77a54de68cdd2284ada7524b RX(iia_α₁₀) 7069ff68b9c04e329e3f967ed1a41dd9--63ed9aef77a54de68cdd2284ada7524b 8d75e97d8e314eeb9393d3b51a475cbe RY(iia_α₁₃) 63ed9aef77a54de68cdd2284ada7524b--8d75e97d8e314eeb9393d3b51a475cbe f946fab675024b9e885b02d8d064d7ea 8d75e97d8e314eeb9393d3b51a475cbe--f946fab675024b9e885b02d8d064d7ea a888cb06e59e49308451f81cc3c34216 f946fab675024b9e885b02d8d064d7ea--a888cb06e59e49308451f81cc3c34216 958de95162454eb990b92f753c84e2a0 RX(iia_γ₁₀) a888cb06e59e49308451f81cc3c34216--958de95162454eb990b92f753c84e2a0 396d8241988f426ca208ae220829a044 958de95162454eb990b92f753c84e2a0--396d8241988f426ca208ae220829a044 f9db3a4bd6864a2c91cbf5b488a50169 396d8241988f426ca208ae220829a044--f9db3a4bd6864a2c91cbf5b488a50169 a4a0d32b33b040639452c446402ae52f RY(iia_β₁₃) f9db3a4bd6864a2c91cbf5b488a50169--a4a0d32b33b040639452c446402ae52f 707e68220abb4010b0ccb3fea0bd15a8 RX(iia_β₁₀) a4a0d32b33b040639452c446402ae52f--707e68220abb4010b0ccb3fea0bd15a8 292d2142f05645549a2c86bed6bd3b30 707e68220abb4010b0ccb3fea0bd15a8--292d2142f05645549a2c86bed6bd3b30 da5d7df3b4b64a55ac32cd4ad36dcc16 62c848a968754b0b815c13fda5f71cf4 RX(iia_α₀₁) d515b0d730a1480a8e3857e6fde8541d--62c848a968754b0b815c13fda5f71cf4 9ad7786e680447b3a751ea75b631b7de 2 0545c68d24484b0a9adbdd531afac15e RY(iia_α₀₄) 62c848a968754b0b815c13fda5f71cf4--0545c68d24484b0a9adbdd531afac15e 82ac567702c04ad6a68db7a6d60be2b9 X 0545c68d24484b0a9adbdd531afac15e--82ac567702c04ad6a68db7a6d60be2b9 82ac567702c04ad6a68db7a6d60be2b9--069796f0a7344c6d83aa4c01a9ced772 2f2b257ba7904d218d6a7cfd7200e4e2 82ac567702c04ad6a68db7a6d60be2b9--2f2b257ba7904d218d6a7cfd7200e4e2 0312bf9a6b204c59b4a37174ac540cb6 RX(iia_γ₀₁) 2f2b257ba7904d218d6a7cfd7200e4e2--0312bf9a6b204c59b4a37174ac540cb6 127a7afc593c4e08894b3fc1032ff7f6 0312bf9a6b204c59b4a37174ac540cb6--127a7afc593c4e08894b3fc1032ff7f6 c572e679516c4f6b9e8ffce76e07ec6c X 127a7afc593c4e08894b3fc1032ff7f6--c572e679516c4f6b9e8ffce76e07ec6c c572e679516c4f6b9e8ffce76e07ec6c--5fb19d48fce54c25b087586667f95b46 f18de8c50d834410a77bc6d8d9c8c83f RY(iia_β₀₄) c572e679516c4f6b9e8ffce76e07ec6c--f18de8c50d834410a77bc6d8d9c8c83f cd19c1444c3a406999cc4f6976800e72 RX(iia_β₀₁) f18de8c50d834410a77bc6d8d9c8c83f--cd19c1444c3a406999cc4f6976800e72 f4289b6f825a43aa9b31f83bae25c979 RX(iia_α₁₁) cd19c1444c3a406999cc4f6976800e72--f4289b6f825a43aa9b31f83bae25c979 b65c9ec4e7744fa2874002fd1fc16b84 RY(iia_α₁₄) f4289b6f825a43aa9b31f83bae25c979--b65c9ec4e7744fa2874002fd1fc16b84 b1ba4aa49aca40f494babe25325b82c5 X b65c9ec4e7744fa2874002fd1fc16b84--b1ba4aa49aca40f494babe25325b82c5 b1ba4aa49aca40f494babe25325b82c5--f946fab675024b9e885b02d8d064d7ea f597c56722064092ae093a704c560410 b1ba4aa49aca40f494babe25325b82c5--f597c56722064092ae093a704c560410 4d7f4ba9c99d4977a7848a85e1ad9e15 RX(iia_γ₁₁) f597c56722064092ae093a704c560410--4d7f4ba9c99d4977a7848a85e1ad9e15 ecab3d8a4ac64fde8c9a98328066c19e 4d7f4ba9c99d4977a7848a85e1ad9e15--ecab3d8a4ac64fde8c9a98328066c19e 0b8d35e50fe34d3693907b1c7381cb03 X ecab3d8a4ac64fde8c9a98328066c19e--0b8d35e50fe34d3693907b1c7381cb03 0b8d35e50fe34d3693907b1c7381cb03--f9db3a4bd6864a2c91cbf5b488a50169 46d11b0be09044ac87b75437003ebc3b RY(iia_β₁₄) 0b8d35e50fe34d3693907b1c7381cb03--46d11b0be09044ac87b75437003ebc3b f1899b7a900546598006fc285cd826b3 RX(iia_β₁₁) 46d11b0be09044ac87b75437003ebc3b--f1899b7a900546598006fc285cd826b3 f1899b7a900546598006fc285cd826b3--da5d7df3b4b64a55ac32cd4ad36dcc16 a4435697774c457ea8fe2ac1f0d01fee 1e76785140af4f24aebcfb15c37c328b RX(iia_α₀₂) 9ad7786e680447b3a751ea75b631b7de--1e76785140af4f24aebcfb15c37c328b 034ae51fb7244d94bd063abce1be53de RY(iia_α₀₅) 1e76785140af4f24aebcfb15c37c328b--034ae51fb7244d94bd063abce1be53de 104e729775884e09a30e77bba3fbb7d8 034ae51fb7244d94bd063abce1be53de--104e729775884e09a30e77bba3fbb7d8 6ffcc0d98b77430f997341d507422e5c X 104e729775884e09a30e77bba3fbb7d8--6ffcc0d98b77430f997341d507422e5c 6ffcc0d98b77430f997341d507422e5c--2f2b257ba7904d218d6a7cfd7200e4e2 9896811cc74042879191e3cc69868772 RX(iia_γ₀₂) 6ffcc0d98b77430f997341d507422e5c--9896811cc74042879191e3cc69868772 43dfa6d5fa7e4d11a520ac47f106e626 X 9896811cc74042879191e3cc69868772--43dfa6d5fa7e4d11a520ac47f106e626 43dfa6d5fa7e4d11a520ac47f106e626--127a7afc593c4e08894b3fc1032ff7f6 37eddd3060ba4b93914f8918749cc3ab 43dfa6d5fa7e4d11a520ac47f106e626--37eddd3060ba4b93914f8918749cc3ab cd9e0ffa48c2431b989c7d6ebbfe6184 RY(iia_β₀₅) 37eddd3060ba4b93914f8918749cc3ab--cd9e0ffa48c2431b989c7d6ebbfe6184 5bc237a76e43476badaa858ff2edf2f4 RX(iia_β₀₂) cd9e0ffa48c2431b989c7d6ebbfe6184--5bc237a76e43476badaa858ff2edf2f4 45de906186e943cd828147e3ca3d632d RX(iia_α₁₂) 5bc237a76e43476badaa858ff2edf2f4--45de906186e943cd828147e3ca3d632d 1afbcd183ca4496891df30ac2b2e75a7 RY(iia_α₁₅) 45de906186e943cd828147e3ca3d632d--1afbcd183ca4496891df30ac2b2e75a7 29ac60a2bb894373b1bb47e1c09ac45a 1afbcd183ca4496891df30ac2b2e75a7--29ac60a2bb894373b1bb47e1c09ac45a 0ebdea14e8fe4e8b9dfee02b0d1f01b2 X 29ac60a2bb894373b1bb47e1c09ac45a--0ebdea14e8fe4e8b9dfee02b0d1f01b2 0ebdea14e8fe4e8b9dfee02b0d1f01b2--f597c56722064092ae093a704c560410 df18f73b0e37400f9f45304818c337e3 RX(iia_γ₁₂) 0ebdea14e8fe4e8b9dfee02b0d1f01b2--df18f73b0e37400f9f45304818c337e3 b65c03fbc81e4bcca14d19bc7ec181c9 X df18f73b0e37400f9f45304818c337e3--b65c03fbc81e4bcca14d19bc7ec181c9 b65c03fbc81e4bcca14d19bc7ec181c9--ecab3d8a4ac64fde8c9a98328066c19e 03ecf46c25bd413d850c63901094eb49 b65c03fbc81e4bcca14d19bc7ec181c9--03ecf46c25bd413d850c63901094eb49 fd7ecacea09147878b8b886a0e3b00af RY(iia_β₁₅) 03ecf46c25bd413d850c63901094eb49--fd7ecacea09147878b8b886a0e3b00af 07e7ab092287445589f7c19eebeb2167 RX(iia_β₁₂) fd7ecacea09147878b8b886a0e3b00af--07e7ab092287445589f7c19eebeb2167 07e7ab092287445589f7c19eebeb2167--a4435697774c457ea8fe2ac1f0d01fee