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_a01d77cbab5f44f182281af5258bc052 Constant Chebyshev FM cluster_7f2cbf4c4da548f581f014529bc22097 Constant Fourier FM a77258677bd6490fbe4d69815575de28 0 bd6e9ac71d814f0ca4ea526d604efc50 RX(phi) a77258677bd6490fbe4d69815575de28--bd6e9ac71d814f0ca4ea526d604efc50 3b769d6c6c594313bc388d87bc55e431 1 505a35bd1b6048d9861549dd9a3e64f9 RX(acos(phi)) bd6e9ac71d814f0ca4ea526d604efc50--505a35bd1b6048d9861549dd9a3e64f9 ccd939ce92be41bb8be0762c1a54aea9 505a35bd1b6048d9861549dd9a3e64f9--ccd939ce92be41bb8be0762c1a54aea9 9cc0ed3decae43ddaebc5afac729a750 c1940c4516a14e58be5e6757607e3643 RX(phi) 3b769d6c6c594313bc388d87bc55e431--c1940c4516a14e58be5e6757607e3643 1cd49376d2554e6391de4f3697edc584 2 a81b1742c6014efa9bf88fcfce67d36e RX(acos(phi)) c1940c4516a14e58be5e6757607e3643--a81b1742c6014efa9bf88fcfce67d36e a81b1742c6014efa9bf88fcfce67d36e--9cc0ed3decae43ddaebc5afac729a750 3f2b488ed7b54016ab2da4eec4e69d20 f47271448b4141148f1fc32153673607 RX(phi) 1cd49376d2554e6391de4f3697edc584--f47271448b4141148f1fc32153673607 03e633ca3504442f85be0755d9daaa69 RX(acos(phi)) f47271448b4141148f1fc32153673607--03e633ca3504442f85be0755d9daaa69 03e633ca3504442f85be0755d9daaa69--3f2b488ed7b54016ab2da4eec4e69d20

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_eb3ab0d52f734ed49d6cb0f31cd117f1 Constant <function custom_fn at 0x7ff8e732f130> FM cluster_4ac4c05f88774026950b13993b7e86e0 Constant asin FM d2e47e68ab8b4d4d90cb28670a4aa711 0 3524a4a19deb4a2c86311228f25a237f RX(asin(phi)) d2e47e68ab8b4d4d90cb28670a4aa711--3524a4a19deb4a2c86311228f25a237f d2ebc6115ed14110b2dd0e6a8f9aad57 1 48e391115f96486d9e6ee38638f5a2b6 RX(phi**2 + asin(phi)) 3524a4a19deb4a2c86311228f25a237f--48e391115f96486d9e6ee38638f5a2b6 4c385a0f5b574d908f7e989b19537660 48e391115f96486d9e6ee38638f5a2b6--4c385a0f5b574d908f7e989b19537660 66c9a67892cc4b45924ada9c56539084 7e2dcd676b9a4faa91f7efad7eebd1c0 RX(asin(phi)) d2ebc6115ed14110b2dd0e6a8f9aad57--7e2dcd676b9a4faa91f7efad7eebd1c0 2a4574cb65cb4fb187b68c619cc699fb 2 5e59cbfaf055410e947bc0d78bef0dd2 RX(phi**2 + asin(phi)) 7e2dcd676b9a4faa91f7efad7eebd1c0--5e59cbfaf055410e947bc0d78bef0dd2 5e59cbfaf055410e947bc0d78bef0dd2--66c9a67892cc4b45924ada9c56539084 0ee030624cb9419d8cd867ac43dcfb70 829d3a5c60934984a8169fbc1cfc2a01 RX(asin(phi)) 2a4574cb65cb4fb187b68c619cc699fb--829d3a5c60934984a8169fbc1cfc2a01 650219d7b48c4937af2a8c7fbb6ea9dd RX(phi**2 + asin(phi)) 829d3a5c60934984a8169fbc1cfc2a01--650219d7b48c4937af2a8c7fbb6ea9dd 650219d7b48c4937af2a8c7fbb6ea9dd--0ee030624cb9419d8cd867ac43dcfb70

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_6943bea763e84460835fdb91693999cc Exponential Fourier FM cluster_cae628987b6b44f99070bcf5b0f454bd Constant Fourier FM cluster_62d07e02fd9c4cac862f4936c3dd6ba2 Tower Fourier FM 06138e893a604b31b50482edad643929 0 f23ec2f32f234a5da8665dad4e0feaf9 RX(phi) 06138e893a604b31b50482edad643929--f23ec2f32f234a5da8665dad4e0feaf9 15bfe2c11fa841c785d5e226647399e3 1 31dabec33b3d4d13afc212736c87c7d3 RX(1.0*phi) f23ec2f32f234a5da8665dad4e0feaf9--31dabec33b3d4d13afc212736c87c7d3 a84a6749e85a4d08b2c53f31e12756fb RX(1.0*phi) 31dabec33b3d4d13afc212736c87c7d3--a84a6749e85a4d08b2c53f31e12756fb c9521fff60dc412e9680db91b7e82627 a84a6749e85a4d08b2c53f31e12756fb--c9521fff60dc412e9680db91b7e82627 103b71cc2fd845f58c5d381eeffe2d19 1a34ecabecc344708f7987fe79133396 RX(phi) 15bfe2c11fa841c785d5e226647399e3--1a34ecabecc344708f7987fe79133396 f862ccadddba49779f2f7aa6d84a7c60 2 238c0f8de06244e284e2560aba06b74e RX(2.0*phi) 1a34ecabecc344708f7987fe79133396--238c0f8de06244e284e2560aba06b74e 8a63cf76e87a453e8297d564e5a294ac RX(2.0*phi) 238c0f8de06244e284e2560aba06b74e--8a63cf76e87a453e8297d564e5a294ac 8a63cf76e87a453e8297d564e5a294ac--103b71cc2fd845f58c5d381eeffe2d19 d0715306f5054bca85724cb9f2809e12 4e9212d8367d482ea58db7758f67da56 RX(phi) f862ccadddba49779f2f7aa6d84a7c60--4e9212d8367d482ea58db7758f67da56 163883b054e0415e9faa0bd644a178ce 3 52dd5015ccf64224b8b2a26af3631014 RX(3.0*phi) 4e9212d8367d482ea58db7758f67da56--52dd5015ccf64224b8b2a26af3631014 b68ffbbad98543b09936dee2c957fb8f RX(4.0*phi) 52dd5015ccf64224b8b2a26af3631014--b68ffbbad98543b09936dee2c957fb8f b68ffbbad98543b09936dee2c957fb8f--d0715306f5054bca85724cb9f2809e12 3ac899b379314afebe43b4e024b83d0e d3498cf36cd74b128b3a22564bd1f230 RX(phi) 163883b054e0415e9faa0bd644a178ce--d3498cf36cd74b128b3a22564bd1f230 70c3c510c1a645d3b78bb3f2c22b8efd 4 f2d7fe60635e4590b9e114365d4ed393 RX(4.0*phi) d3498cf36cd74b128b3a22564bd1f230--f2d7fe60635e4590b9e114365d4ed393 2c2a2112c64d40739143f6e232e9d452 RX(8.0*phi) f2d7fe60635e4590b9e114365d4ed393--2c2a2112c64d40739143f6e232e9d452 2c2a2112c64d40739143f6e232e9d452--3ac899b379314afebe43b4e024b83d0e 95567bbe2b5b4e1eaa8b196ddf011858 7a819b2d359143c88a5df1edda001c19 RX(phi) 70c3c510c1a645d3b78bb3f2c22b8efd--7a819b2d359143c88a5df1edda001c19 424884e9473e4583bc99858cc224fc91 RX(5.0*phi) 7a819b2d359143c88a5df1edda001c19--424884e9473e4583bc99858cc224fc91 30cffcd333e441d3b19b616948fb2464 RX(16.0*phi) 424884e9473e4583bc99858cc224fc91--30cffcd333e441d3b19b616948fb2464 30cffcd333e441d3b19b616948fb2464--95567bbe2b5b4e1eaa8b196ddf011858

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 9780ad9b941546ca806c5dd980dc7b2b 0 588ba8b33dc84d8c8ce4954bc972a840 RX(1.0*acos(phi)) 9780ad9b941546ca806c5dd980dc7b2b--588ba8b33dc84d8c8ce4954bc972a840 7b852cbce5af48e487ad5893b25226c9 1 a88ab5aa1fea405487d96b168f0e5a2c 588ba8b33dc84d8c8ce4954bc972a840--a88ab5aa1fea405487d96b168f0e5a2c 3b7895e967a248d88a9ae742fd6bb570 3c1081d7617a440d8c5f436145b5a45d RX(1.414*acos(phi)) 7b852cbce5af48e487ad5893b25226c9--3c1081d7617a440d8c5f436145b5a45d 2cf3eab5548846a084060b70f98487c7 2 3c1081d7617a440d8c5f436145b5a45d--3b7895e967a248d88a9ae742fd6bb570 e031b58f21e447338720c2b5a4e39d73 40fa31934eb34f78ae8ad387c8d70757 RX(1.732*acos(phi)) 2cf3eab5548846a084060b70f98487c7--40fa31934eb34f78ae8ad387c8d70757 f2511e4bdfbd42578585352cf6cc8b4c 3 40fa31934eb34f78ae8ad387c8d70757--e031b58f21e447338720c2b5a4e39d73 3215af52a36446ddb2ac4563bb1b948c e3004141409d423fb3898b011dbc7f6a RX(2.0*acos(phi)) f2511e4bdfbd42578585352cf6cc8b4c--e3004141409d423fb3898b011dbc7f6a 7091e842238640878ea577bd2a1fa3f6 4 e3004141409d423fb3898b011dbc7f6a--3215af52a36446ddb2ac4563bb1b948c ab699ef5649641508ea42874aeafe769 0591587508864955b1423b31559f2905 RX(2.236*acos(phi)) 7091e842238640878ea577bd2a1fa3f6--0591587508864955b1423b31559f2905 0591587508864955b1423b31559f2905--ab699ef5649641508ea42874aeafe769

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 cfa7a8721c7a4228a3e6ed7aadd349f8 0 cf8115dcfb804ef7b82d9bfc152f2e4e RX(1.0*phi*w₀) cfa7a8721c7a4228a3e6ed7aadd349f8--cf8115dcfb804ef7b82d9bfc152f2e4e 631548f5b3d445739d64b8682aacf2dd 1 5edbea27a0934b2c8d256b6378c7ba7a cf8115dcfb804ef7b82d9bfc152f2e4e--5edbea27a0934b2c8d256b6378c7ba7a b466cd532303477ebea4dd0909bc94b2 eb5f85f7465244f2b92e9b1f75d18200 RX(2.0*phi*w₁) 631548f5b3d445739d64b8682aacf2dd--eb5f85f7465244f2b92e9b1f75d18200 56b9311f1bf2475a9ce8afbc7dca43e1 2 eb5f85f7465244f2b92e9b1f75d18200--b466cd532303477ebea4dd0909bc94b2 90398aea4b7640bb8ae9aee099e0b0ed 59e92d6cb6c74a4f887e239d49e926a0 RX(4.0*phi*w₂) 56b9311f1bf2475a9ce8afbc7dca43e1--59e92d6cb6c74a4f887e239d49e926a0 26c9394084264097b2c5816fd8a91cd3 3 59e92d6cb6c74a4f887e239d49e926a0--90398aea4b7640bb8ae9aee099e0b0ed 3d54e8c6ba194833a640567c6eb4291a dd7d19a92f6147079a6f9363b38adc33 RX(8.0*phi*w₃) 26c9394084264097b2c5816fd8a91cd3--dd7d19a92f6147079a6f9363b38adc33 ef89c20d5df34ac3aaa9778b72e7105d 4 dd7d19a92f6147079a6f9363b38adc33--3d54e8c6ba194833a640567c6eb4291a d7cbf2fec6894c1eb2b83c38899348d8 8cf699a4536b4a6cb4c029f960057447 RX(16.0*phi*w₄) ef89c20d5df34ac3aaa9778b72e7105d--8cf699a4536b4a6cb4c029f960057447 8cf699a4536b4a6cb4c029f960057447--d7cbf2fec6894c1eb2b83c38899348d8

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 d5d16e22e1cf4bb6bad81b1ae2d26c83 0 e1d02fe854ac4393aced4eda8cb0a43f RY(80.0*acos(w₄*(0.667*x + 1.667))) d5d16e22e1cf4bb6bad81b1ae2d26c83--e1d02fe854ac4393aced4eda8cb0a43f f459f99b912142c69e9d49c9d7c5ddf7 1 db1cfff9a34b41cd90160e8613632fae e1d02fe854ac4393aced4eda8cb0a43f--db1cfff9a34b41cd90160e8613632fae aa5ec6c71e7d4f6ab8c468d7e33410dc fa0a998cda334e4db041bb3d97719461 RY(40.0*acos(w₃*(0.667*x + 1.667))) f459f99b912142c69e9d49c9d7c5ddf7--fa0a998cda334e4db041bb3d97719461 79058c1d4c6d464aa99d8990ebfb46ce 2 fa0a998cda334e4db041bb3d97719461--aa5ec6c71e7d4f6ab8c468d7e33410dc fdef466d00314e068349e767dccc1f88 de83469fc0ac459394bf2fdf6948af4d RY(20.0*acos(w₂*(0.667*x + 1.667))) 79058c1d4c6d464aa99d8990ebfb46ce--de83469fc0ac459394bf2fdf6948af4d 00db2d885ba4490494dd4312438a1696 3 de83469fc0ac459394bf2fdf6948af4d--fdef466d00314e068349e767dccc1f88 cad613a7e0f34d899fda20e810f9ce19 974f9a9a03ed420bb1e126e7a7eb339f RY(10.0*acos(w₁*(0.667*x + 1.667))) 00db2d885ba4490494dd4312438a1696--974f9a9a03ed420bb1e126e7a7eb339f bda7a7198f134c8ba6ffbc70067827f6 4 974f9a9a03ed420bb1e126e7a7eb339f--cad613a7e0f34d899fda20e810f9ce19 1836b4d35d66432db3fa9f8b9b0105f1 7ba1da1568534da29aa4bea9f5d9e0b0 RY(5.0*acos(w₀*(0.667*x + 1.667))) bda7a7198f134c8ba6ffbc70067827f6--7ba1da1568534da29aa4bea9f5d9e0b0 7ba1da1568534da29aa4bea9f5d9e0b0--1836b4d35d66432db3fa9f8b9b0105f1

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 670653760ba44d3db5792c7c55e87028 0 96aabf493a804532a7b45a4414d52a04 RX(theta₀) 670653760ba44d3db5792c7c55e87028--96aabf493a804532a7b45a4414d52a04 62fd1edd708c451986bf293ba8326a84 1 a5abb2902af443999e79b5ccb139460b RY(theta₃) 96aabf493a804532a7b45a4414d52a04--a5abb2902af443999e79b5ccb139460b d5f59c4748954a8e8a75440922e23d9e RX(theta₆) a5abb2902af443999e79b5ccb139460b--d5f59c4748954a8e8a75440922e23d9e 0d5e97191f9240efbaa2c77121855a1e d5f59c4748954a8e8a75440922e23d9e--0d5e97191f9240efbaa2c77121855a1e ecbc32c34c2a4d89b185346efc1f0216 0d5e97191f9240efbaa2c77121855a1e--ecbc32c34c2a4d89b185346efc1f0216 03f284a1d6964e0b940e48f715499fcc RX(theta₉) ecbc32c34c2a4d89b185346efc1f0216--03f284a1d6964e0b940e48f715499fcc 240340b428214cfda94a312e19fc4d04 RY(theta₁₂) 03f284a1d6964e0b940e48f715499fcc--240340b428214cfda94a312e19fc4d04 c2316d67c5474932bd00aef2e7cc7396 RX(theta₁₅) 240340b428214cfda94a312e19fc4d04--c2316d67c5474932bd00aef2e7cc7396 11db2fce240c43039ac4f9514fcf6fec c2316d67c5474932bd00aef2e7cc7396--11db2fce240c43039ac4f9514fcf6fec 354ebcc44f384920aae8eae518c75d02 11db2fce240c43039ac4f9514fcf6fec--354ebcc44f384920aae8eae518c75d02 b0d5ec8939654f76a4c34ba58ba02fca 354ebcc44f384920aae8eae518c75d02--b0d5ec8939654f76a4c34ba58ba02fca 66fefd07668b48be87f5bcae12ecaebc 4b3940cc63a046a1aa437782906e4c0d RX(theta₁) 62fd1edd708c451986bf293ba8326a84--4b3940cc63a046a1aa437782906e4c0d 118b14e3efd74f4cba7f96a48bb438d2 2 b9140f02b4f44c2dbec9e817c6edfe48 RY(theta₄) 4b3940cc63a046a1aa437782906e4c0d--b9140f02b4f44c2dbec9e817c6edfe48 286032110a654762a76f40bc894ab5e0 RX(theta₇) b9140f02b4f44c2dbec9e817c6edfe48--286032110a654762a76f40bc894ab5e0 ac524c6a45ff42baa9613971b41d7a3e X 286032110a654762a76f40bc894ab5e0--ac524c6a45ff42baa9613971b41d7a3e ac524c6a45ff42baa9613971b41d7a3e--0d5e97191f9240efbaa2c77121855a1e 4373593b01d8491cac4c13ff45cb5244 ac524c6a45ff42baa9613971b41d7a3e--4373593b01d8491cac4c13ff45cb5244 9993164f57664c7b881c3eea2dfb0562 RX(theta₁₀) 4373593b01d8491cac4c13ff45cb5244--9993164f57664c7b881c3eea2dfb0562 cc16832760b24cc7a123d6a8185d77a7 RY(theta₁₃) 9993164f57664c7b881c3eea2dfb0562--cc16832760b24cc7a123d6a8185d77a7 969cc9fc999c416d99425a5f4efd623d RX(theta₁₆) cc16832760b24cc7a123d6a8185d77a7--969cc9fc999c416d99425a5f4efd623d b5897ce6e8df41a3b6d2084c14bc2564 X 969cc9fc999c416d99425a5f4efd623d--b5897ce6e8df41a3b6d2084c14bc2564 b5897ce6e8df41a3b6d2084c14bc2564--11db2fce240c43039ac4f9514fcf6fec 6ca4712bd9e74650a6006af2c74c58e9 b5897ce6e8df41a3b6d2084c14bc2564--6ca4712bd9e74650a6006af2c74c58e9 6ca4712bd9e74650a6006af2c74c58e9--66fefd07668b48be87f5bcae12ecaebc fae65e8662f3405ea5d78664557eed72 81461467498e4a63bf8b4695b0623ecd RX(theta₂) 118b14e3efd74f4cba7f96a48bb438d2--81461467498e4a63bf8b4695b0623ecd eb902316697d49d9b3d10788de587178 RY(theta₅) 81461467498e4a63bf8b4695b0623ecd--eb902316697d49d9b3d10788de587178 9d4b12a1fef44bf0a3b44669424f9b76 RX(theta₈) eb902316697d49d9b3d10788de587178--9d4b12a1fef44bf0a3b44669424f9b76 d629f5fcc523424a970b0e2b83a6cf2f 9d4b12a1fef44bf0a3b44669424f9b76--d629f5fcc523424a970b0e2b83a6cf2f 29f0d992a26740008dff0eb1fbfda36f X d629f5fcc523424a970b0e2b83a6cf2f--29f0d992a26740008dff0eb1fbfda36f 29f0d992a26740008dff0eb1fbfda36f--4373593b01d8491cac4c13ff45cb5244 dde0ca9602af46c3929d0f43cbef5fcd RX(theta₁₁) 29f0d992a26740008dff0eb1fbfda36f--dde0ca9602af46c3929d0f43cbef5fcd 155228b4b7124283800e03bf99d95833 RY(theta₁₄) dde0ca9602af46c3929d0f43cbef5fcd--155228b4b7124283800e03bf99d95833 0d917fd15b6c4f27a7149efb95f4825d RX(theta₁₇) 155228b4b7124283800e03bf99d95833--0d917fd15b6c4f27a7149efb95f4825d 6c05cf41cbcd48fab270047727863065 0d917fd15b6c4f27a7149efb95f4825d--6c05cf41cbcd48fab270047727863065 9552f590c7c9446ebe8582444bec38a1 X 6c05cf41cbcd48fab270047727863065--9552f590c7c9446ebe8582444bec38a1 9552f590c7c9446ebe8582444bec38a1--6ca4712bd9e74650a6006af2c74c58e9 9552f590c7c9446ebe8582444bec38a1--fae65e8662f3405ea5d78664557eed72

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 11aea1435518446c91889537516c91d8 0 727883dc01254158b9314408918a2133 RX(phi₀) 11aea1435518446c91889537516c91d8--727883dc01254158b9314408918a2133 f20f7b504003477c9d76c1a6bee440fb 1 a9a3cfc6c90e4583b9336604fe102459 RY(phi₃) 727883dc01254158b9314408918a2133--a9a3cfc6c90e4583b9336604fe102459 55a21b452e854f5089a407a15bf10cd0 RX(phi₆) a9a3cfc6c90e4583b9336604fe102459--55a21b452e854f5089a407a15bf10cd0 1591d4a0f38e4e0d8d74952848704f45 55a21b452e854f5089a407a15bf10cd0--1591d4a0f38e4e0d8d74952848704f45 f5aa470db14e4396956a4e66645b8cfe 1591d4a0f38e4e0d8d74952848704f45--f5aa470db14e4396956a4e66645b8cfe 1e5573b4843344208bcc466b266cd096 RX(phi₉) f5aa470db14e4396956a4e66645b8cfe--1e5573b4843344208bcc466b266cd096 e0c5871b73d548aea17e54e6e328890c RY(phi₁₂) 1e5573b4843344208bcc466b266cd096--e0c5871b73d548aea17e54e6e328890c c1e508fb4c9e4dbeb0078e356aafbe18 RX(phi₁₅) e0c5871b73d548aea17e54e6e328890c--c1e508fb4c9e4dbeb0078e356aafbe18 d210b7608cf04e7599c31456ddd06ae9 c1e508fb4c9e4dbeb0078e356aafbe18--d210b7608cf04e7599c31456ddd06ae9 fa0969e051f940f0ab6ba2f0ef500bb9 d210b7608cf04e7599c31456ddd06ae9--fa0969e051f940f0ab6ba2f0ef500bb9 e9aceaa5dd824f89b88629458ae31715 fa0969e051f940f0ab6ba2f0ef500bb9--e9aceaa5dd824f89b88629458ae31715 01824c86dd2e40b2bd72adecaae368cb e9d8f7d02d244801b04db780d3fbd83a RX(phi₁) f20f7b504003477c9d76c1a6bee440fb--e9d8f7d02d244801b04db780d3fbd83a a037ad7de5e847619fdc2f7064a143d8 2 4c2330a5ec5c423fbe1c4579df781799 RY(phi₄) e9d8f7d02d244801b04db780d3fbd83a--4c2330a5ec5c423fbe1c4579df781799 e531796f5d904cc3ac76d6602855f5be RX(phi₇) 4c2330a5ec5c423fbe1c4579df781799--e531796f5d904cc3ac76d6602855f5be 526868869b8b4cb4a1567ad05a7cd10a PHASE(phi_ent₀) e531796f5d904cc3ac76d6602855f5be--526868869b8b4cb4a1567ad05a7cd10a 526868869b8b4cb4a1567ad05a7cd10a--1591d4a0f38e4e0d8d74952848704f45 c7afbb5f27034b7c8598a4297024c95f 526868869b8b4cb4a1567ad05a7cd10a--c7afbb5f27034b7c8598a4297024c95f a47ef196b7f442b295402d0102e5bff2 RX(phi₁₀) c7afbb5f27034b7c8598a4297024c95f--a47ef196b7f442b295402d0102e5bff2 09b7876a7047400687d8e779a88d8aa2 RY(phi₁₃) a47ef196b7f442b295402d0102e5bff2--09b7876a7047400687d8e779a88d8aa2 a60e979e35524a5587d0fbde5f11751f RX(phi₁₆) 09b7876a7047400687d8e779a88d8aa2--a60e979e35524a5587d0fbde5f11751f 211a61e3a3c6475aab4460141a847254 PHASE(phi_ent₂) a60e979e35524a5587d0fbde5f11751f--211a61e3a3c6475aab4460141a847254 211a61e3a3c6475aab4460141a847254--d210b7608cf04e7599c31456ddd06ae9 950147df611b47589c74bcc3f7887929 211a61e3a3c6475aab4460141a847254--950147df611b47589c74bcc3f7887929 950147df611b47589c74bcc3f7887929--01824c86dd2e40b2bd72adecaae368cb da9257150d814685a21ac6de99ee8325 4f0048557555466183af973dddffd3bb RX(phi₂) a037ad7de5e847619fdc2f7064a143d8--4f0048557555466183af973dddffd3bb 7e6bfec6d67e4a0b9675682a47688b31 RY(phi₅) 4f0048557555466183af973dddffd3bb--7e6bfec6d67e4a0b9675682a47688b31 4cd134b5c7ca4ba68ab72388a5a4177d RX(phi₈) 7e6bfec6d67e4a0b9675682a47688b31--4cd134b5c7ca4ba68ab72388a5a4177d 9c9e79e5717c456da8de473f9f408fbe 4cd134b5c7ca4ba68ab72388a5a4177d--9c9e79e5717c456da8de473f9f408fbe 4253df03973443d685d4f6c44a0d61ae PHASE(phi_ent₁) 9c9e79e5717c456da8de473f9f408fbe--4253df03973443d685d4f6c44a0d61ae 4253df03973443d685d4f6c44a0d61ae--c7afbb5f27034b7c8598a4297024c95f 0cfe98ba7efc4b2c9818f2ae7c2ba419 RX(phi₁₁) 4253df03973443d685d4f6c44a0d61ae--0cfe98ba7efc4b2c9818f2ae7c2ba419 454f771aeb964084a1ac5cf5c0554bfa RY(phi₁₄) 0cfe98ba7efc4b2c9818f2ae7c2ba419--454f771aeb964084a1ac5cf5c0554bfa 5fb6edffcc894992bf7919ae35b27bbc RX(phi₁₇) 454f771aeb964084a1ac5cf5c0554bfa--5fb6edffcc894992bf7919ae35b27bbc f16c8e13cb6846d6b65ca8f0fba9f1fd 5fb6edffcc894992bf7919ae35b27bbc--f16c8e13cb6846d6b65ca8f0fba9f1fd a32c594e494e44ad80604fdf588bc1dd PHASE(phi_ent₃) f16c8e13cb6846d6b65ca8f0fba9f1fd--a32c594e494e44ad80604fdf588bc1dd a32c594e494e44ad80604fdf588bc1dd--950147df611b47589c74bcc3f7887929 a32c594e494e44ad80604fdf588bc1dd--da9257150d814685a21ac6de99ee8325

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_4eeb64b5ddcb44aa84b7c0236e6be4f0 cluster_261f33b0d3df45b9946c1fcbf89d179a e034452c1fd84b3aaaa267df7e9c9b38 0 def744dec5e843d18440467f064990f9 RX(theta₀) e034452c1fd84b3aaaa267df7e9c9b38--def744dec5e843d18440467f064990f9 2cdb000eaf904740b57830c26c889542 1 c9789ab4db1547f7b0ff8cea5dc9fd4e RY(theta₃) def744dec5e843d18440467f064990f9--c9789ab4db1547f7b0ff8cea5dc9fd4e 09795f0c978d4cce95c04e52c4788efa RX(theta₆) c9789ab4db1547f7b0ff8cea5dc9fd4e--09795f0c978d4cce95c04e52c4788efa 9344978b75064087b34a020163aafd5f HamEvo 09795f0c978d4cce95c04e52c4788efa--9344978b75064087b34a020163aafd5f 5ae450204d0f42d896414cec9d4131e7 RX(theta₉) 9344978b75064087b34a020163aafd5f--5ae450204d0f42d896414cec9d4131e7 dc77e8ce29274905ba7ff9442a9f5daa RY(theta₁₂) 5ae450204d0f42d896414cec9d4131e7--dc77e8ce29274905ba7ff9442a9f5daa eaf0b869bfb34b73ae5635808db83cff RX(theta₁₅) dc77e8ce29274905ba7ff9442a9f5daa--eaf0b869bfb34b73ae5635808db83cff 0453265196ae493090d0b305d125f44f HamEvo eaf0b869bfb34b73ae5635808db83cff--0453265196ae493090d0b305d125f44f ac0a4045c1184a2ba5c6faf4ddfbeeed 0453265196ae493090d0b305d125f44f--ac0a4045c1184a2ba5c6faf4ddfbeeed 12ec117db9c34a4eb51b12faaf446c5c 8f46392af1644e13a3d2bfbd4c8edb65 RX(theta₁) 2cdb000eaf904740b57830c26c889542--8f46392af1644e13a3d2bfbd4c8edb65 1411c90722244da080b6480b4831b882 2 6d098eff857747dcad1cb50aa6c241c3 RY(theta₄) 8f46392af1644e13a3d2bfbd4c8edb65--6d098eff857747dcad1cb50aa6c241c3 e20b9c679b2d413285696b67c2dadda1 RX(theta₇) 6d098eff857747dcad1cb50aa6c241c3--e20b9c679b2d413285696b67c2dadda1 eb4b9f8604dd49aab7d6719a7375bb9c t = theta_t₀ e20b9c679b2d413285696b67c2dadda1--eb4b9f8604dd49aab7d6719a7375bb9c 153f007f0c6045199f6cc77d68e16031 RX(theta₁₀) eb4b9f8604dd49aab7d6719a7375bb9c--153f007f0c6045199f6cc77d68e16031 7107e13db799445aba124f77d36cfbda RY(theta₁₃) 153f007f0c6045199f6cc77d68e16031--7107e13db799445aba124f77d36cfbda 4b87be0283064527985349ecf7f3cfda RX(theta₁₆) 7107e13db799445aba124f77d36cfbda--4b87be0283064527985349ecf7f3cfda 83976e44ea5440acbeb60a504f7ab3bd t = theta_t₁ 4b87be0283064527985349ecf7f3cfda--83976e44ea5440acbeb60a504f7ab3bd 83976e44ea5440acbeb60a504f7ab3bd--12ec117db9c34a4eb51b12faaf446c5c 6fe97c334a274a1abc4e6832ad733ac2 6989698c71f442af82418452268a4228 RX(theta₂) 1411c90722244da080b6480b4831b882--6989698c71f442af82418452268a4228 1c1237c0a22742708fe7432d71f7612b RY(theta₅) 6989698c71f442af82418452268a4228--1c1237c0a22742708fe7432d71f7612b 36188d30877e4167a3fa26e11cfab8ed RX(theta₈) 1c1237c0a22742708fe7432d71f7612b--36188d30877e4167a3fa26e11cfab8ed c472e9dc5f3c4f96a9db4a55d52a317a 36188d30877e4167a3fa26e11cfab8ed--c472e9dc5f3c4f96a9db4a55d52a317a b9be27498ce14b939e0cbb5229b1d430 RX(theta₁₁) c472e9dc5f3c4f96a9db4a55d52a317a--b9be27498ce14b939e0cbb5229b1d430 ec80aae2276047c787a327ab4eb80aec RY(theta₁₄) b9be27498ce14b939e0cbb5229b1d430--ec80aae2276047c787a327ab4eb80aec a1673700ec6a4ec2a93b26f9f9bf4af0 RX(theta₁₇) ec80aae2276047c787a327ab4eb80aec--a1673700ec6a4ec2a93b26f9f9bf4af0 5971e6c55eee417aa6c6f902c9dd5eee a1673700ec6a4ec2a93b26f9f9bf4af0--5971e6c55eee417aa6c6f902c9dd5eee 5971e6c55eee417aa6c6f902c9dd5eee--6fe97c334a274a1abc4e6832ad733ac2

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_771852f2d2494c68be51cbc1eb9d2f17 cluster_ce9e99fb90bb46928732b53d33681ab8 9b3b6d89c0144282b01af3312038966e 0 5590ff50da8d409787010d0cbfc7cdb5 RX(theta₀) 9b3b6d89c0144282b01af3312038966e--5590ff50da8d409787010d0cbfc7cdb5 c31c434907594ba4a0c7bb276b0aae1c 1 832e4fa43a0046b6a960a1f165638157 RY(theta₆) 5590ff50da8d409787010d0cbfc7cdb5--832e4fa43a0046b6a960a1f165638157 f5533adae6e444b89842ebb93ce2f736 RX(theta₁₂) 832e4fa43a0046b6a960a1f165638157--f5533adae6e444b89842ebb93ce2f736 9cefdef6a6ae4ce3a10def286b924bef f5533adae6e444b89842ebb93ce2f736--9cefdef6a6ae4ce3a10def286b924bef 255abbf6606d4f55bf0a631c9d72d83b RX(theta₁₈) 9cefdef6a6ae4ce3a10def286b924bef--255abbf6606d4f55bf0a631c9d72d83b 964192453a00491a8ba28f7cfe8813e3 RY(theta₂₄) 255abbf6606d4f55bf0a631c9d72d83b--964192453a00491a8ba28f7cfe8813e3 da40eb4d345d481a93c68cfba9416a3d RX(theta₃₀) 964192453a00491a8ba28f7cfe8813e3--da40eb4d345d481a93c68cfba9416a3d 8a7f4db4b00844f58c932430b3571edd da40eb4d345d481a93c68cfba9416a3d--8a7f4db4b00844f58c932430b3571edd e1ef52e85e774b56ae070286b3b9b784 8a7f4db4b00844f58c932430b3571edd--e1ef52e85e774b56ae070286b3b9b784 b671f36564944463898a4fcd4fe80671 e10a19eb369841a7900206659dd1146c RX(theta₁) c31c434907594ba4a0c7bb276b0aae1c--e10a19eb369841a7900206659dd1146c 0c958f8c58a347aa964ea86d29d9e1bb 2 f66e8da6835c4707baff89752f6b511c RY(theta₇) e10a19eb369841a7900206659dd1146c--f66e8da6835c4707baff89752f6b511c 9242cf3607894e5f84d3bd362355a605 RX(theta₁₃) f66e8da6835c4707baff89752f6b511c--9242cf3607894e5f84d3bd362355a605 14ff5d8c959d41ceac640b1ff098f600 9242cf3607894e5f84d3bd362355a605--14ff5d8c959d41ceac640b1ff098f600 743eee8040e14adb80847ce3ef196362 RX(theta₁₉) 14ff5d8c959d41ceac640b1ff098f600--743eee8040e14adb80847ce3ef196362 90187b34f603464db8298e818eb5049e RY(theta₂₅) 743eee8040e14adb80847ce3ef196362--90187b34f603464db8298e818eb5049e a5c158a260584406ae02401add363038 RX(theta₃₁) 90187b34f603464db8298e818eb5049e--a5c158a260584406ae02401add363038 b7b3ee5fda984b2aa71e0926cb27a18b a5c158a260584406ae02401add363038--b7b3ee5fda984b2aa71e0926cb27a18b b7b3ee5fda984b2aa71e0926cb27a18b--b671f36564944463898a4fcd4fe80671 2de4eb46c3b3462e80571ca8868654c5 868c89fd7e95495a88486c1946cc54c8 RX(theta₂) 0c958f8c58a347aa964ea86d29d9e1bb--868c89fd7e95495a88486c1946cc54c8 9635e892ecde48b3a556a8d686ca9b8b 3 8ade1652f2fe4186a81c0d71ecc69751 RY(theta₈) 868c89fd7e95495a88486c1946cc54c8--8ade1652f2fe4186a81c0d71ecc69751 60ffe4fe0065412da3f9c9fe14ea9402 RX(theta₁₄) 8ade1652f2fe4186a81c0d71ecc69751--60ffe4fe0065412da3f9c9fe14ea9402 8c42fd2ff1dd4071bb45eb759af18451 HamEvo 60ffe4fe0065412da3f9c9fe14ea9402--8c42fd2ff1dd4071bb45eb759af18451 848d46ab21f54cbf8725ae9b7854bffd RX(theta₂₀) 8c42fd2ff1dd4071bb45eb759af18451--848d46ab21f54cbf8725ae9b7854bffd 3340a8b4be7244c09e9f0f9ef3545bc9 RY(theta₂₆) 848d46ab21f54cbf8725ae9b7854bffd--3340a8b4be7244c09e9f0f9ef3545bc9 e1c4a431584041b3a501268516f08b6f RX(theta₃₂) 3340a8b4be7244c09e9f0f9ef3545bc9--e1c4a431584041b3a501268516f08b6f 442e34df95f5480f9556d815651cf182 HamEvo e1c4a431584041b3a501268516f08b6f--442e34df95f5480f9556d815651cf182 442e34df95f5480f9556d815651cf182--2de4eb46c3b3462e80571ca8868654c5 c24fde860b3e4e6baada1398e595701c e6111ace6d98405c9d9720bc28f0e885 RX(theta₃) 9635e892ecde48b3a556a8d686ca9b8b--e6111ace6d98405c9d9720bc28f0e885 50987744659947a89c080a449f1f00ac 4 26ac5986213d46b6b76a129293125119 RY(theta₉) e6111ace6d98405c9d9720bc28f0e885--26ac5986213d46b6b76a129293125119 fe6581b717fd406cace215cf7030a030 RX(theta₁₅) 26ac5986213d46b6b76a129293125119--fe6581b717fd406cace215cf7030a030 fda64a2a6f9446b4b7f433d6a67650e7 t = theta_t₀ fe6581b717fd406cace215cf7030a030--fda64a2a6f9446b4b7f433d6a67650e7 37d6ea742f574d3b85b0c0647f151125 RX(theta₂₁) fda64a2a6f9446b4b7f433d6a67650e7--37d6ea742f574d3b85b0c0647f151125 0bef5f811cb64824b263e7c7c4aec461 RY(theta₂₇) 37d6ea742f574d3b85b0c0647f151125--0bef5f811cb64824b263e7c7c4aec461 40ac6e70946c431fb498d4d9344c7c83 RX(theta₃₃) 0bef5f811cb64824b263e7c7c4aec461--40ac6e70946c431fb498d4d9344c7c83 89bdcc5c8273457bad869cca443065d0 t = theta_t₁ 40ac6e70946c431fb498d4d9344c7c83--89bdcc5c8273457bad869cca443065d0 89bdcc5c8273457bad869cca443065d0--c24fde860b3e4e6baada1398e595701c d81d71644b624518839d6993d8030fb6 35b6f6d237054533ab75363b3566fb4c RX(theta₄) 50987744659947a89c080a449f1f00ac--35b6f6d237054533ab75363b3566fb4c 2c7e9874c9164ac5a02e1e9d36bbda61 5 91db015202974432b3c67834e1566f19 RY(theta₁₀) 35b6f6d237054533ab75363b3566fb4c--91db015202974432b3c67834e1566f19 bebdf576e84c42f99fe4ab96a751db08 RX(theta₁₆) 91db015202974432b3c67834e1566f19--bebdf576e84c42f99fe4ab96a751db08 ba0693bb676e47eca98adc4e4620d792 bebdf576e84c42f99fe4ab96a751db08--ba0693bb676e47eca98adc4e4620d792 237ec5a34fc6450687a98b7bdfbac108 RX(theta₂₂) ba0693bb676e47eca98adc4e4620d792--237ec5a34fc6450687a98b7bdfbac108 657ad305df4e4ba0b29fbdfa6b03a5c2 RY(theta₂₈) 237ec5a34fc6450687a98b7bdfbac108--657ad305df4e4ba0b29fbdfa6b03a5c2 77cb3449b36d42ddbe20250bb0f58760 RX(theta₃₄) 657ad305df4e4ba0b29fbdfa6b03a5c2--77cb3449b36d42ddbe20250bb0f58760 2d9bd4ca24674ede86e582b5b8de7aca 77cb3449b36d42ddbe20250bb0f58760--2d9bd4ca24674ede86e582b5b8de7aca 2d9bd4ca24674ede86e582b5b8de7aca--d81d71644b624518839d6993d8030fb6 1321b8cc70904491a222e80abf91d3ed fea6294cb5764f52a4952fad4ab85f22 RX(theta₅) 2c7e9874c9164ac5a02e1e9d36bbda61--fea6294cb5764f52a4952fad4ab85f22 0dcf005b960b48d2969014577b7ad673 RY(theta₁₁) fea6294cb5764f52a4952fad4ab85f22--0dcf005b960b48d2969014577b7ad673 baf46d13a7c54d0db45bfb0ab939dba8 RX(theta₁₇) 0dcf005b960b48d2969014577b7ad673--baf46d13a7c54d0db45bfb0ab939dba8 2df71671bb114100902ad9917c5524a2 baf46d13a7c54d0db45bfb0ab939dba8--2df71671bb114100902ad9917c5524a2 1daebf39a9974b5aa192fcf029008e28 RX(theta₂₃) 2df71671bb114100902ad9917c5524a2--1daebf39a9974b5aa192fcf029008e28 1ec78582780a4a218bf4797f1a1c357a RY(theta₂₉) 1daebf39a9974b5aa192fcf029008e28--1ec78582780a4a218bf4797f1a1c357a 7b1832b7dcc74dd9b6075e122acb1f4b RX(theta₃₅) 1ec78582780a4a218bf4797f1a1c357a--7b1832b7dcc74dd9b6075e122acb1f4b c4f9ad90be234926b80c28165031388a 7b1832b7dcc74dd9b6075e122acb1f4b--c4f9ad90be234926b80c28165031388a c4f9ad90be234926b80c28165031388a--1321b8cc70904491a222e80abf91d3ed

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_40771e4e68bc4c00a72bd371c3ed8b5b BPMA-1 cluster_48e76593b98b41e0b611edb9f215f130 BPMA-0 3a92cbcf0fdf42d9b4dc706e9b8a12e1 0 4e24e84cbcca495096aaf3777f9b588d RX(iia_α₀₀) 3a92cbcf0fdf42d9b4dc706e9b8a12e1--4e24e84cbcca495096aaf3777f9b588d e6b166c343c84696b1a6a3994edc4ace 1 bc902ec8f02a4aad971e9a4725a8aed9 RY(iia_α₀₃) 4e24e84cbcca495096aaf3777f9b588d--bc902ec8f02a4aad971e9a4725a8aed9 dacbde53a22c48f79fe60ec13951151a bc902ec8f02a4aad971e9a4725a8aed9--dacbde53a22c48f79fe60ec13951151a 9464e52c9613422e8ebd92922bad648f dacbde53a22c48f79fe60ec13951151a--9464e52c9613422e8ebd92922bad648f 4c3b2fb9d7cc47a1ae12339675379d17 RX(iia_γ₀₀) 9464e52c9613422e8ebd92922bad648f--4c3b2fb9d7cc47a1ae12339675379d17 a76dd6977ee84ab9a3e68f62d8270f19 4c3b2fb9d7cc47a1ae12339675379d17--a76dd6977ee84ab9a3e68f62d8270f19 8d7db060377e46de9743373762267808 a76dd6977ee84ab9a3e68f62d8270f19--8d7db060377e46de9743373762267808 448202e6d6f642948e1801fa9b4a330f RY(iia_β₀₃) 8d7db060377e46de9743373762267808--448202e6d6f642948e1801fa9b4a330f 40d5844bae36408282f1f50bda135261 RX(iia_β₀₀) 448202e6d6f642948e1801fa9b4a330f--40d5844bae36408282f1f50bda135261 0090409183824fb3a498ac3fcc45f240 RX(iia_α₁₀) 40d5844bae36408282f1f50bda135261--0090409183824fb3a498ac3fcc45f240 87609fd3bba04307ae9ec1ac5e659d08 RY(iia_α₁₃) 0090409183824fb3a498ac3fcc45f240--87609fd3bba04307ae9ec1ac5e659d08 2c0e4fb8c09d4b098c6d1fe23059498b 87609fd3bba04307ae9ec1ac5e659d08--2c0e4fb8c09d4b098c6d1fe23059498b 55d4b9f674974bd19c8edf7f6f2a5c9f 2c0e4fb8c09d4b098c6d1fe23059498b--55d4b9f674974bd19c8edf7f6f2a5c9f c7ea74926b8441f1848030123e976822 RX(iia_γ₁₀) 55d4b9f674974bd19c8edf7f6f2a5c9f--c7ea74926b8441f1848030123e976822 1d11a3a1a4654002b055dd6b280011b5 c7ea74926b8441f1848030123e976822--1d11a3a1a4654002b055dd6b280011b5 98771bc9d3044e8aa1a598fe3be27fe3 1d11a3a1a4654002b055dd6b280011b5--98771bc9d3044e8aa1a598fe3be27fe3 41225dbb97c14135943d80d45f3b3678 RY(iia_β₁₃) 98771bc9d3044e8aa1a598fe3be27fe3--41225dbb97c14135943d80d45f3b3678 63126ce36b81496cb7920778a3f0c2ed RX(iia_β₁₀) 41225dbb97c14135943d80d45f3b3678--63126ce36b81496cb7920778a3f0c2ed 35f09e1c62df4131ab2a62206821890d 63126ce36b81496cb7920778a3f0c2ed--35f09e1c62df4131ab2a62206821890d 4be7965ce53b4c28a479aa888de70bc8 eaa568aa9a5948e8ba2708dce78d69ff RX(iia_α₀₁) e6b166c343c84696b1a6a3994edc4ace--eaa568aa9a5948e8ba2708dce78d69ff bf0ab2a0378d45fd8eed69d8f2f4cbe6 2 0a9549e94fdd4a238e0a20a3211e2616 RY(iia_α₀₄) eaa568aa9a5948e8ba2708dce78d69ff--0a9549e94fdd4a238e0a20a3211e2616 f6af7c656c5f4e489bbd14c25c76172a X 0a9549e94fdd4a238e0a20a3211e2616--f6af7c656c5f4e489bbd14c25c76172a f6af7c656c5f4e489bbd14c25c76172a--dacbde53a22c48f79fe60ec13951151a ec4841bda8994e96b0a6f633bdd514eb f6af7c656c5f4e489bbd14c25c76172a--ec4841bda8994e96b0a6f633bdd514eb bdcc1224e3104dbb89a78b772e101756 RX(iia_γ₀₁) ec4841bda8994e96b0a6f633bdd514eb--bdcc1224e3104dbb89a78b772e101756 9dbeb549c924484788d73516396c982c bdcc1224e3104dbb89a78b772e101756--9dbeb549c924484788d73516396c982c 02c9b754ad4b451f8b011fe998d7cc45 X 9dbeb549c924484788d73516396c982c--02c9b754ad4b451f8b011fe998d7cc45 02c9b754ad4b451f8b011fe998d7cc45--8d7db060377e46de9743373762267808 88c1755a25da4a9584b3484c0b40c01e RY(iia_β₀₄) 02c9b754ad4b451f8b011fe998d7cc45--88c1755a25da4a9584b3484c0b40c01e f41e60582c624533a52b76476fa110a4 RX(iia_β₀₁) 88c1755a25da4a9584b3484c0b40c01e--f41e60582c624533a52b76476fa110a4 a12e35ce1a9b4ffebeea28fe74f6f456 RX(iia_α₁₁) f41e60582c624533a52b76476fa110a4--a12e35ce1a9b4ffebeea28fe74f6f456 5fcefdf4c1354d3697128e1f520db66e RY(iia_α₁₄) a12e35ce1a9b4ffebeea28fe74f6f456--5fcefdf4c1354d3697128e1f520db66e 380c3afefa77487a993c5e6ac55a3106 X 5fcefdf4c1354d3697128e1f520db66e--380c3afefa77487a993c5e6ac55a3106 380c3afefa77487a993c5e6ac55a3106--2c0e4fb8c09d4b098c6d1fe23059498b d368cae96a9e415d93953f783a88f722 380c3afefa77487a993c5e6ac55a3106--d368cae96a9e415d93953f783a88f722 7653199d26d74cb2a7881284458283b9 RX(iia_γ₁₁) d368cae96a9e415d93953f783a88f722--7653199d26d74cb2a7881284458283b9 aab93b3c343546dabc814e927a6a1de2 7653199d26d74cb2a7881284458283b9--aab93b3c343546dabc814e927a6a1de2 f2151f0107014d119d6e284223e6da32 X aab93b3c343546dabc814e927a6a1de2--f2151f0107014d119d6e284223e6da32 f2151f0107014d119d6e284223e6da32--98771bc9d3044e8aa1a598fe3be27fe3 5680bec9beb54e439045a3a10838073a RY(iia_β₁₄) f2151f0107014d119d6e284223e6da32--5680bec9beb54e439045a3a10838073a cb25269c71054d34b45269bb5d8ee14f RX(iia_β₁₁) 5680bec9beb54e439045a3a10838073a--cb25269c71054d34b45269bb5d8ee14f cb25269c71054d34b45269bb5d8ee14f--4be7965ce53b4c28a479aa888de70bc8 4b078464a884409ba31ddd1076898866 a5c7dbc6fe6e47a6992a0ca1d62630d8 RX(iia_α₀₂) bf0ab2a0378d45fd8eed69d8f2f4cbe6--a5c7dbc6fe6e47a6992a0ca1d62630d8 1c52fff534064db4be45da85a5776b83 RY(iia_α₀₅) a5c7dbc6fe6e47a6992a0ca1d62630d8--1c52fff534064db4be45da85a5776b83 fe9bad1b814f4b19928d19f462a97e3a 1c52fff534064db4be45da85a5776b83--fe9bad1b814f4b19928d19f462a97e3a 2001f0296230497884959b9680f2a53d X fe9bad1b814f4b19928d19f462a97e3a--2001f0296230497884959b9680f2a53d 2001f0296230497884959b9680f2a53d--ec4841bda8994e96b0a6f633bdd514eb f02ebbf0ff42421db5faca04ad2d9ab4 RX(iia_γ₀₂) 2001f0296230497884959b9680f2a53d--f02ebbf0ff42421db5faca04ad2d9ab4 76bbc957418f47c59ae460f7dfdf4744 X f02ebbf0ff42421db5faca04ad2d9ab4--76bbc957418f47c59ae460f7dfdf4744 76bbc957418f47c59ae460f7dfdf4744--9dbeb549c924484788d73516396c982c d63bdecf571c4b84ad48cba8a56fa879 76bbc957418f47c59ae460f7dfdf4744--d63bdecf571c4b84ad48cba8a56fa879 44d5b9ea1dae4e90826e21a3eb854a90 RY(iia_β₀₅) d63bdecf571c4b84ad48cba8a56fa879--44d5b9ea1dae4e90826e21a3eb854a90 18f0539001ba48f9baee3a457ff96ab9 RX(iia_β₀₂) 44d5b9ea1dae4e90826e21a3eb854a90--18f0539001ba48f9baee3a457ff96ab9 4b2b88a0fba743099156db90c10ce822 RX(iia_α₁₂) 18f0539001ba48f9baee3a457ff96ab9--4b2b88a0fba743099156db90c10ce822 f3fd2c3f900a445986a90986c5fb0dc3 RY(iia_α₁₅) 4b2b88a0fba743099156db90c10ce822--f3fd2c3f900a445986a90986c5fb0dc3 d3ab4dc3fa5b4a74b38b5fabc2033d5a f3fd2c3f900a445986a90986c5fb0dc3--d3ab4dc3fa5b4a74b38b5fabc2033d5a 97d9b9f951154e35a966be01bf75ac02 X d3ab4dc3fa5b4a74b38b5fabc2033d5a--97d9b9f951154e35a966be01bf75ac02 97d9b9f951154e35a966be01bf75ac02--d368cae96a9e415d93953f783a88f722 d88dde6fa1dd4c2bbb41ed66679f671f RX(iia_γ₁₂) 97d9b9f951154e35a966be01bf75ac02--d88dde6fa1dd4c2bbb41ed66679f671f ceb9a21768b549ad85e9d004698e4436 X d88dde6fa1dd4c2bbb41ed66679f671f--ceb9a21768b549ad85e9d004698e4436 ceb9a21768b549ad85e9d004698e4436--aab93b3c343546dabc814e927a6a1de2 02339f6075a34973bd6d4e094b3d0341 ceb9a21768b549ad85e9d004698e4436--02339f6075a34973bd6d4e094b3d0341 296cf1fb869048cc94827443380f9137 RY(iia_β₁₅) 02339f6075a34973bd6d4e094b3d0341--296cf1fb869048cc94827443380f9137 9c638c7406a64a7fabeec358f8c4a8d4 RX(iia_β₁₂) 296cf1fb869048cc94827443380f9137--9c638c7406a64a7fabeec358f8c4a8d4 9c638c7406a64a7fabeec358f8c4a8d4--4b078464a884409ba31ddd1076898866