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_14f6b590ff2941298f42c67ae7470cb3 Constant Chebyshev FM cluster_92328fac64dd46e0bb6c207a29224d5c Constant Fourier FM 1791de53183b4821b8e07890e4640a56 0 30eb1b663fcf47ff8745a4028fdc4ee5 RX(phi) 1791de53183b4821b8e07890e4640a56--30eb1b663fcf47ff8745a4028fdc4ee5 e78c9af10591440ab78fc3e80a9db80b 1 dbfb2d90ef714f9eb1faf1e24fc5e93f RX(acos(phi)) 30eb1b663fcf47ff8745a4028fdc4ee5--dbfb2d90ef714f9eb1faf1e24fc5e93f aaf04984be464dda8c64690dcd858456 dbfb2d90ef714f9eb1faf1e24fc5e93f--aaf04984be464dda8c64690dcd858456 d9324f1607a94cc8af066f10027146b5 5d6cdae01f0f48e3ac78b229fae67d57 RX(phi) e78c9af10591440ab78fc3e80a9db80b--5d6cdae01f0f48e3ac78b229fae67d57 09dd27abac4948ca9f60d65cdab872a5 2 ab011143ca2749acae92974b83747509 RX(acos(phi)) 5d6cdae01f0f48e3ac78b229fae67d57--ab011143ca2749acae92974b83747509 ab011143ca2749acae92974b83747509--d9324f1607a94cc8af066f10027146b5 acddc9befe894b18a78441e2b6c40a65 c4e7d241dd1145f5830d79abf21f01e7 RX(phi) 09dd27abac4948ca9f60d65cdab872a5--c4e7d241dd1145f5830d79abf21f01e7 a5e713494a594c6c903cfca3738a65c0 RX(acos(phi)) c4e7d241dd1145f5830d79abf21f01e7--a5e713494a594c6c903cfca3738a65c0 a5e713494a594c6c903cfca3738a65c0--acddc9befe894b18a78441e2b6c40a65

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_02f18673560f470892035672cf41a6fb Constant <function custom_fn at 0x7fa5712ec9d0> FM cluster_a4d3ef299dc4429ba78dbde80cf95a4b Constant asin FM b1b3e22958d540978d0bd4f2251c0d80 0 3568413b94054a7da4aa4b6dd19389f8 RX(asin(phi)) b1b3e22958d540978d0bd4f2251c0d80--3568413b94054a7da4aa4b6dd19389f8 1d1b120001ec4958b43660c0f667ec08 1 1087d6f1a7984a90b34d894e5876d931 RX(phi**2 + asin(phi)) 3568413b94054a7da4aa4b6dd19389f8--1087d6f1a7984a90b34d894e5876d931 e41c2e7d867e4248bb7dd7a82bcc3275 1087d6f1a7984a90b34d894e5876d931--e41c2e7d867e4248bb7dd7a82bcc3275 a840b8917d9c4bb58908e024b02142b1 985e70fa5b0d497999a8cf82ac3dac5c RX(asin(phi)) 1d1b120001ec4958b43660c0f667ec08--985e70fa5b0d497999a8cf82ac3dac5c ed0814620f234315bfde9d64b64a4f92 2 08230fa2caad4d7caf3b8883914642f2 RX(phi**2 + asin(phi)) 985e70fa5b0d497999a8cf82ac3dac5c--08230fa2caad4d7caf3b8883914642f2 08230fa2caad4d7caf3b8883914642f2--a840b8917d9c4bb58908e024b02142b1 e5186f50bae0410d862fabd67407c543 f1181c34758e49c79ccc2896ff9f6f01 RX(asin(phi)) ed0814620f234315bfde9d64b64a4f92--f1181c34758e49c79ccc2896ff9f6f01 7ef9dafd5b574389a30ccf8945443b81 RX(phi**2 + asin(phi)) f1181c34758e49c79ccc2896ff9f6f01--7ef9dafd5b574389a30ccf8945443b81 7ef9dafd5b574389a30ccf8945443b81--e5186f50bae0410d862fabd67407c543

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_ad68f74fb56f400e906a6e712e149946 Exponential Fourier FM cluster_4a8c4807e4d44716afc61a3fad854ba3 Constant Fourier FM cluster_5e0baef3681d483dbdc7b2d4c425ba51 Tower Fourier FM 8812a663954a4fbf85aa452765334591 0 f4c4621976744608a6e7877ab7f98050 RX(phi) 8812a663954a4fbf85aa452765334591--f4c4621976744608a6e7877ab7f98050 edaf5d331fc340eb8326aec769f8e139 1 ece1058ba56c41f7a90d03a0744f7319 RX(1.0*phi) f4c4621976744608a6e7877ab7f98050--ece1058ba56c41f7a90d03a0744f7319 05ea6cf58b5e4b04be41e62d3f7120a5 RX(1.0*phi) ece1058ba56c41f7a90d03a0744f7319--05ea6cf58b5e4b04be41e62d3f7120a5 4130d03dcd8a4cb99c1c427f5077e5da 05ea6cf58b5e4b04be41e62d3f7120a5--4130d03dcd8a4cb99c1c427f5077e5da 2f3290701e4745f0b83be9c0f567083f c32d66558e3a4cef8886332164385069 RX(phi) edaf5d331fc340eb8326aec769f8e139--c32d66558e3a4cef8886332164385069 7098de06045a48a5bcec27a66636e493 2 f7fb6b0dea914e429d7e0dc25bdfd632 RX(2.0*phi) c32d66558e3a4cef8886332164385069--f7fb6b0dea914e429d7e0dc25bdfd632 d95c6dcb37284b22996e56a52de61376 RX(2.0*phi) f7fb6b0dea914e429d7e0dc25bdfd632--d95c6dcb37284b22996e56a52de61376 d95c6dcb37284b22996e56a52de61376--2f3290701e4745f0b83be9c0f567083f 3044aca9788243abb5fe13cea0437afc 6212542378d3402fae5b7169bba09f70 RX(phi) 7098de06045a48a5bcec27a66636e493--6212542378d3402fae5b7169bba09f70 db63c9eaad9b4fefb6a8e166ec4dd678 3 ddc46f604d2a499bad90a13bf8e1a89b RX(3.0*phi) 6212542378d3402fae5b7169bba09f70--ddc46f604d2a499bad90a13bf8e1a89b 1163b0d01866499dbfe2a4602e8b5788 RX(4.0*phi) ddc46f604d2a499bad90a13bf8e1a89b--1163b0d01866499dbfe2a4602e8b5788 1163b0d01866499dbfe2a4602e8b5788--3044aca9788243abb5fe13cea0437afc b54b7e772d7c4dfb920a2a724c9e0b1d 134ad906dee446cba5859812634717d6 RX(phi) db63c9eaad9b4fefb6a8e166ec4dd678--134ad906dee446cba5859812634717d6 7db35cd8a27f488194d1380b9161cb1f 4 092fa2a110da4df696b0518dae62b519 RX(4.0*phi) 134ad906dee446cba5859812634717d6--092fa2a110da4df696b0518dae62b519 6d9f21eb0f5a43dfba53c3175fc33de1 RX(8.0*phi) 092fa2a110da4df696b0518dae62b519--6d9f21eb0f5a43dfba53c3175fc33de1 6d9f21eb0f5a43dfba53c3175fc33de1--b54b7e772d7c4dfb920a2a724c9e0b1d bbef7c3f8a40433885309ed66ab54dea 9c5a7bb067f141d5b961f435bb919395 RX(phi) 7db35cd8a27f488194d1380b9161cb1f--9c5a7bb067f141d5b961f435bb919395 25df2266392a4f94a978d0b16769b513 RX(5.0*phi) 9c5a7bb067f141d5b961f435bb919395--25df2266392a4f94a978d0b16769b513 0f7720302e0c400983068373c9dc1ba6 RX(16.0*phi) 25df2266392a4f94a978d0b16769b513--0f7720302e0c400983068373c9dc1ba6 0f7720302e0c400983068373c9dc1ba6--bbef7c3f8a40433885309ed66ab54dea

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 d1a9df5dec344f599daae14b4cafd725 0 efd7176ecec34eb4a0e53e9b2924f41f RX(1.0*acos(phi)) d1a9df5dec344f599daae14b4cafd725--efd7176ecec34eb4a0e53e9b2924f41f fef5dbbebabb4490835a48f7dbe9302c 1 c3a2ffa22b844cf59180f3538150c8df efd7176ecec34eb4a0e53e9b2924f41f--c3a2ffa22b844cf59180f3538150c8df 19ebce16f6bc4ab1abb160dcf90c0333 b4677a40d5734efca25028cd0b2e420c RX(1.414*acos(phi)) fef5dbbebabb4490835a48f7dbe9302c--b4677a40d5734efca25028cd0b2e420c 7e9a7f49ca334984ab1bd2343db669e8 2 b4677a40d5734efca25028cd0b2e420c--19ebce16f6bc4ab1abb160dcf90c0333 8ee7b706c8f046dbab46c9ac8dfa6ad8 1145a18a19b7473a92e9b59051ed8874 RX(1.732*acos(phi)) 7e9a7f49ca334984ab1bd2343db669e8--1145a18a19b7473a92e9b59051ed8874 7df517b2a4d642e4b2c43a2cf85e667d 3 1145a18a19b7473a92e9b59051ed8874--8ee7b706c8f046dbab46c9ac8dfa6ad8 a0d0ac4ab0854779a5a05bc58f671bea c3fee1fb850d4dbeb5097f1103a70222 RX(2.0*acos(phi)) 7df517b2a4d642e4b2c43a2cf85e667d--c3fee1fb850d4dbeb5097f1103a70222 cdc20fa7ee034d498ac4f7996cd96f0a 4 c3fee1fb850d4dbeb5097f1103a70222--a0d0ac4ab0854779a5a05bc58f671bea 943d834e714b49c4a114986231270abf 87ab2c7b93324e27bbbccf1237f90e52 RX(2.236*acos(phi)) cdc20fa7ee034d498ac4f7996cd96f0a--87ab2c7b93324e27bbbccf1237f90e52 87ab2c7b93324e27bbbccf1237f90e52--943d834e714b49c4a114986231270abf

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 4cf758099c3a427d945a455541aadb92 0 d3640a9fa5a646e9ba2c4755c0e2d955 RX(1.0*phi*w₀) 4cf758099c3a427d945a455541aadb92--d3640a9fa5a646e9ba2c4755c0e2d955 6dc75369468d426994472fc01414d9a9 1 3d5cc239c46b4d6fb346da0a1ffb8b8a d3640a9fa5a646e9ba2c4755c0e2d955--3d5cc239c46b4d6fb346da0a1ffb8b8a bb666ed8e2484aa0964c554a1fe30569 61184cea43cc4c37a9b0c6f111cfad49 RX(2.0*phi*w₁) 6dc75369468d426994472fc01414d9a9--61184cea43cc4c37a9b0c6f111cfad49 1b4b285041474daeafbb4f69b61667d5 2 61184cea43cc4c37a9b0c6f111cfad49--bb666ed8e2484aa0964c554a1fe30569 8ba3af7761614c169ce6c4971b326547 c2b422cd652f41b68b0d62c6647ff5b6 RX(4.0*phi*w₂) 1b4b285041474daeafbb4f69b61667d5--c2b422cd652f41b68b0d62c6647ff5b6 a322eb4289534adcbcd364e2799f965e 3 c2b422cd652f41b68b0d62c6647ff5b6--8ba3af7761614c169ce6c4971b326547 bcca91bb806a42e3a47ebc3f010472fa d29404ed12034e358d9c4ad0215843ce RX(8.0*phi*w₃) a322eb4289534adcbcd364e2799f965e--d29404ed12034e358d9c4ad0215843ce 74e7fefb2d484b9a8842e91e2b99f64f 4 d29404ed12034e358d9c4ad0215843ce--bcca91bb806a42e3a47ebc3f010472fa 8d621c01551c4ec5a589af3fec43e2a1 a96baecabe2841ee9377d6c73e65e4ea RX(16.0*phi*w₄) 74e7fefb2d484b9a8842e91e2b99f64f--a96baecabe2841ee9377d6c73e65e4ea a96baecabe2841ee9377d6c73e65e4ea--8d621c01551c4ec5a589af3fec43e2a1

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 48819c1a380d4b5e863581c78b707a54 0 ff61bb1eb1444642a3a5bbabbc6720a2 RY(80.0*acos(w₄*(0.667*x + 1.667))) 48819c1a380d4b5e863581c78b707a54--ff61bb1eb1444642a3a5bbabbc6720a2 6776c481372f4c368abc6603d03a162a 1 b693914d72964bd68e7c5ee2041638de ff61bb1eb1444642a3a5bbabbc6720a2--b693914d72964bd68e7c5ee2041638de 62878bdc37f94a6e9178dd7b46c58e9a 22c6fc54a91d42f49bb3106cb3dd41c2 RY(40.0*acos(w₃*(0.667*x + 1.667))) 6776c481372f4c368abc6603d03a162a--22c6fc54a91d42f49bb3106cb3dd41c2 39a7bf361b1b42d4abdde501f68dcf04 2 22c6fc54a91d42f49bb3106cb3dd41c2--62878bdc37f94a6e9178dd7b46c58e9a 1c615d8151314ddc91b296012c6a03e2 88bbc38c3d9741808d33d58df244b00d RY(20.0*acos(w₂*(0.667*x + 1.667))) 39a7bf361b1b42d4abdde501f68dcf04--88bbc38c3d9741808d33d58df244b00d 8dcc2fad38db403eafcaae306d9c952b 3 88bbc38c3d9741808d33d58df244b00d--1c615d8151314ddc91b296012c6a03e2 ffbbb8f6d512486aa8a45b02187f0f54 0414175d84ee44beabf67b0a892858cc RY(10.0*acos(w₁*(0.667*x + 1.667))) 8dcc2fad38db403eafcaae306d9c952b--0414175d84ee44beabf67b0a892858cc a695d48ba9e34804bec720dc18d0dc07 4 0414175d84ee44beabf67b0a892858cc--ffbbb8f6d512486aa8a45b02187f0f54 d51ad2254e114fef83840c1ffa62cbfe f0a95e8852104d389426eda009e05a30 RY(5.0*acos(w₀*(0.667*x + 1.667))) a695d48ba9e34804bec720dc18d0dc07--f0a95e8852104d389426eda009e05a30 f0a95e8852104d389426eda009e05a30--d51ad2254e114fef83840c1ffa62cbfe

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 e4684996b20d4d2abf425c758df9ad5a 0 8dc6543fa98743dc997d7065a4f397a0 RX(theta₀) e4684996b20d4d2abf425c758df9ad5a--8dc6543fa98743dc997d7065a4f397a0 b755fef93e6540ad969e085134aa4343 1 1c3fcdce43ea45449f25eb595f63d20d RY(theta₃) 8dc6543fa98743dc997d7065a4f397a0--1c3fcdce43ea45449f25eb595f63d20d ea9c99e2b7df4272b2cc372517d97461 RX(theta₆) 1c3fcdce43ea45449f25eb595f63d20d--ea9c99e2b7df4272b2cc372517d97461 30d538ade96040bfbc3859d467370900 ea9c99e2b7df4272b2cc372517d97461--30d538ade96040bfbc3859d467370900 149fb4ce46ac43d1b4aaf70b8bb8b29a 30d538ade96040bfbc3859d467370900--149fb4ce46ac43d1b4aaf70b8bb8b29a c7deb27fe45641039892ee037fc70533 RX(theta₉) 149fb4ce46ac43d1b4aaf70b8bb8b29a--c7deb27fe45641039892ee037fc70533 7d62bcf5901744b5a621a2b07c2b94e5 RY(theta₁₂) c7deb27fe45641039892ee037fc70533--7d62bcf5901744b5a621a2b07c2b94e5 2870db7fcd49433d8d72b86d172db1a8 RX(theta₁₅) 7d62bcf5901744b5a621a2b07c2b94e5--2870db7fcd49433d8d72b86d172db1a8 d16510111e714e11acfa6d195e6f896d 2870db7fcd49433d8d72b86d172db1a8--d16510111e714e11acfa6d195e6f896d 1a3337de182e49c0a592d937a25826d8 d16510111e714e11acfa6d195e6f896d--1a3337de182e49c0a592d937a25826d8 c111e1636e2745f1bc1a96a5bd31da36 1a3337de182e49c0a592d937a25826d8--c111e1636e2745f1bc1a96a5bd31da36 84bc4193a2194950a2413a384e424129 dcc47898f8dd4110b81e5ab4e591a714 RX(theta₁) b755fef93e6540ad969e085134aa4343--dcc47898f8dd4110b81e5ab4e591a714 961504bb4bd44c8da5bf5f727887fc64 2 d543fdf5ad9349abb536d9fef12d5121 RY(theta₄) dcc47898f8dd4110b81e5ab4e591a714--d543fdf5ad9349abb536d9fef12d5121 5faf71fc2572462887ca8451800dd999 RX(theta₇) d543fdf5ad9349abb536d9fef12d5121--5faf71fc2572462887ca8451800dd999 00b983363ea74ec28c796bf3af0a0a9b X 5faf71fc2572462887ca8451800dd999--00b983363ea74ec28c796bf3af0a0a9b 00b983363ea74ec28c796bf3af0a0a9b--30d538ade96040bfbc3859d467370900 42fd71eb07fe4f349b426a96fd92695e 00b983363ea74ec28c796bf3af0a0a9b--42fd71eb07fe4f349b426a96fd92695e afb7307676004302a5ecfce734cb2b36 RX(theta₁₀) 42fd71eb07fe4f349b426a96fd92695e--afb7307676004302a5ecfce734cb2b36 594141048ae9453890a078f9556e1627 RY(theta₁₃) afb7307676004302a5ecfce734cb2b36--594141048ae9453890a078f9556e1627 0d257cd5551c42edab3c3b70c1aaca41 RX(theta₁₆) 594141048ae9453890a078f9556e1627--0d257cd5551c42edab3c3b70c1aaca41 c1e03c19e9fe459a881b0cbcb7c4ad6d X 0d257cd5551c42edab3c3b70c1aaca41--c1e03c19e9fe459a881b0cbcb7c4ad6d c1e03c19e9fe459a881b0cbcb7c4ad6d--d16510111e714e11acfa6d195e6f896d 5a265036ba364c01a26f04777c61c5bf c1e03c19e9fe459a881b0cbcb7c4ad6d--5a265036ba364c01a26f04777c61c5bf 5a265036ba364c01a26f04777c61c5bf--84bc4193a2194950a2413a384e424129 7c30279e805d43a6900c3ce55fc7ce99 777ea7b5107443aa9d87d60dddef6bb1 RX(theta₂) 961504bb4bd44c8da5bf5f727887fc64--777ea7b5107443aa9d87d60dddef6bb1 32309645b6b24f7c9c66654980e09647 RY(theta₅) 777ea7b5107443aa9d87d60dddef6bb1--32309645b6b24f7c9c66654980e09647 dce6a7468c9a44cf8ccabe58ada5e52a RX(theta₈) 32309645b6b24f7c9c66654980e09647--dce6a7468c9a44cf8ccabe58ada5e52a 4d7a2bfcb3c04aeaa4fed282e4085818 dce6a7468c9a44cf8ccabe58ada5e52a--4d7a2bfcb3c04aeaa4fed282e4085818 cb62e80ffbfe4f1e98d3d46812fe230e X 4d7a2bfcb3c04aeaa4fed282e4085818--cb62e80ffbfe4f1e98d3d46812fe230e cb62e80ffbfe4f1e98d3d46812fe230e--42fd71eb07fe4f349b426a96fd92695e a232f1d8a6174982aa4ca20a18c1d747 RX(theta₁₁) cb62e80ffbfe4f1e98d3d46812fe230e--a232f1d8a6174982aa4ca20a18c1d747 df1b1cebd8fe42c1984d38b53bec3350 RY(theta₁₄) a232f1d8a6174982aa4ca20a18c1d747--df1b1cebd8fe42c1984d38b53bec3350 5a4c4b84882c456189521ede7ce943d7 RX(theta₁₇) df1b1cebd8fe42c1984d38b53bec3350--5a4c4b84882c456189521ede7ce943d7 5796afc5a6c14f85be54fd6a1374e4ad 5a4c4b84882c456189521ede7ce943d7--5796afc5a6c14f85be54fd6a1374e4ad 22208059565e4a829da9349a104f1e51 X 5796afc5a6c14f85be54fd6a1374e4ad--22208059565e4a829da9349a104f1e51 22208059565e4a829da9349a104f1e51--5a265036ba364c01a26f04777c61c5bf 22208059565e4a829da9349a104f1e51--7c30279e805d43a6900c3ce55fc7ce99

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 eceb2b1c11ce4f579aea7dfb488f93e4 0 7c81b9d330a747799afed2695c8549f9 RX(phi₀) eceb2b1c11ce4f579aea7dfb488f93e4--7c81b9d330a747799afed2695c8549f9 f0b350144df64d3c93c19487ce76f50a 1 4f3373e6203a45999de11ffaaf6dee25 RY(phi₃) 7c81b9d330a747799afed2695c8549f9--4f3373e6203a45999de11ffaaf6dee25 2ffcd7c843964ab2b54c950b3845b9a6 RX(phi₆) 4f3373e6203a45999de11ffaaf6dee25--2ffcd7c843964ab2b54c950b3845b9a6 6b275b2acaab4560a3304ba6d16e1ddf 2ffcd7c843964ab2b54c950b3845b9a6--6b275b2acaab4560a3304ba6d16e1ddf bb5dc28a5e7f4c98adc09d2089744b1a 6b275b2acaab4560a3304ba6d16e1ddf--bb5dc28a5e7f4c98adc09d2089744b1a 4de000cace084f59b190751135c60e89 RX(phi₉) bb5dc28a5e7f4c98adc09d2089744b1a--4de000cace084f59b190751135c60e89 cd46e12c64754b24948d3b7c265d0dbc RY(phi₁₂) 4de000cace084f59b190751135c60e89--cd46e12c64754b24948d3b7c265d0dbc 7104b82892e04805aa0020dbc436c56f RX(phi₁₅) cd46e12c64754b24948d3b7c265d0dbc--7104b82892e04805aa0020dbc436c56f a37cd502920f40d3b540e55a4dbb2f47 7104b82892e04805aa0020dbc436c56f--a37cd502920f40d3b540e55a4dbb2f47 d7d8246b4c5444fc82e8bd852de609bd a37cd502920f40d3b540e55a4dbb2f47--d7d8246b4c5444fc82e8bd852de609bd 1b50e523b0a044af8d0bf8dfa1e79ee5 d7d8246b4c5444fc82e8bd852de609bd--1b50e523b0a044af8d0bf8dfa1e79ee5 7ac3742e7e754dd49c253e206a482b18 23db7ddca8e34e4e8766b38d496905ee RX(phi₁) f0b350144df64d3c93c19487ce76f50a--23db7ddca8e34e4e8766b38d496905ee 9e52236fb02f4c5cbef835990c7a3054 2 3070af6b3bd64c85aabb7e1fadc31432 RY(phi₄) 23db7ddca8e34e4e8766b38d496905ee--3070af6b3bd64c85aabb7e1fadc31432 c2c0f31e00694ab0b244a89a405271d1 RX(phi₇) 3070af6b3bd64c85aabb7e1fadc31432--c2c0f31e00694ab0b244a89a405271d1 2c9f8027c10a4a32ae712854ab0dfdab PHASE(phi_ent₀) c2c0f31e00694ab0b244a89a405271d1--2c9f8027c10a4a32ae712854ab0dfdab 2c9f8027c10a4a32ae712854ab0dfdab--6b275b2acaab4560a3304ba6d16e1ddf 07db74a553df41a99da737f322ed6a6d 2c9f8027c10a4a32ae712854ab0dfdab--07db74a553df41a99da737f322ed6a6d bb47bddc2a9b43d1b638b26430a53801 RX(phi₁₀) 07db74a553df41a99da737f322ed6a6d--bb47bddc2a9b43d1b638b26430a53801 7a995406c2ff4d5c9626f7f19f181ed1 RY(phi₁₃) bb47bddc2a9b43d1b638b26430a53801--7a995406c2ff4d5c9626f7f19f181ed1 1ceca3860652426681007f66a432fa32 RX(phi₁₆) 7a995406c2ff4d5c9626f7f19f181ed1--1ceca3860652426681007f66a432fa32 3d8ce914bb9549248ac4d3261f65e027 PHASE(phi_ent₂) 1ceca3860652426681007f66a432fa32--3d8ce914bb9549248ac4d3261f65e027 3d8ce914bb9549248ac4d3261f65e027--a37cd502920f40d3b540e55a4dbb2f47 12bc1effd3ca4f39a0571dff0707cd03 3d8ce914bb9549248ac4d3261f65e027--12bc1effd3ca4f39a0571dff0707cd03 12bc1effd3ca4f39a0571dff0707cd03--7ac3742e7e754dd49c253e206a482b18 2b22d317f84e4f87b84007bc5a699872 26b56f2fee2a48a2b4c7f57b6e76d965 RX(phi₂) 9e52236fb02f4c5cbef835990c7a3054--26b56f2fee2a48a2b4c7f57b6e76d965 f785281f0ce34535b407ef4dab33f6b9 RY(phi₅) 26b56f2fee2a48a2b4c7f57b6e76d965--f785281f0ce34535b407ef4dab33f6b9 857f7031200f499cbfa9f1855d8eec67 RX(phi₈) f785281f0ce34535b407ef4dab33f6b9--857f7031200f499cbfa9f1855d8eec67 ebb3224ac8c54052a1bcddde156f0651 857f7031200f499cbfa9f1855d8eec67--ebb3224ac8c54052a1bcddde156f0651 9ce272a2a7214da0b1a4111718cd79ae PHASE(phi_ent₁) ebb3224ac8c54052a1bcddde156f0651--9ce272a2a7214da0b1a4111718cd79ae 9ce272a2a7214da0b1a4111718cd79ae--07db74a553df41a99da737f322ed6a6d 5f4145ee48c64829874809223516750e RX(phi₁₁) 9ce272a2a7214da0b1a4111718cd79ae--5f4145ee48c64829874809223516750e c22e140a78824cc08bfd31d5835273a7 RY(phi₁₄) 5f4145ee48c64829874809223516750e--c22e140a78824cc08bfd31d5835273a7 4fa9cdbe133c45b7bf806308f5160066 RX(phi₁₇) c22e140a78824cc08bfd31d5835273a7--4fa9cdbe133c45b7bf806308f5160066 0b6fdc877dae4623afd150a340f77f16 4fa9cdbe133c45b7bf806308f5160066--0b6fdc877dae4623afd150a340f77f16 19fa989fb77440389ce541cd6cad0b32 PHASE(phi_ent₃) 0b6fdc877dae4623afd150a340f77f16--19fa989fb77440389ce541cd6cad0b32 19fa989fb77440389ce541cd6cad0b32--12bc1effd3ca4f39a0571dff0707cd03 19fa989fb77440389ce541cd6cad0b32--2b22d317f84e4f87b84007bc5a699872

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_371b71362f11481e9ad17c96a15b2b1c cluster_6c796a4f60f945819bd93535451cb37b c117cde2e5d447debd4e4f8c61a6cb97 0 57968abb2cc743dd8898900d9b09635f RX(theta₀) c117cde2e5d447debd4e4f8c61a6cb97--57968abb2cc743dd8898900d9b09635f dab1bffbe8024934b85c0439fc4b6480 1 173bd6c2c868447886ad5eee830f8de7 RY(theta₃) 57968abb2cc743dd8898900d9b09635f--173bd6c2c868447886ad5eee830f8de7 5716b2ffc9a34d87ac4779d5a5071a8d RX(theta₆) 173bd6c2c868447886ad5eee830f8de7--5716b2ffc9a34d87ac4779d5a5071a8d ed7deae7071446be9bf5197d5e780065 HamEvo 5716b2ffc9a34d87ac4779d5a5071a8d--ed7deae7071446be9bf5197d5e780065 ce3c99d78ae946aa82bd6b4d1b2732e8 RX(theta₉) ed7deae7071446be9bf5197d5e780065--ce3c99d78ae946aa82bd6b4d1b2732e8 5aa84c2412d24d4589386ad054f03015 RY(theta₁₂) ce3c99d78ae946aa82bd6b4d1b2732e8--5aa84c2412d24d4589386ad054f03015 447b0703163342b0b153c6e12854c144 RX(theta₁₅) 5aa84c2412d24d4589386ad054f03015--447b0703163342b0b153c6e12854c144 7bfea05847474850b9114efb41bd926f HamEvo 447b0703163342b0b153c6e12854c144--7bfea05847474850b9114efb41bd926f f6ddd30517fd4d33a5dfab93500dbf4a 7bfea05847474850b9114efb41bd926f--f6ddd30517fd4d33a5dfab93500dbf4a d286259044604febaa20f0f9ed3359c0 67593f3593614e2abc796f711984fea4 RX(theta₁) dab1bffbe8024934b85c0439fc4b6480--67593f3593614e2abc796f711984fea4 67da8e72c5254f8bbe5be6c568f9f01f 2 159b24fffab74ea7b76b3c47cc45bddd RY(theta₄) 67593f3593614e2abc796f711984fea4--159b24fffab74ea7b76b3c47cc45bddd 2d2dd3bcf36b404b9226e4d9ba8a79b3 RX(theta₇) 159b24fffab74ea7b76b3c47cc45bddd--2d2dd3bcf36b404b9226e4d9ba8a79b3 5fb9d3cfd70c4a16a88cac2e0c5650a8 t = theta_t₀ 2d2dd3bcf36b404b9226e4d9ba8a79b3--5fb9d3cfd70c4a16a88cac2e0c5650a8 79d4db16b08d425195447af0c92f07d8 RX(theta₁₀) 5fb9d3cfd70c4a16a88cac2e0c5650a8--79d4db16b08d425195447af0c92f07d8 19bcb89b6d834b13958f2f9332c3e988 RY(theta₁₃) 79d4db16b08d425195447af0c92f07d8--19bcb89b6d834b13958f2f9332c3e988 ea89da8948754b2a8c0453e17e9a2157 RX(theta₁₆) 19bcb89b6d834b13958f2f9332c3e988--ea89da8948754b2a8c0453e17e9a2157 9ec0a7bf566c44f5bb885546f7960e3a t = theta_t₁ ea89da8948754b2a8c0453e17e9a2157--9ec0a7bf566c44f5bb885546f7960e3a 9ec0a7bf566c44f5bb885546f7960e3a--d286259044604febaa20f0f9ed3359c0 097860a9459347cc8e5442eec9353e54 a41b936d3d0a4862b26cb16c8e54f88f RX(theta₂) 67da8e72c5254f8bbe5be6c568f9f01f--a41b936d3d0a4862b26cb16c8e54f88f 81c5d9618c154358936cb392cd7303b2 RY(theta₅) a41b936d3d0a4862b26cb16c8e54f88f--81c5d9618c154358936cb392cd7303b2 2d1ad737abd646e289984c0db50da98c RX(theta₈) 81c5d9618c154358936cb392cd7303b2--2d1ad737abd646e289984c0db50da98c aed2c04ad86044fba5631112adbfbba7 2d1ad737abd646e289984c0db50da98c--aed2c04ad86044fba5631112adbfbba7 934a5e3e5e494156a4a7966df3b18585 RX(theta₁₁) aed2c04ad86044fba5631112adbfbba7--934a5e3e5e494156a4a7966df3b18585 c2113a6d899b496ba019f03781f2e4f0 RY(theta₁₄) 934a5e3e5e494156a4a7966df3b18585--c2113a6d899b496ba019f03781f2e4f0 b59756dd393548d78368f5c578bb1d3b RX(theta₁₇) c2113a6d899b496ba019f03781f2e4f0--b59756dd393548d78368f5c578bb1d3b 4f1946f897cd4fc78cd9ce25b7d4c11d b59756dd393548d78368f5c578bb1d3b--4f1946f897cd4fc78cd9ce25b7d4c11d 4f1946f897cd4fc78cd9ce25b7d4c11d--097860a9459347cc8e5442eec9353e54

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_7616f914257b48159056574041775389 cluster_6705cb3328074f498d7a4ff0aac91c6b b1cd1a61f24a4b849037e45772e2e2a7 0 1aa8adc8e9174e288ed869368ce3d57e RX(theta₀) b1cd1a61f24a4b849037e45772e2e2a7--1aa8adc8e9174e288ed869368ce3d57e 522bfb996b794e319f9798f7474ada03 1 5ffe8b08922241bb8a82ad8e821f75c2 RY(theta₆) 1aa8adc8e9174e288ed869368ce3d57e--5ffe8b08922241bb8a82ad8e821f75c2 c592b23779b3459fb9d8e59d2861900e RX(theta₁₂) 5ffe8b08922241bb8a82ad8e821f75c2--c592b23779b3459fb9d8e59d2861900e 4b52785863634f199aa315c0dfb63a99 c592b23779b3459fb9d8e59d2861900e--4b52785863634f199aa315c0dfb63a99 02c8bfe45fc44d35a2bf0a912eb7a9e1 RX(theta₁₈) 4b52785863634f199aa315c0dfb63a99--02c8bfe45fc44d35a2bf0a912eb7a9e1 0f1df06637e44f78b1f7be59bd645cea RY(theta₂₄) 02c8bfe45fc44d35a2bf0a912eb7a9e1--0f1df06637e44f78b1f7be59bd645cea a1ddb91a85804cd394e448ac324cfe60 RX(theta₃₀) 0f1df06637e44f78b1f7be59bd645cea--a1ddb91a85804cd394e448ac324cfe60 f00f0d13258f4fe3899951f635dfd279 a1ddb91a85804cd394e448ac324cfe60--f00f0d13258f4fe3899951f635dfd279 d1c849c110054df5ad848dadeac6046d f00f0d13258f4fe3899951f635dfd279--d1c849c110054df5ad848dadeac6046d 48d9cb656a124bb5a77a5a351c112288 64a3bf80cabb49b483eef700d4d5bc0c RX(theta₁) 522bfb996b794e319f9798f7474ada03--64a3bf80cabb49b483eef700d4d5bc0c f81716a371e14fbaa0c95e92e484390d 2 35ed5f5929cd4559a5371473559cacd3 RY(theta₇) 64a3bf80cabb49b483eef700d4d5bc0c--35ed5f5929cd4559a5371473559cacd3 98907aab734a48c3956b7f450f1df352 RX(theta₁₃) 35ed5f5929cd4559a5371473559cacd3--98907aab734a48c3956b7f450f1df352 3d13c3c4b279437aba1eb4d2ea783d2b 98907aab734a48c3956b7f450f1df352--3d13c3c4b279437aba1eb4d2ea783d2b c9e9a322017d431cab23f2eb2b33d53f RX(theta₁₉) 3d13c3c4b279437aba1eb4d2ea783d2b--c9e9a322017d431cab23f2eb2b33d53f 5ffa26b71e2d4cbfb2a77f2f4e55f14c RY(theta₂₅) c9e9a322017d431cab23f2eb2b33d53f--5ffa26b71e2d4cbfb2a77f2f4e55f14c 76b5a0be7f66408c9b118e973ea8f3de RX(theta₃₁) 5ffa26b71e2d4cbfb2a77f2f4e55f14c--76b5a0be7f66408c9b118e973ea8f3de cccbcdb94c5144d0813f06857d0bf459 76b5a0be7f66408c9b118e973ea8f3de--cccbcdb94c5144d0813f06857d0bf459 cccbcdb94c5144d0813f06857d0bf459--48d9cb656a124bb5a77a5a351c112288 5b463fbee3d646b2b90b15e70caf4b4d f85ec54d7cd14fefb508f6c9bdcde773 RX(theta₂) f81716a371e14fbaa0c95e92e484390d--f85ec54d7cd14fefb508f6c9bdcde773 5df50d0a82914622917491c4dede5026 3 beb5b370a8404336bc38bf0bd19545aa RY(theta₈) f85ec54d7cd14fefb508f6c9bdcde773--beb5b370a8404336bc38bf0bd19545aa 28b5df3c87a94802beeaa9883ce29aaf RX(theta₁₄) beb5b370a8404336bc38bf0bd19545aa--28b5df3c87a94802beeaa9883ce29aaf e84d72da191644719e4324002ee8bfe7 HamEvo 28b5df3c87a94802beeaa9883ce29aaf--e84d72da191644719e4324002ee8bfe7 f88e02ba44874053a64bfaeb6b65f47d RX(theta₂₀) e84d72da191644719e4324002ee8bfe7--f88e02ba44874053a64bfaeb6b65f47d be9e9407e6d8454da88787848815416c RY(theta₂₆) f88e02ba44874053a64bfaeb6b65f47d--be9e9407e6d8454da88787848815416c f2de745dde2d4a08aae69e72d82dedc4 RX(theta₃₂) be9e9407e6d8454da88787848815416c--f2de745dde2d4a08aae69e72d82dedc4 cf9fc625f8fc4e3ea4eeff81d763ad5b HamEvo f2de745dde2d4a08aae69e72d82dedc4--cf9fc625f8fc4e3ea4eeff81d763ad5b cf9fc625f8fc4e3ea4eeff81d763ad5b--5b463fbee3d646b2b90b15e70caf4b4d f660eff36f6e4380b31c973231ac85ab be2540ef1b6744c39d0c6f886b4f7ab7 RX(theta₃) 5df50d0a82914622917491c4dede5026--be2540ef1b6744c39d0c6f886b4f7ab7 5d3f6d90a5d242deba574de430a65d19 4 af3b76f5cfae465ca619fbe45fad2189 RY(theta₉) be2540ef1b6744c39d0c6f886b4f7ab7--af3b76f5cfae465ca619fbe45fad2189 4aa8d17d43044bd4840eba8f7e70430b RX(theta₁₅) af3b76f5cfae465ca619fbe45fad2189--4aa8d17d43044bd4840eba8f7e70430b fcc8f21e207f4257b47f66c21e630e28 t = theta_t₀ 4aa8d17d43044bd4840eba8f7e70430b--fcc8f21e207f4257b47f66c21e630e28 fbf0cf752a334bea9dcda893fcfc29e6 RX(theta₂₁) fcc8f21e207f4257b47f66c21e630e28--fbf0cf752a334bea9dcda893fcfc29e6 3a56f52832194cddbe7fe7b91ad1151f RY(theta₂₇) fbf0cf752a334bea9dcda893fcfc29e6--3a56f52832194cddbe7fe7b91ad1151f 3a14a92105f84684bd2593e4e7b403d9 RX(theta₃₃) 3a56f52832194cddbe7fe7b91ad1151f--3a14a92105f84684bd2593e4e7b403d9 06bd9aa04f6c450dafd7f790e6248841 t = theta_t₁ 3a14a92105f84684bd2593e4e7b403d9--06bd9aa04f6c450dafd7f790e6248841 06bd9aa04f6c450dafd7f790e6248841--f660eff36f6e4380b31c973231ac85ab 2273275da153464e8beb6320eaa1b266 72edea4d34f24b35848d053da2325c89 RX(theta₄) 5d3f6d90a5d242deba574de430a65d19--72edea4d34f24b35848d053da2325c89 2fe02a6f87844da4aec0e311b20cd959 5 46667b75366347ebb98e7a22bd7c0e0f RY(theta₁₀) 72edea4d34f24b35848d053da2325c89--46667b75366347ebb98e7a22bd7c0e0f 47cddf0752e945919527cbd8902d538d RX(theta₁₆) 46667b75366347ebb98e7a22bd7c0e0f--47cddf0752e945919527cbd8902d538d 6368f0fe30b34aa7b5400b77dc7f017a 47cddf0752e945919527cbd8902d538d--6368f0fe30b34aa7b5400b77dc7f017a 31ffb99ef58648dcbf207c8bdf23cf67 RX(theta₂₂) 6368f0fe30b34aa7b5400b77dc7f017a--31ffb99ef58648dcbf207c8bdf23cf67 af2d285fa4494f07880944c695b55e61 RY(theta₂₈) 31ffb99ef58648dcbf207c8bdf23cf67--af2d285fa4494f07880944c695b55e61 a792719a111c4137b8a755fd8eec0696 RX(theta₃₄) af2d285fa4494f07880944c695b55e61--a792719a111c4137b8a755fd8eec0696 c75a33ace86e4de1972d9fc3c1f565ed a792719a111c4137b8a755fd8eec0696--c75a33ace86e4de1972d9fc3c1f565ed c75a33ace86e4de1972d9fc3c1f565ed--2273275da153464e8beb6320eaa1b266 267baf8fef47483aa0e8d083cb3f5892 43312f68a7964664a053b18aa3c5dffa RX(theta₅) 2fe02a6f87844da4aec0e311b20cd959--43312f68a7964664a053b18aa3c5dffa 9ccac246d2ec4f688fae7a91d016a891 RY(theta₁₁) 43312f68a7964664a053b18aa3c5dffa--9ccac246d2ec4f688fae7a91d016a891 182c990cedd44aaea8907fe521087a05 RX(theta₁₇) 9ccac246d2ec4f688fae7a91d016a891--182c990cedd44aaea8907fe521087a05 bc3611c0774c4c68b87563c9aea04f0c 182c990cedd44aaea8907fe521087a05--bc3611c0774c4c68b87563c9aea04f0c 527a8811fd8340659dad0f777c5b03de RX(theta₂₃) bc3611c0774c4c68b87563c9aea04f0c--527a8811fd8340659dad0f777c5b03de 3eaa391402d94eb6af3bf83e846de96f RY(theta₂₉) 527a8811fd8340659dad0f777c5b03de--3eaa391402d94eb6af3bf83e846de96f 0b21b24010444a6185fcf7cb8cc71d63 RX(theta₃₅) 3eaa391402d94eb6af3bf83e846de96f--0b21b24010444a6185fcf7cb8cc71d63 09d6b18e16fd4e6f82c6a1905c0285e2 0b21b24010444a6185fcf7cb8cc71d63--09d6b18e16fd4e6f82c6a1905c0285e2 09d6b18e16fd4e6f82c6a1905c0285e2--267baf8fef47483aa0e8d083cb3f5892

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_2eb594990e64418dbe9549ca2e307c47 BPMA-1 cluster_0b4df50244634e21bf5cfc393ebdc4ca BPMA-0 8fddd4dfae77470fae5351c405d8dc64 0 91105245f050487e8467af8d9fdf51ea RX(iia_α₀₀) 8fddd4dfae77470fae5351c405d8dc64--91105245f050487e8467af8d9fdf51ea 3b347b5e6b8c4a1e8b01c382a61b5a24 1 9b73dd7a996b4f098da4549646f3f63d RY(iia_α₀₃) 91105245f050487e8467af8d9fdf51ea--9b73dd7a996b4f098da4549646f3f63d bfd344449abb45bdbb2d012627ab016a 9b73dd7a996b4f098da4549646f3f63d--bfd344449abb45bdbb2d012627ab016a aa377404996c477c8641b90fd1fa23be bfd344449abb45bdbb2d012627ab016a--aa377404996c477c8641b90fd1fa23be 52e7bee9de7749539543ce7771eee3be RX(iia_γ₀₀) aa377404996c477c8641b90fd1fa23be--52e7bee9de7749539543ce7771eee3be c6301c08f70d4dde883cea46550e5a7b 52e7bee9de7749539543ce7771eee3be--c6301c08f70d4dde883cea46550e5a7b 69f06bafc7cb4d3a9ab0715460a1f33f c6301c08f70d4dde883cea46550e5a7b--69f06bafc7cb4d3a9ab0715460a1f33f b8025a2f964c4dc8a9e51369435e06e8 RY(iia_β₀₃) 69f06bafc7cb4d3a9ab0715460a1f33f--b8025a2f964c4dc8a9e51369435e06e8 0edcf49313314cf5a7281384e88c978e RX(iia_β₀₀) b8025a2f964c4dc8a9e51369435e06e8--0edcf49313314cf5a7281384e88c978e 6ee00497f6c542f08a057021b5caf9e1 RX(iia_α₁₀) 0edcf49313314cf5a7281384e88c978e--6ee00497f6c542f08a057021b5caf9e1 7423609bcc184cc5944dea4d39fac94f RY(iia_α₁₃) 6ee00497f6c542f08a057021b5caf9e1--7423609bcc184cc5944dea4d39fac94f 2e00237830d44810b54522b29c869433 7423609bcc184cc5944dea4d39fac94f--2e00237830d44810b54522b29c869433 ac9b7b1166484795ad31e6843c003960 2e00237830d44810b54522b29c869433--ac9b7b1166484795ad31e6843c003960 5a6993c355e84b1d9ab2fa4aa51060a2 RX(iia_γ₁₀) ac9b7b1166484795ad31e6843c003960--5a6993c355e84b1d9ab2fa4aa51060a2 54acaa44c4d94f878a9ddc7bad3b0862 5a6993c355e84b1d9ab2fa4aa51060a2--54acaa44c4d94f878a9ddc7bad3b0862 4eff23f016fa42e99a1b2d3accac2849 54acaa44c4d94f878a9ddc7bad3b0862--4eff23f016fa42e99a1b2d3accac2849 54a6f68e15fe424a822a3c22f0232088 RY(iia_β₁₃) 4eff23f016fa42e99a1b2d3accac2849--54a6f68e15fe424a822a3c22f0232088 1c451622a7c04461839dc8d838dd129b RX(iia_β₁₀) 54a6f68e15fe424a822a3c22f0232088--1c451622a7c04461839dc8d838dd129b 8ff6e617f9d846ecb42b249a4d5fe37b 1c451622a7c04461839dc8d838dd129b--8ff6e617f9d846ecb42b249a4d5fe37b bcfb2aaa65814935b524a8c73af33acc dbc2d4c3c20245538032302a594d35ec RX(iia_α₀₁) 3b347b5e6b8c4a1e8b01c382a61b5a24--dbc2d4c3c20245538032302a594d35ec ca0ca6a8708348aea1b0d62ee7642c8a 2 155c9bae6a704bafb0a70b2e739229dc RY(iia_α₀₄) dbc2d4c3c20245538032302a594d35ec--155c9bae6a704bafb0a70b2e739229dc 26db92fc5f5141afaefd9d7a982f0a75 X 155c9bae6a704bafb0a70b2e739229dc--26db92fc5f5141afaefd9d7a982f0a75 26db92fc5f5141afaefd9d7a982f0a75--bfd344449abb45bdbb2d012627ab016a 02cab97ea5d04b208a5c7dcbf42eb6bf 26db92fc5f5141afaefd9d7a982f0a75--02cab97ea5d04b208a5c7dcbf42eb6bf a50b1fbdc6ee487ebe1aebd6280c51c2 RX(iia_γ₀₁) 02cab97ea5d04b208a5c7dcbf42eb6bf--a50b1fbdc6ee487ebe1aebd6280c51c2 00beadbd3a6a40a0b7d8a3c68a0cfc20 a50b1fbdc6ee487ebe1aebd6280c51c2--00beadbd3a6a40a0b7d8a3c68a0cfc20 c059b73feb094436bcde75cc111715ba X 00beadbd3a6a40a0b7d8a3c68a0cfc20--c059b73feb094436bcde75cc111715ba c059b73feb094436bcde75cc111715ba--69f06bafc7cb4d3a9ab0715460a1f33f 160c80cc613343809518f3533d411b6c RY(iia_β₀₄) c059b73feb094436bcde75cc111715ba--160c80cc613343809518f3533d411b6c 178c4ff49e2a4722aa661ba365428be9 RX(iia_β₀₁) 160c80cc613343809518f3533d411b6c--178c4ff49e2a4722aa661ba365428be9 f9e675308ee049cd866f04a7b692d051 RX(iia_α₁₁) 178c4ff49e2a4722aa661ba365428be9--f9e675308ee049cd866f04a7b692d051 9bc296bf0718493c8beea6d8c933ed4e RY(iia_α₁₄) f9e675308ee049cd866f04a7b692d051--9bc296bf0718493c8beea6d8c933ed4e 35898f65fba84d3aa1ce523a0dbd8409 X 9bc296bf0718493c8beea6d8c933ed4e--35898f65fba84d3aa1ce523a0dbd8409 35898f65fba84d3aa1ce523a0dbd8409--2e00237830d44810b54522b29c869433 69a87f0fa53d4deb86050161254f6948 35898f65fba84d3aa1ce523a0dbd8409--69a87f0fa53d4deb86050161254f6948 23e0c30fa2494a7987d8c0dd45ce6c30 RX(iia_γ₁₁) 69a87f0fa53d4deb86050161254f6948--23e0c30fa2494a7987d8c0dd45ce6c30 1e1e2ec765714ee58cb3cb14938d7d39 23e0c30fa2494a7987d8c0dd45ce6c30--1e1e2ec765714ee58cb3cb14938d7d39 ecf766cbcfb146afab7df31ce2da7cf9 X 1e1e2ec765714ee58cb3cb14938d7d39--ecf766cbcfb146afab7df31ce2da7cf9 ecf766cbcfb146afab7df31ce2da7cf9--4eff23f016fa42e99a1b2d3accac2849 03df270d6b4e4611a5275e1943d5b5ce RY(iia_β₁₄) ecf766cbcfb146afab7df31ce2da7cf9--03df270d6b4e4611a5275e1943d5b5ce 28f184ace3a34a1b8eea2dca82dc6aa9 RX(iia_β₁₁) 03df270d6b4e4611a5275e1943d5b5ce--28f184ace3a34a1b8eea2dca82dc6aa9 28f184ace3a34a1b8eea2dca82dc6aa9--bcfb2aaa65814935b524a8c73af33acc f601b951e1704259bd5081b26c61f97a 1720f2af268542b3a934816aa4952ac7 RX(iia_α₀₂) ca0ca6a8708348aea1b0d62ee7642c8a--1720f2af268542b3a934816aa4952ac7 4ba14463b9cf4cb3bfe80ee13d8e81c9 RY(iia_α₀₅) 1720f2af268542b3a934816aa4952ac7--4ba14463b9cf4cb3bfe80ee13d8e81c9 b7fdf0ff540b4f6bad8a68416c36675e 4ba14463b9cf4cb3bfe80ee13d8e81c9--b7fdf0ff540b4f6bad8a68416c36675e 22e211985298439eb6280d1b81208f28 X b7fdf0ff540b4f6bad8a68416c36675e--22e211985298439eb6280d1b81208f28 22e211985298439eb6280d1b81208f28--02cab97ea5d04b208a5c7dcbf42eb6bf c048972c66694e11ae07902c285c7cd2 RX(iia_γ₀₂) 22e211985298439eb6280d1b81208f28--c048972c66694e11ae07902c285c7cd2 8d382e3ad9c343d084a9fba702fb9485 X c048972c66694e11ae07902c285c7cd2--8d382e3ad9c343d084a9fba702fb9485 8d382e3ad9c343d084a9fba702fb9485--00beadbd3a6a40a0b7d8a3c68a0cfc20 3b102feea59e41e99f95fb038e73307c 8d382e3ad9c343d084a9fba702fb9485--3b102feea59e41e99f95fb038e73307c facdef90283d4978adb17befe1b06f9a RY(iia_β₀₅) 3b102feea59e41e99f95fb038e73307c--facdef90283d4978adb17befe1b06f9a 713ed92ab96f40319f12e7f24a8d33d7 RX(iia_β₀₂) facdef90283d4978adb17befe1b06f9a--713ed92ab96f40319f12e7f24a8d33d7 646138fd3b3a433a95080a3c4ad5511c RX(iia_α₁₂) 713ed92ab96f40319f12e7f24a8d33d7--646138fd3b3a433a95080a3c4ad5511c 19b517bb22f9423892ca2b32765e2adb RY(iia_α₁₅) 646138fd3b3a433a95080a3c4ad5511c--19b517bb22f9423892ca2b32765e2adb 1897165a52d24f02a2d166b39178727b 19b517bb22f9423892ca2b32765e2adb--1897165a52d24f02a2d166b39178727b 68ed58c257a94d96b5f96a208da3d03b X 1897165a52d24f02a2d166b39178727b--68ed58c257a94d96b5f96a208da3d03b 68ed58c257a94d96b5f96a208da3d03b--69a87f0fa53d4deb86050161254f6948 ef2ac27785124f97a0e56ec06cdfba0d RX(iia_γ₁₂) 68ed58c257a94d96b5f96a208da3d03b--ef2ac27785124f97a0e56ec06cdfba0d a3972deb936d49f2b1724d871b4209ad X ef2ac27785124f97a0e56ec06cdfba0d--a3972deb936d49f2b1724d871b4209ad a3972deb936d49f2b1724d871b4209ad--1e1e2ec765714ee58cb3cb14938d7d39 cfb50eb242314d0691aedbe59c7b5fc7 a3972deb936d49f2b1724d871b4209ad--cfb50eb242314d0691aedbe59c7b5fc7 a39dacfb29b1448fac7434421c7b59d0 RY(iia_β₁₅) cfb50eb242314d0691aedbe59c7b5fc7--a39dacfb29b1448fac7434421c7b59d0 7987d484ed504d8da2bff271d8e92b56 RX(iia_β₁₂) a39dacfb29b1448fac7434421c7b59d0--7987d484ed504d8da2bff271d8e92b56 7987d484ed504d8da2bff271d8e92b56--f601b951e1704259bd5081b26c61f97a