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_7d519e247860467d88eba1ec5b81ab46 Constant Chebyshev FM cluster_d08197765e604db8b27ec90db2be68a5 Constant Fourier FM e847a459290f48de98b0b1f0d16b0f02 0 ae5a5dc9d3ce4ea298ce85306f322d1a RX(phi) e847a459290f48de98b0b1f0d16b0f02--ae5a5dc9d3ce4ea298ce85306f322d1a 4194332f95064ad6915c82c903cd6f7f 1 3719fc15901844cfb4cf904bf229e36a RX(acos(phi)) ae5a5dc9d3ce4ea298ce85306f322d1a--3719fc15901844cfb4cf904bf229e36a f262a22a873449fe82cf59c90e04f056 3719fc15901844cfb4cf904bf229e36a--f262a22a873449fe82cf59c90e04f056 6171347d5378464a816ef2745c3713d5 771132034b58459ea86565100bd38b5b RX(phi) 4194332f95064ad6915c82c903cd6f7f--771132034b58459ea86565100bd38b5b 2264249bb5664656b55e1d181872f567 2 6a5b84d6541f467aac0adc772b22bbb1 RX(acos(phi)) 771132034b58459ea86565100bd38b5b--6a5b84d6541f467aac0adc772b22bbb1 6a5b84d6541f467aac0adc772b22bbb1--6171347d5378464a816ef2745c3713d5 9e38dd7bd4234f3c9af48fbfe6b101b6 62daf4d8dbb24ac98636b78892b1cbe4 RX(phi) 2264249bb5664656b55e1d181872f567--62daf4d8dbb24ac98636b78892b1cbe4 eb52ae166c3947d99a44a43c6d39ac72 RX(acos(phi)) 62daf4d8dbb24ac98636b78892b1cbe4--eb52ae166c3947d99a44a43c6d39ac72 eb52ae166c3947d99a44a43c6d39ac72--9e38dd7bd4234f3c9af48fbfe6b101b6

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_46c34881347e4b9eb5b2cb190da55617 Constant <function custom_fn at 0x7f62f318fbe0> FM cluster_601e8a708cb74900abd523e980149e63 Constant asin FM 0d4a687523204c31a0fdb38f78d1e28b 0 e2930aa95cb5446a8f00a1fea7928201 RX(asin(phi)) 0d4a687523204c31a0fdb38f78d1e28b--e2930aa95cb5446a8f00a1fea7928201 b05a6e523fe34c6cb4903c9a3ff13ac8 1 8acc24c9528d41c2a0efcf6769995a16 RX(phi**2 + asin(phi)) e2930aa95cb5446a8f00a1fea7928201--8acc24c9528d41c2a0efcf6769995a16 7be49fa780f149738430e020498702a8 8acc24c9528d41c2a0efcf6769995a16--7be49fa780f149738430e020498702a8 f196d6d669204775b0495a4dd45b93fe 3a2802413f1846038ee3014147ac557f RX(asin(phi)) b05a6e523fe34c6cb4903c9a3ff13ac8--3a2802413f1846038ee3014147ac557f e71e19ccf42940c6a5e2f5a1c5b6da92 2 b4da843a828d43f9a47b46038d0ccd20 RX(phi**2 + asin(phi)) 3a2802413f1846038ee3014147ac557f--b4da843a828d43f9a47b46038d0ccd20 b4da843a828d43f9a47b46038d0ccd20--f196d6d669204775b0495a4dd45b93fe 3a96ef571c7d441eb176e3be7226f325 6579f13ccc1748999997ff9a9d9e0e82 RX(asin(phi)) e71e19ccf42940c6a5e2f5a1c5b6da92--6579f13ccc1748999997ff9a9d9e0e82 cb46804b1b734c6eb8ce6026993f2cd1 RX(phi**2 + asin(phi)) 6579f13ccc1748999997ff9a9d9e0e82--cb46804b1b734c6eb8ce6026993f2cd1 cb46804b1b734c6eb8ce6026993f2cd1--3a96ef571c7d441eb176e3be7226f325

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_259d0cf337804ed088c84934b7db6a5b Exponential Fourier FM cluster_195b38e94fb64aa09ac82c22a14dda5c Constant Fourier FM cluster_b2e582575b4b46f8911da87f81971f9f Tower Fourier FM 773ba4bdfc1340829ee1ca09ba40a10e 0 ec6b9aea58da4d3eafe59a775dd30ab7 RX(phi) 773ba4bdfc1340829ee1ca09ba40a10e--ec6b9aea58da4d3eafe59a775dd30ab7 cd3276c543f5446d91979e1d231eb3ac 1 c8a9782266a04ed5871f457f32ba90b5 RX(1.0*phi) ec6b9aea58da4d3eafe59a775dd30ab7--c8a9782266a04ed5871f457f32ba90b5 94a0029bb08045e2b262ac33b7a638eb RX(1.0*phi) c8a9782266a04ed5871f457f32ba90b5--94a0029bb08045e2b262ac33b7a638eb b619d6796bd44ce385b4ba1ea250d560 94a0029bb08045e2b262ac33b7a638eb--b619d6796bd44ce385b4ba1ea250d560 140160df7f1f4dc1a2af6843c5e03038 019fba474857478caba82c94a4e80e7c RX(phi) cd3276c543f5446d91979e1d231eb3ac--019fba474857478caba82c94a4e80e7c 7a752f81c12f4e5c93f23916f785d50e 2 734710b71f27461dabbd46eb0a4d6c86 RX(2.0*phi) 019fba474857478caba82c94a4e80e7c--734710b71f27461dabbd46eb0a4d6c86 a514406eb8764ef6a4a0765d4f27d046 RX(2.0*phi) 734710b71f27461dabbd46eb0a4d6c86--a514406eb8764ef6a4a0765d4f27d046 a514406eb8764ef6a4a0765d4f27d046--140160df7f1f4dc1a2af6843c5e03038 11b62e182323475b9dd4fe3fa5b44bf6 30adda81e3d84f6aa60abf815ebc8a66 RX(phi) 7a752f81c12f4e5c93f23916f785d50e--30adda81e3d84f6aa60abf815ebc8a66 7989685b2fa342ee98a4b9922cf2425a 3 d97858572c66431c86341dff5edcb3f1 RX(3.0*phi) 30adda81e3d84f6aa60abf815ebc8a66--d97858572c66431c86341dff5edcb3f1 ed65b71cf4ff475bbb2fee4b9aedfff3 RX(4.0*phi) d97858572c66431c86341dff5edcb3f1--ed65b71cf4ff475bbb2fee4b9aedfff3 ed65b71cf4ff475bbb2fee4b9aedfff3--11b62e182323475b9dd4fe3fa5b44bf6 63cf300f7d404ff6ad5d9005fdfc77a0 6a0d2dff380f41cebc3b989ea7a69aee RX(phi) 7989685b2fa342ee98a4b9922cf2425a--6a0d2dff380f41cebc3b989ea7a69aee 5b033e5712ae4eab94f37266dc56b39f 4 177664c66b34453da8df6a40114e4b96 RX(4.0*phi) 6a0d2dff380f41cebc3b989ea7a69aee--177664c66b34453da8df6a40114e4b96 f4b1c8c38e9b4ce1a22651f524b0f2a0 RX(8.0*phi) 177664c66b34453da8df6a40114e4b96--f4b1c8c38e9b4ce1a22651f524b0f2a0 f4b1c8c38e9b4ce1a22651f524b0f2a0--63cf300f7d404ff6ad5d9005fdfc77a0 34e07846867f426999137462d873c5ca cac752ba7a5c40aead172b7e77699ecd RX(phi) 5b033e5712ae4eab94f37266dc56b39f--cac752ba7a5c40aead172b7e77699ecd 760964fb02784965961800b0e3d7385b RX(5.0*phi) cac752ba7a5c40aead172b7e77699ecd--760964fb02784965961800b0e3d7385b 73623f12b3b04aae85650d1ed2f93f62 RX(16.0*phi) 760964fb02784965961800b0e3d7385b--73623f12b3b04aae85650d1ed2f93f62 73623f12b3b04aae85650d1ed2f93f62--34e07846867f426999137462d873c5ca

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 241601cc229643049ac595b2d12ded0b 0 a4dc449af1714c8e8581c91c2bcbb24c RX(1.0*acos(phi)) 241601cc229643049ac595b2d12ded0b--a4dc449af1714c8e8581c91c2bcbb24c 19d110f2ef8249708edae481b3959cdb 1 13c49039255245b1b6cc79a8553de000 a4dc449af1714c8e8581c91c2bcbb24c--13c49039255245b1b6cc79a8553de000 35270b95809343b3b1d6609ba42e0bdb 1bcfb8d401924570ae01b698601d1ef5 RX(1.414*acos(phi)) 19d110f2ef8249708edae481b3959cdb--1bcfb8d401924570ae01b698601d1ef5 f6581f1d20454f5abfe8f5bcb37274b1 2 1bcfb8d401924570ae01b698601d1ef5--35270b95809343b3b1d6609ba42e0bdb a37eff0c79f144e0b39b153da7e24b86 82436b28173d43a99550c5dc059035f1 RX(1.732*acos(phi)) f6581f1d20454f5abfe8f5bcb37274b1--82436b28173d43a99550c5dc059035f1 5fdb26472ead44119913d981cbacf651 3 82436b28173d43a99550c5dc059035f1--a37eff0c79f144e0b39b153da7e24b86 225d4a72bf8c4d25b5e93aa63564d845 517fb437e090434facc770b968c3c67e RX(2.0*acos(phi)) 5fdb26472ead44119913d981cbacf651--517fb437e090434facc770b968c3c67e 856df353b5f84effbd7f98c0f9b3ce66 4 517fb437e090434facc770b968c3c67e--225d4a72bf8c4d25b5e93aa63564d845 c87213d845fc40d4b8828f4549811af1 e02a25fae33242339620ca277b4c8b54 RX(2.236*acos(phi)) 856df353b5f84effbd7f98c0f9b3ce66--e02a25fae33242339620ca277b4c8b54 e02a25fae33242339620ca277b4c8b54--c87213d845fc40d4b8828f4549811af1

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 c71bfb9e5fb14b31b6e7159674b70a05 0 2eabccafa86c441381093b15c1c82c2e RX(1.0*phi*w₀) c71bfb9e5fb14b31b6e7159674b70a05--2eabccafa86c441381093b15c1c82c2e 35a33eb8e45d449fba76f0f11650d560 1 878cef88ea614284a8ecdf8a9646dbbd 2eabccafa86c441381093b15c1c82c2e--878cef88ea614284a8ecdf8a9646dbbd 6f96fe2dc7cc420f80db972cbec3b988 ddaac3cadb1e4abaa0bc0df10d1a6746 RX(2.0*phi*w₁) 35a33eb8e45d449fba76f0f11650d560--ddaac3cadb1e4abaa0bc0df10d1a6746 74cbdb369c0b459aa565efeb1b67b948 2 ddaac3cadb1e4abaa0bc0df10d1a6746--6f96fe2dc7cc420f80db972cbec3b988 4629e2f9fb94451cb22639bd030a4335 0cb4da736cd14d93b0a7c339a5419050 RX(4.0*phi*w₂) 74cbdb369c0b459aa565efeb1b67b948--0cb4da736cd14d93b0a7c339a5419050 5e6d805ee01c4e26b592ded32cc607d0 3 0cb4da736cd14d93b0a7c339a5419050--4629e2f9fb94451cb22639bd030a4335 20a3fe22800645bb9e94491db8a569cc 19c3b16f297b4881b3c2162216313640 RX(8.0*phi*w₃) 5e6d805ee01c4e26b592ded32cc607d0--19c3b16f297b4881b3c2162216313640 dcb9f0acede944b698ee9e44a2cc9e1b 4 19c3b16f297b4881b3c2162216313640--20a3fe22800645bb9e94491db8a569cc 169b773680a24b2c8ab4831a7f62feb5 ff87bfcafd7249aab15d5dae07131bff RX(16.0*phi*w₄) dcb9f0acede944b698ee9e44a2cc9e1b--ff87bfcafd7249aab15d5dae07131bff ff87bfcafd7249aab15d5dae07131bff--169b773680a24b2c8ab4831a7f62feb5

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 6792e7c18bfb4bc0af5bd2f71b85ee03 0 6c78bf5ee2a749f59e5f538209f79813 RY(80.0*acos(w₄*(0.667*x + 1.667))) 6792e7c18bfb4bc0af5bd2f71b85ee03--6c78bf5ee2a749f59e5f538209f79813 e4fde1667f2e4e87919c14061cb9e94b 1 f3321e51e494461da17463f16f88d9e3 6c78bf5ee2a749f59e5f538209f79813--f3321e51e494461da17463f16f88d9e3 f6eded8ded004575a1d19c1d6ca8922e c1d6f5abdc144357903e809c6cc1c81f RY(40.0*acos(w₃*(0.667*x + 1.667))) e4fde1667f2e4e87919c14061cb9e94b--c1d6f5abdc144357903e809c6cc1c81f c656f97aef834689bdbad30730b61411 2 c1d6f5abdc144357903e809c6cc1c81f--f6eded8ded004575a1d19c1d6ca8922e 99d9fbba7be743faa150b7f3b27eae4d 575e7688e5c148aea9ac81bbf588613e RY(20.0*acos(w₂*(0.667*x + 1.667))) c656f97aef834689bdbad30730b61411--575e7688e5c148aea9ac81bbf588613e a77fb7aaebf0468eb04158269dff4243 3 575e7688e5c148aea9ac81bbf588613e--99d9fbba7be743faa150b7f3b27eae4d fdb40c7b9c0c470ba10702a7d7710d8b a0e15327c14b4dc1acbefbbc377b8a2d RY(10.0*acos(w₁*(0.667*x + 1.667))) a77fb7aaebf0468eb04158269dff4243--a0e15327c14b4dc1acbefbbc377b8a2d 715443f025dc4388a3e52b8e95ba9785 4 a0e15327c14b4dc1acbefbbc377b8a2d--fdb40c7b9c0c470ba10702a7d7710d8b 57726cab1ce34c34ba5440e218c6b4fb 997f7648bba8420687a797e5d65bc23f RY(5.0*acos(w₀*(0.667*x + 1.667))) 715443f025dc4388a3e52b8e95ba9785--997f7648bba8420687a797e5d65bc23f 997f7648bba8420687a797e5d65bc23f--57726cab1ce34c34ba5440e218c6b4fb

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 9245744041ff48bea005963810dd8b4a 0 dff405eb1c874f9e9570c0bc3304cf04 RX(theta₀) 9245744041ff48bea005963810dd8b4a--dff405eb1c874f9e9570c0bc3304cf04 75e2163191ef40049aeede85c0a3b4fe 1 66cd1941610d4f0c9d35d0e162a07d1f RY(theta₃) dff405eb1c874f9e9570c0bc3304cf04--66cd1941610d4f0c9d35d0e162a07d1f 21bd772a6c7f4e84981eb5c704c43c69 RX(theta₆) 66cd1941610d4f0c9d35d0e162a07d1f--21bd772a6c7f4e84981eb5c704c43c69 c4eabed5655d42e783dad2252da22c24 21bd772a6c7f4e84981eb5c704c43c69--c4eabed5655d42e783dad2252da22c24 2baab582e53e47b6b67d5b8a143bba06 c4eabed5655d42e783dad2252da22c24--2baab582e53e47b6b67d5b8a143bba06 860fb9a5e24844638df67dc41751e560 RX(theta₉) 2baab582e53e47b6b67d5b8a143bba06--860fb9a5e24844638df67dc41751e560 418445d2edb745c2ad84e32268669034 RY(theta₁₂) 860fb9a5e24844638df67dc41751e560--418445d2edb745c2ad84e32268669034 5ded3271a6d442729bcafbc40fee9b3e RX(theta₁₅) 418445d2edb745c2ad84e32268669034--5ded3271a6d442729bcafbc40fee9b3e 3ad7475dcc994454909570a7b62550ce 5ded3271a6d442729bcafbc40fee9b3e--3ad7475dcc994454909570a7b62550ce 240d08d75f7a4299a05b8a94f1571943 3ad7475dcc994454909570a7b62550ce--240d08d75f7a4299a05b8a94f1571943 72ae0bed80c44ee4a0d39a5a8a7d1067 240d08d75f7a4299a05b8a94f1571943--72ae0bed80c44ee4a0d39a5a8a7d1067 3c0aafeb492543b0ac4937795163c2cd 049f6975c73e46b78e0eb73d74e770c8 RX(theta₁) 75e2163191ef40049aeede85c0a3b4fe--049f6975c73e46b78e0eb73d74e770c8 f110ed0c708745be805fa53be2d436a9 2 e8ea4f33004048ae9a8b59e6d24c858c RY(theta₄) 049f6975c73e46b78e0eb73d74e770c8--e8ea4f33004048ae9a8b59e6d24c858c 08891d8f4828485284b44a355f29e4f4 RX(theta₇) e8ea4f33004048ae9a8b59e6d24c858c--08891d8f4828485284b44a355f29e4f4 35c801680a0143e98fabd653375f1103 X 08891d8f4828485284b44a355f29e4f4--35c801680a0143e98fabd653375f1103 35c801680a0143e98fabd653375f1103--c4eabed5655d42e783dad2252da22c24 bd449a282ea7449c90530fe4bf21fe58 35c801680a0143e98fabd653375f1103--bd449a282ea7449c90530fe4bf21fe58 86a3accd34a4491197f09b87ff1cbac5 RX(theta₁₀) bd449a282ea7449c90530fe4bf21fe58--86a3accd34a4491197f09b87ff1cbac5 f6b01cc13e0a4c42b6cad1d1d3b02ce2 RY(theta₁₃) 86a3accd34a4491197f09b87ff1cbac5--f6b01cc13e0a4c42b6cad1d1d3b02ce2 e965f745ebd64d60816c640597fd4abd RX(theta₁₆) f6b01cc13e0a4c42b6cad1d1d3b02ce2--e965f745ebd64d60816c640597fd4abd aa10feab7a74413fa0b65b19684dfd4f X e965f745ebd64d60816c640597fd4abd--aa10feab7a74413fa0b65b19684dfd4f aa10feab7a74413fa0b65b19684dfd4f--3ad7475dcc994454909570a7b62550ce 9b7de9f9829e4131831ef0ec56b81aeb aa10feab7a74413fa0b65b19684dfd4f--9b7de9f9829e4131831ef0ec56b81aeb 9b7de9f9829e4131831ef0ec56b81aeb--3c0aafeb492543b0ac4937795163c2cd 88c873c957a2407892ac3033ee7271a8 f8a448a3af574f219a89a02c460bee1f RX(theta₂) f110ed0c708745be805fa53be2d436a9--f8a448a3af574f219a89a02c460bee1f 79a91c7a50ec4c64bd91a74da3b12498 RY(theta₅) f8a448a3af574f219a89a02c460bee1f--79a91c7a50ec4c64bd91a74da3b12498 236ff37bc0454edbbcc0454c639f0eae RX(theta₈) 79a91c7a50ec4c64bd91a74da3b12498--236ff37bc0454edbbcc0454c639f0eae beaaf4b7937549e9bd6f2a80f1775d8d 236ff37bc0454edbbcc0454c639f0eae--beaaf4b7937549e9bd6f2a80f1775d8d 8df328d5e5ad4bf69c2167897ff7c54b X beaaf4b7937549e9bd6f2a80f1775d8d--8df328d5e5ad4bf69c2167897ff7c54b 8df328d5e5ad4bf69c2167897ff7c54b--bd449a282ea7449c90530fe4bf21fe58 d7d01b0ebce74984b15ebffe525aa2a4 RX(theta₁₁) 8df328d5e5ad4bf69c2167897ff7c54b--d7d01b0ebce74984b15ebffe525aa2a4 5393f6e25ed94dc2a9960ec010432c7f RY(theta₁₄) d7d01b0ebce74984b15ebffe525aa2a4--5393f6e25ed94dc2a9960ec010432c7f 142fdfa0134a4a509f604b8da8eb9e3e RX(theta₁₇) 5393f6e25ed94dc2a9960ec010432c7f--142fdfa0134a4a509f604b8da8eb9e3e 3b149e334290424990ce34232325a41c 142fdfa0134a4a509f604b8da8eb9e3e--3b149e334290424990ce34232325a41c c42b69e68a8941f5b7d8382e44fa4817 X 3b149e334290424990ce34232325a41c--c42b69e68a8941f5b7d8382e44fa4817 c42b69e68a8941f5b7d8382e44fa4817--9b7de9f9829e4131831ef0ec56b81aeb c42b69e68a8941f5b7d8382e44fa4817--88c873c957a2407892ac3033ee7271a8

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 32d4bd181c5f422780bad3a082650d7e 0 1fb456a1e178454d927a21f1adfb0c8b RX(phi₀) 32d4bd181c5f422780bad3a082650d7e--1fb456a1e178454d927a21f1adfb0c8b 557b93587ebb4153bfdb00395ef30a40 1 15ba6ccd0ea2482882a8bc86f2853020 RY(phi₃) 1fb456a1e178454d927a21f1adfb0c8b--15ba6ccd0ea2482882a8bc86f2853020 e1281f7f503f4cf6a79696493e660a2d RX(phi₆) 15ba6ccd0ea2482882a8bc86f2853020--e1281f7f503f4cf6a79696493e660a2d ef5f4b528b464e659332c53d5d52bf1a e1281f7f503f4cf6a79696493e660a2d--ef5f4b528b464e659332c53d5d52bf1a 7efd0d7812aa4eb8a830ec8e04b798a3 ef5f4b528b464e659332c53d5d52bf1a--7efd0d7812aa4eb8a830ec8e04b798a3 9b4f59b56cb145218f829f07230b2c78 RX(phi₉) 7efd0d7812aa4eb8a830ec8e04b798a3--9b4f59b56cb145218f829f07230b2c78 cdf4cc6c81904ddc95bfc8d8390e4aa1 RY(phi₁₂) 9b4f59b56cb145218f829f07230b2c78--cdf4cc6c81904ddc95bfc8d8390e4aa1 45951289263e40948a5fabe71d6c5263 RX(phi₁₅) cdf4cc6c81904ddc95bfc8d8390e4aa1--45951289263e40948a5fabe71d6c5263 b2420e83b9b545e78482f1eb53d9ba29 45951289263e40948a5fabe71d6c5263--b2420e83b9b545e78482f1eb53d9ba29 f1bc635f8f724f01a9bc3247c322754c b2420e83b9b545e78482f1eb53d9ba29--f1bc635f8f724f01a9bc3247c322754c fb5b731f79354a9780f8beb9cad0230f f1bc635f8f724f01a9bc3247c322754c--fb5b731f79354a9780f8beb9cad0230f 8ccf320b286c448e9ede01c524797519 0fd0d14703d94e8c949f3713c1d9c3f9 RX(phi₁) 557b93587ebb4153bfdb00395ef30a40--0fd0d14703d94e8c949f3713c1d9c3f9 d0d86f0fd73c40a9830c707cdb186044 2 b0b2c1db598443939780af192fcc284e RY(phi₄) 0fd0d14703d94e8c949f3713c1d9c3f9--b0b2c1db598443939780af192fcc284e 5a0536fe50f54939ac46292803c6ce87 RX(phi₇) b0b2c1db598443939780af192fcc284e--5a0536fe50f54939ac46292803c6ce87 f989569101df4b709b8c135b32b3afae PHASE(phi_ent₀) 5a0536fe50f54939ac46292803c6ce87--f989569101df4b709b8c135b32b3afae f989569101df4b709b8c135b32b3afae--ef5f4b528b464e659332c53d5d52bf1a c716df32f907459ba615ec2b066426a7 f989569101df4b709b8c135b32b3afae--c716df32f907459ba615ec2b066426a7 29e56bcd86ea4dbf900ee54bd52bc802 RX(phi₁₀) c716df32f907459ba615ec2b066426a7--29e56bcd86ea4dbf900ee54bd52bc802 637cecd617ed472dbc71668962590f3c RY(phi₁₃) 29e56bcd86ea4dbf900ee54bd52bc802--637cecd617ed472dbc71668962590f3c 9dbc196a606b426681c46f547af2fd3a RX(phi₁₆) 637cecd617ed472dbc71668962590f3c--9dbc196a606b426681c46f547af2fd3a 7a1d58b00ff04813af96da61f81ce804 PHASE(phi_ent₂) 9dbc196a606b426681c46f547af2fd3a--7a1d58b00ff04813af96da61f81ce804 7a1d58b00ff04813af96da61f81ce804--b2420e83b9b545e78482f1eb53d9ba29 631ea3a2ca984ed4a2d6ac538a044f93 7a1d58b00ff04813af96da61f81ce804--631ea3a2ca984ed4a2d6ac538a044f93 631ea3a2ca984ed4a2d6ac538a044f93--8ccf320b286c448e9ede01c524797519 07e3d551d9fa4b898710d379f4ba009a 189a68626be94d64a029eb1d9cfd9e14 RX(phi₂) d0d86f0fd73c40a9830c707cdb186044--189a68626be94d64a029eb1d9cfd9e14 ceb83055ba9f41039446fc141590ec64 RY(phi₅) 189a68626be94d64a029eb1d9cfd9e14--ceb83055ba9f41039446fc141590ec64 ebb46ad3c9de459ca2e484d818244a87 RX(phi₈) ceb83055ba9f41039446fc141590ec64--ebb46ad3c9de459ca2e484d818244a87 8109fe7fe07242e48c5da9b116b1258c ebb46ad3c9de459ca2e484d818244a87--8109fe7fe07242e48c5da9b116b1258c 4bb043449b3940f2aabbd8f668a3e3c8 PHASE(phi_ent₁) 8109fe7fe07242e48c5da9b116b1258c--4bb043449b3940f2aabbd8f668a3e3c8 4bb043449b3940f2aabbd8f668a3e3c8--c716df32f907459ba615ec2b066426a7 1639550ec5e144c4b875fc0983756059 RX(phi₁₁) 4bb043449b3940f2aabbd8f668a3e3c8--1639550ec5e144c4b875fc0983756059 6fd6fc1c00674e2ba8e2fc73526a87bd RY(phi₁₄) 1639550ec5e144c4b875fc0983756059--6fd6fc1c00674e2ba8e2fc73526a87bd dbf7317b167a4e779a8ba382074796ec RX(phi₁₇) 6fd6fc1c00674e2ba8e2fc73526a87bd--dbf7317b167a4e779a8ba382074796ec b4587903901c406d80f970ded9d96daa dbf7317b167a4e779a8ba382074796ec--b4587903901c406d80f970ded9d96daa 1b219d1d9ac3465eb5b7c629f352ed29 PHASE(phi_ent₃) b4587903901c406d80f970ded9d96daa--1b219d1d9ac3465eb5b7c629f352ed29 1b219d1d9ac3465eb5b7c629f352ed29--631ea3a2ca984ed4a2d6ac538a044f93 1b219d1d9ac3465eb5b7c629f352ed29--07e3d551d9fa4b898710d379f4ba009a

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_5849f8c2f3c44db4b741e4868c75fc32 cluster_3a6ddfccd8394207ae5e8e4affd6dd73 50b9afc9553446458621fdb6caa75a9a 0 ec5a499bbb744b7fbd0727c0d2ef7a1b RX(theta₀) 50b9afc9553446458621fdb6caa75a9a--ec5a499bbb744b7fbd0727c0d2ef7a1b 86e04f7663ea439d8003b2fa22c27bb5 1 125b837833c84dfb88140f707c997c74 RY(theta₃) ec5a499bbb744b7fbd0727c0d2ef7a1b--125b837833c84dfb88140f707c997c74 2474d55679f94c9780e7bbc481d9e8d4 RX(theta₆) 125b837833c84dfb88140f707c997c74--2474d55679f94c9780e7bbc481d9e8d4 cf48c9fa0e3d4bf1ac239ad82d912777 HamEvo 2474d55679f94c9780e7bbc481d9e8d4--cf48c9fa0e3d4bf1ac239ad82d912777 21730ba726944f0caabac14ae5671f94 RX(theta₉) cf48c9fa0e3d4bf1ac239ad82d912777--21730ba726944f0caabac14ae5671f94 1e3ae29ca3ff4f5f9054d369b1aeeb63 RY(theta₁₂) 21730ba726944f0caabac14ae5671f94--1e3ae29ca3ff4f5f9054d369b1aeeb63 efd5f2dd9835458d95579e386d55d4dc RX(theta₁₅) 1e3ae29ca3ff4f5f9054d369b1aeeb63--efd5f2dd9835458d95579e386d55d4dc 9ac56d8db5fb4514ae3131abafbe61e0 HamEvo efd5f2dd9835458d95579e386d55d4dc--9ac56d8db5fb4514ae3131abafbe61e0 14f96742653d4278b709e00e24427c67 9ac56d8db5fb4514ae3131abafbe61e0--14f96742653d4278b709e00e24427c67 2291deb7879a4921abec65bc9412fba1 0bd38e5b46744652bb9f3898d77ca5e8 RX(theta₁) 86e04f7663ea439d8003b2fa22c27bb5--0bd38e5b46744652bb9f3898d77ca5e8 001a94358f364bb8a6469edb35d2f0c1 2 f4684743da2c46bdadd77eb639b5a20a RY(theta₄) 0bd38e5b46744652bb9f3898d77ca5e8--f4684743da2c46bdadd77eb639b5a20a 5a306bc39b9d4ee79070978d229bf92b RX(theta₇) f4684743da2c46bdadd77eb639b5a20a--5a306bc39b9d4ee79070978d229bf92b a6933f0a13874088a66789711cfb9974 t = theta_t₀ 5a306bc39b9d4ee79070978d229bf92b--a6933f0a13874088a66789711cfb9974 9398f1f97f254fc6a50d0a6740808e85 RX(theta₁₀) a6933f0a13874088a66789711cfb9974--9398f1f97f254fc6a50d0a6740808e85 368e1c58eef44c9589a3b64123326922 RY(theta₁₃) 9398f1f97f254fc6a50d0a6740808e85--368e1c58eef44c9589a3b64123326922 5d76719da8364f2d9686fdaae0684024 RX(theta₁₆) 368e1c58eef44c9589a3b64123326922--5d76719da8364f2d9686fdaae0684024 c279e517c4a04c3391a22a75e8c33ef5 t = theta_t₁ 5d76719da8364f2d9686fdaae0684024--c279e517c4a04c3391a22a75e8c33ef5 c279e517c4a04c3391a22a75e8c33ef5--2291deb7879a4921abec65bc9412fba1 be037051d82144ccaebcd600598f7cc0 12ce45e9d7d7452c8ade36e20c787608 RX(theta₂) 001a94358f364bb8a6469edb35d2f0c1--12ce45e9d7d7452c8ade36e20c787608 d06553a794fa4af89ae5afd4fcb9286f RY(theta₅) 12ce45e9d7d7452c8ade36e20c787608--d06553a794fa4af89ae5afd4fcb9286f 916d68d8d96d472c9eb3549260cea0f1 RX(theta₈) d06553a794fa4af89ae5afd4fcb9286f--916d68d8d96d472c9eb3549260cea0f1 d82d8f475cc84cb18c0ac65ad00c87b7 916d68d8d96d472c9eb3549260cea0f1--d82d8f475cc84cb18c0ac65ad00c87b7 2881ea50c9c7432ca32ca75d9dea256f RX(theta₁₁) d82d8f475cc84cb18c0ac65ad00c87b7--2881ea50c9c7432ca32ca75d9dea256f 12faceb3b65348af9c57888fff76531c RY(theta₁₄) 2881ea50c9c7432ca32ca75d9dea256f--12faceb3b65348af9c57888fff76531c c4d59f3348074615b20ffc1cc54a7ac5 RX(theta₁₇) 12faceb3b65348af9c57888fff76531c--c4d59f3348074615b20ffc1cc54a7ac5 4a73aa3a715d487dbe6bcf01ce8f7ea4 c4d59f3348074615b20ffc1cc54a7ac5--4a73aa3a715d487dbe6bcf01ce8f7ea4 4a73aa3a715d487dbe6bcf01ce8f7ea4--be037051d82144ccaebcd600598f7cc0

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_046d9a940733439a980de4d1b0ea0a62 cluster_2861d3cfc1284a898ba7d6af24a68789 67e55efb753f4d8f86103f0f2ddc8d0a 0 49b918a3917b43848fa67ab4ccd522d4 RX(theta₀) 67e55efb753f4d8f86103f0f2ddc8d0a--49b918a3917b43848fa67ab4ccd522d4 c76fef5150b4431aa2cc53537e053020 1 0471653e06e740da89fdd5a5ae4ac921 RY(theta₆) 49b918a3917b43848fa67ab4ccd522d4--0471653e06e740da89fdd5a5ae4ac921 0a2b94b8ce8b4d358ac60852cd4bd62b RX(theta₁₂) 0471653e06e740da89fdd5a5ae4ac921--0a2b94b8ce8b4d358ac60852cd4bd62b b4a64a869bbe488895a41db26e6584b9 0a2b94b8ce8b4d358ac60852cd4bd62b--b4a64a869bbe488895a41db26e6584b9 fd1e65daa3fc46aa893e657a89547097 RX(theta₁₈) b4a64a869bbe488895a41db26e6584b9--fd1e65daa3fc46aa893e657a89547097 2bfa13edff1b4bde8eaadae3f378dcbd RY(theta₂₄) fd1e65daa3fc46aa893e657a89547097--2bfa13edff1b4bde8eaadae3f378dcbd 64ea16c7ec7f4509b4452c2e1e920faf RX(theta₃₀) 2bfa13edff1b4bde8eaadae3f378dcbd--64ea16c7ec7f4509b4452c2e1e920faf 45ce8e98fb304e5284e30be74a8d4e5c 64ea16c7ec7f4509b4452c2e1e920faf--45ce8e98fb304e5284e30be74a8d4e5c 531bc840c6474794a8d13b320682d6e7 45ce8e98fb304e5284e30be74a8d4e5c--531bc840c6474794a8d13b320682d6e7 cda4056488754286a0aae56ef8489830 52f1cc3b65ea459cab13895635f0d290 RX(theta₁) c76fef5150b4431aa2cc53537e053020--52f1cc3b65ea459cab13895635f0d290 8504dff683064874bd5ff04759db822d 2 a534722271de40e29ca8e939b4100f69 RY(theta₇) 52f1cc3b65ea459cab13895635f0d290--a534722271de40e29ca8e939b4100f69 2caa1a80e37a436c95830a69ed960ba3 RX(theta₁₃) a534722271de40e29ca8e939b4100f69--2caa1a80e37a436c95830a69ed960ba3 fb33f005ab2541749157840f3de2650f 2caa1a80e37a436c95830a69ed960ba3--fb33f005ab2541749157840f3de2650f 5f9eb12670594de28c9a1ad19e4b051b RX(theta₁₉) fb33f005ab2541749157840f3de2650f--5f9eb12670594de28c9a1ad19e4b051b dca8b445266646dab4b125a54686da59 RY(theta₂₅) 5f9eb12670594de28c9a1ad19e4b051b--dca8b445266646dab4b125a54686da59 3d7abfa5f6e749b38562db9311ba93ff RX(theta₃₁) dca8b445266646dab4b125a54686da59--3d7abfa5f6e749b38562db9311ba93ff 543afd1fd00c4d388c3bcb853691506b 3d7abfa5f6e749b38562db9311ba93ff--543afd1fd00c4d388c3bcb853691506b 543afd1fd00c4d388c3bcb853691506b--cda4056488754286a0aae56ef8489830 c15260ce5fbe4bf68e6aa21da853a3bf 062c960982164198a91b98e5df9f091f RX(theta₂) 8504dff683064874bd5ff04759db822d--062c960982164198a91b98e5df9f091f 745da7beca7c4120a84809bd291db9bc 3 0b1d5996f8384aef9bd591bf07ba5e13 RY(theta₈) 062c960982164198a91b98e5df9f091f--0b1d5996f8384aef9bd591bf07ba5e13 507dd45fc8404bdd8084b9f69715c5d5 RX(theta₁₄) 0b1d5996f8384aef9bd591bf07ba5e13--507dd45fc8404bdd8084b9f69715c5d5 cfe50f54b9584e7187957231572a3936 HamEvo 507dd45fc8404bdd8084b9f69715c5d5--cfe50f54b9584e7187957231572a3936 b66c1832982f4fdc8f3928098e97be51 RX(theta₂₀) cfe50f54b9584e7187957231572a3936--b66c1832982f4fdc8f3928098e97be51 13eaa5e7c24a49c09ad1d27171466eb1 RY(theta₂₆) b66c1832982f4fdc8f3928098e97be51--13eaa5e7c24a49c09ad1d27171466eb1 b95eb9254ce24745975e0d48950ff2c9 RX(theta₃₂) 13eaa5e7c24a49c09ad1d27171466eb1--b95eb9254ce24745975e0d48950ff2c9 9e61fec11a494dc6bba1379afdb7da12 HamEvo b95eb9254ce24745975e0d48950ff2c9--9e61fec11a494dc6bba1379afdb7da12 9e61fec11a494dc6bba1379afdb7da12--c15260ce5fbe4bf68e6aa21da853a3bf 87ce4b9b578e48dbae3ed334f6fef28c 858176e426f848418fed64d54871a68f RX(theta₃) 745da7beca7c4120a84809bd291db9bc--858176e426f848418fed64d54871a68f e52bdab3b650441ea6702b0ced4410d3 4 70205c4c837a4a78937bf75d695e0e16 RY(theta₉) 858176e426f848418fed64d54871a68f--70205c4c837a4a78937bf75d695e0e16 3fd9b97b23154125a15e48b357de92d9 RX(theta₁₅) 70205c4c837a4a78937bf75d695e0e16--3fd9b97b23154125a15e48b357de92d9 ce23694be3a444ec8d1ff3e4a1544fd1 t = theta_t₀ 3fd9b97b23154125a15e48b357de92d9--ce23694be3a444ec8d1ff3e4a1544fd1 22f3d473bd4b4396b830a0687d6cf815 RX(theta₂₁) ce23694be3a444ec8d1ff3e4a1544fd1--22f3d473bd4b4396b830a0687d6cf815 55c976bd8fa74fe5abdd6f73d6ce4e37 RY(theta₂₇) 22f3d473bd4b4396b830a0687d6cf815--55c976bd8fa74fe5abdd6f73d6ce4e37 fd1d51b632794dbeb293c4b5c245babe RX(theta₃₃) 55c976bd8fa74fe5abdd6f73d6ce4e37--fd1d51b632794dbeb293c4b5c245babe ad9c9549c0c04673b78e1bdd4ca8b9f5 t = theta_t₁ fd1d51b632794dbeb293c4b5c245babe--ad9c9549c0c04673b78e1bdd4ca8b9f5 ad9c9549c0c04673b78e1bdd4ca8b9f5--87ce4b9b578e48dbae3ed334f6fef28c 52294bc87fb645a590490cecdf26032d 0529491cc46c4771a1bc5ebe3fd2722d RX(theta₄) e52bdab3b650441ea6702b0ced4410d3--0529491cc46c4771a1bc5ebe3fd2722d a10037dc8130473b8bff018fff3d04c1 5 8b0232c04bee45c7b7f90af28da37717 RY(theta₁₀) 0529491cc46c4771a1bc5ebe3fd2722d--8b0232c04bee45c7b7f90af28da37717 cd22052c8f4c4637a78ecfad26f9d832 RX(theta₁₆) 8b0232c04bee45c7b7f90af28da37717--cd22052c8f4c4637a78ecfad26f9d832 2d9b64b6a61c4ac8846c9400e7c360d9 cd22052c8f4c4637a78ecfad26f9d832--2d9b64b6a61c4ac8846c9400e7c360d9 67f069aa78aa4e5890885873eb87c2e7 RX(theta₂₂) 2d9b64b6a61c4ac8846c9400e7c360d9--67f069aa78aa4e5890885873eb87c2e7 53149397b26046df97dac2eb614a02c2 RY(theta₂₈) 67f069aa78aa4e5890885873eb87c2e7--53149397b26046df97dac2eb614a02c2 c6e3617629bb46cfb376c23b15db84b1 RX(theta₃₄) 53149397b26046df97dac2eb614a02c2--c6e3617629bb46cfb376c23b15db84b1 b8ef440edfaf42c795af9f4ef5cccbd1 c6e3617629bb46cfb376c23b15db84b1--b8ef440edfaf42c795af9f4ef5cccbd1 b8ef440edfaf42c795af9f4ef5cccbd1--52294bc87fb645a590490cecdf26032d 455e04c4dbff426a9a97b8c1843f0ba9 85830d180b6942e6a6e59698ea3d5b11 RX(theta₅) a10037dc8130473b8bff018fff3d04c1--85830d180b6942e6a6e59698ea3d5b11 538aa9dda6184fe4b3614cef68427835 RY(theta₁₁) 85830d180b6942e6a6e59698ea3d5b11--538aa9dda6184fe4b3614cef68427835 b0f578dd94d0441dbed6cfbf36cc4a48 RX(theta₁₇) 538aa9dda6184fe4b3614cef68427835--b0f578dd94d0441dbed6cfbf36cc4a48 d9316f4288d04c4899a44b3669416278 b0f578dd94d0441dbed6cfbf36cc4a48--d9316f4288d04c4899a44b3669416278 e6cdd78215e34782b8a5d6efa7d5be7a RX(theta₂₃) d9316f4288d04c4899a44b3669416278--e6cdd78215e34782b8a5d6efa7d5be7a 695dfd8120234dd599b7d8fded91f87e RY(theta₂₉) e6cdd78215e34782b8a5d6efa7d5be7a--695dfd8120234dd599b7d8fded91f87e 8e1590f7c81b494a94d3946655953fb9 RX(theta₃₅) 695dfd8120234dd599b7d8fded91f87e--8e1590f7c81b494a94d3946655953fb9 6866c87213234bbdb6538084129b5d6c 8e1590f7c81b494a94d3946655953fb9--6866c87213234bbdb6538084129b5d6c 6866c87213234bbdb6538084129b5d6c--455e04c4dbff426a9a97b8c1843f0ba9

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_05e595adc2bb412085699fe3f106fc69 BPMA-1 cluster_b633f885c0224d5e8282434be92be9dd BPMA-0 6a98226391ad44ed8755b840acffa1c5 0 9c24b2b9957044e4b637be381b1064b0 RX(iia_α₀₀) 6a98226391ad44ed8755b840acffa1c5--9c24b2b9957044e4b637be381b1064b0 1af7612e6b734e6da3aaade5fed99f71 1 e237daa2349b42c8b93f15608e8fde33 RY(iia_α₀₃) 9c24b2b9957044e4b637be381b1064b0--e237daa2349b42c8b93f15608e8fde33 6f67560f31c545ad9d83498b5662e26a e237daa2349b42c8b93f15608e8fde33--6f67560f31c545ad9d83498b5662e26a fa5ef76502144074b1e672b7459f112d 6f67560f31c545ad9d83498b5662e26a--fa5ef76502144074b1e672b7459f112d 83875b7b10874af19a93e03d63bf7451 RX(iia_γ₀₀) fa5ef76502144074b1e672b7459f112d--83875b7b10874af19a93e03d63bf7451 5d85d11ecd8f4ddc820cf9ce972eff0f 83875b7b10874af19a93e03d63bf7451--5d85d11ecd8f4ddc820cf9ce972eff0f 97000c3727d84590a5232ce471d92517 5d85d11ecd8f4ddc820cf9ce972eff0f--97000c3727d84590a5232ce471d92517 1fa62db562de4d1783856c2798ea8f8d RY(iia_β₀₃) 97000c3727d84590a5232ce471d92517--1fa62db562de4d1783856c2798ea8f8d 9e38b17bac0a4907a54dd06c83a6dab6 RX(iia_β₀₀) 1fa62db562de4d1783856c2798ea8f8d--9e38b17bac0a4907a54dd06c83a6dab6 9f9c9ea2720947c0a7e1dc777992d86a RX(iia_α₁₀) 9e38b17bac0a4907a54dd06c83a6dab6--9f9c9ea2720947c0a7e1dc777992d86a 9a9ecf28daa94b2ca5ec3cbb31f2aa9a RY(iia_α₁₃) 9f9c9ea2720947c0a7e1dc777992d86a--9a9ecf28daa94b2ca5ec3cbb31f2aa9a 68e55c12039843118fd425809cae86b3 9a9ecf28daa94b2ca5ec3cbb31f2aa9a--68e55c12039843118fd425809cae86b3 4e6fbb6eaed84dc1baf80463e0ab4c7f 68e55c12039843118fd425809cae86b3--4e6fbb6eaed84dc1baf80463e0ab4c7f c34d30c06b054259b879ef24b0ef1202 RX(iia_γ₁₀) 4e6fbb6eaed84dc1baf80463e0ab4c7f--c34d30c06b054259b879ef24b0ef1202 364dc3ca341542dbac4336916c714517 c34d30c06b054259b879ef24b0ef1202--364dc3ca341542dbac4336916c714517 7ef3dc4d45f24297af01bb81ed23e7a7 364dc3ca341542dbac4336916c714517--7ef3dc4d45f24297af01bb81ed23e7a7 41e50fcc9817470a8ad69123f755ac96 RY(iia_β₁₃) 7ef3dc4d45f24297af01bb81ed23e7a7--41e50fcc9817470a8ad69123f755ac96 ffcaa4bc9e534ce3a20bea6c640c8ca7 RX(iia_β₁₀) 41e50fcc9817470a8ad69123f755ac96--ffcaa4bc9e534ce3a20bea6c640c8ca7 a1a5f99ea0d94d93aca50f764f780068 ffcaa4bc9e534ce3a20bea6c640c8ca7--a1a5f99ea0d94d93aca50f764f780068 0eaeaac4e6d944b49c1cd9f184afa8e0 048a14257ae44031bc2b21c249099040 RX(iia_α₀₁) 1af7612e6b734e6da3aaade5fed99f71--048a14257ae44031bc2b21c249099040 337da146122941899eae9425480c22d7 2 feaa402a01a941719da2a4906bbec8c5 RY(iia_α₀₄) 048a14257ae44031bc2b21c249099040--feaa402a01a941719da2a4906bbec8c5 985d0786ca234f48bee5a4b74dcf7b28 X feaa402a01a941719da2a4906bbec8c5--985d0786ca234f48bee5a4b74dcf7b28 985d0786ca234f48bee5a4b74dcf7b28--6f67560f31c545ad9d83498b5662e26a 325093122f6c42c2a6263f04da447087 985d0786ca234f48bee5a4b74dcf7b28--325093122f6c42c2a6263f04da447087 2f53892fa1324d39ab7ed4a1cd1b200a RX(iia_γ₀₁) 325093122f6c42c2a6263f04da447087--2f53892fa1324d39ab7ed4a1cd1b200a 0cca0516f9bf46fcb961dcbeb52df947 2f53892fa1324d39ab7ed4a1cd1b200a--0cca0516f9bf46fcb961dcbeb52df947 7ce04f8f5c1c4415a164c323a6b01ec8 X 0cca0516f9bf46fcb961dcbeb52df947--7ce04f8f5c1c4415a164c323a6b01ec8 7ce04f8f5c1c4415a164c323a6b01ec8--97000c3727d84590a5232ce471d92517 ba2594246b8948e59e35d7ad0f346daa RY(iia_β₀₄) 7ce04f8f5c1c4415a164c323a6b01ec8--ba2594246b8948e59e35d7ad0f346daa 16284c58cd684b0384684190ab5e43ba RX(iia_β₀₁) ba2594246b8948e59e35d7ad0f346daa--16284c58cd684b0384684190ab5e43ba 07ad32806e104cd68418b35e09d1bd34 RX(iia_α₁₁) 16284c58cd684b0384684190ab5e43ba--07ad32806e104cd68418b35e09d1bd34 6e699b8e770a401d9950eb480d92802e RY(iia_α₁₄) 07ad32806e104cd68418b35e09d1bd34--6e699b8e770a401d9950eb480d92802e f6206757edb5497aa506fe3244d2313b X 6e699b8e770a401d9950eb480d92802e--f6206757edb5497aa506fe3244d2313b f6206757edb5497aa506fe3244d2313b--68e55c12039843118fd425809cae86b3 ac2918b7bf9346eda0d0c48e9fd5de78 f6206757edb5497aa506fe3244d2313b--ac2918b7bf9346eda0d0c48e9fd5de78 742bbeb9b29d4c569844879dd5a49b23 RX(iia_γ₁₁) ac2918b7bf9346eda0d0c48e9fd5de78--742bbeb9b29d4c569844879dd5a49b23 2ec075ad9bf340c085cb5516bb41934d 742bbeb9b29d4c569844879dd5a49b23--2ec075ad9bf340c085cb5516bb41934d 261331c15143461586630102034220c9 X 2ec075ad9bf340c085cb5516bb41934d--261331c15143461586630102034220c9 261331c15143461586630102034220c9--7ef3dc4d45f24297af01bb81ed23e7a7 736647f153df41aebbf56ea9a4433c7c RY(iia_β₁₄) 261331c15143461586630102034220c9--736647f153df41aebbf56ea9a4433c7c d1330ab88a604e62b28485e150d4aadb RX(iia_β₁₁) 736647f153df41aebbf56ea9a4433c7c--d1330ab88a604e62b28485e150d4aadb d1330ab88a604e62b28485e150d4aadb--0eaeaac4e6d944b49c1cd9f184afa8e0 14cd9181b8ba4f5589191ac45c298930 d44513819eb948ec93e3090a27b606d8 RX(iia_α₀₂) 337da146122941899eae9425480c22d7--d44513819eb948ec93e3090a27b606d8 25c67b5ad2d349d6a75d3902d5684c0b RY(iia_α₀₅) d44513819eb948ec93e3090a27b606d8--25c67b5ad2d349d6a75d3902d5684c0b 589da59e74a743819cbad3a115099bff 25c67b5ad2d349d6a75d3902d5684c0b--589da59e74a743819cbad3a115099bff 204394ca5c1041b1987c415f508a079d X 589da59e74a743819cbad3a115099bff--204394ca5c1041b1987c415f508a079d 204394ca5c1041b1987c415f508a079d--325093122f6c42c2a6263f04da447087 477b7d493e80473f85c21a9b49f14271 RX(iia_γ₀₂) 204394ca5c1041b1987c415f508a079d--477b7d493e80473f85c21a9b49f14271 06e28bfccb0a4193ae709f6d8ed0b70a X 477b7d493e80473f85c21a9b49f14271--06e28bfccb0a4193ae709f6d8ed0b70a 06e28bfccb0a4193ae709f6d8ed0b70a--0cca0516f9bf46fcb961dcbeb52df947 aed9b87f6edd485bbc4f5a745470888f 06e28bfccb0a4193ae709f6d8ed0b70a--aed9b87f6edd485bbc4f5a745470888f df4e0886aea147359b5b10e0daea0dd3 RY(iia_β₀₅) aed9b87f6edd485bbc4f5a745470888f--df4e0886aea147359b5b10e0daea0dd3 a3eddc838f114d4ebc9f9f3e3b12c12d RX(iia_β₀₂) df4e0886aea147359b5b10e0daea0dd3--a3eddc838f114d4ebc9f9f3e3b12c12d 0764bdf66afe4f4986ede915c8e56af2 RX(iia_α₁₂) a3eddc838f114d4ebc9f9f3e3b12c12d--0764bdf66afe4f4986ede915c8e56af2 bc15dcdb1ec4476a81a7a82571cb1eac RY(iia_α₁₅) 0764bdf66afe4f4986ede915c8e56af2--bc15dcdb1ec4476a81a7a82571cb1eac 3ed275b90df0401999a6f8df35e63ed0 bc15dcdb1ec4476a81a7a82571cb1eac--3ed275b90df0401999a6f8df35e63ed0 3552f03573434993b13a6d67d15a5b22 X 3ed275b90df0401999a6f8df35e63ed0--3552f03573434993b13a6d67d15a5b22 3552f03573434993b13a6d67d15a5b22--ac2918b7bf9346eda0d0c48e9fd5de78 c60562a9ae784afbba3e04dbe272d1d7 RX(iia_γ₁₂) 3552f03573434993b13a6d67d15a5b22--c60562a9ae784afbba3e04dbe272d1d7 25a0502c06b1490aac040d7d0da3fe5e X c60562a9ae784afbba3e04dbe272d1d7--25a0502c06b1490aac040d7d0da3fe5e 25a0502c06b1490aac040d7d0da3fe5e--2ec075ad9bf340c085cb5516bb41934d 3966e6fd47b04652b5834a49651913cb 25a0502c06b1490aac040d7d0da3fe5e--3966e6fd47b04652b5834a49651913cb cb7420969d3242deae76965b2fd8c4ea RY(iia_β₁₅) 3966e6fd47b04652b5834a49651913cb--cb7420969d3242deae76965b2fd8c4ea 3a8f6659e2d14f9e9d62ab9a5bb6d70e RX(iia_β₁₂) cb7420969d3242deae76965b2fd8c4ea--3a8f6659e2d14f9e9d62ab9a5bb6d70e 3a8f6659e2d14f9e9d62ab9a5bb6d70e--14cd9181b8ba4f5589191ac45c298930