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_d0f0c761aeb94088b803cefa5bf21d7a Constant Chebyshev FM cluster_93f36befa7aa43e3af451d478d96530b Constant Fourier FM 184c2a857a804c87bbbf2d0646ea87bc 0 793f55b37fd3467da20e5a9f0f3cd92c RX(phi) 184c2a857a804c87bbbf2d0646ea87bc--793f55b37fd3467da20e5a9f0f3cd92c 3ae2f0c7aefc4466b4160ee09af1d53d 1 2f0d080d9dd8480d8cb3e5a9d8fd32bd RX(acos(phi)) 793f55b37fd3467da20e5a9f0f3cd92c--2f0d080d9dd8480d8cb3e5a9d8fd32bd f2c951b609e248d098aeb21e3d64d17c 2f0d080d9dd8480d8cb3e5a9d8fd32bd--f2c951b609e248d098aeb21e3d64d17c 2606fd25baab4c6b9806dabfd76d6de4 3eda01db1ede43c0ad37165cf2fae025 RX(phi) 3ae2f0c7aefc4466b4160ee09af1d53d--3eda01db1ede43c0ad37165cf2fae025 94ecd286a232434fa2113689d37b82bb 2 82469c722e754bba953a739bdc876e2d RX(acos(phi)) 3eda01db1ede43c0ad37165cf2fae025--82469c722e754bba953a739bdc876e2d 82469c722e754bba953a739bdc876e2d--2606fd25baab4c6b9806dabfd76d6de4 71d9c9a72b854123a521a0703aa02d1a 81dd1e47b22f49eb80ec7153b60f8b78 RX(phi) 94ecd286a232434fa2113689d37b82bb--81dd1e47b22f49eb80ec7153b60f8b78 8a3da86d288b48ca96db77364906bedc RX(acos(phi)) 81dd1e47b22f49eb80ec7153b60f8b78--8a3da86d288b48ca96db77364906bedc 8a3da86d288b48ca96db77364906bedc--71d9c9a72b854123a521a0703aa02d1a

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_db0f688a890a451398b77a96d7090213 Constant <function custom_fn at 0x7f2680135090> FM cluster_e42cdb0e471048d1a2b94d2448e22aeb Constant asin FM 24a64f8f86a4440b8aebd13432013b90 0 2e569d82770d44dc9f22de76112e8edd RX(asin(phi)) 24a64f8f86a4440b8aebd13432013b90--2e569d82770d44dc9f22de76112e8edd f7755b4116264ae1a3cc60206b211c23 1 7c4d855ea5124f97a42220d865c2e0f6 RX(phi**2 + asin(phi)) 2e569d82770d44dc9f22de76112e8edd--7c4d855ea5124f97a42220d865c2e0f6 b0c8171bed924898bec5755be34bb8bb 7c4d855ea5124f97a42220d865c2e0f6--b0c8171bed924898bec5755be34bb8bb 65f62e153fc243f2aca7406632c91a7e 2bd2212b116f478a84f170adaeaba308 RX(asin(phi)) f7755b4116264ae1a3cc60206b211c23--2bd2212b116f478a84f170adaeaba308 493e4f7ed9ad422f958762bcefe599c3 2 67f5c29f13ef4000b82ec9e28f58e358 RX(phi**2 + asin(phi)) 2bd2212b116f478a84f170adaeaba308--67f5c29f13ef4000b82ec9e28f58e358 67f5c29f13ef4000b82ec9e28f58e358--65f62e153fc243f2aca7406632c91a7e 4b3733ebe6cc40e58a5e73d7b455615c b1fc2af06bc044c3a39798653d8fdc04 RX(asin(phi)) 493e4f7ed9ad422f958762bcefe599c3--b1fc2af06bc044c3a39798653d8fdc04 cbe025c23565442594fc999c8016f50c RX(phi**2 + asin(phi)) b1fc2af06bc044c3a39798653d8fdc04--cbe025c23565442594fc999c8016f50c cbe025c23565442594fc999c8016f50c--4b3733ebe6cc40e58a5e73d7b455615c

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_b73724badd5a420ca84bba77e3eba8e9 Exponential Fourier FM cluster_7a06056f8b0b46cfbdc221f30e3b7912 Constant Fourier FM cluster_582cc6d485c243eb894636b01230b17c Tower Fourier FM cc4b1c3c95a64ea19cf9ed11f6d8397b 0 f1e678cbbbd54f2abfcde0bf28a43336 RX(phi) cc4b1c3c95a64ea19cf9ed11f6d8397b--f1e678cbbbd54f2abfcde0bf28a43336 3fc2370c36714c079b292ca9f1520977 1 17c99b38303f4f5399922d9b3437b06a RX(1.0*phi) f1e678cbbbd54f2abfcde0bf28a43336--17c99b38303f4f5399922d9b3437b06a 1ae1f9f02d904b39bf9ff29d2c4e9371 RX(1.0*phi) 17c99b38303f4f5399922d9b3437b06a--1ae1f9f02d904b39bf9ff29d2c4e9371 503de52e15b9477995c3fb971f59764b 1ae1f9f02d904b39bf9ff29d2c4e9371--503de52e15b9477995c3fb971f59764b 3b9753aa74184c4a9e76965c129ce754 8b1f99e884e141e88e8d7f02a0674ef1 RX(phi) 3fc2370c36714c079b292ca9f1520977--8b1f99e884e141e88e8d7f02a0674ef1 3d1037764c18418b96a6351e9b386f40 2 b44bfb5cf21e4a86ab77932d71056df2 RX(2.0*phi) 8b1f99e884e141e88e8d7f02a0674ef1--b44bfb5cf21e4a86ab77932d71056df2 487d7becf3024255a7e9dedb7f97ed35 RX(2.0*phi) b44bfb5cf21e4a86ab77932d71056df2--487d7becf3024255a7e9dedb7f97ed35 487d7becf3024255a7e9dedb7f97ed35--3b9753aa74184c4a9e76965c129ce754 5a69c0e6cdf24fdb9478c981ccdf06d1 a9a4af9abbd14edb9191aba04dfdbc79 RX(phi) 3d1037764c18418b96a6351e9b386f40--a9a4af9abbd14edb9191aba04dfdbc79 4aa3c27c92d94cc788579a8b1f3a9705 3 71fd7125c14841c7a12a436899776b76 RX(3.0*phi) a9a4af9abbd14edb9191aba04dfdbc79--71fd7125c14841c7a12a436899776b76 86c2f3ac34bb4f8c93448430a252ab41 RX(4.0*phi) 71fd7125c14841c7a12a436899776b76--86c2f3ac34bb4f8c93448430a252ab41 86c2f3ac34bb4f8c93448430a252ab41--5a69c0e6cdf24fdb9478c981ccdf06d1 5ab52809fe13466dab7220330b4b35c8 8fa8b75a3b994bdb89996ce8cf346063 RX(phi) 4aa3c27c92d94cc788579a8b1f3a9705--8fa8b75a3b994bdb89996ce8cf346063 2840af383a1a40d0a20319ae116ae4da 4 80da7696f928430e977206d599b350a8 RX(4.0*phi) 8fa8b75a3b994bdb89996ce8cf346063--80da7696f928430e977206d599b350a8 a76274da0e6844d389d2e3ebf335e195 RX(8.0*phi) 80da7696f928430e977206d599b350a8--a76274da0e6844d389d2e3ebf335e195 a76274da0e6844d389d2e3ebf335e195--5ab52809fe13466dab7220330b4b35c8 2f48672a4228405ca2a105bc79260926 94b8dca300cc4749830cce85c49a38ed RX(phi) 2840af383a1a40d0a20319ae116ae4da--94b8dca300cc4749830cce85c49a38ed aa27090a45584a8ba4bd7a66d0651e37 RX(5.0*phi) 94b8dca300cc4749830cce85c49a38ed--aa27090a45584a8ba4bd7a66d0651e37 13f759246aba40c7bbafb346e51d2d2c RX(16.0*phi) aa27090a45584a8ba4bd7a66d0651e37--13f759246aba40c7bbafb346e51d2d2c 13f759246aba40c7bbafb346e51d2d2c--2f48672a4228405ca2a105bc79260926

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 a167da9091ea4ae09b8a4d2beb82f65f 0 3f0cb028316a41f6a1a2f254e3219d3b RX(1.0*acos(phi)) a167da9091ea4ae09b8a4d2beb82f65f--3f0cb028316a41f6a1a2f254e3219d3b c7d4871627f743b193483fde7e9968cd 1 cc7f90adba574f0996449e3eb6d5f39a 3f0cb028316a41f6a1a2f254e3219d3b--cc7f90adba574f0996449e3eb6d5f39a e78a7491632e480bab481e8d8ae7e113 10d97f9a695c4e8ba2a602009fa78b00 RX(1.414*acos(phi)) c7d4871627f743b193483fde7e9968cd--10d97f9a695c4e8ba2a602009fa78b00 db25ae1c61944738b2c625df21b457ac 2 10d97f9a695c4e8ba2a602009fa78b00--e78a7491632e480bab481e8d8ae7e113 bd3a76b0cab34eda9e8154c628ce8f22 0771856089ce42bcba711f48f9a0c05d RX(1.732*acos(phi)) db25ae1c61944738b2c625df21b457ac--0771856089ce42bcba711f48f9a0c05d 431e3e588c2d496e827a1b5e6ba58a86 3 0771856089ce42bcba711f48f9a0c05d--bd3a76b0cab34eda9e8154c628ce8f22 5f03a5dc477b4e04b6721e785e56f712 87f037e8df024cfcb535e93d6d60ef35 RX(2.0*acos(phi)) 431e3e588c2d496e827a1b5e6ba58a86--87f037e8df024cfcb535e93d6d60ef35 5cb49c6463dd4bb99657885a997de620 4 87f037e8df024cfcb535e93d6d60ef35--5f03a5dc477b4e04b6721e785e56f712 337a7b6d24b04c48ab98407bbfc7f4a1 994d1e2fa84a4107b8e040968ea87d73 RX(2.236*acos(phi)) 5cb49c6463dd4bb99657885a997de620--994d1e2fa84a4107b8e040968ea87d73 994d1e2fa84a4107b8e040968ea87d73--337a7b6d24b04c48ab98407bbfc7f4a1

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 f26e53f146f9456a8cbe2767e5730fc3 0 3204cd4a34974d1880001f5528a51674 RX(1.0*phi*w₀) f26e53f146f9456a8cbe2767e5730fc3--3204cd4a34974d1880001f5528a51674 620b2468de3143768a712abeb97a39ee 1 e484ee3a532d40e5b76aa34a56b4eba4 3204cd4a34974d1880001f5528a51674--e484ee3a532d40e5b76aa34a56b4eba4 94eddcb85cd14d1197b90aa4800252ad 733cc0e0d20a4a64986504e60711bd91 RX(2.0*phi*w₁) 620b2468de3143768a712abeb97a39ee--733cc0e0d20a4a64986504e60711bd91 4e3eb48f8008467cb1f68cb2642d00e5 2 733cc0e0d20a4a64986504e60711bd91--94eddcb85cd14d1197b90aa4800252ad 5fdafbc388664adaa3f981bef6137a81 57def63de98d46f0a82966e5100a0588 RX(4.0*phi*w₂) 4e3eb48f8008467cb1f68cb2642d00e5--57def63de98d46f0a82966e5100a0588 738ee9ad13aa4a12b8164ef791413a7a 3 57def63de98d46f0a82966e5100a0588--5fdafbc388664adaa3f981bef6137a81 c55841b4c6524e818e17d44322922b62 ac1242dc48954c9cb1938f4dbd2930f1 RX(8.0*phi*w₃) 738ee9ad13aa4a12b8164ef791413a7a--ac1242dc48954c9cb1938f4dbd2930f1 6b72c24cc2e54f39852fd1e4907aafc1 4 ac1242dc48954c9cb1938f4dbd2930f1--c55841b4c6524e818e17d44322922b62 fdb2f15802354847b840ba48e81b2bb8 c75b29ecae1d4823a10dc96bdbca990a RX(16.0*phi*w₄) 6b72c24cc2e54f39852fd1e4907aafc1--c75b29ecae1d4823a10dc96bdbca990a c75b29ecae1d4823a10dc96bdbca990a--fdb2f15802354847b840ba48e81b2bb8

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 5d08a6bf8d394a86b7967ce197f04b35 0 719929f1b2c943e0a979008c947ea8ce RY(80.0*acos(w₄*(0.667*x + 1.667))) 5d08a6bf8d394a86b7967ce197f04b35--719929f1b2c943e0a979008c947ea8ce 5faea69ec50e4d989bbfd6a3e34546e3 1 998d0194eee8432093a9f86b611f069e 719929f1b2c943e0a979008c947ea8ce--998d0194eee8432093a9f86b611f069e 02224a035dc14a13848873aa4974b028 96558155b0084c92ae1f47bbec6e9d34 RY(40.0*acos(w₃*(0.667*x + 1.667))) 5faea69ec50e4d989bbfd6a3e34546e3--96558155b0084c92ae1f47bbec6e9d34 330597dd09fc47e088258a57928853b5 2 96558155b0084c92ae1f47bbec6e9d34--02224a035dc14a13848873aa4974b028 90c3f377d28f4836a9cc7c059b37bfe0 967c3bd7b0e147f1982c3189e92c047e RY(20.0*acos(w₂*(0.667*x + 1.667))) 330597dd09fc47e088258a57928853b5--967c3bd7b0e147f1982c3189e92c047e c98f67ce66d948b58b9e6f9c14e7d6d1 3 967c3bd7b0e147f1982c3189e92c047e--90c3f377d28f4836a9cc7c059b37bfe0 618c082abfb34e148b83b5b32054943a f6d49b2a5a4d4052a7050feadcc85679 RY(10.0*acos(w₁*(0.667*x + 1.667))) c98f67ce66d948b58b9e6f9c14e7d6d1--f6d49b2a5a4d4052a7050feadcc85679 97f16a926619439f9709f310368ad95e 4 f6d49b2a5a4d4052a7050feadcc85679--618c082abfb34e148b83b5b32054943a 96fd5545471849d28b024c7aafc2287d 979316cddbe94de68a4f6688927a6e1c RY(5.0*acos(w₀*(0.667*x + 1.667))) 97f16a926619439f9709f310368ad95e--979316cddbe94de68a4f6688927a6e1c 979316cddbe94de68a4f6688927a6e1c--96fd5545471849d28b024c7aafc2287d

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 bd9137f16d9c4ba99a0bb8409c0651a6 0 5cec4601de454c8a9263876638438649 RX(theta₀) bd9137f16d9c4ba99a0bb8409c0651a6--5cec4601de454c8a9263876638438649 58f1a288242e41ae8850c53a13167ff6 1 7957e0f89ce24cc8839f9ad5dfc04431 RY(theta₃) 5cec4601de454c8a9263876638438649--7957e0f89ce24cc8839f9ad5dfc04431 62b8a24ca32a4e2088136557ab5a62ce RX(theta₆) 7957e0f89ce24cc8839f9ad5dfc04431--62b8a24ca32a4e2088136557ab5a62ce 178daccfde9f404ca6529665724b9a7d 62b8a24ca32a4e2088136557ab5a62ce--178daccfde9f404ca6529665724b9a7d 4303a0248faf4b47af9f5d2254d77b92 178daccfde9f404ca6529665724b9a7d--4303a0248faf4b47af9f5d2254d77b92 b67892a5e0b84935bb94b065dc556677 RX(theta₉) 4303a0248faf4b47af9f5d2254d77b92--b67892a5e0b84935bb94b065dc556677 272daa47f7dc4b4a8f98078a280b5ed9 RY(theta₁₂) b67892a5e0b84935bb94b065dc556677--272daa47f7dc4b4a8f98078a280b5ed9 592b84f59ccc46b28d6e05144673163f RX(theta₁₅) 272daa47f7dc4b4a8f98078a280b5ed9--592b84f59ccc46b28d6e05144673163f 458e3ba4a9404ad5867208af46111fd6 592b84f59ccc46b28d6e05144673163f--458e3ba4a9404ad5867208af46111fd6 d48eb7bb95bc453da07528bdef2b17b6 458e3ba4a9404ad5867208af46111fd6--d48eb7bb95bc453da07528bdef2b17b6 7fd332a195fc47e195aa7b1ff7aa6e30 d48eb7bb95bc453da07528bdef2b17b6--7fd332a195fc47e195aa7b1ff7aa6e30 b578c2397a9f4e468bacf51c8c8a6e48 68d69f67da4244e3ae4b4efd700185c1 RX(theta₁) 58f1a288242e41ae8850c53a13167ff6--68d69f67da4244e3ae4b4efd700185c1 ff020fdede3644eb88ec9e869805920d 2 99de3a06b02f4ad3a5fdd8c66eff0617 RY(theta₄) 68d69f67da4244e3ae4b4efd700185c1--99de3a06b02f4ad3a5fdd8c66eff0617 d45e250e10d74c5aa2688d1e7bbdeaeb RX(theta₇) 99de3a06b02f4ad3a5fdd8c66eff0617--d45e250e10d74c5aa2688d1e7bbdeaeb 4950c71f847a4f50a3cb51f6c2084abf X d45e250e10d74c5aa2688d1e7bbdeaeb--4950c71f847a4f50a3cb51f6c2084abf 4950c71f847a4f50a3cb51f6c2084abf--178daccfde9f404ca6529665724b9a7d 1f0dabb2a9974a32a6a77b18d8687a50 4950c71f847a4f50a3cb51f6c2084abf--1f0dabb2a9974a32a6a77b18d8687a50 61292ef9518d4e2b9830653f1622a23a RX(theta₁₀) 1f0dabb2a9974a32a6a77b18d8687a50--61292ef9518d4e2b9830653f1622a23a 3a6e83188a1c4d5f98d8484572dddc2d RY(theta₁₃) 61292ef9518d4e2b9830653f1622a23a--3a6e83188a1c4d5f98d8484572dddc2d a5a4ec928a7849a7ae866643ec58d002 RX(theta₁₆) 3a6e83188a1c4d5f98d8484572dddc2d--a5a4ec928a7849a7ae866643ec58d002 619bf040aac8440499e899384fa047ad X a5a4ec928a7849a7ae866643ec58d002--619bf040aac8440499e899384fa047ad 619bf040aac8440499e899384fa047ad--458e3ba4a9404ad5867208af46111fd6 00e013d6928f429eb2592116121cee05 619bf040aac8440499e899384fa047ad--00e013d6928f429eb2592116121cee05 00e013d6928f429eb2592116121cee05--b578c2397a9f4e468bacf51c8c8a6e48 83d918b6f0e34901814440566182e639 be1fe7dc29f043049e836eca10e192f4 RX(theta₂) ff020fdede3644eb88ec9e869805920d--be1fe7dc29f043049e836eca10e192f4 91a3fcf6061f4b3ba91931b46c6b46ad RY(theta₅) be1fe7dc29f043049e836eca10e192f4--91a3fcf6061f4b3ba91931b46c6b46ad c5e0009151b647eb9096ebda2668405d RX(theta₈) 91a3fcf6061f4b3ba91931b46c6b46ad--c5e0009151b647eb9096ebda2668405d 3ee42d6d52664f329fe1e5e2afd1af92 c5e0009151b647eb9096ebda2668405d--3ee42d6d52664f329fe1e5e2afd1af92 a69eb3553523476c9b80d4bf9b245d42 X 3ee42d6d52664f329fe1e5e2afd1af92--a69eb3553523476c9b80d4bf9b245d42 a69eb3553523476c9b80d4bf9b245d42--1f0dabb2a9974a32a6a77b18d8687a50 67ed02c9b553402091943e1744381d18 RX(theta₁₁) a69eb3553523476c9b80d4bf9b245d42--67ed02c9b553402091943e1744381d18 723b8155fd3f41249417d2dcb2919a22 RY(theta₁₄) 67ed02c9b553402091943e1744381d18--723b8155fd3f41249417d2dcb2919a22 7586f7a88ea246089227cdd358bb9917 RX(theta₁₇) 723b8155fd3f41249417d2dcb2919a22--7586f7a88ea246089227cdd358bb9917 e4f46d297dd849e8b5b32bd148e11113 7586f7a88ea246089227cdd358bb9917--e4f46d297dd849e8b5b32bd148e11113 a6dbf34d82fa4877a3f507714050f9a3 X e4f46d297dd849e8b5b32bd148e11113--a6dbf34d82fa4877a3f507714050f9a3 a6dbf34d82fa4877a3f507714050f9a3--00e013d6928f429eb2592116121cee05 a6dbf34d82fa4877a3f507714050f9a3--83d918b6f0e34901814440566182e639

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 069fa5d559b94eeaa5b7705e7e49406c 0 5bde0983ef3a43c1a0f5004b90828866 RX(phi₀) 069fa5d559b94eeaa5b7705e7e49406c--5bde0983ef3a43c1a0f5004b90828866 734ff03e51ca47c8a98c06b66b178c60 1 dec26d4721f5421ebc800d36cf42acf7 RY(phi₃) 5bde0983ef3a43c1a0f5004b90828866--dec26d4721f5421ebc800d36cf42acf7 04ca5747109a4a1ba1211042e6606860 RX(phi₆) dec26d4721f5421ebc800d36cf42acf7--04ca5747109a4a1ba1211042e6606860 1e83c9a97ea646a99639117f60edae3d 04ca5747109a4a1ba1211042e6606860--1e83c9a97ea646a99639117f60edae3d 4d065f56655e49bdbddeea65ccca9624 1e83c9a97ea646a99639117f60edae3d--4d065f56655e49bdbddeea65ccca9624 339db55bd9414f55a1d485c5395dff09 RX(phi₉) 4d065f56655e49bdbddeea65ccca9624--339db55bd9414f55a1d485c5395dff09 475a17f3d24d4ef5bd0d5956eac20f88 RY(phi₁₂) 339db55bd9414f55a1d485c5395dff09--475a17f3d24d4ef5bd0d5956eac20f88 1ed40e47cf6140e5aade508e97849f85 RX(phi₁₅) 475a17f3d24d4ef5bd0d5956eac20f88--1ed40e47cf6140e5aade508e97849f85 056c2cefad4846ec8e41025bf46b5e81 1ed40e47cf6140e5aade508e97849f85--056c2cefad4846ec8e41025bf46b5e81 54c183e65e1946ae928b29da95226043 056c2cefad4846ec8e41025bf46b5e81--54c183e65e1946ae928b29da95226043 eaefb33b61344f74b7c91cc01c3abf7f 54c183e65e1946ae928b29da95226043--eaefb33b61344f74b7c91cc01c3abf7f 51c5277911664beca0b7473d65ff77fd 478f571ec793471cbeef7c471e105dc3 RX(phi₁) 734ff03e51ca47c8a98c06b66b178c60--478f571ec793471cbeef7c471e105dc3 44fb38c8492e48c68312e57a1ecd1cce 2 d39eac6a4050406c9560a97cd4ec6055 RY(phi₄) 478f571ec793471cbeef7c471e105dc3--d39eac6a4050406c9560a97cd4ec6055 f98a9ab9fab14da1b89afacad0efc4f4 RX(phi₇) d39eac6a4050406c9560a97cd4ec6055--f98a9ab9fab14da1b89afacad0efc4f4 ab84e2253e2642758af1d3c73b8eeb30 PHASE(phi_ent₀) f98a9ab9fab14da1b89afacad0efc4f4--ab84e2253e2642758af1d3c73b8eeb30 ab84e2253e2642758af1d3c73b8eeb30--1e83c9a97ea646a99639117f60edae3d b584f2a926d740ffb5964c63da8a276b ab84e2253e2642758af1d3c73b8eeb30--b584f2a926d740ffb5964c63da8a276b ef824ecafcab42d28e286c9714e03e78 RX(phi₁₀) b584f2a926d740ffb5964c63da8a276b--ef824ecafcab42d28e286c9714e03e78 a326fdbde66843e68386f0efcdcf68ea RY(phi₁₃) ef824ecafcab42d28e286c9714e03e78--a326fdbde66843e68386f0efcdcf68ea c81d3485efb8488ebbc039f57c6f703f RX(phi₁₆) a326fdbde66843e68386f0efcdcf68ea--c81d3485efb8488ebbc039f57c6f703f 96cd1a0355dc475fb0aa5053da43fbba PHASE(phi_ent₂) c81d3485efb8488ebbc039f57c6f703f--96cd1a0355dc475fb0aa5053da43fbba 96cd1a0355dc475fb0aa5053da43fbba--056c2cefad4846ec8e41025bf46b5e81 8ba69ac17af44b36934b1f674016ec7e 96cd1a0355dc475fb0aa5053da43fbba--8ba69ac17af44b36934b1f674016ec7e 8ba69ac17af44b36934b1f674016ec7e--51c5277911664beca0b7473d65ff77fd f4d1a2939be34c13882212dc8b4b1019 d5c6e6bc57b3452886dbbef0d436c0ec RX(phi₂) 44fb38c8492e48c68312e57a1ecd1cce--d5c6e6bc57b3452886dbbef0d436c0ec b6c2bbd69fc4406d96be7514fc7e2e4c RY(phi₅) d5c6e6bc57b3452886dbbef0d436c0ec--b6c2bbd69fc4406d96be7514fc7e2e4c f0ae9c6f469846219311d3a20af4df70 RX(phi₈) b6c2bbd69fc4406d96be7514fc7e2e4c--f0ae9c6f469846219311d3a20af4df70 3046ab0af71c465cb62a14f6bec47bf7 f0ae9c6f469846219311d3a20af4df70--3046ab0af71c465cb62a14f6bec47bf7 54eca4f69882440f985a5e577a659129 PHASE(phi_ent₁) 3046ab0af71c465cb62a14f6bec47bf7--54eca4f69882440f985a5e577a659129 54eca4f69882440f985a5e577a659129--b584f2a926d740ffb5964c63da8a276b 3102eaa8558c4320a85a6c1ca7d42174 RX(phi₁₁) 54eca4f69882440f985a5e577a659129--3102eaa8558c4320a85a6c1ca7d42174 26e928e2d2104b5c9af8afc4527250f6 RY(phi₁₄) 3102eaa8558c4320a85a6c1ca7d42174--26e928e2d2104b5c9af8afc4527250f6 43409b6a9ab342edbda386a36ab0d989 RX(phi₁₇) 26e928e2d2104b5c9af8afc4527250f6--43409b6a9ab342edbda386a36ab0d989 97f9237affc34d2da34e16e031689b68 43409b6a9ab342edbda386a36ab0d989--97f9237affc34d2da34e16e031689b68 bebca7259b0542ddbc76c72fe332ebde PHASE(phi_ent₃) 97f9237affc34d2da34e16e031689b68--bebca7259b0542ddbc76c72fe332ebde bebca7259b0542ddbc76c72fe332ebde--8ba69ac17af44b36934b1f674016ec7e bebca7259b0542ddbc76c72fe332ebde--f4d1a2939be34c13882212dc8b4b1019

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_fc481792b4b34fbc93a458f148a25a14 cluster_4fd3e77f90e14312bd23c905f132b6f8 0cef6609957e4eada7ac08029d9551e0 0 0719ba19480441c8a89618082fa4fe5d RX(theta₀) 0cef6609957e4eada7ac08029d9551e0--0719ba19480441c8a89618082fa4fe5d 18d0824487e6431f88969d01d315a616 1 da2643d422e3475ebe0025999600a03e RY(theta₃) 0719ba19480441c8a89618082fa4fe5d--da2643d422e3475ebe0025999600a03e 90e3095338e54955a55fa3e94722ff9c RX(theta₆) da2643d422e3475ebe0025999600a03e--90e3095338e54955a55fa3e94722ff9c 065e6abf09314c279984df22823826b8 HamEvo 90e3095338e54955a55fa3e94722ff9c--065e6abf09314c279984df22823826b8 f264afce665340c99607c625ec36c003 RX(theta₉) 065e6abf09314c279984df22823826b8--f264afce665340c99607c625ec36c003 57598f2f801a40ef91096d8845d8e649 RY(theta₁₂) f264afce665340c99607c625ec36c003--57598f2f801a40ef91096d8845d8e649 d14575a71b664273a0b919f245a9fbc7 RX(theta₁₅) 57598f2f801a40ef91096d8845d8e649--d14575a71b664273a0b919f245a9fbc7 1a9a3c64017c4478a33783ccde53bd49 HamEvo d14575a71b664273a0b919f245a9fbc7--1a9a3c64017c4478a33783ccde53bd49 a750929da9164279b1dd9e872bed01f3 1a9a3c64017c4478a33783ccde53bd49--a750929da9164279b1dd9e872bed01f3 95e57a15ae3f4585ac7e61b402c2e1ab 46a7e2274bb2410bae813dbcbe01d9ab RX(theta₁) 18d0824487e6431f88969d01d315a616--46a7e2274bb2410bae813dbcbe01d9ab ec36c9897aff4acab92292b495c41262 2 f85eed2a51714b0a9931e088d662de8f RY(theta₄) 46a7e2274bb2410bae813dbcbe01d9ab--f85eed2a51714b0a9931e088d662de8f 43559234fa244ddab413a8a49b8f17a2 RX(theta₇) f85eed2a51714b0a9931e088d662de8f--43559234fa244ddab413a8a49b8f17a2 386f5456629b41a48604fb0001a8a346 t = theta_t₀ 43559234fa244ddab413a8a49b8f17a2--386f5456629b41a48604fb0001a8a346 436b6a89f915449c94e10ca50677ef30 RX(theta₁₀) 386f5456629b41a48604fb0001a8a346--436b6a89f915449c94e10ca50677ef30 65e11ba39dbf44d3a9cebffe19cc5412 RY(theta₁₃) 436b6a89f915449c94e10ca50677ef30--65e11ba39dbf44d3a9cebffe19cc5412 86e1baa06aa84d1aa82d21ce3b261a31 RX(theta₁₆) 65e11ba39dbf44d3a9cebffe19cc5412--86e1baa06aa84d1aa82d21ce3b261a31 deb048a204ef4d05abffff16d06d3ede t = theta_t₁ 86e1baa06aa84d1aa82d21ce3b261a31--deb048a204ef4d05abffff16d06d3ede deb048a204ef4d05abffff16d06d3ede--95e57a15ae3f4585ac7e61b402c2e1ab db9706a9e95c4066a622cf514aec3a81 d984b2a50c2642adb480479fc4cebfc9 RX(theta₂) ec36c9897aff4acab92292b495c41262--d984b2a50c2642adb480479fc4cebfc9 70df5e1c56fd45ca86ec7d7dcb187c12 RY(theta₅) d984b2a50c2642adb480479fc4cebfc9--70df5e1c56fd45ca86ec7d7dcb187c12 274053b6345345ca9648cea97f269df1 RX(theta₈) 70df5e1c56fd45ca86ec7d7dcb187c12--274053b6345345ca9648cea97f269df1 f83ce05b57f04bcc86bb915e0a95da79 274053b6345345ca9648cea97f269df1--f83ce05b57f04bcc86bb915e0a95da79 0e14afa69495414ca2a2f6148a7fdfb2 RX(theta₁₁) f83ce05b57f04bcc86bb915e0a95da79--0e14afa69495414ca2a2f6148a7fdfb2 547a9b0de93b4c7fa747bb749aab20a6 RY(theta₁₄) 0e14afa69495414ca2a2f6148a7fdfb2--547a9b0de93b4c7fa747bb749aab20a6 c1e8ce1d5bb841d083eb17455938cf9d RX(theta₁₇) 547a9b0de93b4c7fa747bb749aab20a6--c1e8ce1d5bb841d083eb17455938cf9d e48017f5dd4d4082bf0784f6004d6ef1 c1e8ce1d5bb841d083eb17455938cf9d--e48017f5dd4d4082bf0784f6004d6ef1 e48017f5dd4d4082bf0784f6004d6ef1--db9706a9e95c4066a622cf514aec3a81

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_82b6e1d3b5ea436c8bdfb615c7f8cf7d cluster_92ff2b5ae4a54725917a4508130b63dd ead38694255e47a59a0078aecb3d3124 0 77c7f579a96c4ea3ab473cc3dc720180 RX(theta₀) ead38694255e47a59a0078aecb3d3124--77c7f579a96c4ea3ab473cc3dc720180 c4a54567dddc4e198032658b090ec1f4 1 22651df3746b4e1bb3e97a8d857ae4a3 RY(theta₆) 77c7f579a96c4ea3ab473cc3dc720180--22651df3746b4e1bb3e97a8d857ae4a3 962b4ad91ba64d5783adee5f5ebcc265 RX(theta₁₂) 22651df3746b4e1bb3e97a8d857ae4a3--962b4ad91ba64d5783adee5f5ebcc265 983da2062c954d6bb43d2f983034f366 962b4ad91ba64d5783adee5f5ebcc265--983da2062c954d6bb43d2f983034f366 b000b1c5a9404d9ea5d4421999cffcab RX(theta₁₈) 983da2062c954d6bb43d2f983034f366--b000b1c5a9404d9ea5d4421999cffcab 1e3286eb00854f428f854bd8f193468a RY(theta₂₄) b000b1c5a9404d9ea5d4421999cffcab--1e3286eb00854f428f854bd8f193468a ffca8279ba31440fbd3d4fa0e366367b RX(theta₃₀) 1e3286eb00854f428f854bd8f193468a--ffca8279ba31440fbd3d4fa0e366367b ccd4ee8aea7040cbbc9aa8f51b956aeb ffca8279ba31440fbd3d4fa0e366367b--ccd4ee8aea7040cbbc9aa8f51b956aeb 4008b5f0b3e448a3867f0eddcd22201b ccd4ee8aea7040cbbc9aa8f51b956aeb--4008b5f0b3e448a3867f0eddcd22201b b5234aa8b29b437f8d9c27534eeacc84 79887f1227fd4de6bf8c7ae188f22f0d RX(theta₁) c4a54567dddc4e198032658b090ec1f4--79887f1227fd4de6bf8c7ae188f22f0d dae771bc8f694fcfb1812beae23c00f9 2 2699239912fc474d8efccfbb796ca151 RY(theta₇) 79887f1227fd4de6bf8c7ae188f22f0d--2699239912fc474d8efccfbb796ca151 884c681f1b5a4478ae8c2da8bf852f6b RX(theta₁₃) 2699239912fc474d8efccfbb796ca151--884c681f1b5a4478ae8c2da8bf852f6b 9421439942a04002ad461868c7228e6c 884c681f1b5a4478ae8c2da8bf852f6b--9421439942a04002ad461868c7228e6c 713393891805467e80d93d4174232665 RX(theta₁₉) 9421439942a04002ad461868c7228e6c--713393891805467e80d93d4174232665 c3580369ebd64ae8824d1efc6351e4c9 RY(theta₂₅) 713393891805467e80d93d4174232665--c3580369ebd64ae8824d1efc6351e4c9 52b7dbf6924e4cc484fff3bc4a5c6697 RX(theta₃₁) c3580369ebd64ae8824d1efc6351e4c9--52b7dbf6924e4cc484fff3bc4a5c6697 4f7b410350254170946a4e8c6cb71f0e 52b7dbf6924e4cc484fff3bc4a5c6697--4f7b410350254170946a4e8c6cb71f0e 4f7b410350254170946a4e8c6cb71f0e--b5234aa8b29b437f8d9c27534eeacc84 e32913a29b844a4ba352e9fba3964df6 024167bf29eb4ea1879b1109610301f6 RX(theta₂) dae771bc8f694fcfb1812beae23c00f9--024167bf29eb4ea1879b1109610301f6 284e1ccfd0294082abd2cf743017d9f9 3 5113d45978df441cb40a9f8ff65b826a RY(theta₈) 024167bf29eb4ea1879b1109610301f6--5113d45978df441cb40a9f8ff65b826a e9d8d51883b04b8da8c7b94483f5b4f8 RX(theta₁₄) 5113d45978df441cb40a9f8ff65b826a--e9d8d51883b04b8da8c7b94483f5b4f8 3916187f93e1422cbe1f7c54d9d38645 HamEvo e9d8d51883b04b8da8c7b94483f5b4f8--3916187f93e1422cbe1f7c54d9d38645 c5611c7e097647888528b5961d2412a7 RX(theta₂₀) 3916187f93e1422cbe1f7c54d9d38645--c5611c7e097647888528b5961d2412a7 ec578b20e1df4c88acb7884b04d4d922 RY(theta₂₆) c5611c7e097647888528b5961d2412a7--ec578b20e1df4c88acb7884b04d4d922 90d2e8c68654489c8b615c8f0f0074ec RX(theta₃₂) ec578b20e1df4c88acb7884b04d4d922--90d2e8c68654489c8b615c8f0f0074ec 1365272cc3c64deb803419a0d7eb9159 HamEvo 90d2e8c68654489c8b615c8f0f0074ec--1365272cc3c64deb803419a0d7eb9159 1365272cc3c64deb803419a0d7eb9159--e32913a29b844a4ba352e9fba3964df6 647bc36b41c5447d968088651cbe17f4 e25143fa424a407cb103dffa909080e8 RX(theta₃) 284e1ccfd0294082abd2cf743017d9f9--e25143fa424a407cb103dffa909080e8 6874dcc1ae304657b5fb217f3ea844d4 4 2d60606cc41b4c38b71f776115b03bf0 RY(theta₉) e25143fa424a407cb103dffa909080e8--2d60606cc41b4c38b71f776115b03bf0 2985db87a55441379c16b64ee0ee22f3 RX(theta₁₅) 2d60606cc41b4c38b71f776115b03bf0--2985db87a55441379c16b64ee0ee22f3 fd3e5bdba7354a80a5319e4493191042 t = theta_t₀ 2985db87a55441379c16b64ee0ee22f3--fd3e5bdba7354a80a5319e4493191042 3c1060249e9148779616a25ba5a87d36 RX(theta₂₁) fd3e5bdba7354a80a5319e4493191042--3c1060249e9148779616a25ba5a87d36 a2c32806c01e461b80748eaaa1858829 RY(theta₂₇) 3c1060249e9148779616a25ba5a87d36--a2c32806c01e461b80748eaaa1858829 d251751d9cbc4484837e3d5382fd2e15 RX(theta₃₃) a2c32806c01e461b80748eaaa1858829--d251751d9cbc4484837e3d5382fd2e15 129a7217dc5742e3afcf0a94126a82ac t = theta_t₁ d251751d9cbc4484837e3d5382fd2e15--129a7217dc5742e3afcf0a94126a82ac 129a7217dc5742e3afcf0a94126a82ac--647bc36b41c5447d968088651cbe17f4 5ec737631b2d416b9514ac2681032802 fc380114dc5842eda9bf58bac71c707c RX(theta₄) 6874dcc1ae304657b5fb217f3ea844d4--fc380114dc5842eda9bf58bac71c707c df81a38eab004fcd842d10e5284fc629 5 3ce7ba1dead24a97a3590ab219cd2365 RY(theta₁₀) fc380114dc5842eda9bf58bac71c707c--3ce7ba1dead24a97a3590ab219cd2365 544eccec60d74b90bdc7858586f837f9 RX(theta₁₆) 3ce7ba1dead24a97a3590ab219cd2365--544eccec60d74b90bdc7858586f837f9 9126ec459ee941cb8afe307a260bd3f4 544eccec60d74b90bdc7858586f837f9--9126ec459ee941cb8afe307a260bd3f4 7fed6467c14347ae962f9dd25330be65 RX(theta₂₂) 9126ec459ee941cb8afe307a260bd3f4--7fed6467c14347ae962f9dd25330be65 ac73cadcc78340e8bb852592ca41ca71 RY(theta₂₈) 7fed6467c14347ae962f9dd25330be65--ac73cadcc78340e8bb852592ca41ca71 3181f2c4a12b49c8a538c8f401da1cb3 RX(theta₃₄) ac73cadcc78340e8bb852592ca41ca71--3181f2c4a12b49c8a538c8f401da1cb3 b896a791bd314d71bd9c12a6944e349d 3181f2c4a12b49c8a538c8f401da1cb3--b896a791bd314d71bd9c12a6944e349d b896a791bd314d71bd9c12a6944e349d--5ec737631b2d416b9514ac2681032802 e1c8bb392e2e4ee58b356f86e545d533 05c8cb6e42b54f7c8cd42428f7d2cec7 RX(theta₅) df81a38eab004fcd842d10e5284fc629--05c8cb6e42b54f7c8cd42428f7d2cec7 e38c1855bae54b9594bfab81997897a0 RY(theta₁₁) 05c8cb6e42b54f7c8cd42428f7d2cec7--e38c1855bae54b9594bfab81997897a0 f8f0dd196b284419857f7c1f298ad3cf RX(theta₁₇) e38c1855bae54b9594bfab81997897a0--f8f0dd196b284419857f7c1f298ad3cf 6c934da60a7d487fa733dcff419e61cb f8f0dd196b284419857f7c1f298ad3cf--6c934da60a7d487fa733dcff419e61cb bd74948669d849ea870ebb1f0e6aeb7d RX(theta₂₃) 6c934da60a7d487fa733dcff419e61cb--bd74948669d849ea870ebb1f0e6aeb7d 5532d4e3a099439bb5bd21061af74054 RY(theta₂₉) bd74948669d849ea870ebb1f0e6aeb7d--5532d4e3a099439bb5bd21061af74054 13132027883c44379cd190a819794295 RX(theta₃₅) 5532d4e3a099439bb5bd21061af74054--13132027883c44379cd190a819794295 b134897ebd73476c81276f25a059bc43 13132027883c44379cd190a819794295--b134897ebd73476c81276f25a059bc43 b134897ebd73476c81276f25a059bc43--e1c8bb392e2e4ee58b356f86e545d533

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_fd2f89e488694bb3a5756eae6f157e98 BPMA-1 cluster_32990743eee84c06bca237d22a0f4cb7 BPMA-0 d37e3314578f4ee7af4e071d6193af50 0 995e2c48f3d84e449471fe9b6d141f50 RX(iia_α₀₀) d37e3314578f4ee7af4e071d6193af50--995e2c48f3d84e449471fe9b6d141f50 d2c5592e5c04408e89042bce696eaf8c 1 6056ef3d2fee47c38028109b7c751883 RY(iia_α₀₃) 995e2c48f3d84e449471fe9b6d141f50--6056ef3d2fee47c38028109b7c751883 aed0ee06b1b4481d886c6622f6797944 6056ef3d2fee47c38028109b7c751883--aed0ee06b1b4481d886c6622f6797944 704f6240e221459f8f06dc4b43ddf0dc aed0ee06b1b4481d886c6622f6797944--704f6240e221459f8f06dc4b43ddf0dc 14cb5e152c4b47c990e5871ac2d51d9a RX(iia_γ₀₀) 704f6240e221459f8f06dc4b43ddf0dc--14cb5e152c4b47c990e5871ac2d51d9a 3a11c2c1377e432d812c662431178737 14cb5e152c4b47c990e5871ac2d51d9a--3a11c2c1377e432d812c662431178737 8517c4b1d90e4c7cace3127414aeb2ef 3a11c2c1377e432d812c662431178737--8517c4b1d90e4c7cace3127414aeb2ef 1b853beb4145412699ebbd5ba7debbb4 RY(iia_β₀₃) 8517c4b1d90e4c7cace3127414aeb2ef--1b853beb4145412699ebbd5ba7debbb4 ae404aed9ad74cdbb0a2271b68a583fc RX(iia_β₀₀) 1b853beb4145412699ebbd5ba7debbb4--ae404aed9ad74cdbb0a2271b68a583fc e5743245cc4b41969dedad140e3d1983 RX(iia_α₁₀) ae404aed9ad74cdbb0a2271b68a583fc--e5743245cc4b41969dedad140e3d1983 058d0dd8ce384e898ebb9ece8d7ccb4e RY(iia_α₁₃) e5743245cc4b41969dedad140e3d1983--058d0dd8ce384e898ebb9ece8d7ccb4e bed3dc732946495480c9ea7cb15e03c3 058d0dd8ce384e898ebb9ece8d7ccb4e--bed3dc732946495480c9ea7cb15e03c3 42b5fed6409e4ca2b236829e5142e8a7 bed3dc732946495480c9ea7cb15e03c3--42b5fed6409e4ca2b236829e5142e8a7 3111375853994a4aa8f6b0df8085a38f RX(iia_γ₁₀) 42b5fed6409e4ca2b236829e5142e8a7--3111375853994a4aa8f6b0df8085a38f 1c297560ff4048f99abdaa5cce140355 3111375853994a4aa8f6b0df8085a38f--1c297560ff4048f99abdaa5cce140355 964cc76b180043f8b025ebe27aa50559 1c297560ff4048f99abdaa5cce140355--964cc76b180043f8b025ebe27aa50559 62e650ee36e5440081c3dd5401aadf2c RY(iia_β₁₃) 964cc76b180043f8b025ebe27aa50559--62e650ee36e5440081c3dd5401aadf2c d80b772731784e82ad0467dd26e21741 RX(iia_β₁₀) 62e650ee36e5440081c3dd5401aadf2c--d80b772731784e82ad0467dd26e21741 bc685f1c91b446e3b6c89f515ce3a369 d80b772731784e82ad0467dd26e21741--bc685f1c91b446e3b6c89f515ce3a369 db352fd1b5d04b9a8495ef19ca6fe5a3 9a5c3a5c4e3f4724b990258bad131563 RX(iia_α₀₁) d2c5592e5c04408e89042bce696eaf8c--9a5c3a5c4e3f4724b990258bad131563 027826585b994b86a2a3277dfff85a78 2 02b1e60292dd4b4583f5b5b64fdddd97 RY(iia_α₀₄) 9a5c3a5c4e3f4724b990258bad131563--02b1e60292dd4b4583f5b5b64fdddd97 efa164e932e5420197a2c75f27b1f1d8 X 02b1e60292dd4b4583f5b5b64fdddd97--efa164e932e5420197a2c75f27b1f1d8 efa164e932e5420197a2c75f27b1f1d8--aed0ee06b1b4481d886c6622f6797944 74dc2a3a86c1493195e75c664d9e25e5 efa164e932e5420197a2c75f27b1f1d8--74dc2a3a86c1493195e75c664d9e25e5 44a391d004834e1d9242be3450ef36a3 RX(iia_γ₀₁) 74dc2a3a86c1493195e75c664d9e25e5--44a391d004834e1d9242be3450ef36a3 f280c6fc7f5d4d61b1a728cff923413f 44a391d004834e1d9242be3450ef36a3--f280c6fc7f5d4d61b1a728cff923413f a3b74088e1a9419793039de5efb037d1 X f280c6fc7f5d4d61b1a728cff923413f--a3b74088e1a9419793039de5efb037d1 a3b74088e1a9419793039de5efb037d1--8517c4b1d90e4c7cace3127414aeb2ef dc8433f8694d44649cc3ec8fadaecdcc RY(iia_β₀₄) a3b74088e1a9419793039de5efb037d1--dc8433f8694d44649cc3ec8fadaecdcc f5d7934bf77b4696a8b0b646c2289f69 RX(iia_β₀₁) dc8433f8694d44649cc3ec8fadaecdcc--f5d7934bf77b4696a8b0b646c2289f69 0a34b6945c5b47eb9aee0fcfc8f30d77 RX(iia_α₁₁) f5d7934bf77b4696a8b0b646c2289f69--0a34b6945c5b47eb9aee0fcfc8f30d77 31af0a4f10e448ff9403a202d5ca73c9 RY(iia_α₁₄) 0a34b6945c5b47eb9aee0fcfc8f30d77--31af0a4f10e448ff9403a202d5ca73c9 ad0040a25d4e4d51ad119e7efe3f48b9 X 31af0a4f10e448ff9403a202d5ca73c9--ad0040a25d4e4d51ad119e7efe3f48b9 ad0040a25d4e4d51ad119e7efe3f48b9--bed3dc732946495480c9ea7cb15e03c3 e57770850aa1402da749ba29426f7bd6 ad0040a25d4e4d51ad119e7efe3f48b9--e57770850aa1402da749ba29426f7bd6 b293472496ee42e480371f2165f54dab RX(iia_γ₁₁) e57770850aa1402da749ba29426f7bd6--b293472496ee42e480371f2165f54dab 47375037452746b09a74c76e04e0cf04 b293472496ee42e480371f2165f54dab--47375037452746b09a74c76e04e0cf04 fa015e5f446144188547df9f90559cf7 X 47375037452746b09a74c76e04e0cf04--fa015e5f446144188547df9f90559cf7 fa015e5f446144188547df9f90559cf7--964cc76b180043f8b025ebe27aa50559 c5576c2707e14b61849f472110354c20 RY(iia_β₁₄) fa015e5f446144188547df9f90559cf7--c5576c2707e14b61849f472110354c20 a1f1c2a149a44d91bc65f707f7fb7848 RX(iia_β₁₁) c5576c2707e14b61849f472110354c20--a1f1c2a149a44d91bc65f707f7fb7848 a1f1c2a149a44d91bc65f707f7fb7848--db352fd1b5d04b9a8495ef19ca6fe5a3 9f7a2d5bff2c4aaaa84372ae63827dfe 11e55838c32a4cc4aabba21a671261b7 RX(iia_α₀₂) 027826585b994b86a2a3277dfff85a78--11e55838c32a4cc4aabba21a671261b7 f89d579b5e4942389690ecef0fe0f8d6 RY(iia_α₀₅) 11e55838c32a4cc4aabba21a671261b7--f89d579b5e4942389690ecef0fe0f8d6 7fb0f30d2d084ff887fb4ff4ad4ee716 f89d579b5e4942389690ecef0fe0f8d6--7fb0f30d2d084ff887fb4ff4ad4ee716 cd8aaed07f20446595bb0a7530cb5dae X 7fb0f30d2d084ff887fb4ff4ad4ee716--cd8aaed07f20446595bb0a7530cb5dae cd8aaed07f20446595bb0a7530cb5dae--74dc2a3a86c1493195e75c664d9e25e5 44011d01fdd9425eb288e10000bfc4ff RX(iia_γ₀₂) cd8aaed07f20446595bb0a7530cb5dae--44011d01fdd9425eb288e10000bfc4ff e956920fa31d4410b825384fb0ebad7b X 44011d01fdd9425eb288e10000bfc4ff--e956920fa31d4410b825384fb0ebad7b e956920fa31d4410b825384fb0ebad7b--f280c6fc7f5d4d61b1a728cff923413f 3bdc7271a5f64b3ea94d2c1b4d4b1077 e956920fa31d4410b825384fb0ebad7b--3bdc7271a5f64b3ea94d2c1b4d4b1077 b7611d0b92c44637a362d648643ac32f RY(iia_β₀₅) 3bdc7271a5f64b3ea94d2c1b4d4b1077--b7611d0b92c44637a362d648643ac32f 8d1132c7837f414ca4f743a20f668619 RX(iia_β₀₂) b7611d0b92c44637a362d648643ac32f--8d1132c7837f414ca4f743a20f668619 f2a2d5b3518d4266b24084d57c256608 RX(iia_α₁₂) 8d1132c7837f414ca4f743a20f668619--f2a2d5b3518d4266b24084d57c256608 42f4b952c1f14768affdeaebdfc7c3b9 RY(iia_α₁₅) f2a2d5b3518d4266b24084d57c256608--42f4b952c1f14768affdeaebdfc7c3b9 cab08e1e29404662b4d3558fc8b2ee7b 42f4b952c1f14768affdeaebdfc7c3b9--cab08e1e29404662b4d3558fc8b2ee7b f646ec116696424083d0ab4a55bdbd2e X cab08e1e29404662b4d3558fc8b2ee7b--f646ec116696424083d0ab4a55bdbd2e f646ec116696424083d0ab4a55bdbd2e--e57770850aa1402da749ba29426f7bd6 8a11bf4b36e542c98b0e801ce5665949 RX(iia_γ₁₂) f646ec116696424083d0ab4a55bdbd2e--8a11bf4b36e542c98b0e801ce5665949 3ecd4653c09e44978bdffca1273b662c X 8a11bf4b36e542c98b0e801ce5665949--3ecd4653c09e44978bdffca1273b662c 3ecd4653c09e44978bdffca1273b662c--47375037452746b09a74c76e04e0cf04 02da93f0b0554d36a9d05d8ff0d055e1 3ecd4653c09e44978bdffca1273b662c--02da93f0b0554d36a9d05d8ff0d055e1 e2fe6e9185f04c8d93d925cefbcaf15d RY(iia_β₁₅) 02da93f0b0554d36a9d05d8ff0d055e1--e2fe6e9185f04c8d93d925cefbcaf15d 9e4b8767863e426eb08d367603de7a94 RX(iia_β₁₂) e2fe6e9185f04c8d93d925cefbcaf15d--9e4b8767863e426eb08d367603de7a94 9e4b8767863e426eb08d367603de7a94--9f7a2d5bff2c4aaaa84372ae63827dfe