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_e99cfbb1e7ba49939b3fbe49a8aef524 Constant Chebyshev FM cluster_fd2c4703a4ea4f97860f4fcd2425d82a Constant Fourier FM d8228367d64346b3a6e9a720b4fc4234 0 4f5add0485824ce1bb2011ddfe61e34f RX(phi) d8228367d64346b3a6e9a720b4fc4234--4f5add0485824ce1bb2011ddfe61e34f f0dd1145fe3c4931935a1aa9ec6dce3b 1 f1c163b0dc8147feaf94d91d4a9b35fa RX(acos(phi)) 4f5add0485824ce1bb2011ddfe61e34f--f1c163b0dc8147feaf94d91d4a9b35fa 4b44b57dad60491fb14b44dab83d9c31 f1c163b0dc8147feaf94d91d4a9b35fa--4b44b57dad60491fb14b44dab83d9c31 ef12a6eeb9854cf6bcb9e535dc6ef3c7 72bf9d92d4c04975836ba373c546bb55 RX(phi) f0dd1145fe3c4931935a1aa9ec6dce3b--72bf9d92d4c04975836ba373c546bb55 f1014363872f45dfb222c9011bd0275e 2 8a7f6cd5790b40dda74930f8ed3dfd4d RX(acos(phi)) 72bf9d92d4c04975836ba373c546bb55--8a7f6cd5790b40dda74930f8ed3dfd4d 8a7f6cd5790b40dda74930f8ed3dfd4d--ef12a6eeb9854cf6bcb9e535dc6ef3c7 4668b2d9c3f54f41b6a64852d714b1ce 65bdbf0acfed4b3a805ed8461ceb5147 RX(phi) f1014363872f45dfb222c9011bd0275e--65bdbf0acfed4b3a805ed8461ceb5147 dd4a250e4e164c5598405744354219a8 RX(acos(phi)) 65bdbf0acfed4b3a805ed8461ceb5147--dd4a250e4e164c5598405744354219a8 dd4a250e4e164c5598405744354219a8--4668b2d9c3f54f41b6a64852d714b1ce

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_b1947099b7f341d28eba891b1c1fe982 Constant <function custom_fn at 0x7f2891ca5cf0> FM cluster_49275e0cefa34fd3aa1c47a3a86fd378 Constant asin FM 57be726585dd4498bc4f8dcecdeb4708 0 ee256f52c56241e78ff91c14b2cf040d RX(asin(phi)) 57be726585dd4498bc4f8dcecdeb4708--ee256f52c56241e78ff91c14b2cf040d ff1f0298b2744c60b8589ce65174847f 1 cec3f2f7a72e49bda42f803bc8e31b97 RX(phi**2 + asin(phi)) ee256f52c56241e78ff91c14b2cf040d--cec3f2f7a72e49bda42f803bc8e31b97 2a1561ed217d47b5a6f000b8a34183f7 cec3f2f7a72e49bda42f803bc8e31b97--2a1561ed217d47b5a6f000b8a34183f7 064b6efb17bb4ab3a3f12b5c29ce7a92 d2967a62cbfb4d53a52b04d73992e89f RX(asin(phi)) ff1f0298b2744c60b8589ce65174847f--d2967a62cbfb4d53a52b04d73992e89f af34eeba94864474b09d64b93896d8b8 2 182bc0cd29d247ef932ef2d57c6a12d2 RX(phi**2 + asin(phi)) d2967a62cbfb4d53a52b04d73992e89f--182bc0cd29d247ef932ef2d57c6a12d2 182bc0cd29d247ef932ef2d57c6a12d2--064b6efb17bb4ab3a3f12b5c29ce7a92 fb2bf1b9a93e4ea0afc87c14572593bf 7f5739108b204924bd3f016869ed0ac6 RX(asin(phi)) af34eeba94864474b09d64b93896d8b8--7f5739108b204924bd3f016869ed0ac6 2757382f53df4c618fc1cd716535ebda RX(phi**2 + asin(phi)) 7f5739108b204924bd3f016869ed0ac6--2757382f53df4c618fc1cd716535ebda 2757382f53df4c618fc1cd716535ebda--fb2bf1b9a93e4ea0afc87c14572593bf

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_9e2b177f8c984012955170282d5a96b1 Exponential Fourier FM cluster_622633c86fda4855aa4b91f31a1f9658 Constant Fourier FM cluster_3d58e3715bce410181d4bf18ff712519 Tower Fourier FM d51a262fce3c400d91ad8dbe795e0ae6 0 fbf0f28ea23f4f018b54ec2a7a8958f2 RX(phi) d51a262fce3c400d91ad8dbe795e0ae6--fbf0f28ea23f4f018b54ec2a7a8958f2 90873ac8073144b5b19a7439148c0a92 1 db237097e2be4ba0aa8c7fcb2069fccc RX(1.0*phi) fbf0f28ea23f4f018b54ec2a7a8958f2--db237097e2be4ba0aa8c7fcb2069fccc f0f04dc659914bb39b1d7b2fecc9880d RX(1.0*phi) db237097e2be4ba0aa8c7fcb2069fccc--f0f04dc659914bb39b1d7b2fecc9880d e68fcde3e70d44cb9927bfe98c03eb77 f0f04dc659914bb39b1d7b2fecc9880d--e68fcde3e70d44cb9927bfe98c03eb77 376ccdab666d4f66b8a7e2e3b1c0f101 85f0eed4b64c4650814c5950701c2aae RX(phi) 90873ac8073144b5b19a7439148c0a92--85f0eed4b64c4650814c5950701c2aae aacfeb2ed7624f07aa3bc80c5ddbb42e 2 50bc8eeb9ffd4209b4e0927094f6cad8 RX(2.0*phi) 85f0eed4b64c4650814c5950701c2aae--50bc8eeb9ffd4209b4e0927094f6cad8 f4b632cc7ddf4555a4f5b71d7d8bbd60 RX(2.0*phi) 50bc8eeb9ffd4209b4e0927094f6cad8--f4b632cc7ddf4555a4f5b71d7d8bbd60 f4b632cc7ddf4555a4f5b71d7d8bbd60--376ccdab666d4f66b8a7e2e3b1c0f101 c0b05c28bf4d4e6ab5d53ab4c67229ec d53bc812590b42f0964eb08e902a6702 RX(phi) aacfeb2ed7624f07aa3bc80c5ddbb42e--d53bc812590b42f0964eb08e902a6702 475820f0d3164512b48a661f755c3717 3 f173b89863d34d55aaa2cf618fabbda3 RX(3.0*phi) d53bc812590b42f0964eb08e902a6702--f173b89863d34d55aaa2cf618fabbda3 1a8dce6b20384cae975bdc162ccfc123 RX(4.0*phi) f173b89863d34d55aaa2cf618fabbda3--1a8dce6b20384cae975bdc162ccfc123 1a8dce6b20384cae975bdc162ccfc123--c0b05c28bf4d4e6ab5d53ab4c67229ec 1c7db2bca18b49e1ae6cf541103f7769 2b26f5d2390f4010bc38f539110ccb8e RX(phi) 475820f0d3164512b48a661f755c3717--2b26f5d2390f4010bc38f539110ccb8e d0d0d5e339f243bdbbc22df396a13e35 4 3ae1e82bf98045a39545e421fbe9ab09 RX(4.0*phi) 2b26f5d2390f4010bc38f539110ccb8e--3ae1e82bf98045a39545e421fbe9ab09 80db265a95c442a8804ee1241e945ddd RX(8.0*phi) 3ae1e82bf98045a39545e421fbe9ab09--80db265a95c442a8804ee1241e945ddd 80db265a95c442a8804ee1241e945ddd--1c7db2bca18b49e1ae6cf541103f7769 6ec61e03599347f18c53f09243bcfd14 332745afc75c4ffa80370814d5ef428a RX(phi) d0d0d5e339f243bdbbc22df396a13e35--332745afc75c4ffa80370814d5ef428a 7141c4f18a944323b0683a0ea6dccb02 RX(5.0*phi) 332745afc75c4ffa80370814d5ef428a--7141c4f18a944323b0683a0ea6dccb02 6621979251224111b6d963d9d1a4ad75 RX(16.0*phi) 7141c4f18a944323b0683a0ea6dccb02--6621979251224111b6d963d9d1a4ad75 6621979251224111b6d963d9d1a4ad75--6ec61e03599347f18c53f09243bcfd14

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 f8740ed4c90240d3ac2fac9c8d14b2c1 0 2dac68a9d7e742d4b133ee8c6c68d7ea RX(1.0*acos(phi)) f8740ed4c90240d3ac2fac9c8d14b2c1--2dac68a9d7e742d4b133ee8c6c68d7ea 3d8044a95abb48e4a8b64741e34e904a 1 aec4d3d091954a0c828da9a43f6e704b 2dac68a9d7e742d4b133ee8c6c68d7ea--aec4d3d091954a0c828da9a43f6e704b 823f7a9312f94f1aa31e08e651fbf0f9 27d9cd0ea0d44adfac40fa439a0d102c RX(1.414*acos(phi)) 3d8044a95abb48e4a8b64741e34e904a--27d9cd0ea0d44adfac40fa439a0d102c 7cf41a486d0f405389c7c09f4438efe3 2 27d9cd0ea0d44adfac40fa439a0d102c--823f7a9312f94f1aa31e08e651fbf0f9 6f174b29da654c5ab6e5021117165d7c 881c5f0c0b06469688d8ba3771e4ac49 RX(1.732*acos(phi)) 7cf41a486d0f405389c7c09f4438efe3--881c5f0c0b06469688d8ba3771e4ac49 4f2479c6886949cdb71dc35542ac436c 3 881c5f0c0b06469688d8ba3771e4ac49--6f174b29da654c5ab6e5021117165d7c 54bd0a46e0ed475581b5af2927073dc4 0ed8f601626442f286f85be5305bed95 RX(2.0*acos(phi)) 4f2479c6886949cdb71dc35542ac436c--0ed8f601626442f286f85be5305bed95 5df3567728974478bd848e7e56f771cf 4 0ed8f601626442f286f85be5305bed95--54bd0a46e0ed475581b5af2927073dc4 bd1124e0880b4ca796bf9ac1ff05ed7c 30047dbf3ef54aa68c38de3f6af2a2b8 RX(2.236*acos(phi)) 5df3567728974478bd848e7e56f771cf--30047dbf3ef54aa68c38de3f6af2a2b8 30047dbf3ef54aa68c38de3f6af2a2b8--bd1124e0880b4ca796bf9ac1ff05ed7c

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 f3475d0f57244ea4b430bbb488e4e0fa 0 6dc1f4464a6948a6af3c2d9b50f14b48 RX(1.0*phi*w₀) f3475d0f57244ea4b430bbb488e4e0fa--6dc1f4464a6948a6af3c2d9b50f14b48 66e14b38be504b10a345f9b5a5e35525 1 7c7d764c3af842458894440bee9db67a 6dc1f4464a6948a6af3c2d9b50f14b48--7c7d764c3af842458894440bee9db67a feb9993b113e4140802c41ef37ab4452 77cdf747d748455c8d836bbf8a43aa04 RX(2.0*phi*w₁) 66e14b38be504b10a345f9b5a5e35525--77cdf747d748455c8d836bbf8a43aa04 3b37f652b70c420696feaa1eb612dc82 2 77cdf747d748455c8d836bbf8a43aa04--feb9993b113e4140802c41ef37ab4452 c11fbea3d1f44c50bab9bf7d966d396d 98daf8ae911b4c66b2610350b107b841 RX(4.0*phi*w₂) 3b37f652b70c420696feaa1eb612dc82--98daf8ae911b4c66b2610350b107b841 55fd05fe321149768fda753181b6af3f 3 98daf8ae911b4c66b2610350b107b841--c11fbea3d1f44c50bab9bf7d966d396d 86233a975c5e40ae9aadf39651f8c653 abaf9943a3e746ac9141e4d700fd6f18 RX(8.0*phi*w₃) 55fd05fe321149768fda753181b6af3f--abaf9943a3e746ac9141e4d700fd6f18 e3d81a6456c1456d88c82fb472cb8499 4 abaf9943a3e746ac9141e4d700fd6f18--86233a975c5e40ae9aadf39651f8c653 a7bc561dda1f46b1b06659e131225e1f 8d82f7311e8540769aaa2d60b2ce7db8 RX(16.0*phi*w₄) e3d81a6456c1456d88c82fb472cb8499--8d82f7311e8540769aaa2d60b2ce7db8 8d82f7311e8540769aaa2d60b2ce7db8--a7bc561dda1f46b1b06659e131225e1f

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 f8b2e89ca5aa4ac0b8e3fb494fff71ea 0 a0b1c0d0e0764099a0730f1b412a788a RY(80.0*acos(w₄*(0.667*x + 1.667))) f8b2e89ca5aa4ac0b8e3fb494fff71ea--a0b1c0d0e0764099a0730f1b412a788a 81ca0f6e744c469f8cd3d1458b16974a 1 97fdf11a12b7425fa867b2449aa0f87a a0b1c0d0e0764099a0730f1b412a788a--97fdf11a12b7425fa867b2449aa0f87a e90895a8efc8463e91cbab1234738633 eaed4066e46243da86bada22c55a2415 RY(40.0*acos(w₃*(0.667*x + 1.667))) 81ca0f6e744c469f8cd3d1458b16974a--eaed4066e46243da86bada22c55a2415 511831a487b7453cbdcfcfa909ec90fd 2 eaed4066e46243da86bada22c55a2415--e90895a8efc8463e91cbab1234738633 735a41b578c246389dc8770eb6745d23 93a98e607a1044d0bb1c9a46844c6d05 RY(20.0*acos(w₂*(0.667*x + 1.667))) 511831a487b7453cbdcfcfa909ec90fd--93a98e607a1044d0bb1c9a46844c6d05 e0085e74fb4f4f69bad59835d9bf815d 3 93a98e607a1044d0bb1c9a46844c6d05--735a41b578c246389dc8770eb6745d23 7c6eccc762304e79b84aec108ddd5883 858aff6de34b45d39672ddb71943b582 RY(10.0*acos(w₁*(0.667*x + 1.667))) e0085e74fb4f4f69bad59835d9bf815d--858aff6de34b45d39672ddb71943b582 1cbcc566afdd4a2b9f0184686502c2e0 4 858aff6de34b45d39672ddb71943b582--7c6eccc762304e79b84aec108ddd5883 9cdcc20ad6354da49b426dc9a0a40a30 b1ed84923f1f4d8d9d98d2d5bc5cc8ac RY(5.0*acos(w₀*(0.667*x + 1.667))) 1cbcc566afdd4a2b9f0184686502c2e0--b1ed84923f1f4d8d9d98d2d5bc5cc8ac b1ed84923f1f4d8d9d98d2d5bc5cc8ac--9cdcc20ad6354da49b426dc9a0a40a30

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 09e9b3c4058d4a20944f9617f2ff93f4 0 5b83230cd2f94340ae7562dd85c4e902 RX(theta₀) 09e9b3c4058d4a20944f9617f2ff93f4--5b83230cd2f94340ae7562dd85c4e902 82c66028f7ab42c39800c965222c6106 1 7976d2d8638b4a4ca85924e39c3732e2 RY(theta₃) 5b83230cd2f94340ae7562dd85c4e902--7976d2d8638b4a4ca85924e39c3732e2 f7a630068f704ffca57efb31d3a36868 RX(theta₆) 7976d2d8638b4a4ca85924e39c3732e2--f7a630068f704ffca57efb31d3a36868 c5d06e3775a54b4986379e9b5f3d3803 f7a630068f704ffca57efb31d3a36868--c5d06e3775a54b4986379e9b5f3d3803 a5193cb40c6a407ba9928ad35523cab8 c5d06e3775a54b4986379e9b5f3d3803--a5193cb40c6a407ba9928ad35523cab8 9af42abc7d054a9480df1cb9d81b6c85 RX(theta₉) a5193cb40c6a407ba9928ad35523cab8--9af42abc7d054a9480df1cb9d81b6c85 30a94b54f6e6442a819d1608e201210a RY(theta₁₂) 9af42abc7d054a9480df1cb9d81b6c85--30a94b54f6e6442a819d1608e201210a a26f0a6d33aa473caf594c5d5d7da636 RX(theta₁₅) 30a94b54f6e6442a819d1608e201210a--a26f0a6d33aa473caf594c5d5d7da636 ab7ebd4e84344a7e953ca318697abe83 a26f0a6d33aa473caf594c5d5d7da636--ab7ebd4e84344a7e953ca318697abe83 bf23011f2ee047edab0c2648b5b810ed ab7ebd4e84344a7e953ca318697abe83--bf23011f2ee047edab0c2648b5b810ed daaaceca287e4152bee9beeaa9f4cb27 bf23011f2ee047edab0c2648b5b810ed--daaaceca287e4152bee9beeaa9f4cb27 41e45ced78924df7957dcda3ffa494b4 4a548635fadd49278a9fa7082bb4ceb0 RX(theta₁) 82c66028f7ab42c39800c965222c6106--4a548635fadd49278a9fa7082bb4ceb0 16dae5dc92c74c9d80269793284585c8 2 f214fe2786a9408d8e9178fc853d0e89 RY(theta₄) 4a548635fadd49278a9fa7082bb4ceb0--f214fe2786a9408d8e9178fc853d0e89 f72a849cd2b74cada27f46d7509ef2f1 RX(theta₇) f214fe2786a9408d8e9178fc853d0e89--f72a849cd2b74cada27f46d7509ef2f1 448982b0321949ed93b53cc4a4534760 X f72a849cd2b74cada27f46d7509ef2f1--448982b0321949ed93b53cc4a4534760 448982b0321949ed93b53cc4a4534760--c5d06e3775a54b4986379e9b5f3d3803 5c295a70f4924e3baf1a4d6e84568894 448982b0321949ed93b53cc4a4534760--5c295a70f4924e3baf1a4d6e84568894 2088a6970c864a12a52f04f525e0bdf9 RX(theta₁₀) 5c295a70f4924e3baf1a4d6e84568894--2088a6970c864a12a52f04f525e0bdf9 a5fb02a63f9b442cb4e0efc5c707c9c8 RY(theta₁₃) 2088a6970c864a12a52f04f525e0bdf9--a5fb02a63f9b442cb4e0efc5c707c9c8 6d19d95f7e464049980a1bb094f225af RX(theta₁₆) a5fb02a63f9b442cb4e0efc5c707c9c8--6d19d95f7e464049980a1bb094f225af 82760fbbf4d24182988472f9ff0b847a X 6d19d95f7e464049980a1bb094f225af--82760fbbf4d24182988472f9ff0b847a 82760fbbf4d24182988472f9ff0b847a--ab7ebd4e84344a7e953ca318697abe83 67b46b16b7374524afa0b396fb13ca8c 82760fbbf4d24182988472f9ff0b847a--67b46b16b7374524afa0b396fb13ca8c 67b46b16b7374524afa0b396fb13ca8c--41e45ced78924df7957dcda3ffa494b4 43952195f3974c97ac515693748e8750 5b9c928a97e74b4b81f4b9dca726a040 RX(theta₂) 16dae5dc92c74c9d80269793284585c8--5b9c928a97e74b4b81f4b9dca726a040 e0c8d7534ab24ab69fa0fff9c22434a6 RY(theta₅) 5b9c928a97e74b4b81f4b9dca726a040--e0c8d7534ab24ab69fa0fff9c22434a6 63fa74509f654f589b757c9c957c8322 RX(theta₈) e0c8d7534ab24ab69fa0fff9c22434a6--63fa74509f654f589b757c9c957c8322 9785f62179c840a7a8dad4df1c3a0140 63fa74509f654f589b757c9c957c8322--9785f62179c840a7a8dad4df1c3a0140 e1232424c0a24608ae8c8c1f72b5a59a X 9785f62179c840a7a8dad4df1c3a0140--e1232424c0a24608ae8c8c1f72b5a59a e1232424c0a24608ae8c8c1f72b5a59a--5c295a70f4924e3baf1a4d6e84568894 031c744d3e1e4331b4d8c2f985c9bbc4 RX(theta₁₁) e1232424c0a24608ae8c8c1f72b5a59a--031c744d3e1e4331b4d8c2f985c9bbc4 fc67fefa55bb4ce48d4d5b08ce9f488d RY(theta₁₄) 031c744d3e1e4331b4d8c2f985c9bbc4--fc67fefa55bb4ce48d4d5b08ce9f488d 0663b80143b44fc8bce92c90cdbd58ee RX(theta₁₇) fc67fefa55bb4ce48d4d5b08ce9f488d--0663b80143b44fc8bce92c90cdbd58ee 8fcba17a7f564331b2e54b5065108487 0663b80143b44fc8bce92c90cdbd58ee--8fcba17a7f564331b2e54b5065108487 fc9b31e47005430997382c02f4250d12 X 8fcba17a7f564331b2e54b5065108487--fc9b31e47005430997382c02f4250d12 fc9b31e47005430997382c02f4250d12--67b46b16b7374524afa0b396fb13ca8c fc9b31e47005430997382c02f4250d12--43952195f3974c97ac515693748e8750

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 23d0b51b295e4a0d8153db81f472e290 0 0139284209b441d88a549919920b9168 RX(phi₀) 23d0b51b295e4a0d8153db81f472e290--0139284209b441d88a549919920b9168 ab934d25cd0e4569b17702dce235d3df 1 ef1218912257482e8b0a727b1b8a36b4 RY(phi₃) 0139284209b441d88a549919920b9168--ef1218912257482e8b0a727b1b8a36b4 6b534c3016d84ce99ccd7256089600db RX(phi₆) ef1218912257482e8b0a727b1b8a36b4--6b534c3016d84ce99ccd7256089600db d796c5f90d6c47b4ba7f7eda5b6fd6e5 6b534c3016d84ce99ccd7256089600db--d796c5f90d6c47b4ba7f7eda5b6fd6e5 b868b457e5fc4c328f8727b011728229 d796c5f90d6c47b4ba7f7eda5b6fd6e5--b868b457e5fc4c328f8727b011728229 537d91ae51c146d8b37e29e95310cbf4 RX(phi₉) b868b457e5fc4c328f8727b011728229--537d91ae51c146d8b37e29e95310cbf4 13e4b5b271294eb1b713d393cea3c41d RY(phi₁₂) 537d91ae51c146d8b37e29e95310cbf4--13e4b5b271294eb1b713d393cea3c41d 3cf6c330a40f446d95c13468998469df RX(phi₁₅) 13e4b5b271294eb1b713d393cea3c41d--3cf6c330a40f446d95c13468998469df 2e36b8f6788d4cc3bf62d81762ef796a 3cf6c330a40f446d95c13468998469df--2e36b8f6788d4cc3bf62d81762ef796a 34d583296fce4f75ad59ea1322c46f9e 2e36b8f6788d4cc3bf62d81762ef796a--34d583296fce4f75ad59ea1322c46f9e bb47945c363a45e4bf1fc2fcb12aeb29 34d583296fce4f75ad59ea1322c46f9e--bb47945c363a45e4bf1fc2fcb12aeb29 c7cdb6c2a27d4276851a182441b8f844 756ef61f0ee74aecac33ea3c6e413fa7 RX(phi₁) ab934d25cd0e4569b17702dce235d3df--756ef61f0ee74aecac33ea3c6e413fa7 f8008124b1114e3599abcd7d81c5033f 2 6b57f44dcaed4195ace26b8be167a0d5 RY(phi₄) 756ef61f0ee74aecac33ea3c6e413fa7--6b57f44dcaed4195ace26b8be167a0d5 0312c5c821cb46a8b268e149e466ff84 RX(phi₇) 6b57f44dcaed4195ace26b8be167a0d5--0312c5c821cb46a8b268e149e466ff84 6175f9a0b24040b699b07ffff49edbf6 PHASE(phi_ent₀) 0312c5c821cb46a8b268e149e466ff84--6175f9a0b24040b699b07ffff49edbf6 6175f9a0b24040b699b07ffff49edbf6--d796c5f90d6c47b4ba7f7eda5b6fd6e5 7d6eef94f17c48bc826646dfd5015d53 6175f9a0b24040b699b07ffff49edbf6--7d6eef94f17c48bc826646dfd5015d53 0ae22777a9a54e66aaaf15c16bd97862 RX(phi₁₀) 7d6eef94f17c48bc826646dfd5015d53--0ae22777a9a54e66aaaf15c16bd97862 1d6dbab7cdc6471e94ecefda1db01812 RY(phi₁₃) 0ae22777a9a54e66aaaf15c16bd97862--1d6dbab7cdc6471e94ecefda1db01812 048bbe061634474daa2b63291cfdcf74 RX(phi₁₆) 1d6dbab7cdc6471e94ecefda1db01812--048bbe061634474daa2b63291cfdcf74 29b5db2549f54451a002e348ab6e423d PHASE(phi_ent₂) 048bbe061634474daa2b63291cfdcf74--29b5db2549f54451a002e348ab6e423d 29b5db2549f54451a002e348ab6e423d--2e36b8f6788d4cc3bf62d81762ef796a f9f341e41db74a548009dc06a7027ab1 29b5db2549f54451a002e348ab6e423d--f9f341e41db74a548009dc06a7027ab1 f9f341e41db74a548009dc06a7027ab1--c7cdb6c2a27d4276851a182441b8f844 c1a2ba67a639452c8f4e7f99fb9c2da1 13eb32ec438847a3ada5e74cc78185f7 RX(phi₂) f8008124b1114e3599abcd7d81c5033f--13eb32ec438847a3ada5e74cc78185f7 26f4f64a70334774a3248254655faf8d RY(phi₅) 13eb32ec438847a3ada5e74cc78185f7--26f4f64a70334774a3248254655faf8d 45cc353b706a44f2b5c7bb673cb2c76f RX(phi₈) 26f4f64a70334774a3248254655faf8d--45cc353b706a44f2b5c7bb673cb2c76f 3aa4f6d3444747e8a71c1948fa208fa7 45cc353b706a44f2b5c7bb673cb2c76f--3aa4f6d3444747e8a71c1948fa208fa7 1754f64a15cd4b1c8229d223a698aa9a PHASE(phi_ent₁) 3aa4f6d3444747e8a71c1948fa208fa7--1754f64a15cd4b1c8229d223a698aa9a 1754f64a15cd4b1c8229d223a698aa9a--7d6eef94f17c48bc826646dfd5015d53 b4decf5e7e624c47a2641c8c89c86f62 RX(phi₁₁) 1754f64a15cd4b1c8229d223a698aa9a--b4decf5e7e624c47a2641c8c89c86f62 4809da6b77d44073929b6c47ccceb8c6 RY(phi₁₄) b4decf5e7e624c47a2641c8c89c86f62--4809da6b77d44073929b6c47ccceb8c6 c150e8b06c5f481892376fad8c422d4a RX(phi₁₇) 4809da6b77d44073929b6c47ccceb8c6--c150e8b06c5f481892376fad8c422d4a 23b4bbc6edf24ce7b71d1a5093218d5a c150e8b06c5f481892376fad8c422d4a--23b4bbc6edf24ce7b71d1a5093218d5a 4d679e187dfd408ea4c8ab136ba70d0a PHASE(phi_ent₃) 23b4bbc6edf24ce7b71d1a5093218d5a--4d679e187dfd408ea4c8ab136ba70d0a 4d679e187dfd408ea4c8ab136ba70d0a--f9f341e41db74a548009dc06a7027ab1 4d679e187dfd408ea4c8ab136ba70d0a--c1a2ba67a639452c8f4e7f99fb9c2da1

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_a1aa4524313b4c15a713504d7b563202 cluster_b652acd7864c46f0b09c73c09ac9d681 512a2f32d49b4787a0566424ab22fdd1 0 6634cf27d4da4f29a2dc3331ea7c0694 RX(theta₀) 512a2f32d49b4787a0566424ab22fdd1--6634cf27d4da4f29a2dc3331ea7c0694 3866eaea4e044b3490803c0f3fa49915 1 8ddece8b63ff49b0ba81ef9b3fe4111d RY(theta₃) 6634cf27d4da4f29a2dc3331ea7c0694--8ddece8b63ff49b0ba81ef9b3fe4111d 225c55cced584eceb9b4815fab267a9d RX(theta₆) 8ddece8b63ff49b0ba81ef9b3fe4111d--225c55cced584eceb9b4815fab267a9d ddd5bf9ecb15409594acc6a55611f3f8 HamEvo 225c55cced584eceb9b4815fab267a9d--ddd5bf9ecb15409594acc6a55611f3f8 fbca7c0dfe1f45dca82b8a950de4c050 RX(theta₉) ddd5bf9ecb15409594acc6a55611f3f8--fbca7c0dfe1f45dca82b8a950de4c050 e405e0fbcc11428d87c6219926e207b7 RY(theta₁₂) fbca7c0dfe1f45dca82b8a950de4c050--e405e0fbcc11428d87c6219926e207b7 f18e044438fb44bb8f86ef0df654ab6c RX(theta₁₅) e405e0fbcc11428d87c6219926e207b7--f18e044438fb44bb8f86ef0df654ab6c 10d8eb87f37d4462bd85c98654fd6185 HamEvo f18e044438fb44bb8f86ef0df654ab6c--10d8eb87f37d4462bd85c98654fd6185 bc5c452a19144c7494e9d8e64b74071c 10d8eb87f37d4462bd85c98654fd6185--bc5c452a19144c7494e9d8e64b74071c 2a12018b085345ac91139cac1fbdc8fe 3a13cfada5e54dfc8dd93403adf503a9 RX(theta₁) 3866eaea4e044b3490803c0f3fa49915--3a13cfada5e54dfc8dd93403adf503a9 244391afc5104401a8cb9f27e55a4143 2 0703633fd9104acb844d54b9fb1b22d1 RY(theta₄) 3a13cfada5e54dfc8dd93403adf503a9--0703633fd9104acb844d54b9fb1b22d1 21777e5c32714535b57bf031138ab75a RX(theta₇) 0703633fd9104acb844d54b9fb1b22d1--21777e5c32714535b57bf031138ab75a 3ab6f69287c24237b039f905fdd59a6e t = theta_t₀ 21777e5c32714535b57bf031138ab75a--3ab6f69287c24237b039f905fdd59a6e f48ee952a2e04085aa9698d397e16973 RX(theta₁₀) 3ab6f69287c24237b039f905fdd59a6e--f48ee952a2e04085aa9698d397e16973 9f41f8e94f4c4fc59880a0906e5fac53 RY(theta₁₃) f48ee952a2e04085aa9698d397e16973--9f41f8e94f4c4fc59880a0906e5fac53 2217199975fa42969fdaab5a4315bfd4 RX(theta₁₆) 9f41f8e94f4c4fc59880a0906e5fac53--2217199975fa42969fdaab5a4315bfd4 b21bddbf54324a7392468f29110b32d7 t = theta_t₁ 2217199975fa42969fdaab5a4315bfd4--b21bddbf54324a7392468f29110b32d7 b21bddbf54324a7392468f29110b32d7--2a12018b085345ac91139cac1fbdc8fe 94035f97537846098fae2f4439d0a585 f5b238a047884c18a3698dd8eaffa5af RX(theta₂) 244391afc5104401a8cb9f27e55a4143--f5b238a047884c18a3698dd8eaffa5af 3b88abc7e7fd4fe6ba19605884b620af RY(theta₅) f5b238a047884c18a3698dd8eaffa5af--3b88abc7e7fd4fe6ba19605884b620af 4a6799ef39124bcc8d64bcb9d814de74 RX(theta₈) 3b88abc7e7fd4fe6ba19605884b620af--4a6799ef39124bcc8d64bcb9d814de74 c2f63daf43334e6687f4686b06bde8f7 4a6799ef39124bcc8d64bcb9d814de74--c2f63daf43334e6687f4686b06bde8f7 d301354d2c854fdbafa9b09994073d22 RX(theta₁₁) c2f63daf43334e6687f4686b06bde8f7--d301354d2c854fdbafa9b09994073d22 a213f8b89fbb4be39e48a82d901d4493 RY(theta₁₄) d301354d2c854fdbafa9b09994073d22--a213f8b89fbb4be39e48a82d901d4493 ddbbbf03393d4b7398d5f13a598c483c RX(theta₁₇) a213f8b89fbb4be39e48a82d901d4493--ddbbbf03393d4b7398d5f13a598c483c 41313824cd9d4f45b54115248c5e5281 ddbbbf03393d4b7398d5f13a598c483c--41313824cd9d4f45b54115248c5e5281 41313824cd9d4f45b54115248c5e5281--94035f97537846098fae2f4439d0a585

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_a7359035316446969672aec5f4fdb33e cluster_769db03d5c284986bb9b3e67f0668480 7c654b95e7a44bc5a7609e44332fb6b9 0 29d195d290f74759a630b731dca5b08c RX(theta₀) 7c654b95e7a44bc5a7609e44332fb6b9--29d195d290f74759a630b731dca5b08c 3b1d879713a04e449d9cbea097cfce63 1 714c5bd991ae46efaf39d0466702f6a5 RY(theta₆) 29d195d290f74759a630b731dca5b08c--714c5bd991ae46efaf39d0466702f6a5 d72a5355d524491f80572298b63a2987 RX(theta₁₂) 714c5bd991ae46efaf39d0466702f6a5--d72a5355d524491f80572298b63a2987 f962bf8cc1c941d78dd1c0af145d2728 d72a5355d524491f80572298b63a2987--f962bf8cc1c941d78dd1c0af145d2728 9cf0f359063f48428f0e5a3d9d9a6246 RX(theta₁₈) f962bf8cc1c941d78dd1c0af145d2728--9cf0f359063f48428f0e5a3d9d9a6246 437ad4219c4c42a48b3c2f1f5e62abef RY(theta₂₄) 9cf0f359063f48428f0e5a3d9d9a6246--437ad4219c4c42a48b3c2f1f5e62abef 5ae8d12407934e189c303780655a508f RX(theta₃₀) 437ad4219c4c42a48b3c2f1f5e62abef--5ae8d12407934e189c303780655a508f 8b7c8f0972724fb79bb0977e9228c033 5ae8d12407934e189c303780655a508f--8b7c8f0972724fb79bb0977e9228c033 931d7102838c4626b827713c742bb667 8b7c8f0972724fb79bb0977e9228c033--931d7102838c4626b827713c742bb667 326c1197911f47c4bdb10fa5721c1c33 1abf2359d05f42a8960336941330f0a3 RX(theta₁) 3b1d879713a04e449d9cbea097cfce63--1abf2359d05f42a8960336941330f0a3 b191080293f04fa386b3db46a7011d9f 2 e3682770dccd42db8736df420b97ac27 RY(theta₇) 1abf2359d05f42a8960336941330f0a3--e3682770dccd42db8736df420b97ac27 5df80c1ce53546d28c71c925d095e795 RX(theta₁₃) e3682770dccd42db8736df420b97ac27--5df80c1ce53546d28c71c925d095e795 d13c841ebcbb40728e203c7a6b4c9e43 5df80c1ce53546d28c71c925d095e795--d13c841ebcbb40728e203c7a6b4c9e43 e236c1650a104067a29ec8a1b97079ab RX(theta₁₉) d13c841ebcbb40728e203c7a6b4c9e43--e236c1650a104067a29ec8a1b97079ab 80af407710be46bc9a91ccd36b8678bf RY(theta₂₅) e236c1650a104067a29ec8a1b97079ab--80af407710be46bc9a91ccd36b8678bf cbe41bd8b55d42568c431ceb17b794e7 RX(theta₃₁) 80af407710be46bc9a91ccd36b8678bf--cbe41bd8b55d42568c431ceb17b794e7 5b2b444bfcca4dddaba68b70360cf245 cbe41bd8b55d42568c431ceb17b794e7--5b2b444bfcca4dddaba68b70360cf245 5b2b444bfcca4dddaba68b70360cf245--326c1197911f47c4bdb10fa5721c1c33 96ac2ba84a5e4df6ae407b4600180912 8e772e6c755d4a09bc2f20b697a09480 RX(theta₂) b191080293f04fa386b3db46a7011d9f--8e772e6c755d4a09bc2f20b697a09480 e12da413264f4bac9b636187dc2980de 3 c80899d3866e47b1b521c6a349e7aabb RY(theta₈) 8e772e6c755d4a09bc2f20b697a09480--c80899d3866e47b1b521c6a349e7aabb 40cac518af48493bb9c454751d576be0 RX(theta₁₄) c80899d3866e47b1b521c6a349e7aabb--40cac518af48493bb9c454751d576be0 97231fbe1b8349ea93a2762581e4e720 HamEvo 40cac518af48493bb9c454751d576be0--97231fbe1b8349ea93a2762581e4e720 f0af51aabc12498ba3ac0328c9a03813 RX(theta₂₀) 97231fbe1b8349ea93a2762581e4e720--f0af51aabc12498ba3ac0328c9a03813 cbe4d8eb29824149946dfbf9047897ba RY(theta₂₆) f0af51aabc12498ba3ac0328c9a03813--cbe4d8eb29824149946dfbf9047897ba ecc7b4db65aa42eb88e26e1e16db04f4 RX(theta₃₂) cbe4d8eb29824149946dfbf9047897ba--ecc7b4db65aa42eb88e26e1e16db04f4 dc9d536150b847ad964f9cac0edade1a HamEvo ecc7b4db65aa42eb88e26e1e16db04f4--dc9d536150b847ad964f9cac0edade1a dc9d536150b847ad964f9cac0edade1a--96ac2ba84a5e4df6ae407b4600180912 38f818dce1384d4584882d1c91e2a84e 1ac59a3c0d814433a53394dd423490f2 RX(theta₃) e12da413264f4bac9b636187dc2980de--1ac59a3c0d814433a53394dd423490f2 bffbd7b506b1402eb99f67f31cbf5b69 4 5781f92b943c45fcaad2c944a4885886 RY(theta₉) 1ac59a3c0d814433a53394dd423490f2--5781f92b943c45fcaad2c944a4885886 28842896f44549dba2ffa27ad271da9b RX(theta₁₅) 5781f92b943c45fcaad2c944a4885886--28842896f44549dba2ffa27ad271da9b 8ed586b241db4be093f75d70afa00984 t = theta_t₀ 28842896f44549dba2ffa27ad271da9b--8ed586b241db4be093f75d70afa00984 840ce32bdb4643089f50b8a58016c7c5 RX(theta₂₁) 8ed586b241db4be093f75d70afa00984--840ce32bdb4643089f50b8a58016c7c5 8e63a36660d14857a7a4cf9fc9cb8c69 RY(theta₂₇) 840ce32bdb4643089f50b8a58016c7c5--8e63a36660d14857a7a4cf9fc9cb8c69 04660dbe150742499f4ec46b26e87875 RX(theta₃₃) 8e63a36660d14857a7a4cf9fc9cb8c69--04660dbe150742499f4ec46b26e87875 ec913a2646f54884bd27da76a77fd528 t = theta_t₁ 04660dbe150742499f4ec46b26e87875--ec913a2646f54884bd27da76a77fd528 ec913a2646f54884bd27da76a77fd528--38f818dce1384d4584882d1c91e2a84e beb6eca016a8459984c5a7b598fe5632 c30f63fd317246e4aa4f8a61ccecab09 RX(theta₄) bffbd7b506b1402eb99f67f31cbf5b69--c30f63fd317246e4aa4f8a61ccecab09 c9dabe7ad5ab4f15aec0e3a9fc1e1a4a 5 5b604e3889094703b8752dece9272a71 RY(theta₁₀) c30f63fd317246e4aa4f8a61ccecab09--5b604e3889094703b8752dece9272a71 5727cfffbc5f4b5784d3a1f889274ef5 RX(theta₁₆) 5b604e3889094703b8752dece9272a71--5727cfffbc5f4b5784d3a1f889274ef5 e8654e947a3248138495791df6a0002e 5727cfffbc5f4b5784d3a1f889274ef5--e8654e947a3248138495791df6a0002e b3265b7b4d524d78bef2046073d45945 RX(theta₂₂) e8654e947a3248138495791df6a0002e--b3265b7b4d524d78bef2046073d45945 b881a2ee12464110b066a331920b2d28 RY(theta₂₈) b3265b7b4d524d78bef2046073d45945--b881a2ee12464110b066a331920b2d28 b0c3e790246e4be7b16b58a590d69c64 RX(theta₃₄) b881a2ee12464110b066a331920b2d28--b0c3e790246e4be7b16b58a590d69c64 e63951e844534538bf25bd8a82bd983b b0c3e790246e4be7b16b58a590d69c64--e63951e844534538bf25bd8a82bd983b e63951e844534538bf25bd8a82bd983b--beb6eca016a8459984c5a7b598fe5632 0dda158beb9c45dba67041c5e7faa8e2 d074e1504a1140bcb0fe5fec46643cb2 RX(theta₅) c9dabe7ad5ab4f15aec0e3a9fc1e1a4a--d074e1504a1140bcb0fe5fec46643cb2 b63708bcc14e4dd9bc00dcd741f330ba RY(theta₁₁) d074e1504a1140bcb0fe5fec46643cb2--b63708bcc14e4dd9bc00dcd741f330ba d1121918c4ec4a07aa4dde54a40cd378 RX(theta₁₇) b63708bcc14e4dd9bc00dcd741f330ba--d1121918c4ec4a07aa4dde54a40cd378 b225f264c0244586a4ef71139ec6933c d1121918c4ec4a07aa4dde54a40cd378--b225f264c0244586a4ef71139ec6933c af2c19af1ed24b09b65b6e4ce80405e2 RX(theta₂₃) b225f264c0244586a4ef71139ec6933c--af2c19af1ed24b09b65b6e4ce80405e2 633e782adc104cfea1223a491db7364c RY(theta₂₉) af2c19af1ed24b09b65b6e4ce80405e2--633e782adc104cfea1223a491db7364c 295565eaf5574aaab15ce81718167987 RX(theta₃₅) 633e782adc104cfea1223a491db7364c--295565eaf5574aaab15ce81718167987 c9415a9c6ca94c2990ef9166021116c3 295565eaf5574aaab15ce81718167987--c9415a9c6ca94c2990ef9166021116c3 c9415a9c6ca94c2990ef9166021116c3--0dda158beb9c45dba67041c5e7faa8e2

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_5d5229d5a7054b8f9cbed4482bc5cc08 BPMA-1 cluster_de50c7d315cb45a29aaeb5e55008cdd2 BPMA-0 c6103c3955934980bf8509067b66807e 0 e3befcf4dc5d4fb099d44f7b63515b2b RX(iia_α₀₀) c6103c3955934980bf8509067b66807e--e3befcf4dc5d4fb099d44f7b63515b2b c79ea8d9a7704a0b8e909ef1a99c23de 1 b6e06aad1f86495380d7cc71e5fa4f8c RY(iia_α₀₃) e3befcf4dc5d4fb099d44f7b63515b2b--b6e06aad1f86495380d7cc71e5fa4f8c f18ac30f20cc41f18a7eea33bc551363 b6e06aad1f86495380d7cc71e5fa4f8c--f18ac30f20cc41f18a7eea33bc551363 7a312b49c55e4d85b0c02131f90eaecb f18ac30f20cc41f18a7eea33bc551363--7a312b49c55e4d85b0c02131f90eaecb e550367e706d42e081cb8fa04d206ab9 RX(iia_γ₀₀) 7a312b49c55e4d85b0c02131f90eaecb--e550367e706d42e081cb8fa04d206ab9 576ddae6fc454663bdb9f8d466a03e77 e550367e706d42e081cb8fa04d206ab9--576ddae6fc454663bdb9f8d466a03e77 697530d1899444aba2c2f02be8b98e48 576ddae6fc454663bdb9f8d466a03e77--697530d1899444aba2c2f02be8b98e48 013f62c715fc4e90915ffdf430aad757 RY(iia_β₀₃) 697530d1899444aba2c2f02be8b98e48--013f62c715fc4e90915ffdf430aad757 67701c6e724846a3b62d13c6e045dd52 RX(iia_β₀₀) 013f62c715fc4e90915ffdf430aad757--67701c6e724846a3b62d13c6e045dd52 deb4121b231f40a6ade13e57940e944c RX(iia_α₁₀) 67701c6e724846a3b62d13c6e045dd52--deb4121b231f40a6ade13e57940e944c 77d3ca54d5974fe9926ba74d8ed850d7 RY(iia_α₁₃) deb4121b231f40a6ade13e57940e944c--77d3ca54d5974fe9926ba74d8ed850d7 48d4467683504edb97fb295461ccee47 77d3ca54d5974fe9926ba74d8ed850d7--48d4467683504edb97fb295461ccee47 c7a948d4ae3a48f7b0ba109ff39d195e 48d4467683504edb97fb295461ccee47--c7a948d4ae3a48f7b0ba109ff39d195e eb04bb0e0ba645a48305eaaa22e1137d RX(iia_γ₁₀) c7a948d4ae3a48f7b0ba109ff39d195e--eb04bb0e0ba645a48305eaaa22e1137d 1480a6e9eb45481084e4e5bc0158be25 eb04bb0e0ba645a48305eaaa22e1137d--1480a6e9eb45481084e4e5bc0158be25 c16f0bd0afdc4d218d637043bf6d1b70 1480a6e9eb45481084e4e5bc0158be25--c16f0bd0afdc4d218d637043bf6d1b70 c3c3f3c5b63e4b95860f9857dd2d2bd2 RY(iia_β₁₃) c16f0bd0afdc4d218d637043bf6d1b70--c3c3f3c5b63e4b95860f9857dd2d2bd2 49174e5ec55d4c1c99b3c465c92fa061 RX(iia_β₁₀) c3c3f3c5b63e4b95860f9857dd2d2bd2--49174e5ec55d4c1c99b3c465c92fa061 ba45063f31b84aa587f60606142999ec 49174e5ec55d4c1c99b3c465c92fa061--ba45063f31b84aa587f60606142999ec f9b44a47177042edb97a3ce77b6ca1df 17fc29afa09846c4b90cbf345be2dff6 RX(iia_α₀₁) c79ea8d9a7704a0b8e909ef1a99c23de--17fc29afa09846c4b90cbf345be2dff6 dc6992ac0e9c4a80b40c751c89b9261b 2 cd23bd6561fc4274816a4c169f05c7ec RY(iia_α₀₄) 17fc29afa09846c4b90cbf345be2dff6--cd23bd6561fc4274816a4c169f05c7ec 3ba0ac9cdea7487baf2865e2ea937a90 X cd23bd6561fc4274816a4c169f05c7ec--3ba0ac9cdea7487baf2865e2ea937a90 3ba0ac9cdea7487baf2865e2ea937a90--f18ac30f20cc41f18a7eea33bc551363 1ebacb8551ec4270b4ac48f39d84db97 3ba0ac9cdea7487baf2865e2ea937a90--1ebacb8551ec4270b4ac48f39d84db97 bd7b75c09f8347d3b9d9376882e87d88 RX(iia_γ₀₁) 1ebacb8551ec4270b4ac48f39d84db97--bd7b75c09f8347d3b9d9376882e87d88 7033d8f203be4047b04e3ffd9cb3ba05 bd7b75c09f8347d3b9d9376882e87d88--7033d8f203be4047b04e3ffd9cb3ba05 a800a41ec8d5449e9ae7691d011814d9 X 7033d8f203be4047b04e3ffd9cb3ba05--a800a41ec8d5449e9ae7691d011814d9 a800a41ec8d5449e9ae7691d011814d9--697530d1899444aba2c2f02be8b98e48 49150f020f3f45e89310fb41770f84c6 RY(iia_β₀₄) a800a41ec8d5449e9ae7691d011814d9--49150f020f3f45e89310fb41770f84c6 a32ba6c19ce94d0189663f57c676daae RX(iia_β₀₁) 49150f020f3f45e89310fb41770f84c6--a32ba6c19ce94d0189663f57c676daae 7f36b203dc3b4156b1886d1eccbd7ef9 RX(iia_α₁₁) a32ba6c19ce94d0189663f57c676daae--7f36b203dc3b4156b1886d1eccbd7ef9 91e83ea6d3f6459c824fd70bd13f7d4b RY(iia_α₁₄) 7f36b203dc3b4156b1886d1eccbd7ef9--91e83ea6d3f6459c824fd70bd13f7d4b f5a3bfc4060d4290849dbf8dbebf9492 X 91e83ea6d3f6459c824fd70bd13f7d4b--f5a3bfc4060d4290849dbf8dbebf9492 f5a3bfc4060d4290849dbf8dbebf9492--48d4467683504edb97fb295461ccee47 f18accacfeae435fa297db9f6b354c1f f5a3bfc4060d4290849dbf8dbebf9492--f18accacfeae435fa297db9f6b354c1f 9e29ca6014c74a0ca389b6b105447b2d RX(iia_γ₁₁) f18accacfeae435fa297db9f6b354c1f--9e29ca6014c74a0ca389b6b105447b2d 591a98af7429436289ff4eed63066df9 9e29ca6014c74a0ca389b6b105447b2d--591a98af7429436289ff4eed63066df9 df7ad654a69246119a68ace9b24e65e2 X 591a98af7429436289ff4eed63066df9--df7ad654a69246119a68ace9b24e65e2 df7ad654a69246119a68ace9b24e65e2--c16f0bd0afdc4d218d637043bf6d1b70 87f37d8c04c44757be55aa052a3d3cbc RY(iia_β₁₄) df7ad654a69246119a68ace9b24e65e2--87f37d8c04c44757be55aa052a3d3cbc ea1f0bb83efd427ebd0a3bdb358c2d74 RX(iia_β₁₁) 87f37d8c04c44757be55aa052a3d3cbc--ea1f0bb83efd427ebd0a3bdb358c2d74 ea1f0bb83efd427ebd0a3bdb358c2d74--f9b44a47177042edb97a3ce77b6ca1df 134a37f999a4487c9e11e8ce4231d541 9d937e5ba39b4598b6500ce7d2d8934a RX(iia_α₀₂) dc6992ac0e9c4a80b40c751c89b9261b--9d937e5ba39b4598b6500ce7d2d8934a 73f7cecbca834242a062419b58ce2b9c RY(iia_α₀₅) 9d937e5ba39b4598b6500ce7d2d8934a--73f7cecbca834242a062419b58ce2b9c 811b36d619e24238afa0111f425d07f1 73f7cecbca834242a062419b58ce2b9c--811b36d619e24238afa0111f425d07f1 4b6eb9d5969d4c35a0e21ba55ee285b0 X 811b36d619e24238afa0111f425d07f1--4b6eb9d5969d4c35a0e21ba55ee285b0 4b6eb9d5969d4c35a0e21ba55ee285b0--1ebacb8551ec4270b4ac48f39d84db97 b115013c24b94d6f9bc9bbbf20196bc0 RX(iia_γ₀₂) 4b6eb9d5969d4c35a0e21ba55ee285b0--b115013c24b94d6f9bc9bbbf20196bc0 4fc007e2772c43f8b71b68def36ce087 X b115013c24b94d6f9bc9bbbf20196bc0--4fc007e2772c43f8b71b68def36ce087 4fc007e2772c43f8b71b68def36ce087--7033d8f203be4047b04e3ffd9cb3ba05 a8c7f2522fd54d24ae29a1d5ffdb9318 4fc007e2772c43f8b71b68def36ce087--a8c7f2522fd54d24ae29a1d5ffdb9318 8d18c965b54f4d4485e05722bdd7831c RY(iia_β₀₅) a8c7f2522fd54d24ae29a1d5ffdb9318--8d18c965b54f4d4485e05722bdd7831c 58ddbd5b8f734f33b7dee2a31853e08a RX(iia_β₀₂) 8d18c965b54f4d4485e05722bdd7831c--58ddbd5b8f734f33b7dee2a31853e08a 01aff62ce63f49569b63a3dc25ebf501 RX(iia_α₁₂) 58ddbd5b8f734f33b7dee2a31853e08a--01aff62ce63f49569b63a3dc25ebf501 49eb240d2965465191cf0513b12c8036 RY(iia_α₁₅) 01aff62ce63f49569b63a3dc25ebf501--49eb240d2965465191cf0513b12c8036 d695e5b1fa8c4b6aae27c9dde9da9432 49eb240d2965465191cf0513b12c8036--d695e5b1fa8c4b6aae27c9dde9da9432 6cadf8662c9a4e91a75d99c8048f461b X d695e5b1fa8c4b6aae27c9dde9da9432--6cadf8662c9a4e91a75d99c8048f461b 6cadf8662c9a4e91a75d99c8048f461b--f18accacfeae435fa297db9f6b354c1f abe1165ac3c44684b7259dd5c2666047 RX(iia_γ₁₂) 6cadf8662c9a4e91a75d99c8048f461b--abe1165ac3c44684b7259dd5c2666047 ee28900717924bf2bb9682a8c28d9231 X abe1165ac3c44684b7259dd5c2666047--ee28900717924bf2bb9682a8c28d9231 ee28900717924bf2bb9682a8c28d9231--591a98af7429436289ff4eed63066df9 aee417953c2e4b2a9f9dda47203a31dd ee28900717924bf2bb9682a8c28d9231--aee417953c2e4b2a9f9dda47203a31dd 692ec92e82fa4b089acd8381c5f307af RY(iia_β₁₅) aee417953c2e4b2a9f9dda47203a31dd--692ec92e82fa4b089acd8381c5f307af 2c4e2e577ba0409ebcd75c22a6bde0e6 RX(iia_β₁₂) 692ec92e82fa4b089acd8381c5f307af--2c4e2e577ba0409ebcd75c22a6bde0e6 2c4e2e577ba0409ebcd75c22a6bde0e6--134a37f999a4487c9e11e8ce4231d541