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_dca5b58bb3df465db61e4c46fa8647b5 Constant Chebyshev FM cluster_592df326d9c64970837f8571f2de6a41 Constant Fourier FM 96887c7727ed4a07a13edc75af8d8200 0 c50847897ee04cd38ccd2ca2222f6ce2 RX(phi) 96887c7727ed4a07a13edc75af8d8200--c50847897ee04cd38ccd2ca2222f6ce2 cf0a73ba96b74b3696c7c53c0bcf2528 1 5802cd5f3a8d4844801e9c76555079e9 RX(acos(phi)) c50847897ee04cd38ccd2ca2222f6ce2--5802cd5f3a8d4844801e9c76555079e9 ea99e3e640f943588b7e404143443054 5802cd5f3a8d4844801e9c76555079e9--ea99e3e640f943588b7e404143443054 c00b3d0f080441b6bdf531e7c5c868ce 6c3f5aadc5f54cb39fdbf9c8717ade04 RX(phi) cf0a73ba96b74b3696c7c53c0bcf2528--6c3f5aadc5f54cb39fdbf9c8717ade04 290cdb79365c4529933c6e514cd1bda4 2 47ddb7405b7648af95497b8e29582a54 RX(acos(phi)) 6c3f5aadc5f54cb39fdbf9c8717ade04--47ddb7405b7648af95497b8e29582a54 47ddb7405b7648af95497b8e29582a54--c00b3d0f080441b6bdf531e7c5c868ce de87b66d98294aac940458a1cc906dcf f9c862127d784ee5ba8afccc19fc1a66 RX(phi) 290cdb79365c4529933c6e514cd1bda4--f9c862127d784ee5ba8afccc19fc1a66 b4d6f3563ed8494598cc53e09c85b6e2 RX(acos(phi)) f9c862127d784ee5ba8afccc19fc1a66--b4d6f3563ed8494598cc53e09c85b6e2 b4d6f3563ed8494598cc53e09c85b6e2--de87b66d98294aac940458a1cc906dcf

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_0eb7fc857647422a8000ea47f7b8c43a Constant <function custom_fn at 0x7f2617de8dc0> FM cluster_08044129d46b42a3bdfd31930c067d30 Constant asin FM 3e77fa516f074bc3871f96c554d9fe08 0 d0f5791ac38941b8a2f910df2c535d02 RX(asin(phi)) 3e77fa516f074bc3871f96c554d9fe08--d0f5791ac38941b8a2f910df2c535d02 d38026d4d27e414cb1f168c7bdcee146 1 800a5080140144dc97e5938c7bb3d07d RX(phi**2 + asin(phi)) d0f5791ac38941b8a2f910df2c535d02--800a5080140144dc97e5938c7bb3d07d b59930487f75426a90d2ed7d31279bd3 800a5080140144dc97e5938c7bb3d07d--b59930487f75426a90d2ed7d31279bd3 0f200360e5ae4c8c9f634945d8f80f4f 97767686926f468381c275d2927464e9 RX(asin(phi)) d38026d4d27e414cb1f168c7bdcee146--97767686926f468381c275d2927464e9 e6ba8fa2a3a440a39d543f5645e1761d 2 bbbbdb7094814655a31d5d42c7eee694 RX(phi**2 + asin(phi)) 97767686926f468381c275d2927464e9--bbbbdb7094814655a31d5d42c7eee694 bbbbdb7094814655a31d5d42c7eee694--0f200360e5ae4c8c9f634945d8f80f4f 713e40f78d2042a8946c1f46f173377a db40c2d461ef48168858afde6740afcd RX(asin(phi)) e6ba8fa2a3a440a39d543f5645e1761d--db40c2d461ef48168858afde6740afcd cb1f799e0dcf48f5ae368053a5df8750 RX(phi**2 + asin(phi)) db40c2d461ef48168858afde6740afcd--cb1f799e0dcf48f5ae368053a5df8750 cb1f799e0dcf48f5ae368053a5df8750--713e40f78d2042a8946c1f46f173377a

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_8c66fbfe3b2d4afabc9d7e7188ae9bf1 Exponential Fourier FM cluster_57fc5561ab4e419cbcd6421d70715a6c Constant Fourier FM cluster_ebc97bf9aa914f45adffdb60eddfa647 Tower Fourier FM 63ab591b4307491c9bdfc51babff1239 0 b22ddce6b7954027be50463b521083f3 RX(phi) 63ab591b4307491c9bdfc51babff1239--b22ddce6b7954027be50463b521083f3 f45e2a2cf023402993fb68a4be9ebb04 1 6132376b75704907b7377d8fe7eb5a37 RX(1.0*phi) b22ddce6b7954027be50463b521083f3--6132376b75704907b7377d8fe7eb5a37 d8922aec38974223ab788e3b0b7bc289 RX(1.0*phi) 6132376b75704907b7377d8fe7eb5a37--d8922aec38974223ab788e3b0b7bc289 5866f9832f3042b7946ae4b85e4eeaa4 d8922aec38974223ab788e3b0b7bc289--5866f9832f3042b7946ae4b85e4eeaa4 1c4bd1a2728d421ba9386462e5f8ecf2 ffab959f4d224ee4bbb58ba80f685322 RX(phi) f45e2a2cf023402993fb68a4be9ebb04--ffab959f4d224ee4bbb58ba80f685322 b1937339c67243179a67306e5066b291 2 ce6e3a5c73c142cfb6ce7bde54ae227f RX(2.0*phi) ffab959f4d224ee4bbb58ba80f685322--ce6e3a5c73c142cfb6ce7bde54ae227f 3019553ed3f74ab6b59bd3c4dc80dbef RX(2.0*phi) ce6e3a5c73c142cfb6ce7bde54ae227f--3019553ed3f74ab6b59bd3c4dc80dbef 3019553ed3f74ab6b59bd3c4dc80dbef--1c4bd1a2728d421ba9386462e5f8ecf2 4043e3236ce84c69bc346e290a4f6e1c 78c34e81621e4e739befa3b3680c64e3 RX(phi) b1937339c67243179a67306e5066b291--78c34e81621e4e739befa3b3680c64e3 a94993851c94431d89308594ae719419 3 310cdc78cb8e43a2bb53c793955248b8 RX(3.0*phi) 78c34e81621e4e739befa3b3680c64e3--310cdc78cb8e43a2bb53c793955248b8 5a76c70d753145a396023d9bec078411 RX(4.0*phi) 310cdc78cb8e43a2bb53c793955248b8--5a76c70d753145a396023d9bec078411 5a76c70d753145a396023d9bec078411--4043e3236ce84c69bc346e290a4f6e1c 91acd563dc6440138ba72fa77a163a87 87b9c6459ab8465c9f580e832533cc3d RX(phi) a94993851c94431d89308594ae719419--87b9c6459ab8465c9f580e832533cc3d 68ec57bce57f46319513154374007459 4 5b19e157d92045f5a227d02fd9b38469 RX(4.0*phi) 87b9c6459ab8465c9f580e832533cc3d--5b19e157d92045f5a227d02fd9b38469 34b40d3af4374696a2d8f0d789bbf3c4 RX(8.0*phi) 5b19e157d92045f5a227d02fd9b38469--34b40d3af4374696a2d8f0d789bbf3c4 34b40d3af4374696a2d8f0d789bbf3c4--91acd563dc6440138ba72fa77a163a87 981b1ae3ebde4a778897f95584037977 c4cd4d1e3add469d84fd9411f514fdd5 RX(phi) 68ec57bce57f46319513154374007459--c4cd4d1e3add469d84fd9411f514fdd5 871e20c0bae0468ca881c9a9a9166d96 RX(5.0*phi) c4cd4d1e3add469d84fd9411f514fdd5--871e20c0bae0468ca881c9a9a9166d96 4ccf766e6ec447d9a337cc47afd738dd RX(16.0*phi) 871e20c0bae0468ca881c9a9a9166d96--4ccf766e6ec447d9a337cc47afd738dd 4ccf766e6ec447d9a337cc47afd738dd--981b1ae3ebde4a778897f95584037977

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 37b619c59cca49129522c898caf59a61 0 ac7503494a45414db9f739d2937f3aee RX(1.0*acos(phi)) 37b619c59cca49129522c898caf59a61--ac7503494a45414db9f739d2937f3aee 96b09484399347a1a89aeb46b9ebe982 1 1514c2d8dda34c66b00905ec8c060c87 ac7503494a45414db9f739d2937f3aee--1514c2d8dda34c66b00905ec8c060c87 9805a8f08ef4414584480266f6ac1d5a a07b95de8f514383b580c4d53fb8b370 RX(1.414*acos(phi)) 96b09484399347a1a89aeb46b9ebe982--a07b95de8f514383b580c4d53fb8b370 c4653215b024431fb25eb7617d209b21 2 a07b95de8f514383b580c4d53fb8b370--9805a8f08ef4414584480266f6ac1d5a 0033fb4f281247489d6b826e2e2daf79 efa71cd97e9c4ec29a21cf672b3964d2 RX(1.732*acos(phi)) c4653215b024431fb25eb7617d209b21--efa71cd97e9c4ec29a21cf672b3964d2 cd135ea0724b42879517b3bd80478695 3 efa71cd97e9c4ec29a21cf672b3964d2--0033fb4f281247489d6b826e2e2daf79 1f215669abcd46aea679decb4bb1a572 b05db4fe409d489f95b0b59d09d066df RX(2.0*acos(phi)) cd135ea0724b42879517b3bd80478695--b05db4fe409d489f95b0b59d09d066df fda105e3896040b297622de194043335 4 b05db4fe409d489f95b0b59d09d066df--1f215669abcd46aea679decb4bb1a572 74e9738e2d024de2879e846a6d747c45 120eeaccf77c414aaf9c64d5327cc96e RX(2.236*acos(phi)) fda105e3896040b297622de194043335--120eeaccf77c414aaf9c64d5327cc96e 120eeaccf77c414aaf9c64d5327cc96e--74e9738e2d024de2879e846a6d747c45

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 9820be5ee77e444e962669053a88f970 0 8298320225b9418097325a156a18e21b RX(1.0*phi*w₀) 9820be5ee77e444e962669053a88f970--8298320225b9418097325a156a18e21b 95e0434e4f7f4230afc1cb6751db7888 1 22c5c5a7073c4a71919612781e92556a 8298320225b9418097325a156a18e21b--22c5c5a7073c4a71919612781e92556a 2c89a432032a4554a22bb05cd632ca3e 56713caa8ed141478784f4c475e8ed61 RX(2.0*phi*w₁) 95e0434e4f7f4230afc1cb6751db7888--56713caa8ed141478784f4c475e8ed61 2921923bd7a041239c693255830c3697 2 56713caa8ed141478784f4c475e8ed61--2c89a432032a4554a22bb05cd632ca3e 8affb535a8034554936f95294177b1ad 7acbf092388c4b8e90881b58cc3dc8f3 RX(4.0*phi*w₂) 2921923bd7a041239c693255830c3697--7acbf092388c4b8e90881b58cc3dc8f3 f5c1a527d42042e99d9777eace5ecce4 3 7acbf092388c4b8e90881b58cc3dc8f3--8affb535a8034554936f95294177b1ad 428eb3a410c44a74874f44b6a3bc4e98 e77ae0b9ffb34a25b0cba2df66d57d74 RX(8.0*phi*w₃) f5c1a527d42042e99d9777eace5ecce4--e77ae0b9ffb34a25b0cba2df66d57d74 c6bf722859154bee8da655fb2b7f23af 4 e77ae0b9ffb34a25b0cba2df66d57d74--428eb3a410c44a74874f44b6a3bc4e98 6c1a92896dd1449c897410986fe23ecf abd540cca423468ca67c2ae2a7294170 RX(16.0*phi*w₄) c6bf722859154bee8da655fb2b7f23af--abd540cca423468ca67c2ae2a7294170 abd540cca423468ca67c2ae2a7294170--6c1a92896dd1449c897410986fe23ecf

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 2a914c09a0dd47908e9239c8dcbe94b8 0 635685a3950945cb903f3607611f4cbe RY(80.0*acos(w₄*(0.667*x + 1.667))) 2a914c09a0dd47908e9239c8dcbe94b8--635685a3950945cb903f3607611f4cbe a8799c7f27d54a9e88904aa963ca3e62 1 345e25b67c9345fb81dc0ba7aeaba145 635685a3950945cb903f3607611f4cbe--345e25b67c9345fb81dc0ba7aeaba145 6782473e9f7648d9b4a3b02dd652a74d 0ba79073699248558315b95aa27a0a4d RY(40.0*acos(w₃*(0.667*x + 1.667))) a8799c7f27d54a9e88904aa963ca3e62--0ba79073699248558315b95aa27a0a4d 19eba813a8b3480da012c3060b0632ec 2 0ba79073699248558315b95aa27a0a4d--6782473e9f7648d9b4a3b02dd652a74d bb72998d959d4ed4aea78c114742e601 b46f558aa9984366855bef71aaad8962 RY(20.0*acos(w₂*(0.667*x + 1.667))) 19eba813a8b3480da012c3060b0632ec--b46f558aa9984366855bef71aaad8962 c0805c6fae2a4d3cac0a9236ae0c90f3 3 b46f558aa9984366855bef71aaad8962--bb72998d959d4ed4aea78c114742e601 681783168e1042588eab902f95a3420a 2af2e8973cc34ec597731eee71af037a RY(10.0*acos(w₁*(0.667*x + 1.667))) c0805c6fae2a4d3cac0a9236ae0c90f3--2af2e8973cc34ec597731eee71af037a 5ff6d93a1b404c9fbf83c5a981778aa9 4 2af2e8973cc34ec597731eee71af037a--681783168e1042588eab902f95a3420a 77a0bde1cccd4591ab13f99afe31f0b2 5209629876bc4b419c704a9581fcaef2 RY(5.0*acos(w₀*(0.667*x + 1.667))) 5ff6d93a1b404c9fbf83c5a981778aa9--5209629876bc4b419c704a9581fcaef2 5209629876bc4b419c704a9581fcaef2--77a0bde1cccd4591ab13f99afe31f0b2

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 dd09c24e2b1f406fba5d53a5e5a906ae 0 43f7a8be234e4addaf01274e2ad66e0e RX(theta₀) dd09c24e2b1f406fba5d53a5e5a906ae--43f7a8be234e4addaf01274e2ad66e0e a36a8043ec874ace801e97cdf1a620a4 1 ab3473b5dd1c470bac33aaed9916410e RY(theta₃) 43f7a8be234e4addaf01274e2ad66e0e--ab3473b5dd1c470bac33aaed9916410e 38a7df11339743c18db85899238302b3 RX(theta₆) ab3473b5dd1c470bac33aaed9916410e--38a7df11339743c18db85899238302b3 a15f0b5931894fafac3312e57e851b13 38a7df11339743c18db85899238302b3--a15f0b5931894fafac3312e57e851b13 25820946caca40ddaa597c2476c9f7db a15f0b5931894fafac3312e57e851b13--25820946caca40ddaa597c2476c9f7db d5918b539c944b8bb8e6593bb9287e00 RX(theta₉) 25820946caca40ddaa597c2476c9f7db--d5918b539c944b8bb8e6593bb9287e00 ac8f6a94cd9e44cba8987b457ed25bfb RY(theta₁₂) d5918b539c944b8bb8e6593bb9287e00--ac8f6a94cd9e44cba8987b457ed25bfb b3f6cf6c71e5469fbe864b4db3e1ba16 RX(theta₁₅) ac8f6a94cd9e44cba8987b457ed25bfb--b3f6cf6c71e5469fbe864b4db3e1ba16 7ea249178dcd4554876baede3878eb77 b3f6cf6c71e5469fbe864b4db3e1ba16--7ea249178dcd4554876baede3878eb77 72b3a57fd4174421ad857091990c38cb 7ea249178dcd4554876baede3878eb77--72b3a57fd4174421ad857091990c38cb ba8c076803a94750b131d67eeacba0f8 72b3a57fd4174421ad857091990c38cb--ba8c076803a94750b131d67eeacba0f8 317a4d14eb994e629c3dbcd98c1d4e98 9ee416c78a844c748ee09406c3b01911 RX(theta₁) a36a8043ec874ace801e97cdf1a620a4--9ee416c78a844c748ee09406c3b01911 b82d17c0d9fc4a3eafb8aa9e21865b23 2 9665b46000884e4ba63fef7d43d30df4 RY(theta₄) 9ee416c78a844c748ee09406c3b01911--9665b46000884e4ba63fef7d43d30df4 c85e72edeb44414d8364f6ed7f116d40 RX(theta₇) 9665b46000884e4ba63fef7d43d30df4--c85e72edeb44414d8364f6ed7f116d40 1ee1332399254d8b8615b28777bf2ff2 X c85e72edeb44414d8364f6ed7f116d40--1ee1332399254d8b8615b28777bf2ff2 1ee1332399254d8b8615b28777bf2ff2--a15f0b5931894fafac3312e57e851b13 709559763b2349a5b56f0c6501fda282 1ee1332399254d8b8615b28777bf2ff2--709559763b2349a5b56f0c6501fda282 c55e5c57a0fd46dd8f2dfac407aedb5a RX(theta₁₀) 709559763b2349a5b56f0c6501fda282--c55e5c57a0fd46dd8f2dfac407aedb5a 7c6b1a1f7d554562bdf57d483f24a2ba RY(theta₁₃) c55e5c57a0fd46dd8f2dfac407aedb5a--7c6b1a1f7d554562bdf57d483f24a2ba 7cb559ba12b44a11a38f82485299f131 RX(theta₁₆) 7c6b1a1f7d554562bdf57d483f24a2ba--7cb559ba12b44a11a38f82485299f131 b65aebe143744a738dcb1e446d3933cd X 7cb559ba12b44a11a38f82485299f131--b65aebe143744a738dcb1e446d3933cd b65aebe143744a738dcb1e446d3933cd--7ea249178dcd4554876baede3878eb77 536ea13fabd04a769c02f2b4d861b560 b65aebe143744a738dcb1e446d3933cd--536ea13fabd04a769c02f2b4d861b560 536ea13fabd04a769c02f2b4d861b560--317a4d14eb994e629c3dbcd98c1d4e98 f60950ac2c7944f8ae926ca81cf4ccfa 4abf197c93c04b3ba719d50bafcdcc55 RX(theta₂) b82d17c0d9fc4a3eafb8aa9e21865b23--4abf197c93c04b3ba719d50bafcdcc55 2bf77507b94a43a5a3e5f3ca3b459185 RY(theta₅) 4abf197c93c04b3ba719d50bafcdcc55--2bf77507b94a43a5a3e5f3ca3b459185 7639df9bbe484c89ac0642e6833abecb RX(theta₈) 2bf77507b94a43a5a3e5f3ca3b459185--7639df9bbe484c89ac0642e6833abecb 870ceb4e6f454ed5b18a223cd772583e 7639df9bbe484c89ac0642e6833abecb--870ceb4e6f454ed5b18a223cd772583e 1de39bea1eb74774b8466ffdd4d35d61 X 870ceb4e6f454ed5b18a223cd772583e--1de39bea1eb74774b8466ffdd4d35d61 1de39bea1eb74774b8466ffdd4d35d61--709559763b2349a5b56f0c6501fda282 cf6a14dfdc1043d9833005432253b8d9 RX(theta₁₁) 1de39bea1eb74774b8466ffdd4d35d61--cf6a14dfdc1043d9833005432253b8d9 2c1fe65e60ac456397997a0cc8398b50 RY(theta₁₄) cf6a14dfdc1043d9833005432253b8d9--2c1fe65e60ac456397997a0cc8398b50 3d418b2a82f24ab0a0400902ab5cdcc2 RX(theta₁₇) 2c1fe65e60ac456397997a0cc8398b50--3d418b2a82f24ab0a0400902ab5cdcc2 4e964afbb8da433381960cd261a13db3 3d418b2a82f24ab0a0400902ab5cdcc2--4e964afbb8da433381960cd261a13db3 9807555cc0894e789300025cba7da5f5 X 4e964afbb8da433381960cd261a13db3--9807555cc0894e789300025cba7da5f5 9807555cc0894e789300025cba7da5f5--536ea13fabd04a769c02f2b4d861b560 9807555cc0894e789300025cba7da5f5--f60950ac2c7944f8ae926ca81cf4ccfa

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 59915ffa92be4095811bba986a02d8b7 0 2b353df2bb3d4c69b4b931f157470b80 RX(phi₀) 59915ffa92be4095811bba986a02d8b7--2b353df2bb3d4c69b4b931f157470b80 d80af9e1840f41d48bca5542eac3ca20 1 b6e6d2621e4444c8bb9bd5a2a7c8ab14 RY(phi₃) 2b353df2bb3d4c69b4b931f157470b80--b6e6d2621e4444c8bb9bd5a2a7c8ab14 cb1aff23909046e7af80d68a31f2977b RX(phi₆) b6e6d2621e4444c8bb9bd5a2a7c8ab14--cb1aff23909046e7af80d68a31f2977b 8e1d373053ef409da59f90eb968a03d6 cb1aff23909046e7af80d68a31f2977b--8e1d373053ef409da59f90eb968a03d6 536d71030de44a7fa8c5de3033e4e8ed 8e1d373053ef409da59f90eb968a03d6--536d71030de44a7fa8c5de3033e4e8ed 293d6a6c288b40ad9d155ad0c63c91b7 RX(phi₉) 536d71030de44a7fa8c5de3033e4e8ed--293d6a6c288b40ad9d155ad0c63c91b7 06701aa33eff4a8aaa133acdeb62f8dd RY(phi₁₂) 293d6a6c288b40ad9d155ad0c63c91b7--06701aa33eff4a8aaa133acdeb62f8dd 371ec54885064d1aa841112f7b0f6571 RX(phi₁₅) 06701aa33eff4a8aaa133acdeb62f8dd--371ec54885064d1aa841112f7b0f6571 e9ade689989b4d9fb322543be348eb97 371ec54885064d1aa841112f7b0f6571--e9ade689989b4d9fb322543be348eb97 5e1059c6836a479bbc24c540eb816292 e9ade689989b4d9fb322543be348eb97--5e1059c6836a479bbc24c540eb816292 2d7bc3d1835a49a2a4f7e084b1eb8896 5e1059c6836a479bbc24c540eb816292--2d7bc3d1835a49a2a4f7e084b1eb8896 155c239e538744fd85e61c5aeed33089 deaabd2da5cb47edb39026ac89f09e07 RX(phi₁) d80af9e1840f41d48bca5542eac3ca20--deaabd2da5cb47edb39026ac89f09e07 33e6b6c8f6bb44e5a8ca13a6bb9bb121 2 59b9d99e4c3e4e4c9a255ca4ee3f024e RY(phi₄) deaabd2da5cb47edb39026ac89f09e07--59b9d99e4c3e4e4c9a255ca4ee3f024e efda0f0a8939450bbc89b866480e84d7 RX(phi₇) 59b9d99e4c3e4e4c9a255ca4ee3f024e--efda0f0a8939450bbc89b866480e84d7 a55689fc094b44e0956460e403e4e776 PHASE(phi_ent₀) efda0f0a8939450bbc89b866480e84d7--a55689fc094b44e0956460e403e4e776 a55689fc094b44e0956460e403e4e776--8e1d373053ef409da59f90eb968a03d6 4314b6f8afab41c9839b72ff7d7679ec a55689fc094b44e0956460e403e4e776--4314b6f8afab41c9839b72ff7d7679ec 02db444156d7455aa167775fd7981f7a RX(phi₁₀) 4314b6f8afab41c9839b72ff7d7679ec--02db444156d7455aa167775fd7981f7a 4b9f3294fed94b7aa4442e84dca0a5ba RY(phi₁₃) 02db444156d7455aa167775fd7981f7a--4b9f3294fed94b7aa4442e84dca0a5ba 0e73d0632fe14910b7b90e3f54795e2c RX(phi₁₆) 4b9f3294fed94b7aa4442e84dca0a5ba--0e73d0632fe14910b7b90e3f54795e2c ae40014323fe4d8d81ffeeddd3069561 PHASE(phi_ent₂) 0e73d0632fe14910b7b90e3f54795e2c--ae40014323fe4d8d81ffeeddd3069561 ae40014323fe4d8d81ffeeddd3069561--e9ade689989b4d9fb322543be348eb97 e40b73f27127499b9dcfdc360c513ed1 ae40014323fe4d8d81ffeeddd3069561--e40b73f27127499b9dcfdc360c513ed1 e40b73f27127499b9dcfdc360c513ed1--155c239e538744fd85e61c5aeed33089 e2474abdc0a342598372c9c289b7ac78 41e9de1356004d6a9addb13dfaf39932 RX(phi₂) 33e6b6c8f6bb44e5a8ca13a6bb9bb121--41e9de1356004d6a9addb13dfaf39932 36bbfd7ed8784bc3ad0f260acc149a0f RY(phi₅) 41e9de1356004d6a9addb13dfaf39932--36bbfd7ed8784bc3ad0f260acc149a0f 6856f5c1f47c4f8890883b093b559b83 RX(phi₈) 36bbfd7ed8784bc3ad0f260acc149a0f--6856f5c1f47c4f8890883b093b559b83 84ae9cf1cf4a427db516a72cf77f288d 6856f5c1f47c4f8890883b093b559b83--84ae9cf1cf4a427db516a72cf77f288d 4e400a6504d24d0fa9f60b858e1c09ed PHASE(phi_ent₁) 84ae9cf1cf4a427db516a72cf77f288d--4e400a6504d24d0fa9f60b858e1c09ed 4e400a6504d24d0fa9f60b858e1c09ed--4314b6f8afab41c9839b72ff7d7679ec 8c8c92f29dac405b8484411864ba00e1 RX(phi₁₁) 4e400a6504d24d0fa9f60b858e1c09ed--8c8c92f29dac405b8484411864ba00e1 9195e2494eba4dbf896ba07ed57e1a93 RY(phi₁₄) 8c8c92f29dac405b8484411864ba00e1--9195e2494eba4dbf896ba07ed57e1a93 970b208f18a847b88ffee3764f44e896 RX(phi₁₇) 9195e2494eba4dbf896ba07ed57e1a93--970b208f18a847b88ffee3764f44e896 f28d2032c03e4394822877c3a83b1af1 970b208f18a847b88ffee3764f44e896--f28d2032c03e4394822877c3a83b1af1 0167c1c17a914f9e89f14709a326d8c1 PHASE(phi_ent₃) f28d2032c03e4394822877c3a83b1af1--0167c1c17a914f9e89f14709a326d8c1 0167c1c17a914f9e89f14709a326d8c1--e40b73f27127499b9dcfdc360c513ed1 0167c1c17a914f9e89f14709a326d8c1--e2474abdc0a342598372c9c289b7ac78

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_40a5742380ae48e1816084f387c7ea31 cluster_b6cbe99da8d649d59bac16e76814f8c1 d149636fc6c14239a56e3e8c833d2d87 0 68574b657cfc479ea1c8737607477b8e RX(theta₀) d149636fc6c14239a56e3e8c833d2d87--68574b657cfc479ea1c8737607477b8e 3b459536383d46e4a9d7de4003427949 1 502635ac8c8b41aea9cf861fd2561b10 RY(theta₃) 68574b657cfc479ea1c8737607477b8e--502635ac8c8b41aea9cf861fd2561b10 6ad95edb11844d30acf65325cb07bff9 RX(theta₆) 502635ac8c8b41aea9cf861fd2561b10--6ad95edb11844d30acf65325cb07bff9 a48b6c3c0be5479485ebc468eeef6780 HamEvo 6ad95edb11844d30acf65325cb07bff9--a48b6c3c0be5479485ebc468eeef6780 4362243ebe2b40559858ac35b93d6127 RX(theta₉) a48b6c3c0be5479485ebc468eeef6780--4362243ebe2b40559858ac35b93d6127 f56bd2d1e2ee488394d69efbcf030a6e RY(theta₁₂) 4362243ebe2b40559858ac35b93d6127--f56bd2d1e2ee488394d69efbcf030a6e 1d5eba09536f4e14b388ddb00c5f5426 RX(theta₁₅) f56bd2d1e2ee488394d69efbcf030a6e--1d5eba09536f4e14b388ddb00c5f5426 9c30c1f8682c49b4967a77fbdee63165 HamEvo 1d5eba09536f4e14b388ddb00c5f5426--9c30c1f8682c49b4967a77fbdee63165 577cd818fdf54451817e8efd427e555d 9c30c1f8682c49b4967a77fbdee63165--577cd818fdf54451817e8efd427e555d d692701b1aee497498adae698fd188e3 43ba9f1cafe64fd5a2570f274cfb0b59 RX(theta₁) 3b459536383d46e4a9d7de4003427949--43ba9f1cafe64fd5a2570f274cfb0b59 92ea584b17e5424593fb7d571ebd93f7 2 dbdff9c375924a258c3efc90f7d7595c RY(theta₄) 43ba9f1cafe64fd5a2570f274cfb0b59--dbdff9c375924a258c3efc90f7d7595c b5dcaa0948ef453ea0e923bafcad9e3d RX(theta₇) dbdff9c375924a258c3efc90f7d7595c--b5dcaa0948ef453ea0e923bafcad9e3d 7bbac905e86c467ab224d5e36584e7e5 t = theta_t₀ b5dcaa0948ef453ea0e923bafcad9e3d--7bbac905e86c467ab224d5e36584e7e5 8fb384062d964754962904d64d278a89 RX(theta₁₀) 7bbac905e86c467ab224d5e36584e7e5--8fb384062d964754962904d64d278a89 e8ceb0771b024ab6a244027b0018a276 RY(theta₁₃) 8fb384062d964754962904d64d278a89--e8ceb0771b024ab6a244027b0018a276 f890db19a3894cc8a1949268ebbc6763 RX(theta₁₆) e8ceb0771b024ab6a244027b0018a276--f890db19a3894cc8a1949268ebbc6763 03b2607c73354c1eab59392af4e37094 t = theta_t₁ f890db19a3894cc8a1949268ebbc6763--03b2607c73354c1eab59392af4e37094 03b2607c73354c1eab59392af4e37094--d692701b1aee497498adae698fd188e3 9992812382ff4bd492f848673533a1dd 77db20e0686c4bca90346c410a9dd11f RX(theta₂) 92ea584b17e5424593fb7d571ebd93f7--77db20e0686c4bca90346c410a9dd11f 6632401997324767918a7885468daa2a RY(theta₅) 77db20e0686c4bca90346c410a9dd11f--6632401997324767918a7885468daa2a a06e9647deda4be19bf5535611103d5e RX(theta₈) 6632401997324767918a7885468daa2a--a06e9647deda4be19bf5535611103d5e 0c1fc4f143a842deba729f99a3fb8e7d a06e9647deda4be19bf5535611103d5e--0c1fc4f143a842deba729f99a3fb8e7d eeb2c8e6c15741b49a1dd4bba63378fb RX(theta₁₁) 0c1fc4f143a842deba729f99a3fb8e7d--eeb2c8e6c15741b49a1dd4bba63378fb 0cf1facb54994cc185e638c95f39b0bc RY(theta₁₄) eeb2c8e6c15741b49a1dd4bba63378fb--0cf1facb54994cc185e638c95f39b0bc 578792fdc65c4bfc9840e7cc49d03056 RX(theta₁₇) 0cf1facb54994cc185e638c95f39b0bc--578792fdc65c4bfc9840e7cc49d03056 453d270b0d304ff68f3a70076239016f 578792fdc65c4bfc9840e7cc49d03056--453d270b0d304ff68f3a70076239016f 453d270b0d304ff68f3a70076239016f--9992812382ff4bd492f848673533a1dd

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_80bb0a5e25674ddb864b8d9854a4d6a2 cluster_8c819179782346058128e234374544ba 2e9367dbe2694f83961751f50936740e 0 d6f2615c3c8140debd37b8655dd96ab3 RX(theta₀) 2e9367dbe2694f83961751f50936740e--d6f2615c3c8140debd37b8655dd96ab3 7241b8fbc98d4f7d8d40dc60bbe252d3 1 937aa46b665d4d59b960cfbe328fffdb RY(theta₆) d6f2615c3c8140debd37b8655dd96ab3--937aa46b665d4d59b960cfbe328fffdb 2e859c92e8f8489fbb850ebe6bf6be11 RX(theta₁₂) 937aa46b665d4d59b960cfbe328fffdb--2e859c92e8f8489fbb850ebe6bf6be11 180762dd3b3e448dafd3ae59bbc75316 2e859c92e8f8489fbb850ebe6bf6be11--180762dd3b3e448dafd3ae59bbc75316 5b032b9f3e7f482097c7e3e43e3be4ef RX(theta₁₈) 180762dd3b3e448dafd3ae59bbc75316--5b032b9f3e7f482097c7e3e43e3be4ef 7912c5c0f2cd477a8dc6e9d6f18bb5d9 RY(theta₂₄) 5b032b9f3e7f482097c7e3e43e3be4ef--7912c5c0f2cd477a8dc6e9d6f18bb5d9 9716daaeafe749a6958cb84fd8d3ffa7 RX(theta₃₀) 7912c5c0f2cd477a8dc6e9d6f18bb5d9--9716daaeafe749a6958cb84fd8d3ffa7 3b0c3c4260354741a90dcba4d744e4e0 9716daaeafe749a6958cb84fd8d3ffa7--3b0c3c4260354741a90dcba4d744e4e0 ee9c5ba11ff240579c2f1dc6fe0c60c1 3b0c3c4260354741a90dcba4d744e4e0--ee9c5ba11ff240579c2f1dc6fe0c60c1 5198f73390cd4c0a8c162b9eb41b35da dda9a920562e40199a9a7ba69a90eb8e RX(theta₁) 7241b8fbc98d4f7d8d40dc60bbe252d3--dda9a920562e40199a9a7ba69a90eb8e 95446ae2110a43db875690c403836575 2 17bc90c744d74563a59feb16e36cf7f4 RY(theta₇) dda9a920562e40199a9a7ba69a90eb8e--17bc90c744d74563a59feb16e36cf7f4 f1a82f82a19048709fc36654fa259884 RX(theta₁₃) 17bc90c744d74563a59feb16e36cf7f4--f1a82f82a19048709fc36654fa259884 9375974f5f1142399f56ddc402d04281 f1a82f82a19048709fc36654fa259884--9375974f5f1142399f56ddc402d04281 8026fd18aad14b07a28ea09202fa8514 RX(theta₁₉) 9375974f5f1142399f56ddc402d04281--8026fd18aad14b07a28ea09202fa8514 6988a72ae056456ca6eb33b4d8620a70 RY(theta₂₅) 8026fd18aad14b07a28ea09202fa8514--6988a72ae056456ca6eb33b4d8620a70 7f150da2d922450d88a3c2529384d651 RX(theta₃₁) 6988a72ae056456ca6eb33b4d8620a70--7f150da2d922450d88a3c2529384d651 79610a3ad9be409481fef4ad581978db 7f150da2d922450d88a3c2529384d651--79610a3ad9be409481fef4ad581978db 79610a3ad9be409481fef4ad581978db--5198f73390cd4c0a8c162b9eb41b35da c8ed03ef7fe94a78ad589bd0da4678df f9385879b56b4de292333e4aeeb46f3d RX(theta₂) 95446ae2110a43db875690c403836575--f9385879b56b4de292333e4aeeb46f3d b568b83e670442b5b2337be78efc4d65 3 fbfc762fe8ec47ccab862627c437f05d RY(theta₈) f9385879b56b4de292333e4aeeb46f3d--fbfc762fe8ec47ccab862627c437f05d 02cbb6cd90514a95897916169f274e72 RX(theta₁₄) fbfc762fe8ec47ccab862627c437f05d--02cbb6cd90514a95897916169f274e72 c9c831f7839f4e5eafc5dbbe3b4e7d0a HamEvo 02cbb6cd90514a95897916169f274e72--c9c831f7839f4e5eafc5dbbe3b4e7d0a 98ec6c51d5a247b0a3f328958e5c1005 RX(theta₂₀) c9c831f7839f4e5eafc5dbbe3b4e7d0a--98ec6c51d5a247b0a3f328958e5c1005 ea9a75568ed643409e19019d7a1453ea RY(theta₂₆) 98ec6c51d5a247b0a3f328958e5c1005--ea9a75568ed643409e19019d7a1453ea 00e2b23e1eba449681b1681579415997 RX(theta₃₂) ea9a75568ed643409e19019d7a1453ea--00e2b23e1eba449681b1681579415997 3fa659126feb42e9abc4c7938c324532 HamEvo 00e2b23e1eba449681b1681579415997--3fa659126feb42e9abc4c7938c324532 3fa659126feb42e9abc4c7938c324532--c8ed03ef7fe94a78ad589bd0da4678df c40ac9f7423346458547a6911be68a41 6693c69f366b4ecdbea1e250239c264d RX(theta₃) b568b83e670442b5b2337be78efc4d65--6693c69f366b4ecdbea1e250239c264d c670d64c486a48c689e0113ee4a7db7e 4 e08198a03ae34b72b5ba710c15accfad RY(theta₉) 6693c69f366b4ecdbea1e250239c264d--e08198a03ae34b72b5ba710c15accfad 044907e7c057496a9c0bd0208c606638 RX(theta₁₅) e08198a03ae34b72b5ba710c15accfad--044907e7c057496a9c0bd0208c606638 7cedb30f7b4541769e3916d53bab2965 t = theta_t₀ 044907e7c057496a9c0bd0208c606638--7cedb30f7b4541769e3916d53bab2965 f767f032647249a5a9ad2e3d4774e7da RX(theta₂₁) 7cedb30f7b4541769e3916d53bab2965--f767f032647249a5a9ad2e3d4774e7da adc8dc543f7c4dbea95e64de626a886d RY(theta₂₇) f767f032647249a5a9ad2e3d4774e7da--adc8dc543f7c4dbea95e64de626a886d e4f23ca152634d888133441cbc1f28c3 RX(theta₃₃) adc8dc543f7c4dbea95e64de626a886d--e4f23ca152634d888133441cbc1f28c3 3983dfcb1fa644958d02faa8bbc8a48c t = theta_t₁ e4f23ca152634d888133441cbc1f28c3--3983dfcb1fa644958d02faa8bbc8a48c 3983dfcb1fa644958d02faa8bbc8a48c--c40ac9f7423346458547a6911be68a41 a4afc3f094844eea93f54469f86f4d5b 84f2d5933a8d4af99ec2abde831f3ea8 RX(theta₄) c670d64c486a48c689e0113ee4a7db7e--84f2d5933a8d4af99ec2abde831f3ea8 af3251db0f3d4d958ca4390bce0d9a1e 5 5d097bd27374441caa5fa32d95e159f5 RY(theta₁₀) 84f2d5933a8d4af99ec2abde831f3ea8--5d097bd27374441caa5fa32d95e159f5 20b50416a7e6492dba956d65ea5b9e32 RX(theta₁₆) 5d097bd27374441caa5fa32d95e159f5--20b50416a7e6492dba956d65ea5b9e32 089c3855f35440188a462416d0fb35a2 20b50416a7e6492dba956d65ea5b9e32--089c3855f35440188a462416d0fb35a2 4a1a95a478c44132bdfa9e85203fbee7 RX(theta₂₂) 089c3855f35440188a462416d0fb35a2--4a1a95a478c44132bdfa9e85203fbee7 9b4406c5cc714de68ad606c7d7fb349e RY(theta₂₈) 4a1a95a478c44132bdfa9e85203fbee7--9b4406c5cc714de68ad606c7d7fb349e d4d84d058c9c4d9288fcb7d8c2a77815 RX(theta₃₄) 9b4406c5cc714de68ad606c7d7fb349e--d4d84d058c9c4d9288fcb7d8c2a77815 158ab92945244f72bed7c58b8bb883ea d4d84d058c9c4d9288fcb7d8c2a77815--158ab92945244f72bed7c58b8bb883ea 158ab92945244f72bed7c58b8bb883ea--a4afc3f094844eea93f54469f86f4d5b 1b2f2bf6582544f2a1ba31c04dea098c 781dca1a42484f7aae108703eb023942 RX(theta₅) af3251db0f3d4d958ca4390bce0d9a1e--781dca1a42484f7aae108703eb023942 60dada34ae554c37a3463c5e4c0cf34f RY(theta₁₁) 781dca1a42484f7aae108703eb023942--60dada34ae554c37a3463c5e4c0cf34f ac55baeb04ea4d4cb671c2cdb898c8bd RX(theta₁₇) 60dada34ae554c37a3463c5e4c0cf34f--ac55baeb04ea4d4cb671c2cdb898c8bd 504c50e5f49f4a7eb429037acd3babcb ac55baeb04ea4d4cb671c2cdb898c8bd--504c50e5f49f4a7eb429037acd3babcb e0a7d7b5bdf14997a39cbf197328a54e RX(theta₂₃) 504c50e5f49f4a7eb429037acd3babcb--e0a7d7b5bdf14997a39cbf197328a54e 8253010128f64d3999b3d7c60eb902d8 RY(theta₂₉) e0a7d7b5bdf14997a39cbf197328a54e--8253010128f64d3999b3d7c60eb902d8 a3a5701466414d738aab93a0ad26be50 RX(theta₃₅) 8253010128f64d3999b3d7c60eb902d8--a3a5701466414d738aab93a0ad26be50 b8bc22249c06416db653be7fc8b46d6f a3a5701466414d738aab93a0ad26be50--b8bc22249c06416db653be7fc8b46d6f b8bc22249c06416db653be7fc8b46d6f--1b2f2bf6582544f2a1ba31c04dea098c

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_053685ff310d4156ab755b34f677e3c1 BPMA-1 cluster_e70cf59e91da4e11ab259f33770208cf BPMA-0 10f84d1bb1114b6cab45f082a2159f16 0 a3f2627f4b934755a7a3e0206173a083 RX(iia_α₀₀) 10f84d1bb1114b6cab45f082a2159f16--a3f2627f4b934755a7a3e0206173a083 b9003eefd81e4ac0a5c1198a6611c72e 1 4e9706100c15498a907c8c3cd1d70124 RY(iia_α₀₃) a3f2627f4b934755a7a3e0206173a083--4e9706100c15498a907c8c3cd1d70124 1a12dbe0d1334052962d91c1598b980b 4e9706100c15498a907c8c3cd1d70124--1a12dbe0d1334052962d91c1598b980b 8631ca6e976940d390c539ab896b0697 1a12dbe0d1334052962d91c1598b980b--8631ca6e976940d390c539ab896b0697 d96a413dab024efaafacb121c99e880c RX(iia_γ₀₀) 8631ca6e976940d390c539ab896b0697--d96a413dab024efaafacb121c99e880c 1dc23855fc7240b3a2bb1510d99b15f7 d96a413dab024efaafacb121c99e880c--1dc23855fc7240b3a2bb1510d99b15f7 eb9eb982f7ca469bad3b96f489e8194d 1dc23855fc7240b3a2bb1510d99b15f7--eb9eb982f7ca469bad3b96f489e8194d be4d90da5b3c486e99f70bd10176a178 RY(iia_β₀₃) eb9eb982f7ca469bad3b96f489e8194d--be4d90da5b3c486e99f70bd10176a178 aafc26eeca0644b0a27d34182e7395ad RX(iia_β₀₀) be4d90da5b3c486e99f70bd10176a178--aafc26eeca0644b0a27d34182e7395ad 15d2180fe30545f882e61e2aae1b7bf2 RX(iia_α₁₀) aafc26eeca0644b0a27d34182e7395ad--15d2180fe30545f882e61e2aae1b7bf2 c037a4d531f34e7eaa8de59acc289fe6 RY(iia_α₁₃) 15d2180fe30545f882e61e2aae1b7bf2--c037a4d531f34e7eaa8de59acc289fe6 c6c80fb4e8ff42698694c58743d490ae c037a4d531f34e7eaa8de59acc289fe6--c6c80fb4e8ff42698694c58743d490ae c4e401f13ca0486f80582c6fa10e8558 c6c80fb4e8ff42698694c58743d490ae--c4e401f13ca0486f80582c6fa10e8558 6f9acee0a6414666905b9fcd26aed35e RX(iia_γ₁₀) c4e401f13ca0486f80582c6fa10e8558--6f9acee0a6414666905b9fcd26aed35e b6c5773b613a4d99b7ff2ca274a35be5 6f9acee0a6414666905b9fcd26aed35e--b6c5773b613a4d99b7ff2ca274a35be5 1d7a2769e1204287874d8996c21706b6 b6c5773b613a4d99b7ff2ca274a35be5--1d7a2769e1204287874d8996c21706b6 08aced7ec7754d5ab4bda5a2c762bbf7 RY(iia_β₁₃) 1d7a2769e1204287874d8996c21706b6--08aced7ec7754d5ab4bda5a2c762bbf7 b85ca95a04a145de82944fb01298735d RX(iia_β₁₀) 08aced7ec7754d5ab4bda5a2c762bbf7--b85ca95a04a145de82944fb01298735d e8e02e4f7c6b41ab944af09580910352 b85ca95a04a145de82944fb01298735d--e8e02e4f7c6b41ab944af09580910352 bd450cfa5ffb41b1a597bba22833526b 680db51ea86d45858902ca587c2dcd45 RX(iia_α₀₁) b9003eefd81e4ac0a5c1198a6611c72e--680db51ea86d45858902ca587c2dcd45 e91dfb0d8cda44719aafdd25005b3dcc 2 424a073d3b9240828070ad1e1b84a2fe RY(iia_α₀₄) 680db51ea86d45858902ca587c2dcd45--424a073d3b9240828070ad1e1b84a2fe cc9153ab531a41d0b8c3c5bd7d7e21bf X 424a073d3b9240828070ad1e1b84a2fe--cc9153ab531a41d0b8c3c5bd7d7e21bf cc9153ab531a41d0b8c3c5bd7d7e21bf--1a12dbe0d1334052962d91c1598b980b 33733727864442d2ae290d10159614d9 cc9153ab531a41d0b8c3c5bd7d7e21bf--33733727864442d2ae290d10159614d9 9bfd99c13a2f4f56a5da95707d0a2b57 RX(iia_γ₀₁) 33733727864442d2ae290d10159614d9--9bfd99c13a2f4f56a5da95707d0a2b57 82d0a8f8b6f34695bae73b1225c9a8f9 9bfd99c13a2f4f56a5da95707d0a2b57--82d0a8f8b6f34695bae73b1225c9a8f9 4cb5606e0f794138b1f1d9cf4b737b10 X 82d0a8f8b6f34695bae73b1225c9a8f9--4cb5606e0f794138b1f1d9cf4b737b10 4cb5606e0f794138b1f1d9cf4b737b10--eb9eb982f7ca469bad3b96f489e8194d cfb59cf087f64a7c92879647145bff59 RY(iia_β₀₄) 4cb5606e0f794138b1f1d9cf4b737b10--cfb59cf087f64a7c92879647145bff59 6e84d558acd944dc861a4b4874da9764 RX(iia_β₀₁) cfb59cf087f64a7c92879647145bff59--6e84d558acd944dc861a4b4874da9764 13ecb305377543d6b2c3ace141849ce0 RX(iia_α₁₁) 6e84d558acd944dc861a4b4874da9764--13ecb305377543d6b2c3ace141849ce0 3969457e62fc4c1ca4ba43ea50a1d6ac RY(iia_α₁₄) 13ecb305377543d6b2c3ace141849ce0--3969457e62fc4c1ca4ba43ea50a1d6ac fbb52e262a3a458299b648fbf44ae35c X 3969457e62fc4c1ca4ba43ea50a1d6ac--fbb52e262a3a458299b648fbf44ae35c fbb52e262a3a458299b648fbf44ae35c--c6c80fb4e8ff42698694c58743d490ae 57c980bf1d904484acc966efa3ded5d1 fbb52e262a3a458299b648fbf44ae35c--57c980bf1d904484acc966efa3ded5d1 577adbffdee54e49b41cab4725ca798c RX(iia_γ₁₁) 57c980bf1d904484acc966efa3ded5d1--577adbffdee54e49b41cab4725ca798c 19c261ecf9fa412281eabf368d6c1f46 577adbffdee54e49b41cab4725ca798c--19c261ecf9fa412281eabf368d6c1f46 02827a77b00a45a3898649fc71c34c6a X 19c261ecf9fa412281eabf368d6c1f46--02827a77b00a45a3898649fc71c34c6a 02827a77b00a45a3898649fc71c34c6a--1d7a2769e1204287874d8996c21706b6 cf192e334efb474aacfa99d248cc318e RY(iia_β₁₄) 02827a77b00a45a3898649fc71c34c6a--cf192e334efb474aacfa99d248cc318e e72568eb37df49648a1057a5304ef2f8 RX(iia_β₁₁) cf192e334efb474aacfa99d248cc318e--e72568eb37df49648a1057a5304ef2f8 e72568eb37df49648a1057a5304ef2f8--bd450cfa5ffb41b1a597bba22833526b ca05d4ce46b340b9925c450eb90b3b3e 39eb0119b6e54840acc50e57d3ffbb7d RX(iia_α₀₂) e91dfb0d8cda44719aafdd25005b3dcc--39eb0119b6e54840acc50e57d3ffbb7d 8b66e17131cc409db9a337d2305ea958 RY(iia_α₀₅) 39eb0119b6e54840acc50e57d3ffbb7d--8b66e17131cc409db9a337d2305ea958 e65f499d5699430284a4a05add67eeca 8b66e17131cc409db9a337d2305ea958--e65f499d5699430284a4a05add67eeca 5fb077cdbc8f41c281e25901fb26946b X e65f499d5699430284a4a05add67eeca--5fb077cdbc8f41c281e25901fb26946b 5fb077cdbc8f41c281e25901fb26946b--33733727864442d2ae290d10159614d9 e5d730e4eb20473bb7e501317b2a1a64 RX(iia_γ₀₂) 5fb077cdbc8f41c281e25901fb26946b--e5d730e4eb20473bb7e501317b2a1a64 2b19b12cf9c347e78e235eef45e6e303 X e5d730e4eb20473bb7e501317b2a1a64--2b19b12cf9c347e78e235eef45e6e303 2b19b12cf9c347e78e235eef45e6e303--82d0a8f8b6f34695bae73b1225c9a8f9 5b29f25bd3db4960b85b2f10a30de91f 2b19b12cf9c347e78e235eef45e6e303--5b29f25bd3db4960b85b2f10a30de91f 87c2173994e44967b862aee4b6172c6d RY(iia_β₀₅) 5b29f25bd3db4960b85b2f10a30de91f--87c2173994e44967b862aee4b6172c6d 24a56ec0bed14fb0964d5e12e0f33773 RX(iia_β₀₂) 87c2173994e44967b862aee4b6172c6d--24a56ec0bed14fb0964d5e12e0f33773 14943829f670437085540200244fc78c RX(iia_α₁₂) 24a56ec0bed14fb0964d5e12e0f33773--14943829f670437085540200244fc78c fa5ef3682ac54070b840231f3beab961 RY(iia_α₁₅) 14943829f670437085540200244fc78c--fa5ef3682ac54070b840231f3beab961 f08d4b04265b493f944bd8f6c08d2b6c fa5ef3682ac54070b840231f3beab961--f08d4b04265b493f944bd8f6c08d2b6c b5f8a490e351452ea9b8cf3f983aea4a X f08d4b04265b493f944bd8f6c08d2b6c--b5f8a490e351452ea9b8cf3f983aea4a b5f8a490e351452ea9b8cf3f983aea4a--57c980bf1d904484acc966efa3ded5d1 d5015eb3383e48229cb7be4ef79babc6 RX(iia_γ₁₂) b5f8a490e351452ea9b8cf3f983aea4a--d5015eb3383e48229cb7be4ef79babc6 09d43ce287f1485d98201dccac98eb7f X d5015eb3383e48229cb7be4ef79babc6--09d43ce287f1485d98201dccac98eb7f 09d43ce287f1485d98201dccac98eb7f--19c261ecf9fa412281eabf368d6c1f46 cda56956f46c4b8fbf5fcbb052816f66 09d43ce287f1485d98201dccac98eb7f--cda56956f46c4b8fbf5fcbb052816f66 f672607945904c67890db0ee2f8837e5 RY(iia_β₁₅) cda56956f46c4b8fbf5fcbb052816f66--f672607945904c67890db0ee2f8837e5 e54ff1227b2640dea4a032b52c8f4800 RX(iia_β₁₂) f672607945904c67890db0ee2f8837e5--e54ff1227b2640dea4a032b52c8f4800 e54ff1227b2640dea4a032b52c8f4800--ca05d4ce46b340b9925c450eb90b3b3e