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_5c70203a38b440fdb7e2974c3a415273 Constant Chebyshev FM cluster_2cedec270a5f4115bb1d90cc5c1d69f2 Constant Fourier FM ea505bffe54544fab9baa0905f786a47 0 f8a21633ad6047d19049c061e6ac8843 RX(phi) ea505bffe54544fab9baa0905f786a47--f8a21633ad6047d19049c061e6ac8843 2ef71dfef42c4089851166a38cccd2a1 1 187ffe8d2ae841a49d2f9c567d7836f6 RX(acos(phi)) f8a21633ad6047d19049c061e6ac8843--187ffe8d2ae841a49d2f9c567d7836f6 97578b7955d94c5c84faa6497f446ccc 187ffe8d2ae841a49d2f9c567d7836f6--97578b7955d94c5c84faa6497f446ccc 77252cfd677b42cc82d6073b75a3c353 65b13f058931410281f1082225019dc7 RX(phi) 2ef71dfef42c4089851166a38cccd2a1--65b13f058931410281f1082225019dc7 bc65a22f875945dea03e3e4960c458c9 2 01a40e6d1562415ca6af918d5eef055e RX(acos(phi)) 65b13f058931410281f1082225019dc7--01a40e6d1562415ca6af918d5eef055e 01a40e6d1562415ca6af918d5eef055e--77252cfd677b42cc82d6073b75a3c353 c325f8919a974bd79d000af81c477b7c f4c992d127294db39a9e37c80fa15857 RX(phi) bc65a22f875945dea03e3e4960c458c9--f4c992d127294db39a9e37c80fa15857 361c983820534f24ad8de5e4d7319a88 RX(acos(phi)) f4c992d127294db39a9e37c80fa15857--361c983820534f24ad8de5e4d7319a88 361c983820534f24ad8de5e4d7319a88--c325f8919a974bd79d000af81c477b7c

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_589f775eb2604e6fbdb7d7705028c5f5 Constant <function custom_fn at 0x7fecef0d4ca0> FM cluster_f7d296942af9441d8c2d817e24624024 Constant asin FM 5d79d648ad4c4d44b18531c186a897db 0 db5c6e7d11294722a0ee5c64efcea43e RX(asin(phi)) 5d79d648ad4c4d44b18531c186a897db--db5c6e7d11294722a0ee5c64efcea43e eca95f9ccff94ed98a5cb1beecae7724 1 7d1f7f1da0704d0b86dee2054d9652ef RX(phi**2 + asin(phi)) db5c6e7d11294722a0ee5c64efcea43e--7d1f7f1da0704d0b86dee2054d9652ef 87372cc95be94cde9fdbbc0e4128c35f 7d1f7f1da0704d0b86dee2054d9652ef--87372cc95be94cde9fdbbc0e4128c35f 517d5454a8a44a45a5ae78633ab98156 d4eeae19acdf4ad0a8ea576cafbcf27a RX(asin(phi)) eca95f9ccff94ed98a5cb1beecae7724--d4eeae19acdf4ad0a8ea576cafbcf27a 3d500a727dd04731a7a6ade0ba89d4af 2 cd3555da493e45babe829dfa01b78495 RX(phi**2 + asin(phi)) d4eeae19acdf4ad0a8ea576cafbcf27a--cd3555da493e45babe829dfa01b78495 cd3555da493e45babe829dfa01b78495--517d5454a8a44a45a5ae78633ab98156 e9fb0c6be05a4fb6a654ba31dfcf15e2 76f0dc2f41684c89b6f066e191923ef2 RX(asin(phi)) 3d500a727dd04731a7a6ade0ba89d4af--76f0dc2f41684c89b6f066e191923ef2 a161250775e14392a75cf7d7f164cb59 RX(phi**2 + asin(phi)) 76f0dc2f41684c89b6f066e191923ef2--a161250775e14392a75cf7d7f164cb59 a161250775e14392a75cf7d7f164cb59--e9fb0c6be05a4fb6a654ba31dfcf15e2

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_d9f4544c4cc54665b9d18198784cf2b5 Exponential Fourier FM cluster_1b670f2c703e4fa1b85849b869c2c702 Constant Fourier FM cluster_5136af7b4921406ca192e0a024268c81 Tower Fourier FM 5d5c149a9e6b41718b78b1950a8656ce 0 9f5601b03c434300ac9fa29a206d0bde RX(phi) 5d5c149a9e6b41718b78b1950a8656ce--9f5601b03c434300ac9fa29a206d0bde b0a5e6ef387748e4a565dc2cf225cd2a 1 7bc7fc3a5e4d46db943e31ae1fc3c3c1 RX(1.0*phi) 9f5601b03c434300ac9fa29a206d0bde--7bc7fc3a5e4d46db943e31ae1fc3c3c1 99376cf0eede439eb65dbc74311bdb34 RX(1.0*phi) 7bc7fc3a5e4d46db943e31ae1fc3c3c1--99376cf0eede439eb65dbc74311bdb34 3702040814fa4b5c9349869f8a250e78 99376cf0eede439eb65dbc74311bdb34--3702040814fa4b5c9349869f8a250e78 3cddc88da48a4feb8e54b91cb3d24595 6f2e3431fdbf459d84833fe77d899d12 RX(phi) b0a5e6ef387748e4a565dc2cf225cd2a--6f2e3431fdbf459d84833fe77d899d12 735c6b6486dd4c428b57174476dac2e9 2 c4062a2096b94cfca0cab398e893a491 RX(2.0*phi) 6f2e3431fdbf459d84833fe77d899d12--c4062a2096b94cfca0cab398e893a491 350c5caa7286427b94c443df60dcf252 RX(2.0*phi) c4062a2096b94cfca0cab398e893a491--350c5caa7286427b94c443df60dcf252 350c5caa7286427b94c443df60dcf252--3cddc88da48a4feb8e54b91cb3d24595 e5a1ca073e22486fbf0156d7096dde27 abc5501e85e64b1bb1863489b06f2934 RX(phi) 735c6b6486dd4c428b57174476dac2e9--abc5501e85e64b1bb1863489b06f2934 408a5ccb901d440fac56ac42f7a3e910 3 38eab0dc5be2492d802e4a0e539ff48f RX(3.0*phi) abc5501e85e64b1bb1863489b06f2934--38eab0dc5be2492d802e4a0e539ff48f 6378d0a3e52648bab8585b2586bbf84b RX(4.0*phi) 38eab0dc5be2492d802e4a0e539ff48f--6378d0a3e52648bab8585b2586bbf84b 6378d0a3e52648bab8585b2586bbf84b--e5a1ca073e22486fbf0156d7096dde27 28f71930e32f49849b8e7e474386f870 cdcc10edc2f7417aa39dba4d838316e3 RX(phi) 408a5ccb901d440fac56ac42f7a3e910--cdcc10edc2f7417aa39dba4d838316e3 b770336c4ebc43a8a49d1d827767413e 4 3b71fe69b821444fa00a4beb216944ed RX(4.0*phi) cdcc10edc2f7417aa39dba4d838316e3--3b71fe69b821444fa00a4beb216944ed e10d285226f441d692823e3eb06fd9a3 RX(8.0*phi) 3b71fe69b821444fa00a4beb216944ed--e10d285226f441d692823e3eb06fd9a3 e10d285226f441d692823e3eb06fd9a3--28f71930e32f49849b8e7e474386f870 1d70894c7d8743b6902529281d53ec83 727e1684e8114e989a770db04bead0f6 RX(phi) b770336c4ebc43a8a49d1d827767413e--727e1684e8114e989a770db04bead0f6 5b6a19ce4a4d48d7a87f25fcf49976aa RX(5.0*phi) 727e1684e8114e989a770db04bead0f6--5b6a19ce4a4d48d7a87f25fcf49976aa a91a59a07a3349a287a63611e4ac5602 RX(16.0*phi) 5b6a19ce4a4d48d7a87f25fcf49976aa--a91a59a07a3349a287a63611e4ac5602 a91a59a07a3349a287a63611e4ac5602--1d70894c7d8743b6902529281d53ec83

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 2eeda0cdff014b0c85e4ba6aeb297056 0 0478b34ad4a34b099813efe0d94f0594 RX(1.0*acos(phi)) 2eeda0cdff014b0c85e4ba6aeb297056--0478b34ad4a34b099813efe0d94f0594 79821e27808e43b286ea2e57a5ac9031 1 e3835c64b169406ab3a23f02a6240bcc 0478b34ad4a34b099813efe0d94f0594--e3835c64b169406ab3a23f02a6240bcc edf428b203e746419c01e885a1583a3b e1c3f671631e4890aaa52c0c95a498ad RX(1.414*acos(phi)) 79821e27808e43b286ea2e57a5ac9031--e1c3f671631e4890aaa52c0c95a498ad bff7e400b606401d905260bf505a3cda 2 e1c3f671631e4890aaa52c0c95a498ad--edf428b203e746419c01e885a1583a3b b581ba358c674a4881939dc8b705d8a5 a357e86215b94c659e0d1088baf1e174 RX(1.732*acos(phi)) bff7e400b606401d905260bf505a3cda--a357e86215b94c659e0d1088baf1e174 072b7080cf704bf0a36cb3109ee51018 3 a357e86215b94c659e0d1088baf1e174--b581ba358c674a4881939dc8b705d8a5 9cd56c4fd3ff4127b8b8b7ee643474ba f8be9b02b40e456dbf44e123158210f9 RX(2.0*acos(phi)) 072b7080cf704bf0a36cb3109ee51018--f8be9b02b40e456dbf44e123158210f9 565d30e986b34ffc9087dcb45bf9e751 4 f8be9b02b40e456dbf44e123158210f9--9cd56c4fd3ff4127b8b8b7ee643474ba c55e847e061747c881e09b1c8280eff1 b458774c23f841d2b2453e02dc354989 RX(2.236*acos(phi)) 565d30e986b34ffc9087dcb45bf9e751--b458774c23f841d2b2453e02dc354989 b458774c23f841d2b2453e02dc354989--c55e847e061747c881e09b1c8280eff1

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 ce7967c36034467a85246699d21b7cac 0 b77850ed2f7c40e9b01ba4aa0f6e4c4c RX(1.0*phi*w₀) ce7967c36034467a85246699d21b7cac--b77850ed2f7c40e9b01ba4aa0f6e4c4c 03d8e7711c264570ab0f03b462cc47d9 1 095517f10ed74338b052c5b33eada868 b77850ed2f7c40e9b01ba4aa0f6e4c4c--095517f10ed74338b052c5b33eada868 33dab809ff2e43a88e963ab1e4155fec 27914081f97f475b9bf5ab0b637a68ae RX(2.0*phi*w₁) 03d8e7711c264570ab0f03b462cc47d9--27914081f97f475b9bf5ab0b637a68ae e87617b60c4a4d43be48a58f07880b33 2 27914081f97f475b9bf5ab0b637a68ae--33dab809ff2e43a88e963ab1e4155fec 1800d50d45e94630a35ec85ede6c6bf6 267107d578bd4be3b912bac68da55e82 RX(4.0*phi*w₂) e87617b60c4a4d43be48a58f07880b33--267107d578bd4be3b912bac68da55e82 28a03efaa34c4ff7a543ef02b073f301 3 267107d578bd4be3b912bac68da55e82--1800d50d45e94630a35ec85ede6c6bf6 b6bf9762938d425698ad8baec9330903 1029b8726177475a9efdb367b8d1c8be RX(8.0*phi*w₃) 28a03efaa34c4ff7a543ef02b073f301--1029b8726177475a9efdb367b8d1c8be 64c8aaf3fc374c7a8399cdfe5e83de7b 4 1029b8726177475a9efdb367b8d1c8be--b6bf9762938d425698ad8baec9330903 653ba054632647abaaa92b2ec175d232 3d3114a44363483f99199944fd10f61a RX(16.0*phi*w₄) 64c8aaf3fc374c7a8399cdfe5e83de7b--3d3114a44363483f99199944fd10f61a 3d3114a44363483f99199944fd10f61a--653ba054632647abaaa92b2ec175d232

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 0b155500e70c4806931d18ee2f5fe29a 0 8bbb7ace60034d8bbcd5aefd2281f9b5 RY(80.0*acos(w₄*(0.667*x + 1.667))) 0b155500e70c4806931d18ee2f5fe29a--8bbb7ace60034d8bbcd5aefd2281f9b5 63262c2f8e8f4da38e30abfc9420a3fc 1 7af8dac6577f41c29d8a9849d6235e20 8bbb7ace60034d8bbcd5aefd2281f9b5--7af8dac6577f41c29d8a9849d6235e20 57a06886c5bf420789b0d91177821abd 2f0af56323dd453f87baa4b471eea22b RY(40.0*acos(w₃*(0.667*x + 1.667))) 63262c2f8e8f4da38e30abfc9420a3fc--2f0af56323dd453f87baa4b471eea22b 65e7bfd6c7bb4ce6aecbf185a9fded98 2 2f0af56323dd453f87baa4b471eea22b--57a06886c5bf420789b0d91177821abd 0fd2b78d7a7a4c3c922f690299ba2f29 cb16d5e0adaa43a79b9c80c29fd9e527 RY(20.0*acos(w₂*(0.667*x + 1.667))) 65e7bfd6c7bb4ce6aecbf185a9fded98--cb16d5e0adaa43a79b9c80c29fd9e527 9d3411b6994d4b18831026aba5b8dc38 3 cb16d5e0adaa43a79b9c80c29fd9e527--0fd2b78d7a7a4c3c922f690299ba2f29 5d288f1bd15d491c80f6f9db07c07f0a c1d3cf4677644da4a9e85d12f4fc7ea7 RY(10.0*acos(w₁*(0.667*x + 1.667))) 9d3411b6994d4b18831026aba5b8dc38--c1d3cf4677644da4a9e85d12f4fc7ea7 6c27aafeff274cd2913d67425a438c91 4 c1d3cf4677644da4a9e85d12f4fc7ea7--5d288f1bd15d491c80f6f9db07c07f0a 06e8d786ba4c4479a1bbfb00ce5cfbae 486b54916a674290afd7fd0b5294ee47 RY(5.0*acos(w₀*(0.667*x + 1.667))) 6c27aafeff274cd2913d67425a438c91--486b54916a674290afd7fd0b5294ee47 486b54916a674290afd7fd0b5294ee47--06e8d786ba4c4479a1bbfb00ce5cfbae

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 03f3b915c1d443beb9c821113f0e89a8 0 5a948e63e972402ba3cb5f0ea4b419f0 RX(theta₀) 03f3b915c1d443beb9c821113f0e89a8--5a948e63e972402ba3cb5f0ea4b419f0 23f5505879d647798f1a578803061488 1 26b83d078e574a1d9450c6f6ba71cd5b RY(theta₃) 5a948e63e972402ba3cb5f0ea4b419f0--26b83d078e574a1d9450c6f6ba71cd5b 3a4ee1cade024746a56fe54b9b8fd862 RX(theta₆) 26b83d078e574a1d9450c6f6ba71cd5b--3a4ee1cade024746a56fe54b9b8fd862 559ccbc1965849f68f2e8a265b752617 3a4ee1cade024746a56fe54b9b8fd862--559ccbc1965849f68f2e8a265b752617 5a0b7db070d748f6aed3f03425a289e2 559ccbc1965849f68f2e8a265b752617--5a0b7db070d748f6aed3f03425a289e2 37cd33ce84be49fbbf15ac37cddda2c7 RX(theta₉) 5a0b7db070d748f6aed3f03425a289e2--37cd33ce84be49fbbf15ac37cddda2c7 3dca33cef3b548868daa7e8f1476556c RY(theta₁₂) 37cd33ce84be49fbbf15ac37cddda2c7--3dca33cef3b548868daa7e8f1476556c dda8b93111774e50a6a48a1ea16c0cca RX(theta₁₅) 3dca33cef3b548868daa7e8f1476556c--dda8b93111774e50a6a48a1ea16c0cca 1d3fa77abaf84d2c95d7e7af550c93cb dda8b93111774e50a6a48a1ea16c0cca--1d3fa77abaf84d2c95d7e7af550c93cb 33fc8996b0ae4509af0df8d35d964de5 1d3fa77abaf84d2c95d7e7af550c93cb--33fc8996b0ae4509af0df8d35d964de5 fc00316c56a2433fbe7cfc256887771e 33fc8996b0ae4509af0df8d35d964de5--fc00316c56a2433fbe7cfc256887771e a2697a64056e4f06bbc5b9e39474d41c cb74a92b94ec40a5912944a6a3c9d621 RX(theta₁) 23f5505879d647798f1a578803061488--cb74a92b94ec40a5912944a6a3c9d621 87143886a2d74274b07d7e957b028b10 2 89f859e827ec46bc9a31e2e76229c6a1 RY(theta₄) cb74a92b94ec40a5912944a6a3c9d621--89f859e827ec46bc9a31e2e76229c6a1 2de5f0c39e0241d984de3a325c889f19 RX(theta₇) 89f859e827ec46bc9a31e2e76229c6a1--2de5f0c39e0241d984de3a325c889f19 eef85756640041e6b7be790ccfde570c X 2de5f0c39e0241d984de3a325c889f19--eef85756640041e6b7be790ccfde570c eef85756640041e6b7be790ccfde570c--559ccbc1965849f68f2e8a265b752617 0a5a265c32894619b5223df3d7247ebc eef85756640041e6b7be790ccfde570c--0a5a265c32894619b5223df3d7247ebc 9e0e08fa470e4fb68a335ac60b4eea39 RX(theta₁₀) 0a5a265c32894619b5223df3d7247ebc--9e0e08fa470e4fb68a335ac60b4eea39 f34c43dd29a145ba8db17b72e75663d2 RY(theta₁₃) 9e0e08fa470e4fb68a335ac60b4eea39--f34c43dd29a145ba8db17b72e75663d2 dc46e36bf5654502a4ce170623831286 RX(theta₁₆) f34c43dd29a145ba8db17b72e75663d2--dc46e36bf5654502a4ce170623831286 2ad9cd902dfd43daba193ebe1644568b X dc46e36bf5654502a4ce170623831286--2ad9cd902dfd43daba193ebe1644568b 2ad9cd902dfd43daba193ebe1644568b--1d3fa77abaf84d2c95d7e7af550c93cb 93520e41425e45998c6cf2e185e3a522 2ad9cd902dfd43daba193ebe1644568b--93520e41425e45998c6cf2e185e3a522 93520e41425e45998c6cf2e185e3a522--a2697a64056e4f06bbc5b9e39474d41c e1203bdc23dc4be3a76d0bd2835336ab 353c9aa872df49a99c57b175a66cb133 RX(theta₂) 87143886a2d74274b07d7e957b028b10--353c9aa872df49a99c57b175a66cb133 8a8b84a5934d4ace87b10b9470720a89 RY(theta₅) 353c9aa872df49a99c57b175a66cb133--8a8b84a5934d4ace87b10b9470720a89 17f2262cbc914c5785be760976eb3349 RX(theta₈) 8a8b84a5934d4ace87b10b9470720a89--17f2262cbc914c5785be760976eb3349 f338f790c83e4651b7f4fc981121f34f 17f2262cbc914c5785be760976eb3349--f338f790c83e4651b7f4fc981121f34f e7dfeefd658f4d05862e0ba5eea85d71 X f338f790c83e4651b7f4fc981121f34f--e7dfeefd658f4d05862e0ba5eea85d71 e7dfeefd658f4d05862e0ba5eea85d71--0a5a265c32894619b5223df3d7247ebc f9ee0ed87f10411eb72bb57454b08959 RX(theta₁₁) e7dfeefd658f4d05862e0ba5eea85d71--f9ee0ed87f10411eb72bb57454b08959 74943319d08b4f578490e3288b18c113 RY(theta₁₄) f9ee0ed87f10411eb72bb57454b08959--74943319d08b4f578490e3288b18c113 794c5d15b1404156ba100e1485fc39df RX(theta₁₇) 74943319d08b4f578490e3288b18c113--794c5d15b1404156ba100e1485fc39df 1b6e2eb913754cf39e5b4478ff28b5c3 794c5d15b1404156ba100e1485fc39df--1b6e2eb913754cf39e5b4478ff28b5c3 ef55b27d08ce47aa889eec2b7dff88b8 X 1b6e2eb913754cf39e5b4478ff28b5c3--ef55b27d08ce47aa889eec2b7dff88b8 ef55b27d08ce47aa889eec2b7dff88b8--93520e41425e45998c6cf2e185e3a522 ef55b27d08ce47aa889eec2b7dff88b8--e1203bdc23dc4be3a76d0bd2835336ab

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 e50d7c006574483cbc77838a7d76466d 0 a45021a7b5b1498a85ce08ed3448749f RX(phi₀) e50d7c006574483cbc77838a7d76466d--a45021a7b5b1498a85ce08ed3448749f 1dcb4f36bb07491cbf0468845041e581 1 625b697fe71346fbbdc5cf468d4627c9 RY(phi₃) a45021a7b5b1498a85ce08ed3448749f--625b697fe71346fbbdc5cf468d4627c9 4489c47672bf494ab0dc18fcc7148444 RX(phi₆) 625b697fe71346fbbdc5cf468d4627c9--4489c47672bf494ab0dc18fcc7148444 52a510cd03b04a8d991227a939701dcc 4489c47672bf494ab0dc18fcc7148444--52a510cd03b04a8d991227a939701dcc a22c98572bf04646b440b2841f64f1e4 52a510cd03b04a8d991227a939701dcc--a22c98572bf04646b440b2841f64f1e4 68ca5f3e93f44f37b0c386105ba37a0d RX(phi₉) a22c98572bf04646b440b2841f64f1e4--68ca5f3e93f44f37b0c386105ba37a0d ef001592bb4c4dfdb4e289cf204f3002 RY(phi₁₂) 68ca5f3e93f44f37b0c386105ba37a0d--ef001592bb4c4dfdb4e289cf204f3002 c3b286668bb6452ca44cc4618e030251 RX(phi₁₅) ef001592bb4c4dfdb4e289cf204f3002--c3b286668bb6452ca44cc4618e030251 e5e57002ba334d92a8cf9eee49e575c9 c3b286668bb6452ca44cc4618e030251--e5e57002ba334d92a8cf9eee49e575c9 50c9125a38da4475915704ab73a87c3b e5e57002ba334d92a8cf9eee49e575c9--50c9125a38da4475915704ab73a87c3b 9382198af0d047f4a2b9069344454a3d 50c9125a38da4475915704ab73a87c3b--9382198af0d047f4a2b9069344454a3d 529d07caba1d4e3782cc75eb9f6c6385 dffb17aee28d4da88474b8bf6cebc876 RX(phi₁) 1dcb4f36bb07491cbf0468845041e581--dffb17aee28d4da88474b8bf6cebc876 e32e22c1c7e1472b80bc0b38a75bf925 2 7fe466e6df9f46908dbda6fe2157d525 RY(phi₄) dffb17aee28d4da88474b8bf6cebc876--7fe466e6df9f46908dbda6fe2157d525 55308131d6f14553b2b5cd0d71dd64ef RX(phi₇) 7fe466e6df9f46908dbda6fe2157d525--55308131d6f14553b2b5cd0d71dd64ef ee6b7080e12540208f8d99ff8f90ad90 PHASE(phi_ent₀) 55308131d6f14553b2b5cd0d71dd64ef--ee6b7080e12540208f8d99ff8f90ad90 ee6b7080e12540208f8d99ff8f90ad90--52a510cd03b04a8d991227a939701dcc 46d372ae8b28439e93b66e71a2c23f36 ee6b7080e12540208f8d99ff8f90ad90--46d372ae8b28439e93b66e71a2c23f36 3d73f36065854717b3415641ef4606df RX(phi₁₀) 46d372ae8b28439e93b66e71a2c23f36--3d73f36065854717b3415641ef4606df 62d274c5fefb4c2baba92561755929c7 RY(phi₁₃) 3d73f36065854717b3415641ef4606df--62d274c5fefb4c2baba92561755929c7 6a2473effd8448aebab4ec59c85b310c RX(phi₁₆) 62d274c5fefb4c2baba92561755929c7--6a2473effd8448aebab4ec59c85b310c 527054975ce947458c064c63f374d369 PHASE(phi_ent₂) 6a2473effd8448aebab4ec59c85b310c--527054975ce947458c064c63f374d369 527054975ce947458c064c63f374d369--e5e57002ba334d92a8cf9eee49e575c9 994dc68fbab94c728433f15a7b56c049 527054975ce947458c064c63f374d369--994dc68fbab94c728433f15a7b56c049 994dc68fbab94c728433f15a7b56c049--529d07caba1d4e3782cc75eb9f6c6385 e364730f708c4a6f83ba9bc30ae1145b c1a68d9abf3f4fb68bc8ebb30eac1243 RX(phi₂) e32e22c1c7e1472b80bc0b38a75bf925--c1a68d9abf3f4fb68bc8ebb30eac1243 434b1bd112034c7d9f33b9f01c392238 RY(phi₅) c1a68d9abf3f4fb68bc8ebb30eac1243--434b1bd112034c7d9f33b9f01c392238 9a816da942c944ce8910993a295ea66e RX(phi₈) 434b1bd112034c7d9f33b9f01c392238--9a816da942c944ce8910993a295ea66e 65e37e3d66ed4e05887178bc2a0275dd 9a816da942c944ce8910993a295ea66e--65e37e3d66ed4e05887178bc2a0275dd 017c720856434958a6942e9976f464c9 PHASE(phi_ent₁) 65e37e3d66ed4e05887178bc2a0275dd--017c720856434958a6942e9976f464c9 017c720856434958a6942e9976f464c9--46d372ae8b28439e93b66e71a2c23f36 d6e3e881da15422fb433801b0cd29814 RX(phi₁₁) 017c720856434958a6942e9976f464c9--d6e3e881da15422fb433801b0cd29814 f8bc7a83970746bb807ed67f549f0d18 RY(phi₁₄) d6e3e881da15422fb433801b0cd29814--f8bc7a83970746bb807ed67f549f0d18 d4508104586f4eefa77f19c612876131 RX(phi₁₇) f8bc7a83970746bb807ed67f549f0d18--d4508104586f4eefa77f19c612876131 5286c2d1fd974f6d9dff5e2de0d13186 d4508104586f4eefa77f19c612876131--5286c2d1fd974f6d9dff5e2de0d13186 5d4362c4f9624ca3af6f429e4b64ba56 PHASE(phi_ent₃) 5286c2d1fd974f6d9dff5e2de0d13186--5d4362c4f9624ca3af6f429e4b64ba56 5d4362c4f9624ca3af6f429e4b64ba56--994dc68fbab94c728433f15a7b56c049 5d4362c4f9624ca3af6f429e4b64ba56--e364730f708c4a6f83ba9bc30ae1145b

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_9437d01b051746a1a8164f6102a3a8df cluster_b1e87b5d3f2042748225a6cdc5bfc4c1 d727d5a3890948f99e0a7c7ce5cdba4c 0 9bc365bde4fa450b9c1c040cc4d974d5 RX(theta₀) d727d5a3890948f99e0a7c7ce5cdba4c--9bc365bde4fa450b9c1c040cc4d974d5 170efd53b1414b4cb72dad74c902775b 1 84e062804c4443d490059bb3ce3bdcef RY(theta₃) 9bc365bde4fa450b9c1c040cc4d974d5--84e062804c4443d490059bb3ce3bdcef b2613470c27043abb8c465d831cf165d RX(theta₆) 84e062804c4443d490059bb3ce3bdcef--b2613470c27043abb8c465d831cf165d e4451a2e0add4d52a0c8d6d351ec5a1e HamEvo b2613470c27043abb8c465d831cf165d--e4451a2e0add4d52a0c8d6d351ec5a1e 9d3c9853ab9b442e8b7ac28daf23cba7 RX(theta₉) e4451a2e0add4d52a0c8d6d351ec5a1e--9d3c9853ab9b442e8b7ac28daf23cba7 b365ea91cccc49618a24a095e44e118a RY(theta₁₂) 9d3c9853ab9b442e8b7ac28daf23cba7--b365ea91cccc49618a24a095e44e118a 5444352afffd4c1eb963283f8d486720 RX(theta₁₅) b365ea91cccc49618a24a095e44e118a--5444352afffd4c1eb963283f8d486720 f20246e61a62400aad0f206ba28302fa HamEvo 5444352afffd4c1eb963283f8d486720--f20246e61a62400aad0f206ba28302fa 7e3a1f161b7844d5ad0b1d693855d3fb f20246e61a62400aad0f206ba28302fa--7e3a1f161b7844d5ad0b1d693855d3fb 5c6ed5ca9e654df8ab5c2bb85f60854f 886a6415f350419da3e3b9957fc300a8 RX(theta₁) 170efd53b1414b4cb72dad74c902775b--886a6415f350419da3e3b9957fc300a8 957657e2c0674f468a061e1d97927255 2 cbdd5af119204694a5939341d970c26b RY(theta₄) 886a6415f350419da3e3b9957fc300a8--cbdd5af119204694a5939341d970c26b 6b39887c16814ecd929760bb1cd84aab RX(theta₇) cbdd5af119204694a5939341d970c26b--6b39887c16814ecd929760bb1cd84aab 903d2074eadf441cae045975cdd95626 t = theta_t₀ 6b39887c16814ecd929760bb1cd84aab--903d2074eadf441cae045975cdd95626 e18cddae2e504da6af9c7aac2daa22aa RX(theta₁₀) 903d2074eadf441cae045975cdd95626--e18cddae2e504da6af9c7aac2daa22aa 32f397880f72404f8af2d45e8e6b8bdf RY(theta₁₃) e18cddae2e504da6af9c7aac2daa22aa--32f397880f72404f8af2d45e8e6b8bdf 7f62250db340467f96f6cadad03b7a4d RX(theta₁₆) 32f397880f72404f8af2d45e8e6b8bdf--7f62250db340467f96f6cadad03b7a4d f309ab9d95604b26912575a7992fc935 t = theta_t₁ 7f62250db340467f96f6cadad03b7a4d--f309ab9d95604b26912575a7992fc935 f309ab9d95604b26912575a7992fc935--5c6ed5ca9e654df8ab5c2bb85f60854f 4cf65befd20d426cb0b1e4d8ec203eea d811ced16f3d4fce8ec5aaa333ab62e1 RX(theta₂) 957657e2c0674f468a061e1d97927255--d811ced16f3d4fce8ec5aaa333ab62e1 8bbf0e216adc4b9da7527769c7cef55d RY(theta₅) d811ced16f3d4fce8ec5aaa333ab62e1--8bbf0e216adc4b9da7527769c7cef55d 518ada3e68fa41538c8ecf0eeaf94cac RX(theta₈) 8bbf0e216adc4b9da7527769c7cef55d--518ada3e68fa41538c8ecf0eeaf94cac ea1bb130f1b64977aae5d87276e7c22a 518ada3e68fa41538c8ecf0eeaf94cac--ea1bb130f1b64977aae5d87276e7c22a 3c91706bf3c84163aa08a9258205d3e5 RX(theta₁₁) ea1bb130f1b64977aae5d87276e7c22a--3c91706bf3c84163aa08a9258205d3e5 9c207348fc034ea2832c1ae9c1a25a32 RY(theta₁₄) 3c91706bf3c84163aa08a9258205d3e5--9c207348fc034ea2832c1ae9c1a25a32 bd38913191f548d08070873ef483d635 RX(theta₁₇) 9c207348fc034ea2832c1ae9c1a25a32--bd38913191f548d08070873ef483d635 63c86534237e4c8ab61f7b7d13c8f22b bd38913191f548d08070873ef483d635--63c86534237e4c8ab61f7b7d13c8f22b 63c86534237e4c8ab61f7b7d13c8f22b--4cf65befd20d426cb0b1e4d8ec203eea

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_799098771b864d0b8573686dfcfd930f cluster_c20c878438014180be4f9fe2e9356f15 222c1ccbeff7458998dc38d109396be8 0 9f9301d2ad4944398ed83bb0fc46923e RX(theta₀) 222c1ccbeff7458998dc38d109396be8--9f9301d2ad4944398ed83bb0fc46923e b71d2d20f7a7448ba8314745f8ed2708 1 5a7294947a7342fa9f6f890c23bb8205 RY(theta₆) 9f9301d2ad4944398ed83bb0fc46923e--5a7294947a7342fa9f6f890c23bb8205 365be5496ff847d7a841b1ae1bc689d7 RX(theta₁₂) 5a7294947a7342fa9f6f890c23bb8205--365be5496ff847d7a841b1ae1bc689d7 4d2867f266934cffb768aaca69377fda 365be5496ff847d7a841b1ae1bc689d7--4d2867f266934cffb768aaca69377fda 9d47eb8e44414937833762bbe45744b2 RX(theta₁₈) 4d2867f266934cffb768aaca69377fda--9d47eb8e44414937833762bbe45744b2 0ce0714676a14964bcc609c5131e5360 RY(theta₂₄) 9d47eb8e44414937833762bbe45744b2--0ce0714676a14964bcc609c5131e5360 49babe43e7f3473fbd53557179060c11 RX(theta₃₀) 0ce0714676a14964bcc609c5131e5360--49babe43e7f3473fbd53557179060c11 f153b1c468ec4319a846c07392f14a88 49babe43e7f3473fbd53557179060c11--f153b1c468ec4319a846c07392f14a88 a9ce1e1f8512497180fe490849f49480 f153b1c468ec4319a846c07392f14a88--a9ce1e1f8512497180fe490849f49480 52f05be0841246cf9ab7a2136feefa1f fddee5d8feb54b7590aa7781c4196452 RX(theta₁) b71d2d20f7a7448ba8314745f8ed2708--fddee5d8feb54b7590aa7781c4196452 d7ff7b61d2e64476b7ce39b505239ce3 2 04d74393f55c401d96961d2af181ee77 RY(theta₇) fddee5d8feb54b7590aa7781c4196452--04d74393f55c401d96961d2af181ee77 df7b2e6573cb4a98a1570064158d877a RX(theta₁₃) 04d74393f55c401d96961d2af181ee77--df7b2e6573cb4a98a1570064158d877a 65c207ac59df4aa8a1241aee9aaa1cb1 df7b2e6573cb4a98a1570064158d877a--65c207ac59df4aa8a1241aee9aaa1cb1 823a2cf3d4de494dbdb6148d199546ef RX(theta₁₉) 65c207ac59df4aa8a1241aee9aaa1cb1--823a2cf3d4de494dbdb6148d199546ef 2f8219a2be4a4100abc481473a083398 RY(theta₂₅) 823a2cf3d4de494dbdb6148d199546ef--2f8219a2be4a4100abc481473a083398 cebfa87f6e37442b8793f5e729b1d4d6 RX(theta₃₁) 2f8219a2be4a4100abc481473a083398--cebfa87f6e37442b8793f5e729b1d4d6 744534cbb7ab4cf2bbee46a9497555f0 cebfa87f6e37442b8793f5e729b1d4d6--744534cbb7ab4cf2bbee46a9497555f0 744534cbb7ab4cf2bbee46a9497555f0--52f05be0841246cf9ab7a2136feefa1f 4960dc2e62f94c9881ec7e27e3408f0b 7eff08bc313040579f28216de1196eb6 RX(theta₂) d7ff7b61d2e64476b7ce39b505239ce3--7eff08bc313040579f28216de1196eb6 e4de8855ee2a429a9804d2c9cdc9e084 3 890b940d004b46a1a0a7cfe82ad6f560 RY(theta₈) 7eff08bc313040579f28216de1196eb6--890b940d004b46a1a0a7cfe82ad6f560 fd6d4d33bf4e477b9443231b6c3a5d4d RX(theta₁₄) 890b940d004b46a1a0a7cfe82ad6f560--fd6d4d33bf4e477b9443231b6c3a5d4d 6fb94e284c384991bf1c5c83bffce2ad HamEvo fd6d4d33bf4e477b9443231b6c3a5d4d--6fb94e284c384991bf1c5c83bffce2ad 003bbe36374c46599cfb49c479cb326a RX(theta₂₀) 6fb94e284c384991bf1c5c83bffce2ad--003bbe36374c46599cfb49c479cb326a dd41768ffe3d49f0b5891d703e111d95 RY(theta₂₆) 003bbe36374c46599cfb49c479cb326a--dd41768ffe3d49f0b5891d703e111d95 9a6cd5b2e39442faa9b637456c9d51f6 RX(theta₃₂) dd41768ffe3d49f0b5891d703e111d95--9a6cd5b2e39442faa9b637456c9d51f6 e26536d12ba14c6aa499faf8185710fe HamEvo 9a6cd5b2e39442faa9b637456c9d51f6--e26536d12ba14c6aa499faf8185710fe e26536d12ba14c6aa499faf8185710fe--4960dc2e62f94c9881ec7e27e3408f0b 41ddfca4ea2142978ef865ec06eed7c6 160a972bf8834b50a811485a9f02525d RX(theta₃) e4de8855ee2a429a9804d2c9cdc9e084--160a972bf8834b50a811485a9f02525d 5dcce922555d4ce189f461f8ed538e9e 4 f9add111ef1143ec9715bd4423f07f70 RY(theta₉) 160a972bf8834b50a811485a9f02525d--f9add111ef1143ec9715bd4423f07f70 84c51ced39e64ba38ad5fc6082c3173b RX(theta₁₅) f9add111ef1143ec9715bd4423f07f70--84c51ced39e64ba38ad5fc6082c3173b 6d09ce9544d04627aa1ec63738c88cbd t = theta_t₀ 84c51ced39e64ba38ad5fc6082c3173b--6d09ce9544d04627aa1ec63738c88cbd 57c3d73a5c304f779717b336b409da01 RX(theta₂₁) 6d09ce9544d04627aa1ec63738c88cbd--57c3d73a5c304f779717b336b409da01 12ee995a137a42caa74fb443ff992d5f RY(theta₂₇) 57c3d73a5c304f779717b336b409da01--12ee995a137a42caa74fb443ff992d5f c5b5ce75eb4e4f3e863ddb5b9c8b6de5 RX(theta₃₃) 12ee995a137a42caa74fb443ff992d5f--c5b5ce75eb4e4f3e863ddb5b9c8b6de5 cef4009ef120415b9b9874a60ef2cfe5 t = theta_t₁ c5b5ce75eb4e4f3e863ddb5b9c8b6de5--cef4009ef120415b9b9874a60ef2cfe5 cef4009ef120415b9b9874a60ef2cfe5--41ddfca4ea2142978ef865ec06eed7c6 f9becd16ae724cc995bd1000f6896999 13e1337d67da4dbf892a4db13fb016a1 RX(theta₄) 5dcce922555d4ce189f461f8ed538e9e--13e1337d67da4dbf892a4db13fb016a1 a3f41178e4074844b0841a0442f9e548 5 9a0bf35931914feab46cf0ed2be5d75d RY(theta₁₀) 13e1337d67da4dbf892a4db13fb016a1--9a0bf35931914feab46cf0ed2be5d75d 53889f84e69949e6bcddd493110d747d RX(theta₁₆) 9a0bf35931914feab46cf0ed2be5d75d--53889f84e69949e6bcddd493110d747d f99da17e03674a44ab10a6240c4fe5a3 53889f84e69949e6bcddd493110d747d--f99da17e03674a44ab10a6240c4fe5a3 c4c195e2da5445d0984e9b65a5a01080 RX(theta₂₂) f99da17e03674a44ab10a6240c4fe5a3--c4c195e2da5445d0984e9b65a5a01080 32b9435707ce4fba976f427075c2b16c RY(theta₂₈) c4c195e2da5445d0984e9b65a5a01080--32b9435707ce4fba976f427075c2b16c fc10f359895d42b1956d39767c54d89b RX(theta₃₄) 32b9435707ce4fba976f427075c2b16c--fc10f359895d42b1956d39767c54d89b 54541a12e8864fe09098006d5b01294a fc10f359895d42b1956d39767c54d89b--54541a12e8864fe09098006d5b01294a 54541a12e8864fe09098006d5b01294a--f9becd16ae724cc995bd1000f6896999 297d7f68342d428697d27562c6723afd 486312cf5a7143e78a267fa10e823120 RX(theta₅) a3f41178e4074844b0841a0442f9e548--486312cf5a7143e78a267fa10e823120 8a656eebc43b478dbf48a9693cc2db36 RY(theta₁₁) 486312cf5a7143e78a267fa10e823120--8a656eebc43b478dbf48a9693cc2db36 cee97b7aa0e14ef89f9fa9a2477b8332 RX(theta₁₇) 8a656eebc43b478dbf48a9693cc2db36--cee97b7aa0e14ef89f9fa9a2477b8332 7eb0787408734db0959e5be4aa366998 cee97b7aa0e14ef89f9fa9a2477b8332--7eb0787408734db0959e5be4aa366998 f940f8cf1cc44fbda9775d763837f922 RX(theta₂₃) 7eb0787408734db0959e5be4aa366998--f940f8cf1cc44fbda9775d763837f922 65e7e57f2d984ec4bd11b9a6d5957514 RY(theta₂₉) f940f8cf1cc44fbda9775d763837f922--65e7e57f2d984ec4bd11b9a6d5957514 eb2ec088d62b4e9f92971a8665f86e79 RX(theta₃₅) 65e7e57f2d984ec4bd11b9a6d5957514--eb2ec088d62b4e9f92971a8665f86e79 0fc4bab208e44f3f8fd0dc631f579a83 eb2ec088d62b4e9f92971a8665f86e79--0fc4bab208e44f3f8fd0dc631f579a83 0fc4bab208e44f3f8fd0dc631f579a83--297d7f68342d428697d27562c6723afd

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_52924742cea5413c949229035a22298d BPMA-1 cluster_2b1e1597aa3c46699c4c3d5304ba3382 BPMA-0 77e5fe03b77c45eb8c4d07d69cca4474 0 75baad560499479f812cb3132b6d4b47 RX(iia_α₀₀) 77e5fe03b77c45eb8c4d07d69cca4474--75baad560499479f812cb3132b6d4b47 8272bdae5cef40a8aa9a7b2e7134e889 1 bccad5578d6c48dd999af3b51bbd853f RY(iia_α₀₃) 75baad560499479f812cb3132b6d4b47--bccad5578d6c48dd999af3b51bbd853f 895195cbc4be4d74bf3938bab5da8f51 bccad5578d6c48dd999af3b51bbd853f--895195cbc4be4d74bf3938bab5da8f51 00b76c95f8b346ff843418dc0cb7fdf5 895195cbc4be4d74bf3938bab5da8f51--00b76c95f8b346ff843418dc0cb7fdf5 7915c55d4053401b82592fb764583d6c RX(iia_γ₀₀) 00b76c95f8b346ff843418dc0cb7fdf5--7915c55d4053401b82592fb764583d6c ac694491773d4aa4a8fa5998a92a4857 7915c55d4053401b82592fb764583d6c--ac694491773d4aa4a8fa5998a92a4857 1008c6afabaf41a3ab37ba87c328b42e ac694491773d4aa4a8fa5998a92a4857--1008c6afabaf41a3ab37ba87c328b42e 77d108714838424ebaf77fc2b98236f0 RY(iia_β₀₃) 1008c6afabaf41a3ab37ba87c328b42e--77d108714838424ebaf77fc2b98236f0 e6acefe50f7f4957a1e5979bb27de5cb RX(iia_β₀₀) 77d108714838424ebaf77fc2b98236f0--e6acefe50f7f4957a1e5979bb27de5cb 00d1e2840dc84720883b4d088b9fd685 RX(iia_α₁₀) e6acefe50f7f4957a1e5979bb27de5cb--00d1e2840dc84720883b4d088b9fd685 0717f9c953d445d3a2caf2c474462de6 RY(iia_α₁₃) 00d1e2840dc84720883b4d088b9fd685--0717f9c953d445d3a2caf2c474462de6 cfba46016ee94cd38a805ed56367aea1 0717f9c953d445d3a2caf2c474462de6--cfba46016ee94cd38a805ed56367aea1 dd39745ab32346e2a99e34d4708e0bbb cfba46016ee94cd38a805ed56367aea1--dd39745ab32346e2a99e34d4708e0bbb 82138f77868241459a17e04f7e02cd5b RX(iia_γ₁₀) dd39745ab32346e2a99e34d4708e0bbb--82138f77868241459a17e04f7e02cd5b 58e87efa79c248d0bade8afd2afb3a90 82138f77868241459a17e04f7e02cd5b--58e87efa79c248d0bade8afd2afb3a90 21e9e7d85a7847cea82d2eca30236d9e 58e87efa79c248d0bade8afd2afb3a90--21e9e7d85a7847cea82d2eca30236d9e bf051a495b6e43b7b168be268572de6b RY(iia_β₁₃) 21e9e7d85a7847cea82d2eca30236d9e--bf051a495b6e43b7b168be268572de6b 2eacabb209fc48d3a1f90d052bc7826d RX(iia_β₁₀) bf051a495b6e43b7b168be268572de6b--2eacabb209fc48d3a1f90d052bc7826d 9098b4a8afae44468e0275e0af4b1db0 2eacabb209fc48d3a1f90d052bc7826d--9098b4a8afae44468e0275e0af4b1db0 5337cb7857044907be4a6d44927c6bdf c3f9a39de78b41419e3f7d7e2d444b6a RX(iia_α₀₁) 8272bdae5cef40a8aa9a7b2e7134e889--c3f9a39de78b41419e3f7d7e2d444b6a 7283e650ac40423280a4d095944b5576 2 31550d214a3c4b99b33301eb29890f92 RY(iia_α₀₄) c3f9a39de78b41419e3f7d7e2d444b6a--31550d214a3c4b99b33301eb29890f92 b35a1dc54d1244538b5a23b307fd6325 X 31550d214a3c4b99b33301eb29890f92--b35a1dc54d1244538b5a23b307fd6325 b35a1dc54d1244538b5a23b307fd6325--895195cbc4be4d74bf3938bab5da8f51 f78200e809e3466e98ab7418dcb521dd b35a1dc54d1244538b5a23b307fd6325--f78200e809e3466e98ab7418dcb521dd 2a17d23620924113ae4f5105d8896cd3 RX(iia_γ₀₁) f78200e809e3466e98ab7418dcb521dd--2a17d23620924113ae4f5105d8896cd3 579a5c71035e40078e84cd0895bc4912 2a17d23620924113ae4f5105d8896cd3--579a5c71035e40078e84cd0895bc4912 77a15a0900814723aabb7990be30da64 X 579a5c71035e40078e84cd0895bc4912--77a15a0900814723aabb7990be30da64 77a15a0900814723aabb7990be30da64--1008c6afabaf41a3ab37ba87c328b42e 660978d6d6214b05b840a63e32bfbb56 RY(iia_β₀₄) 77a15a0900814723aabb7990be30da64--660978d6d6214b05b840a63e32bfbb56 7d6d439ae70b4b9898685f2db56d917b RX(iia_β₀₁) 660978d6d6214b05b840a63e32bfbb56--7d6d439ae70b4b9898685f2db56d917b a10442ecc223473291bfb98fb1ed7eab RX(iia_α₁₁) 7d6d439ae70b4b9898685f2db56d917b--a10442ecc223473291bfb98fb1ed7eab 02be1f4d07db461ba56e8008a9668ca2 RY(iia_α₁₄) a10442ecc223473291bfb98fb1ed7eab--02be1f4d07db461ba56e8008a9668ca2 a31124fee9bf458980660950b5464e5b X 02be1f4d07db461ba56e8008a9668ca2--a31124fee9bf458980660950b5464e5b a31124fee9bf458980660950b5464e5b--cfba46016ee94cd38a805ed56367aea1 e3773b72f21145d892f36c51fbaea97a a31124fee9bf458980660950b5464e5b--e3773b72f21145d892f36c51fbaea97a a146076c4dd04165b3c65164bc17627a RX(iia_γ₁₁) e3773b72f21145d892f36c51fbaea97a--a146076c4dd04165b3c65164bc17627a b0d7667439a3435aa4682dc382de310d a146076c4dd04165b3c65164bc17627a--b0d7667439a3435aa4682dc382de310d 7bcf744ccf524ea5867604474b2220ad X b0d7667439a3435aa4682dc382de310d--7bcf744ccf524ea5867604474b2220ad 7bcf744ccf524ea5867604474b2220ad--21e9e7d85a7847cea82d2eca30236d9e 299a4515427d4ff58db83d64c31b0b1b RY(iia_β₁₄) 7bcf744ccf524ea5867604474b2220ad--299a4515427d4ff58db83d64c31b0b1b 4fd95697e6b641e9b80c314ae3683e89 RX(iia_β₁₁) 299a4515427d4ff58db83d64c31b0b1b--4fd95697e6b641e9b80c314ae3683e89 4fd95697e6b641e9b80c314ae3683e89--5337cb7857044907be4a6d44927c6bdf e534a2a9e4b54941ac97abcdc8f78963 d3df0557537e4e349364c402367e239c RX(iia_α₀₂) 7283e650ac40423280a4d095944b5576--d3df0557537e4e349364c402367e239c 686fcdbe61564a81b168c0768981c4aa RY(iia_α₀₅) d3df0557537e4e349364c402367e239c--686fcdbe61564a81b168c0768981c4aa 704b63b663f74e24a3bebe51c098d098 686fcdbe61564a81b168c0768981c4aa--704b63b663f74e24a3bebe51c098d098 676cb9f9157348d383c75958d4517eff X 704b63b663f74e24a3bebe51c098d098--676cb9f9157348d383c75958d4517eff 676cb9f9157348d383c75958d4517eff--f78200e809e3466e98ab7418dcb521dd d46bcea9317040819ad7fee6e7b9b471 RX(iia_γ₀₂) 676cb9f9157348d383c75958d4517eff--d46bcea9317040819ad7fee6e7b9b471 af5923e02eb14b42adf97ba92b945e96 X d46bcea9317040819ad7fee6e7b9b471--af5923e02eb14b42adf97ba92b945e96 af5923e02eb14b42adf97ba92b945e96--579a5c71035e40078e84cd0895bc4912 a4090b422d424bb899ca7931b30fadd5 af5923e02eb14b42adf97ba92b945e96--a4090b422d424bb899ca7931b30fadd5 9769922e82364316b4a1d22280d18a4f RY(iia_β₀₅) a4090b422d424bb899ca7931b30fadd5--9769922e82364316b4a1d22280d18a4f 4cf26797e73b42d2b30e0b9843dcd9b3 RX(iia_β₀₂) 9769922e82364316b4a1d22280d18a4f--4cf26797e73b42d2b30e0b9843dcd9b3 13ddc61f0839475ba69fd853d73a705b RX(iia_α₁₂) 4cf26797e73b42d2b30e0b9843dcd9b3--13ddc61f0839475ba69fd853d73a705b aab50f5bd7974f05ac6501a3770dd3f1 RY(iia_α₁₅) 13ddc61f0839475ba69fd853d73a705b--aab50f5bd7974f05ac6501a3770dd3f1 ee779eaee02a43b09e4f1b4cb1c9fcba aab50f5bd7974f05ac6501a3770dd3f1--ee779eaee02a43b09e4f1b4cb1c9fcba 290e4d26bc3e4553a017cd19fc035c80 X ee779eaee02a43b09e4f1b4cb1c9fcba--290e4d26bc3e4553a017cd19fc035c80 290e4d26bc3e4553a017cd19fc035c80--e3773b72f21145d892f36c51fbaea97a 8c6f9524de94469f83b8666eb8b6edea RX(iia_γ₁₂) 290e4d26bc3e4553a017cd19fc035c80--8c6f9524de94469f83b8666eb8b6edea e6e4f25d8e1d41c496bae818174cfaef X 8c6f9524de94469f83b8666eb8b6edea--e6e4f25d8e1d41c496bae818174cfaef e6e4f25d8e1d41c496bae818174cfaef--b0d7667439a3435aa4682dc382de310d 34639c64fb8046a5afe62434ddd75463 e6e4f25d8e1d41c496bae818174cfaef--34639c64fb8046a5afe62434ddd75463 52690da2a13d48a2a46814821521c6a0 RY(iia_β₁₅) 34639c64fb8046a5afe62434ddd75463--52690da2a13d48a2a46814821521c6a0 de94addb692d4f4596f1b6b62c7ab71e RX(iia_β₁₂) 52690da2a13d48a2a46814821521c6a0--de94addb692d4f4596f1b6b62c7ab71e de94addb692d4f4596f1b6b62c7ab71e--e534a2a9e4b54941ac97abcdc8f78963