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_0917276791dc4dac8b23a3a3e26d872a Constant Chebyshev FM cluster_fc96214a27f544248245caf7a8dc3000 Constant Fourier FM 2f813eec35ee47568801aed0b1bcac89 0 a365487990bf46328c6717a53005249b RX(phi) 2f813eec35ee47568801aed0b1bcac89--a365487990bf46328c6717a53005249b 3add67d1b7bc4894b33a163284e4b796 1 238917dffdcd4a3eade12a743744d871 RX(acos(phi)) a365487990bf46328c6717a53005249b--238917dffdcd4a3eade12a743744d871 f043c4671f004fcca1fff389bdf028de 238917dffdcd4a3eade12a743744d871--f043c4671f004fcca1fff389bdf028de ac3d918de2a64d2cbf7d3de06384343e abd9a6ca803e49eb8f87fa1ec7dbae5d RX(phi) 3add67d1b7bc4894b33a163284e4b796--abd9a6ca803e49eb8f87fa1ec7dbae5d f1a5477a29e1444e9e6ccedbef109194 2 9151a978321f4c009e73c5103ecda385 RX(acos(phi)) abd9a6ca803e49eb8f87fa1ec7dbae5d--9151a978321f4c009e73c5103ecda385 9151a978321f4c009e73c5103ecda385--ac3d918de2a64d2cbf7d3de06384343e 547d93a4920e44beb3926781cf35b4be 1f73422922f142e3ad07740a055bbbde RX(phi) f1a5477a29e1444e9e6ccedbef109194--1f73422922f142e3ad07740a055bbbde 240f996f4a8c4ae4a3a3e72fba552124 RX(acos(phi)) 1f73422922f142e3ad07740a055bbbde--240f996f4a8c4ae4a3a3e72fba552124 240f996f4a8c4ae4a3a3e72fba552124--547d93a4920e44beb3926781cf35b4be

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_79db4f32a589482296049edf74db2394 Constant <function custom_fn at 0x7f15750d0280> FM cluster_f3dde1898f4f4c4bbdac3ff2ae03c2fd Constant asin FM 941a23c1063747408d9be91a57676eae 0 4ac61c6b38d747009508cdf82cb3311c RX(asin(phi)) 941a23c1063747408d9be91a57676eae--4ac61c6b38d747009508cdf82cb3311c c5bba4b4e5f74e54b841290a840ce6a4 1 d73c401aea8844c1975d58511ff7ca58 RX(phi**2 + asin(phi)) 4ac61c6b38d747009508cdf82cb3311c--d73c401aea8844c1975d58511ff7ca58 77fd7af537864705bfeacae386441dfb d73c401aea8844c1975d58511ff7ca58--77fd7af537864705bfeacae386441dfb 1f97367a68c945ba98dfc406171efd9b 3fea608469c14821a4fb8bf9406eca05 RX(asin(phi)) c5bba4b4e5f74e54b841290a840ce6a4--3fea608469c14821a4fb8bf9406eca05 ae34d348fc024db1bb6d10007555857d 2 c512492bda0a4808a2dea6f1cab98802 RX(phi**2 + asin(phi)) 3fea608469c14821a4fb8bf9406eca05--c512492bda0a4808a2dea6f1cab98802 c512492bda0a4808a2dea6f1cab98802--1f97367a68c945ba98dfc406171efd9b c3330da8a9a24d55afed22636bb6e4b9 3955349e3cbe4ddab86a13a169c083ee RX(asin(phi)) ae34d348fc024db1bb6d10007555857d--3955349e3cbe4ddab86a13a169c083ee 6e80cb6f987f4da3a8ab37edfce504fd RX(phi**2 + asin(phi)) 3955349e3cbe4ddab86a13a169c083ee--6e80cb6f987f4da3a8ab37edfce504fd 6e80cb6f987f4da3a8ab37edfce504fd--c3330da8a9a24d55afed22636bb6e4b9

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_1560cba37ca640f0ad6cb626add77b51 Exponential Fourier FM cluster_d4d27b4579184601afdd6e2ba8cd94d7 Constant Fourier FM cluster_f9c5d6c95b77494bb4b7d285d7308e17 Tower Fourier FM 1c838c7031834426a68b85abaa0c844e 0 62f9081d8eac44c88c0a425f720cfc35 RX(phi) 1c838c7031834426a68b85abaa0c844e--62f9081d8eac44c88c0a425f720cfc35 5dfc69529456400a82db7cf5bec01922 1 bbeab2a6016a4c61a38fa28e3644b718 RX(1.0*phi) 62f9081d8eac44c88c0a425f720cfc35--bbeab2a6016a4c61a38fa28e3644b718 bfdca5f4df3449169ee24d236ed35226 RX(1.0*phi) bbeab2a6016a4c61a38fa28e3644b718--bfdca5f4df3449169ee24d236ed35226 109dea2903144232bd6e0548c399d558 bfdca5f4df3449169ee24d236ed35226--109dea2903144232bd6e0548c399d558 e8874a4d1d694d03b9b173ae4b7f4cb5 879bd669df5242f88b49edcc7a27e75e RX(phi) 5dfc69529456400a82db7cf5bec01922--879bd669df5242f88b49edcc7a27e75e b9708535ea9a4dcd900aacd5c00d5d36 2 8158941aede745279bfed363dea3c715 RX(2.0*phi) 879bd669df5242f88b49edcc7a27e75e--8158941aede745279bfed363dea3c715 b92cfbe375534903a958ce7e3f55e1d5 RX(2.0*phi) 8158941aede745279bfed363dea3c715--b92cfbe375534903a958ce7e3f55e1d5 b92cfbe375534903a958ce7e3f55e1d5--e8874a4d1d694d03b9b173ae4b7f4cb5 49ccafab2d9a470e87e0fbcb031b8ea5 28d53cd076ea496ba2dea5872edc2865 RX(phi) b9708535ea9a4dcd900aacd5c00d5d36--28d53cd076ea496ba2dea5872edc2865 d143f21abfd74309a0c020ac83b460c0 3 5e9b27cfe1a04ccc931b15d4ddebab63 RX(3.0*phi) 28d53cd076ea496ba2dea5872edc2865--5e9b27cfe1a04ccc931b15d4ddebab63 ed41f8ccb00a48afb19f8f7ca3c89d7a RX(4.0*phi) 5e9b27cfe1a04ccc931b15d4ddebab63--ed41f8ccb00a48afb19f8f7ca3c89d7a ed41f8ccb00a48afb19f8f7ca3c89d7a--49ccafab2d9a470e87e0fbcb031b8ea5 8c690ab3529f43269f49ce47c61d757c 4c372d87e2cd47a892f452215ab63233 RX(phi) d143f21abfd74309a0c020ac83b460c0--4c372d87e2cd47a892f452215ab63233 d685e3830ebf47e38c7ef3e23a93ed40 4 b95ddfbecc8a49e78e1405943c14b3d4 RX(4.0*phi) 4c372d87e2cd47a892f452215ab63233--b95ddfbecc8a49e78e1405943c14b3d4 33366284509d450c89ff32dd32a5bc56 RX(8.0*phi) b95ddfbecc8a49e78e1405943c14b3d4--33366284509d450c89ff32dd32a5bc56 33366284509d450c89ff32dd32a5bc56--8c690ab3529f43269f49ce47c61d757c dd9c630b5a604e2cbb138125067f7868 410ee718287445d982bb38853378de83 RX(phi) d685e3830ebf47e38c7ef3e23a93ed40--410ee718287445d982bb38853378de83 c37b4a7d00bd4b9488b0cae14b4230b5 RX(5.0*phi) 410ee718287445d982bb38853378de83--c37b4a7d00bd4b9488b0cae14b4230b5 7ab296aa1d0549c6aa5c3fb9feab5693 RX(16.0*phi) c37b4a7d00bd4b9488b0cae14b4230b5--7ab296aa1d0549c6aa5c3fb9feab5693 7ab296aa1d0549c6aa5c3fb9feab5693--dd9c630b5a604e2cbb138125067f7868

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 8cbadfb2a044407b8a785112a7aad144 0 0a5185c45eb14f79ae5453c8e998cb27 RX(1.0*acos(phi)) 8cbadfb2a044407b8a785112a7aad144--0a5185c45eb14f79ae5453c8e998cb27 048121277f094fa79ac9aa54a8fbcf4a 1 a2cef0450956471db6664b17a21d9bbe 0a5185c45eb14f79ae5453c8e998cb27--a2cef0450956471db6664b17a21d9bbe bb601016823f4b038eaa4fd764fef4a5 d93b7711fc534857bbe179db687f9520 RX(1.414*acos(phi)) 048121277f094fa79ac9aa54a8fbcf4a--d93b7711fc534857bbe179db687f9520 2929525fc98c4939b92b1f80d283bd27 2 d93b7711fc534857bbe179db687f9520--bb601016823f4b038eaa4fd764fef4a5 231940bbd186411f8afdea02dc15f597 2e8e679bd5fe46dcaaab03320dab93a0 RX(1.732*acos(phi)) 2929525fc98c4939b92b1f80d283bd27--2e8e679bd5fe46dcaaab03320dab93a0 81fe69f61bcb452db485d2c7d397c465 3 2e8e679bd5fe46dcaaab03320dab93a0--231940bbd186411f8afdea02dc15f597 09a44333d35049ed8369601e36bd5adb 3ecfdc4aee6345d19ab8217d1a2b75c3 RX(2.0*acos(phi)) 81fe69f61bcb452db485d2c7d397c465--3ecfdc4aee6345d19ab8217d1a2b75c3 a0dd10100ead4fd8915fddbcf086f763 4 3ecfdc4aee6345d19ab8217d1a2b75c3--09a44333d35049ed8369601e36bd5adb facfe3b78ded46fba54f22d11d3162a1 8171db3db7b44937859749883f81f0b9 RX(2.236*acos(phi)) a0dd10100ead4fd8915fddbcf086f763--8171db3db7b44937859749883f81f0b9 8171db3db7b44937859749883f81f0b9--facfe3b78ded46fba54f22d11d3162a1

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 6790b5f2e0434a1fabb43d4b7c10571c 0 459925192bdd431391cfd4973cf1b580 RX(1.0*phi*w₀) 6790b5f2e0434a1fabb43d4b7c10571c--459925192bdd431391cfd4973cf1b580 d9bfe7713be84bd38bef8336fb03cbe1 1 0c72edf3f0674d40a8184a10b1f208a7 459925192bdd431391cfd4973cf1b580--0c72edf3f0674d40a8184a10b1f208a7 7daddbc885fc4a3d945f56b82b227a37 d764c7be5d054784a50eeccb41e3acce RX(2.0*phi*w₁) d9bfe7713be84bd38bef8336fb03cbe1--d764c7be5d054784a50eeccb41e3acce 89f4ccc82346439e88bf67321c760c62 2 d764c7be5d054784a50eeccb41e3acce--7daddbc885fc4a3d945f56b82b227a37 a7614031f8ab4aba9301f40653ec584e 37c3902b796d49bcb6a1a7c6eb93a702 RX(4.0*phi*w₂) 89f4ccc82346439e88bf67321c760c62--37c3902b796d49bcb6a1a7c6eb93a702 4cc94385109445d2a0b046034e8cd5e5 3 37c3902b796d49bcb6a1a7c6eb93a702--a7614031f8ab4aba9301f40653ec584e a745bb5f1ba64ea28fcde9340ae027e0 45b8502fa63d487f8af8af07793babea RX(8.0*phi*w₃) 4cc94385109445d2a0b046034e8cd5e5--45b8502fa63d487f8af8af07793babea e1e7205497ab475886df323488679415 4 45b8502fa63d487f8af8af07793babea--a745bb5f1ba64ea28fcde9340ae027e0 a685b2e98bb14106afd4f3b5eaf66c21 d159d17881a24644bfc9b25cc5f0b5e8 RX(16.0*phi*w₄) e1e7205497ab475886df323488679415--d159d17881a24644bfc9b25cc5f0b5e8 d159d17881a24644bfc9b25cc5f0b5e8--a685b2e98bb14106afd4f3b5eaf66c21

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 32e850d2af634848bb37bfb52258518a 0 89754395eff54c2d9e9f753092fd46bd RY(80.0*acos(w₄*(0.667*x + 1.667))) 32e850d2af634848bb37bfb52258518a--89754395eff54c2d9e9f753092fd46bd 11ff6b6ae3464009bbbfcf0e67164f89 1 25682354c24b4c37b2aa950bc7b6baa8 89754395eff54c2d9e9f753092fd46bd--25682354c24b4c37b2aa950bc7b6baa8 397f70cd64df4552b6e8aa50a8eb2ef0 23cc2ef27b714daba78147534cce540e RY(40.0*acos(w₃*(0.667*x + 1.667))) 11ff6b6ae3464009bbbfcf0e67164f89--23cc2ef27b714daba78147534cce540e 5f0995bf54d74a2c96aa869e8b954213 2 23cc2ef27b714daba78147534cce540e--397f70cd64df4552b6e8aa50a8eb2ef0 91b90c132d4a4e6eb4b187578306ffdc 2ae818a9f7424ee6a60071808f6ac9c9 RY(20.0*acos(w₂*(0.667*x + 1.667))) 5f0995bf54d74a2c96aa869e8b954213--2ae818a9f7424ee6a60071808f6ac9c9 cdde8237bc974803b79e040e2d832375 3 2ae818a9f7424ee6a60071808f6ac9c9--91b90c132d4a4e6eb4b187578306ffdc cfbe319d57294ce19365b2024d9b99c3 8a739a8198864e91a0d3b24d286f5dcd RY(10.0*acos(w₁*(0.667*x + 1.667))) cdde8237bc974803b79e040e2d832375--8a739a8198864e91a0d3b24d286f5dcd 451c8b1cd1b1400e80501fd4fc2e727f 4 8a739a8198864e91a0d3b24d286f5dcd--cfbe319d57294ce19365b2024d9b99c3 edb83d36d6c34a389333adf696527d40 ccacf225b38841b9959ea188836f764a RY(5.0*acos(w₀*(0.667*x + 1.667))) 451c8b1cd1b1400e80501fd4fc2e727f--ccacf225b38841b9959ea188836f764a ccacf225b38841b9959ea188836f764a--edb83d36d6c34a389333adf696527d40

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 859ecbed05294c25aa02296f897c889f 0 432e69f1328f4961be4971840bfe1216 RX(theta₀) 859ecbed05294c25aa02296f897c889f--432e69f1328f4961be4971840bfe1216 4d6c18b57e004e5da8f4a4c5f16c8e8f 1 c34575ba3ea247c69e1278e685b6a5f5 RY(theta₃) 432e69f1328f4961be4971840bfe1216--c34575ba3ea247c69e1278e685b6a5f5 0cb448fe23954a79a0f6ca72c980bc31 RX(theta₆) c34575ba3ea247c69e1278e685b6a5f5--0cb448fe23954a79a0f6ca72c980bc31 f0ba6dd0619845b6a539962f604740d0 0cb448fe23954a79a0f6ca72c980bc31--f0ba6dd0619845b6a539962f604740d0 8b2e50df965a4743ab4de26c7299bf7f f0ba6dd0619845b6a539962f604740d0--8b2e50df965a4743ab4de26c7299bf7f 99bd0f9601c84ba4aee8fe06db314aba RX(theta₉) 8b2e50df965a4743ab4de26c7299bf7f--99bd0f9601c84ba4aee8fe06db314aba 92fa0489c33c48e29060789ac7c1be0c RY(theta₁₂) 99bd0f9601c84ba4aee8fe06db314aba--92fa0489c33c48e29060789ac7c1be0c 54eccd76095b4b4e9949369445504a5d RX(theta₁₅) 92fa0489c33c48e29060789ac7c1be0c--54eccd76095b4b4e9949369445504a5d 7125e7d957f0476d8014fbebe8996d2d 54eccd76095b4b4e9949369445504a5d--7125e7d957f0476d8014fbebe8996d2d 07986a91cbc647f794602152cf8bb4b7 7125e7d957f0476d8014fbebe8996d2d--07986a91cbc647f794602152cf8bb4b7 a4b87ea6ab9347cb8f3cfd7b9eb41cc2 07986a91cbc647f794602152cf8bb4b7--a4b87ea6ab9347cb8f3cfd7b9eb41cc2 7008a91b96644926a212701cb00e1cb2 b25da305dfa848dabd5bb12cbf611cee RX(theta₁) 4d6c18b57e004e5da8f4a4c5f16c8e8f--b25da305dfa848dabd5bb12cbf611cee 0a5078bf2afb48a6ab978f308c19ccd6 2 d75805bfce3a418f92ee2bf581c839f0 RY(theta₄) b25da305dfa848dabd5bb12cbf611cee--d75805bfce3a418f92ee2bf581c839f0 371b11f2dfb3421f96b8da4d184ead7c RX(theta₇) d75805bfce3a418f92ee2bf581c839f0--371b11f2dfb3421f96b8da4d184ead7c 56dd12c0a2c64f409117a2edc575c3d5 X 371b11f2dfb3421f96b8da4d184ead7c--56dd12c0a2c64f409117a2edc575c3d5 56dd12c0a2c64f409117a2edc575c3d5--f0ba6dd0619845b6a539962f604740d0 644631644f1645f58ac2d00c36591c94 56dd12c0a2c64f409117a2edc575c3d5--644631644f1645f58ac2d00c36591c94 a7002c802fbc4a21b4c1d9b46d401421 RX(theta₁₀) 644631644f1645f58ac2d00c36591c94--a7002c802fbc4a21b4c1d9b46d401421 efced1831ed640e5b499514545976cbb RY(theta₁₃) a7002c802fbc4a21b4c1d9b46d401421--efced1831ed640e5b499514545976cbb 1de6a9097ed14f8f9f346b2e6131d3da RX(theta₁₆) efced1831ed640e5b499514545976cbb--1de6a9097ed14f8f9f346b2e6131d3da ee7b44d780fc4a42a6a53e97741c6803 X 1de6a9097ed14f8f9f346b2e6131d3da--ee7b44d780fc4a42a6a53e97741c6803 ee7b44d780fc4a42a6a53e97741c6803--7125e7d957f0476d8014fbebe8996d2d ccb3bb58fbfe4f13bf7d62a25a6fc6ea ee7b44d780fc4a42a6a53e97741c6803--ccb3bb58fbfe4f13bf7d62a25a6fc6ea ccb3bb58fbfe4f13bf7d62a25a6fc6ea--7008a91b96644926a212701cb00e1cb2 9f807e9edbf94bb2a86761489b7c3d38 fae337e9e7d643a4b01226fc66a13e4a RX(theta₂) 0a5078bf2afb48a6ab978f308c19ccd6--fae337e9e7d643a4b01226fc66a13e4a 4f53d602e9ad4cd8a0dc91332b2b17e7 RY(theta₅) fae337e9e7d643a4b01226fc66a13e4a--4f53d602e9ad4cd8a0dc91332b2b17e7 3c309937859b417da400071dcbe57a9f RX(theta₈) 4f53d602e9ad4cd8a0dc91332b2b17e7--3c309937859b417da400071dcbe57a9f 32accdfdfe6044d9b59a24f27d09bba6 3c309937859b417da400071dcbe57a9f--32accdfdfe6044d9b59a24f27d09bba6 f043f1730df7423ea9c21c7f670eda6e X 32accdfdfe6044d9b59a24f27d09bba6--f043f1730df7423ea9c21c7f670eda6e f043f1730df7423ea9c21c7f670eda6e--644631644f1645f58ac2d00c36591c94 94e04e1ef0d946b89ba65f8838b10e85 RX(theta₁₁) f043f1730df7423ea9c21c7f670eda6e--94e04e1ef0d946b89ba65f8838b10e85 24d4184af6154735958f5a0a50861a9c RY(theta₁₄) 94e04e1ef0d946b89ba65f8838b10e85--24d4184af6154735958f5a0a50861a9c 2ff4ea5ea5754fc1b685cafcd8cd2eb9 RX(theta₁₇) 24d4184af6154735958f5a0a50861a9c--2ff4ea5ea5754fc1b685cafcd8cd2eb9 cdc12a0ccd154846a1ce7c366343cd14 2ff4ea5ea5754fc1b685cafcd8cd2eb9--cdc12a0ccd154846a1ce7c366343cd14 4c6a9500e9e34cbcbeae3109797e62e7 X cdc12a0ccd154846a1ce7c366343cd14--4c6a9500e9e34cbcbeae3109797e62e7 4c6a9500e9e34cbcbeae3109797e62e7--ccb3bb58fbfe4f13bf7d62a25a6fc6ea 4c6a9500e9e34cbcbeae3109797e62e7--9f807e9edbf94bb2a86761489b7c3d38

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 446e078c6b3a4b748620985dc0cb0274 0 149be61189764c249ce5bd0a3028ba95 RX(phi₀) 446e078c6b3a4b748620985dc0cb0274--149be61189764c249ce5bd0a3028ba95 9e775bfb38864f04ae20bf7324cd0823 1 c511b6b04db041e5a1a41197cb4dbbb2 RY(phi₃) 149be61189764c249ce5bd0a3028ba95--c511b6b04db041e5a1a41197cb4dbbb2 94995513c3c440f6ad2f54e496cfe486 RX(phi₆) c511b6b04db041e5a1a41197cb4dbbb2--94995513c3c440f6ad2f54e496cfe486 162807d1ad9c452097981f05daec7c52 94995513c3c440f6ad2f54e496cfe486--162807d1ad9c452097981f05daec7c52 78e965fa4a754414a0f0d3ba17884c34 162807d1ad9c452097981f05daec7c52--78e965fa4a754414a0f0d3ba17884c34 2f09eca360834acbac49bc1c8b9b19e3 RX(phi₉) 78e965fa4a754414a0f0d3ba17884c34--2f09eca360834acbac49bc1c8b9b19e3 7635d615cbd34ea3ac358d14c65f8a1e RY(phi₁₂) 2f09eca360834acbac49bc1c8b9b19e3--7635d615cbd34ea3ac358d14c65f8a1e 0ee8b975a51e4ff2884dd567b3011e1c RX(phi₁₅) 7635d615cbd34ea3ac358d14c65f8a1e--0ee8b975a51e4ff2884dd567b3011e1c 1d5ea10b8220496f82fa6a3c374cf200 0ee8b975a51e4ff2884dd567b3011e1c--1d5ea10b8220496f82fa6a3c374cf200 6cb3e9970569428fa23fad0b5208a439 1d5ea10b8220496f82fa6a3c374cf200--6cb3e9970569428fa23fad0b5208a439 cd11ebea5e0d4b0cb941a7505c713a4d 6cb3e9970569428fa23fad0b5208a439--cd11ebea5e0d4b0cb941a7505c713a4d 1d91755510854b7a9253fdbc52a8de97 c143d6aa0f4d4059b4d4dcf456f51d12 RX(phi₁) 9e775bfb38864f04ae20bf7324cd0823--c143d6aa0f4d4059b4d4dcf456f51d12 fd674b235bd64aad9085e855f166d2d7 2 3a077e5d25674502a42d2b99cde2fafd RY(phi₄) c143d6aa0f4d4059b4d4dcf456f51d12--3a077e5d25674502a42d2b99cde2fafd 6c7bf0606c3548069f905176d83d3d19 RX(phi₇) 3a077e5d25674502a42d2b99cde2fafd--6c7bf0606c3548069f905176d83d3d19 164f65a180864624adebab18269d2bef PHASE(phi_ent₀) 6c7bf0606c3548069f905176d83d3d19--164f65a180864624adebab18269d2bef 164f65a180864624adebab18269d2bef--162807d1ad9c452097981f05daec7c52 fded0f1380914a48803103c699211769 164f65a180864624adebab18269d2bef--fded0f1380914a48803103c699211769 833b1fda350f4b4abac6d36a0d84822f RX(phi₁₀) fded0f1380914a48803103c699211769--833b1fda350f4b4abac6d36a0d84822f 0172ccb75e4145d4a7945598565dcdb9 RY(phi₁₃) 833b1fda350f4b4abac6d36a0d84822f--0172ccb75e4145d4a7945598565dcdb9 7842a7ca2d404ffb962fe1d69c28df2f RX(phi₁₆) 0172ccb75e4145d4a7945598565dcdb9--7842a7ca2d404ffb962fe1d69c28df2f ce3fce8e0b2049ff8b0723c44a095f19 PHASE(phi_ent₂) 7842a7ca2d404ffb962fe1d69c28df2f--ce3fce8e0b2049ff8b0723c44a095f19 ce3fce8e0b2049ff8b0723c44a095f19--1d5ea10b8220496f82fa6a3c374cf200 fb1734d9016746c4b0987a06d93f9bb2 ce3fce8e0b2049ff8b0723c44a095f19--fb1734d9016746c4b0987a06d93f9bb2 fb1734d9016746c4b0987a06d93f9bb2--1d91755510854b7a9253fdbc52a8de97 93dca9288e25433784044aee1f36a160 b5e9ece2168b49a487828387226f516e RX(phi₂) fd674b235bd64aad9085e855f166d2d7--b5e9ece2168b49a487828387226f516e 57f41f2c1f98410c93cacce6e44e816f RY(phi₅) b5e9ece2168b49a487828387226f516e--57f41f2c1f98410c93cacce6e44e816f 9c881bece7eb46b4bfe51040b23561a4 RX(phi₈) 57f41f2c1f98410c93cacce6e44e816f--9c881bece7eb46b4bfe51040b23561a4 03a82794f23241a09a7c4cb526d2837f 9c881bece7eb46b4bfe51040b23561a4--03a82794f23241a09a7c4cb526d2837f 7c96f09990d94bfda509a8bb91cf1fd5 PHASE(phi_ent₁) 03a82794f23241a09a7c4cb526d2837f--7c96f09990d94bfda509a8bb91cf1fd5 7c96f09990d94bfda509a8bb91cf1fd5--fded0f1380914a48803103c699211769 5549fdcbed1f4b1c94b95e3cfc73ca86 RX(phi₁₁) 7c96f09990d94bfda509a8bb91cf1fd5--5549fdcbed1f4b1c94b95e3cfc73ca86 fb863b5009a949b38c52f0df942d9db0 RY(phi₁₄) 5549fdcbed1f4b1c94b95e3cfc73ca86--fb863b5009a949b38c52f0df942d9db0 1a04ba9fe5804676a0a99d8aca091f7e RX(phi₁₇) fb863b5009a949b38c52f0df942d9db0--1a04ba9fe5804676a0a99d8aca091f7e 921899346b0346bd8ff2f3634aed3f0a 1a04ba9fe5804676a0a99d8aca091f7e--921899346b0346bd8ff2f3634aed3f0a 956e6c384019462cb4c4f29e208965fe PHASE(phi_ent₃) 921899346b0346bd8ff2f3634aed3f0a--956e6c384019462cb4c4f29e208965fe 956e6c384019462cb4c4f29e208965fe--fb1734d9016746c4b0987a06d93f9bb2 956e6c384019462cb4c4f29e208965fe--93dca9288e25433784044aee1f36a160

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_e3a0f57aa2f84740b44eee6f22fd7456 cluster_11fa6def8e2e48d4a5c28810fe69829d 86d6e89d466047a8ac0225675fbd3420 0 e9284d517c544eba8ba0135cfef23524 RX(theta₀) 86d6e89d466047a8ac0225675fbd3420--e9284d517c544eba8ba0135cfef23524 e85f3d9222d04462a4983d4087ad600b 1 e063a0c8f16549a88fbbd843d871dfe4 RY(theta₃) e9284d517c544eba8ba0135cfef23524--e063a0c8f16549a88fbbd843d871dfe4 871b43ef86864fc989b38ddd85db0f09 RX(theta₆) e063a0c8f16549a88fbbd843d871dfe4--871b43ef86864fc989b38ddd85db0f09 04c188cab597477abd7b265692975561 HamEvo 871b43ef86864fc989b38ddd85db0f09--04c188cab597477abd7b265692975561 05bad2d9cd8646d6a10915c729714a32 RX(theta₉) 04c188cab597477abd7b265692975561--05bad2d9cd8646d6a10915c729714a32 8bf000ef2abc4261bb47bc5f18ae541f RY(theta₁₂) 05bad2d9cd8646d6a10915c729714a32--8bf000ef2abc4261bb47bc5f18ae541f b37a46ccd3404b198a709326a9a009e4 RX(theta₁₅) 8bf000ef2abc4261bb47bc5f18ae541f--b37a46ccd3404b198a709326a9a009e4 aedbb141c2ff44c8968eecf503c2290f HamEvo b37a46ccd3404b198a709326a9a009e4--aedbb141c2ff44c8968eecf503c2290f 9c9154b1559c4dc9b1c409ede942430f aedbb141c2ff44c8968eecf503c2290f--9c9154b1559c4dc9b1c409ede942430f 114ec343c82a4b1bba2f6a1999bc5c06 b593c817ec9145a5b6cd695896fb86ce RX(theta₁) e85f3d9222d04462a4983d4087ad600b--b593c817ec9145a5b6cd695896fb86ce b44eeaa8745145e88f6144903101eb10 2 4a3791a481004651b164195b0798678a RY(theta₄) b593c817ec9145a5b6cd695896fb86ce--4a3791a481004651b164195b0798678a cb2421487e1a4019abaea3282bff3194 RX(theta₇) 4a3791a481004651b164195b0798678a--cb2421487e1a4019abaea3282bff3194 5c9ce3b9d8174be1bb2e8c7a1ab96d39 t = theta_t₀ cb2421487e1a4019abaea3282bff3194--5c9ce3b9d8174be1bb2e8c7a1ab96d39 25891fb2b7ba4b1abf79ec9e78618fa5 RX(theta₁₀) 5c9ce3b9d8174be1bb2e8c7a1ab96d39--25891fb2b7ba4b1abf79ec9e78618fa5 e23b12d0e4734681afe32c28c4c2add2 RY(theta₁₃) 25891fb2b7ba4b1abf79ec9e78618fa5--e23b12d0e4734681afe32c28c4c2add2 a81508b733ae4f87991032192ea7be0f RX(theta₁₆) e23b12d0e4734681afe32c28c4c2add2--a81508b733ae4f87991032192ea7be0f 5c282420a40e4554a4f31bd81e744f2b t = theta_t₁ a81508b733ae4f87991032192ea7be0f--5c282420a40e4554a4f31bd81e744f2b 5c282420a40e4554a4f31bd81e744f2b--114ec343c82a4b1bba2f6a1999bc5c06 e76ba1ec1fd24177bc5fc6a56e9df957 efaf2ac0ab9c492782a03a056170dec6 RX(theta₂) b44eeaa8745145e88f6144903101eb10--efaf2ac0ab9c492782a03a056170dec6 742d54da32ef42e8b878d64c4b581a79 RY(theta₅) efaf2ac0ab9c492782a03a056170dec6--742d54da32ef42e8b878d64c4b581a79 f064d50a6d4e4d4f98e02b478e1fe6b3 RX(theta₈) 742d54da32ef42e8b878d64c4b581a79--f064d50a6d4e4d4f98e02b478e1fe6b3 71f2323df51e4ec887f4520cc5d69d8f f064d50a6d4e4d4f98e02b478e1fe6b3--71f2323df51e4ec887f4520cc5d69d8f e798fc6a345a4af4982bcaacb9554efb RX(theta₁₁) 71f2323df51e4ec887f4520cc5d69d8f--e798fc6a345a4af4982bcaacb9554efb b8a68594a1714aac995b7115eda0d052 RY(theta₁₄) e798fc6a345a4af4982bcaacb9554efb--b8a68594a1714aac995b7115eda0d052 25c038a1ff3d43b59ffcb1c601437cf9 RX(theta₁₇) b8a68594a1714aac995b7115eda0d052--25c038a1ff3d43b59ffcb1c601437cf9 521cc06dc7da4236baa4ac361b25ab56 25c038a1ff3d43b59ffcb1c601437cf9--521cc06dc7da4236baa4ac361b25ab56 521cc06dc7da4236baa4ac361b25ab56--e76ba1ec1fd24177bc5fc6a56e9df957

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_64f1a80c0d6144e0a208cace0f309434 cluster_40e2454eba424b058453790db5caab71 24866a96b80f453db9470bfa41cda7b5 0 046e152cd0894a71a2dc54dc6514684f RX(theta₀) 24866a96b80f453db9470bfa41cda7b5--046e152cd0894a71a2dc54dc6514684f c5ec78a4a5a8469eb6997ae59ecdc965 1 86e7b25097a54832ba78db4d971a1944 RY(theta₆) 046e152cd0894a71a2dc54dc6514684f--86e7b25097a54832ba78db4d971a1944 7c7282a5367c4434a5957279e319785b RX(theta₁₂) 86e7b25097a54832ba78db4d971a1944--7c7282a5367c4434a5957279e319785b b8ebe795e3894a59a5144e4c2e943916 7c7282a5367c4434a5957279e319785b--b8ebe795e3894a59a5144e4c2e943916 41a4f8f28e784ba5b0ff886af55d6f55 RX(theta₁₈) b8ebe795e3894a59a5144e4c2e943916--41a4f8f28e784ba5b0ff886af55d6f55 6d8c13990d5a4c6c8c232647681b4228 RY(theta₂₄) 41a4f8f28e784ba5b0ff886af55d6f55--6d8c13990d5a4c6c8c232647681b4228 85bee9742ad844afbff5ae441e1a0ad9 RX(theta₃₀) 6d8c13990d5a4c6c8c232647681b4228--85bee9742ad844afbff5ae441e1a0ad9 1ed2ae85ffe44934ae1291eb23e1e093 85bee9742ad844afbff5ae441e1a0ad9--1ed2ae85ffe44934ae1291eb23e1e093 c4cc4e7f55f74b75ab3aa9fa33ceada6 1ed2ae85ffe44934ae1291eb23e1e093--c4cc4e7f55f74b75ab3aa9fa33ceada6 51cac1c977c14e3885761756eeeebcba a360c575826846f59045a0e0201f4ee3 RX(theta₁) c5ec78a4a5a8469eb6997ae59ecdc965--a360c575826846f59045a0e0201f4ee3 eeb31f7f7eab499a8d1f386211c0ae62 2 f38e786f116d4ca3a840760adc4145f5 RY(theta₇) a360c575826846f59045a0e0201f4ee3--f38e786f116d4ca3a840760adc4145f5 b79f5468301b4c2ab8a6a88ce3ca3fa9 RX(theta₁₃) f38e786f116d4ca3a840760adc4145f5--b79f5468301b4c2ab8a6a88ce3ca3fa9 2efefa48b14d4f12b514f2d74d30a03c b79f5468301b4c2ab8a6a88ce3ca3fa9--2efefa48b14d4f12b514f2d74d30a03c 601fddb2545e4d8db41d5bea84ae769d RX(theta₁₉) 2efefa48b14d4f12b514f2d74d30a03c--601fddb2545e4d8db41d5bea84ae769d e22ab7c315a74a09be4dc72c2eb7628e RY(theta₂₅) 601fddb2545e4d8db41d5bea84ae769d--e22ab7c315a74a09be4dc72c2eb7628e a5aebf2903d747faa588ea833f330eb0 RX(theta₃₁) e22ab7c315a74a09be4dc72c2eb7628e--a5aebf2903d747faa588ea833f330eb0 d90d2863891443738494f442ad3bb3e4 a5aebf2903d747faa588ea833f330eb0--d90d2863891443738494f442ad3bb3e4 d90d2863891443738494f442ad3bb3e4--51cac1c977c14e3885761756eeeebcba e3653e430e794e64bc91ae2681d96bab 53a9f9ac6e6443919faa60756e96ae51 RX(theta₂) eeb31f7f7eab499a8d1f386211c0ae62--53a9f9ac6e6443919faa60756e96ae51 0ba8a8efe88e476998befbed1f4c6594 3 5bbf8aacbbf34e8b813d7b38479f2c7e RY(theta₈) 53a9f9ac6e6443919faa60756e96ae51--5bbf8aacbbf34e8b813d7b38479f2c7e f5c24d4c0f4f43428786dc47c2a61d28 RX(theta₁₄) 5bbf8aacbbf34e8b813d7b38479f2c7e--f5c24d4c0f4f43428786dc47c2a61d28 4e660af840b3468d8054574fbf33123f HamEvo f5c24d4c0f4f43428786dc47c2a61d28--4e660af840b3468d8054574fbf33123f e4726a52d5c94668bed4d653f1bd89ff RX(theta₂₀) 4e660af840b3468d8054574fbf33123f--e4726a52d5c94668bed4d653f1bd89ff 9daa9ca879dc4952b7bc756b6cf81ecf RY(theta₂₆) e4726a52d5c94668bed4d653f1bd89ff--9daa9ca879dc4952b7bc756b6cf81ecf 6d81595ce0f844ecbbacc0c122fa3384 RX(theta₃₂) 9daa9ca879dc4952b7bc756b6cf81ecf--6d81595ce0f844ecbbacc0c122fa3384 dd6442cac5504c789b05fe87e5128261 HamEvo 6d81595ce0f844ecbbacc0c122fa3384--dd6442cac5504c789b05fe87e5128261 dd6442cac5504c789b05fe87e5128261--e3653e430e794e64bc91ae2681d96bab 1b9291fb748e4c1ba1c1dc2a53f2ed97 ffc7f1d4221043c68ce41f24323cdeb7 RX(theta₃) 0ba8a8efe88e476998befbed1f4c6594--ffc7f1d4221043c68ce41f24323cdeb7 ec9d020ecc2d4248a8ec020db2a16021 4 e21a8be861a94556a07ae13e6fa299f9 RY(theta₉) ffc7f1d4221043c68ce41f24323cdeb7--e21a8be861a94556a07ae13e6fa299f9 f9cdcd387dbc4e25964e4fcc6d5b25be RX(theta₁₅) e21a8be861a94556a07ae13e6fa299f9--f9cdcd387dbc4e25964e4fcc6d5b25be c38c26f6e2544433aadd08f06fe6ccd4 t = theta_t₀ f9cdcd387dbc4e25964e4fcc6d5b25be--c38c26f6e2544433aadd08f06fe6ccd4 a8576ca699a44da187c9fe9ad7038eb4 RX(theta₂₁) c38c26f6e2544433aadd08f06fe6ccd4--a8576ca699a44da187c9fe9ad7038eb4 a810d33af2164cf7ac4862c5571a3d43 RY(theta₂₇) a8576ca699a44da187c9fe9ad7038eb4--a810d33af2164cf7ac4862c5571a3d43 7d22606869e34b64a0d754262e339bb0 RX(theta₃₃) a810d33af2164cf7ac4862c5571a3d43--7d22606869e34b64a0d754262e339bb0 bca5d527533846168682778d432dc2de t = theta_t₁ 7d22606869e34b64a0d754262e339bb0--bca5d527533846168682778d432dc2de bca5d527533846168682778d432dc2de--1b9291fb748e4c1ba1c1dc2a53f2ed97 025ad23bb984425ba0ca8e3b40697875 ed750b87aa214d8fa3c017655cb9cf53 RX(theta₄) ec9d020ecc2d4248a8ec020db2a16021--ed750b87aa214d8fa3c017655cb9cf53 c67df8e1be48492f8265c2be0cd11b7f 5 d3cf212d31c2436db453a6104818738c RY(theta₁₀) ed750b87aa214d8fa3c017655cb9cf53--d3cf212d31c2436db453a6104818738c 53a5a0b1a9a7458e9e8829849b370e46 RX(theta₁₆) d3cf212d31c2436db453a6104818738c--53a5a0b1a9a7458e9e8829849b370e46 5fc04a5aaed741b789ae61cb1ba53bae 53a5a0b1a9a7458e9e8829849b370e46--5fc04a5aaed741b789ae61cb1ba53bae 038b5d62be0545afba23e8a7d23ae202 RX(theta₂₂) 5fc04a5aaed741b789ae61cb1ba53bae--038b5d62be0545afba23e8a7d23ae202 2253928247744440b1d088b3e988ea75 RY(theta₂₈) 038b5d62be0545afba23e8a7d23ae202--2253928247744440b1d088b3e988ea75 5114bf8ff1194c1bb9407d450050f9d8 RX(theta₃₄) 2253928247744440b1d088b3e988ea75--5114bf8ff1194c1bb9407d450050f9d8 f274915b43284e55aac17adf834e140d 5114bf8ff1194c1bb9407d450050f9d8--f274915b43284e55aac17adf834e140d f274915b43284e55aac17adf834e140d--025ad23bb984425ba0ca8e3b40697875 2119571f1ddc498d974b3321d697953a 68cfe79d43de4675bca0125c75fa4bb2 RX(theta₅) c67df8e1be48492f8265c2be0cd11b7f--68cfe79d43de4675bca0125c75fa4bb2 43ef967f571b4d708459ca9469f2ee6b RY(theta₁₁) 68cfe79d43de4675bca0125c75fa4bb2--43ef967f571b4d708459ca9469f2ee6b 8447179a6c0b4a76aaa699d8099aed0c RX(theta₁₇) 43ef967f571b4d708459ca9469f2ee6b--8447179a6c0b4a76aaa699d8099aed0c df7f421b72c1465097444f98c3885a58 8447179a6c0b4a76aaa699d8099aed0c--df7f421b72c1465097444f98c3885a58 0008c8c7e6ac49bbb19c17afd4ea3657 RX(theta₂₃) df7f421b72c1465097444f98c3885a58--0008c8c7e6ac49bbb19c17afd4ea3657 e612ae1f3aba46c19529c9f2c3cb7a20 RY(theta₂₉) 0008c8c7e6ac49bbb19c17afd4ea3657--e612ae1f3aba46c19529c9f2c3cb7a20 b0eb18b5126c4bfa8df021b9d9af1ecc RX(theta₃₅) e612ae1f3aba46c19529c9f2c3cb7a20--b0eb18b5126c4bfa8df021b9d9af1ecc 0deb22aab4d5463389433b2aab6b1467 b0eb18b5126c4bfa8df021b9d9af1ecc--0deb22aab4d5463389433b2aab6b1467 0deb22aab4d5463389433b2aab6b1467--2119571f1ddc498d974b3321d697953a

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_82d45f968ebd4e7eba52e6b2c928ab48 BPMA-1 cluster_51a5a10bac724aba802ed8d97e30af4e BPMA-0 214e62e686834cdfb2e15fca3d2f15f2 0 8e02fa86ecce474bb84809b6e7cb718c RX(iia_α₀₀) 214e62e686834cdfb2e15fca3d2f15f2--8e02fa86ecce474bb84809b6e7cb718c 4f805de46f264a0c8b9f7af7c2700eed 1 4676b9096376431ca4cfc231e7e0b3df RY(iia_α₀₃) 8e02fa86ecce474bb84809b6e7cb718c--4676b9096376431ca4cfc231e7e0b3df d490b2569cbb4bf4ae29ee3252606c46 4676b9096376431ca4cfc231e7e0b3df--d490b2569cbb4bf4ae29ee3252606c46 ee2515a10ca64cf494f77d572694ebb7 d490b2569cbb4bf4ae29ee3252606c46--ee2515a10ca64cf494f77d572694ebb7 87b9729178da44cdbe82eabdb1c77706 RX(iia_γ₀₀) ee2515a10ca64cf494f77d572694ebb7--87b9729178da44cdbe82eabdb1c77706 29907455f3b145c18c8793a433dd979f 87b9729178da44cdbe82eabdb1c77706--29907455f3b145c18c8793a433dd979f 68c711799c35489492ce991b506e27e1 29907455f3b145c18c8793a433dd979f--68c711799c35489492ce991b506e27e1 132ebc042bd54a5c9d4a40099c6106e1 RY(iia_β₀₃) 68c711799c35489492ce991b506e27e1--132ebc042bd54a5c9d4a40099c6106e1 17eaeff8b2c6474a85681ac2e292e721 RX(iia_β₀₀) 132ebc042bd54a5c9d4a40099c6106e1--17eaeff8b2c6474a85681ac2e292e721 860e394094fc435f94ebc4aecbfdc2f0 RX(iia_α₁₀) 17eaeff8b2c6474a85681ac2e292e721--860e394094fc435f94ebc4aecbfdc2f0 2bb127a52e754fa6878825e472cdb9a8 RY(iia_α₁₃) 860e394094fc435f94ebc4aecbfdc2f0--2bb127a52e754fa6878825e472cdb9a8 f0f5b09d00b744e38af448af5c05a41b 2bb127a52e754fa6878825e472cdb9a8--f0f5b09d00b744e38af448af5c05a41b a8d7bd81a6b14fb2a75a37c41c86a93d f0f5b09d00b744e38af448af5c05a41b--a8d7bd81a6b14fb2a75a37c41c86a93d e30c7fed20b84798a7d33e49d2828cfc RX(iia_γ₁₀) a8d7bd81a6b14fb2a75a37c41c86a93d--e30c7fed20b84798a7d33e49d2828cfc 4d00aec0830d45a28ad9d990eb3841ed e30c7fed20b84798a7d33e49d2828cfc--4d00aec0830d45a28ad9d990eb3841ed a2328e521f51486ca6e5fb46b27bd634 4d00aec0830d45a28ad9d990eb3841ed--a2328e521f51486ca6e5fb46b27bd634 bc8a390006104f888b9dfe479a884d64 RY(iia_β₁₃) a2328e521f51486ca6e5fb46b27bd634--bc8a390006104f888b9dfe479a884d64 512e8f271882405e921ce72b8f1311b0 RX(iia_β₁₀) bc8a390006104f888b9dfe479a884d64--512e8f271882405e921ce72b8f1311b0 2883d87b28064215808a6e9dcb8fc84d 512e8f271882405e921ce72b8f1311b0--2883d87b28064215808a6e9dcb8fc84d 40d97eda04154cedb83dfac34846271a 9a02e87f1ce6462ea8f70adaf517d3e9 RX(iia_α₀₁) 4f805de46f264a0c8b9f7af7c2700eed--9a02e87f1ce6462ea8f70adaf517d3e9 25a841fe5a2b4264b9407c76f33ecbf3 2 83290990cf3e41dda898b0cd7d7952d4 RY(iia_α₀₄) 9a02e87f1ce6462ea8f70adaf517d3e9--83290990cf3e41dda898b0cd7d7952d4 69e4b396eb9c4412886e723d5fd69765 X 83290990cf3e41dda898b0cd7d7952d4--69e4b396eb9c4412886e723d5fd69765 69e4b396eb9c4412886e723d5fd69765--d490b2569cbb4bf4ae29ee3252606c46 8e52b58cba9149d2a416fd302bce282a 69e4b396eb9c4412886e723d5fd69765--8e52b58cba9149d2a416fd302bce282a 774b00a1e9ed4a0985a1a0d94138e53e RX(iia_γ₀₁) 8e52b58cba9149d2a416fd302bce282a--774b00a1e9ed4a0985a1a0d94138e53e 4711f440fc5d4cb4a4c5ec476500c12d 774b00a1e9ed4a0985a1a0d94138e53e--4711f440fc5d4cb4a4c5ec476500c12d d413c8b11f1a40f1a6049537635f2f6e X 4711f440fc5d4cb4a4c5ec476500c12d--d413c8b11f1a40f1a6049537635f2f6e d413c8b11f1a40f1a6049537635f2f6e--68c711799c35489492ce991b506e27e1 b6a5853060764ebb8a512587b67f0375 RY(iia_β₀₄) d413c8b11f1a40f1a6049537635f2f6e--b6a5853060764ebb8a512587b67f0375 d0e7f85353634853ae87aae9c40fa13e RX(iia_β₀₁) b6a5853060764ebb8a512587b67f0375--d0e7f85353634853ae87aae9c40fa13e f4b32a81903847cf841f21b8025306cd RX(iia_α₁₁) d0e7f85353634853ae87aae9c40fa13e--f4b32a81903847cf841f21b8025306cd 9a79dd7c9b4d455ebaadfa0a5fe227e5 RY(iia_α₁₄) f4b32a81903847cf841f21b8025306cd--9a79dd7c9b4d455ebaadfa0a5fe227e5 f95ea96e11e34ad69589c2141ab9e3bd X 9a79dd7c9b4d455ebaadfa0a5fe227e5--f95ea96e11e34ad69589c2141ab9e3bd f95ea96e11e34ad69589c2141ab9e3bd--f0f5b09d00b744e38af448af5c05a41b 3ad3454212bf4ccaa7b906e471899aaf f95ea96e11e34ad69589c2141ab9e3bd--3ad3454212bf4ccaa7b906e471899aaf 951b79d8b6014765a3e15ca5da53aa5a RX(iia_γ₁₁) 3ad3454212bf4ccaa7b906e471899aaf--951b79d8b6014765a3e15ca5da53aa5a eea5054b669c4252947522f63c9bf302 951b79d8b6014765a3e15ca5da53aa5a--eea5054b669c4252947522f63c9bf302 fb186dcedf1f4010afa2d7dba7082b67 X eea5054b669c4252947522f63c9bf302--fb186dcedf1f4010afa2d7dba7082b67 fb186dcedf1f4010afa2d7dba7082b67--a2328e521f51486ca6e5fb46b27bd634 f9bcd0f6730e4a1a905ac6f44930ad89 RY(iia_β₁₄) fb186dcedf1f4010afa2d7dba7082b67--f9bcd0f6730e4a1a905ac6f44930ad89 e5ae1f309e394de99bcbf0acb8d82c62 RX(iia_β₁₁) f9bcd0f6730e4a1a905ac6f44930ad89--e5ae1f309e394de99bcbf0acb8d82c62 e5ae1f309e394de99bcbf0acb8d82c62--40d97eda04154cedb83dfac34846271a 73d2601f666e43c58bb0328ff70915d9 627398ad462c4fe497d363aaf55d9672 RX(iia_α₀₂) 25a841fe5a2b4264b9407c76f33ecbf3--627398ad462c4fe497d363aaf55d9672 a285e7ebbc504f0082e9f54998eb611e RY(iia_α₀₅) 627398ad462c4fe497d363aaf55d9672--a285e7ebbc504f0082e9f54998eb611e 6f7fc6a64e304f669358a4c8688412f6 a285e7ebbc504f0082e9f54998eb611e--6f7fc6a64e304f669358a4c8688412f6 16fc3ab1a4004a9097fe2b17bdfd04e2 X 6f7fc6a64e304f669358a4c8688412f6--16fc3ab1a4004a9097fe2b17bdfd04e2 16fc3ab1a4004a9097fe2b17bdfd04e2--8e52b58cba9149d2a416fd302bce282a 22ea723e97524be0af4aacbf844569d5 RX(iia_γ₀₂) 16fc3ab1a4004a9097fe2b17bdfd04e2--22ea723e97524be0af4aacbf844569d5 0f090b6395a64fb2ade2737992659a9b X 22ea723e97524be0af4aacbf844569d5--0f090b6395a64fb2ade2737992659a9b 0f090b6395a64fb2ade2737992659a9b--4711f440fc5d4cb4a4c5ec476500c12d e71afadb6720455db530f364b11cf3ce 0f090b6395a64fb2ade2737992659a9b--e71afadb6720455db530f364b11cf3ce 35accaa686884ab994c6b2821ee44a7c RY(iia_β₀₅) e71afadb6720455db530f364b11cf3ce--35accaa686884ab994c6b2821ee44a7c 804e5268485a4edaaa028767ab2bab4f RX(iia_β₀₂) 35accaa686884ab994c6b2821ee44a7c--804e5268485a4edaaa028767ab2bab4f 974b58afa4184a2d9d5434f40316c119 RX(iia_α₁₂) 804e5268485a4edaaa028767ab2bab4f--974b58afa4184a2d9d5434f40316c119 efd953ad41a441c1baf20551fb8c9e9f RY(iia_α₁₅) 974b58afa4184a2d9d5434f40316c119--efd953ad41a441c1baf20551fb8c9e9f 8528e121971c4ca0b29dc55c00bc80de efd953ad41a441c1baf20551fb8c9e9f--8528e121971c4ca0b29dc55c00bc80de a3683b70e82d475d8cc61c4b8202ddb2 X 8528e121971c4ca0b29dc55c00bc80de--a3683b70e82d475d8cc61c4b8202ddb2 a3683b70e82d475d8cc61c4b8202ddb2--3ad3454212bf4ccaa7b906e471899aaf b09fe45c72e3474984201ebee639631a RX(iia_γ₁₂) a3683b70e82d475d8cc61c4b8202ddb2--b09fe45c72e3474984201ebee639631a b1f6c479db344915a404ab3064093cb3 X b09fe45c72e3474984201ebee639631a--b1f6c479db344915a404ab3064093cb3 b1f6c479db344915a404ab3064093cb3--eea5054b669c4252947522f63c9bf302 15770e3f249349ddba3cb904c8dc24d1 b1f6c479db344915a404ab3064093cb3--15770e3f249349ddba3cb904c8dc24d1 fa80027a68b0455e8a26effa73179681 RY(iia_β₁₅) 15770e3f249349ddba3cb904c8dc24d1--fa80027a68b0455e8a26effa73179681 595e97909c124d6ea87426102a8b39c1 RX(iia_β₁₂) fa80027a68b0455e8a26effa73179681--595e97909c124d6ea87426102a8b39c1 595e97909c124d6ea87426102a8b39c1--73d2601f666e43c58bb0328ff70915d9