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_2c47cd317eee4ae1b8b5d3c5719d59fe Constant Chebyshev FM cluster_014e40d2e86b45699bae5625bc0fec85 Constant Fourier FM ff4b192ed5944299b78534a53a1ca17d 0 1cbafa9825a7483294af7dc2923fdbb7 RX(phi) ff4b192ed5944299b78534a53a1ca17d--1cbafa9825a7483294af7dc2923fdbb7 994c4856dac14473b28e4806f0ee60de 1 ff285e1f23404145b729d2582104b8ba RX(acos(phi)) 1cbafa9825a7483294af7dc2923fdbb7--ff285e1f23404145b729d2582104b8ba 0809b7248274432c99bf184bc7b2735d ff285e1f23404145b729d2582104b8ba--0809b7248274432c99bf184bc7b2735d f7a4158acf3b464e9538f6dec7977149 43b74820087441148574b06b69f8f640 RX(phi) 994c4856dac14473b28e4806f0ee60de--43b74820087441148574b06b69f8f640 fc5376525df44a398d40a56c5c4ecbea 2 eeb2c80cbd73415798d740d0cde84e6e RX(acos(phi)) 43b74820087441148574b06b69f8f640--eeb2c80cbd73415798d740d0cde84e6e eeb2c80cbd73415798d740d0cde84e6e--f7a4158acf3b464e9538f6dec7977149 c7bfcaeb9a4143b3b9393ccdacd94a57 1af229571b834a06abf0c52aa93af96c RX(phi) fc5376525df44a398d40a56c5c4ecbea--1af229571b834a06abf0c52aa93af96c 6fd2390c877e412f9e6cb7ea313c3547 RX(acos(phi)) 1af229571b834a06abf0c52aa93af96c--6fd2390c877e412f9e6cb7ea313c3547 6fd2390c877e412f9e6cb7ea313c3547--c7bfcaeb9a4143b3b9393ccdacd94a57

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_9e5b3007108d4afb8cfe2e3c28d8fba0 Constant <function custom_fn at 0x7f75c8457250> FM cluster_7d2c30675c324dfea2f31b9313915f5f Constant asin FM a3b7e716577f4d5391d4b1b981f7fac3 0 bf58011e05a643c8ada0c440d2fe0005 RX(asin(phi)) a3b7e716577f4d5391d4b1b981f7fac3--bf58011e05a643c8ada0c440d2fe0005 f1ed5a121c644c3c9681f886f3f5d621 1 67f7d509b666415b9aef8d35df5a87ac RX(phi**2 + asin(phi)) bf58011e05a643c8ada0c440d2fe0005--67f7d509b666415b9aef8d35df5a87ac 26f8784e1e1e48bda76376664fa058e8 67f7d509b666415b9aef8d35df5a87ac--26f8784e1e1e48bda76376664fa058e8 6b6241a385dc42e38ab7a327b65ed2e7 bfde7469e6cf425ea490bfeb7a1209b7 RX(asin(phi)) f1ed5a121c644c3c9681f886f3f5d621--bfde7469e6cf425ea490bfeb7a1209b7 90d4562a6d20428c9653d345d1be7e20 2 6f513c66266f4a438ea55e18665bd953 RX(phi**2 + asin(phi)) bfde7469e6cf425ea490bfeb7a1209b7--6f513c66266f4a438ea55e18665bd953 6f513c66266f4a438ea55e18665bd953--6b6241a385dc42e38ab7a327b65ed2e7 156e78d6b1ac47f0b533a1f22b37dd6f 9f0045b3e1634d9d9917f992201237e4 RX(asin(phi)) 90d4562a6d20428c9653d345d1be7e20--9f0045b3e1634d9d9917f992201237e4 48899293938d493e8eb91571f8bbfffe RX(phi**2 + asin(phi)) 9f0045b3e1634d9d9917f992201237e4--48899293938d493e8eb91571f8bbfffe 48899293938d493e8eb91571f8bbfffe--156e78d6b1ac47f0b533a1f22b37dd6f

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_35374114d99545abb69bdcae303b964c Exponential Fourier FM cluster_37f3c24b841a4a6997e5785fd1d5c383 Constant Fourier FM cluster_762463f8436548a9a1def374f6781551 Tower Fourier FM 7692f1b739324ce0963287bc155663d7 0 f37181ac734d4115801e92bfa653d65e RX(phi) 7692f1b739324ce0963287bc155663d7--f37181ac734d4115801e92bfa653d65e 03a00471506746e0b5c9f8d816741db0 1 8675ef1b41fe4fbaa8164cf1a3180911 RX(1.0*phi) f37181ac734d4115801e92bfa653d65e--8675ef1b41fe4fbaa8164cf1a3180911 8f6468f99dcc4885b60df1e41b3d6803 RX(1.0*phi) 8675ef1b41fe4fbaa8164cf1a3180911--8f6468f99dcc4885b60df1e41b3d6803 0dc997e31c69444483afdad243dfb216 8f6468f99dcc4885b60df1e41b3d6803--0dc997e31c69444483afdad243dfb216 8aa033c087ad4d2096490a729a1a3991 e74fd0a18e454eb193541adbadb0e029 RX(phi) 03a00471506746e0b5c9f8d816741db0--e74fd0a18e454eb193541adbadb0e029 321c9cf4a2d24d6989d4eb918dbbb356 2 cd7086c09c1d4480938fe295e774b317 RX(2.0*phi) e74fd0a18e454eb193541adbadb0e029--cd7086c09c1d4480938fe295e774b317 31b10526f982435a82bfae75fcd6b006 RX(2.0*phi) cd7086c09c1d4480938fe295e774b317--31b10526f982435a82bfae75fcd6b006 31b10526f982435a82bfae75fcd6b006--8aa033c087ad4d2096490a729a1a3991 6c957802e7aa491888a770d8f916b94f 26a7ea3ffc7d4acc9823820a3deb7602 RX(phi) 321c9cf4a2d24d6989d4eb918dbbb356--26a7ea3ffc7d4acc9823820a3deb7602 22f69e25c0ad4cf8be8f93cbcc2203b0 3 fd6ec159555b410a865b369dd78dde49 RX(3.0*phi) 26a7ea3ffc7d4acc9823820a3deb7602--fd6ec159555b410a865b369dd78dde49 12db41068b93410ebff72e1d65ed119b RX(4.0*phi) fd6ec159555b410a865b369dd78dde49--12db41068b93410ebff72e1d65ed119b 12db41068b93410ebff72e1d65ed119b--6c957802e7aa491888a770d8f916b94f ec39f5defd7643b4b912a2d83cc19e24 a258cef667f444ca946e2b3543f503c0 RX(phi) 22f69e25c0ad4cf8be8f93cbcc2203b0--a258cef667f444ca946e2b3543f503c0 03229c17916547b380b9a89d75a9c2dd 4 4f936502b6a445f7a17965f3f34043de RX(4.0*phi) a258cef667f444ca946e2b3543f503c0--4f936502b6a445f7a17965f3f34043de 86f0e6033637466ba3ae7b6a488aec2c RX(8.0*phi) 4f936502b6a445f7a17965f3f34043de--86f0e6033637466ba3ae7b6a488aec2c 86f0e6033637466ba3ae7b6a488aec2c--ec39f5defd7643b4b912a2d83cc19e24 102a7f15e3f543e0a070f832d7fc6d75 8ba26fb073924190b6fee27dbd0e56fe RX(phi) 03229c17916547b380b9a89d75a9c2dd--8ba26fb073924190b6fee27dbd0e56fe 59c3025744b34000b435b686ea47a8ce RX(5.0*phi) 8ba26fb073924190b6fee27dbd0e56fe--59c3025744b34000b435b686ea47a8ce e8cb9b2a88ee4abaabf6d883f16fab20 RX(16.0*phi) 59c3025744b34000b435b686ea47a8ce--e8cb9b2a88ee4abaabf6d883f16fab20 e8cb9b2a88ee4abaabf6d883f16fab20--102a7f15e3f543e0a070f832d7fc6d75

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 d36c6cf4993c4ad38f7ceddaac7971b9 0 6f8c93b04be544528da81abd89999bf1 RX(1.0*acos(phi)) d36c6cf4993c4ad38f7ceddaac7971b9--6f8c93b04be544528da81abd89999bf1 cf3e8250d5514e289df64d6d422d87a0 1 3e70bd325d2d43009bd3f9a3dc1b7fa7 6f8c93b04be544528da81abd89999bf1--3e70bd325d2d43009bd3f9a3dc1b7fa7 0556e0c99c334428b7419157c7d5fedc 5fb4105dda1740018fa92108a91010ce RX(1.414*acos(phi)) cf3e8250d5514e289df64d6d422d87a0--5fb4105dda1740018fa92108a91010ce dbc57ad632514aa78b56d8d122461d08 2 5fb4105dda1740018fa92108a91010ce--0556e0c99c334428b7419157c7d5fedc 361ebde3baae417f9bdf607d5b0653cd 030a92e3fa3e40a48ba9ef77270c91f4 RX(1.732*acos(phi)) dbc57ad632514aa78b56d8d122461d08--030a92e3fa3e40a48ba9ef77270c91f4 de2ec2bd3e4145e1a6f47833f9199e78 3 030a92e3fa3e40a48ba9ef77270c91f4--361ebde3baae417f9bdf607d5b0653cd 61e0bc4371db448f82969e0b47308271 0214a1a6a6d44ece8df463fc08516533 RX(2.0*acos(phi)) de2ec2bd3e4145e1a6f47833f9199e78--0214a1a6a6d44ece8df463fc08516533 091287cc86c148da85767de7322bece2 4 0214a1a6a6d44ece8df463fc08516533--61e0bc4371db448f82969e0b47308271 b0917777f1ec4dbba619383352f9fbac 64b3ff6531144486b39bb043a3538dbe RX(2.236*acos(phi)) 091287cc86c148da85767de7322bece2--64b3ff6531144486b39bb043a3538dbe 64b3ff6531144486b39bb043a3538dbe--b0917777f1ec4dbba619383352f9fbac

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 8e2408c141e249938164a34f62c0e7db 0 593d322fe9434519b7f26cc823f59eaa RX(1.0*phi*w₀) 8e2408c141e249938164a34f62c0e7db--593d322fe9434519b7f26cc823f59eaa ad02cc05438c44bbac80ab02e43c4fc5 1 8ce70a8a10b6469e8e615630d2c7d4c0 593d322fe9434519b7f26cc823f59eaa--8ce70a8a10b6469e8e615630d2c7d4c0 92cdfef090444e548b5500430d3decb4 b7a94a56357745d2a061d70c875f4c55 RX(2.0*phi*w₁) ad02cc05438c44bbac80ab02e43c4fc5--b7a94a56357745d2a061d70c875f4c55 c62f0aaf23e046d7aa9ac3e61e555b6c 2 b7a94a56357745d2a061d70c875f4c55--92cdfef090444e548b5500430d3decb4 bb2009d7363b4ee98c3850004a3d881d 205a29a279424d43af3d1fe3f90e3909 RX(4.0*phi*w₂) c62f0aaf23e046d7aa9ac3e61e555b6c--205a29a279424d43af3d1fe3f90e3909 e9d00edb47ad4f03bf52926c2f32be34 3 205a29a279424d43af3d1fe3f90e3909--bb2009d7363b4ee98c3850004a3d881d ba2bb7a9dcd749b0ac3e77409f0011af 99bd3509b72844b1b646587ae9dbead0 RX(8.0*phi*w₃) e9d00edb47ad4f03bf52926c2f32be34--99bd3509b72844b1b646587ae9dbead0 60f25ed384c6448da29e36a959aef574 4 99bd3509b72844b1b646587ae9dbead0--ba2bb7a9dcd749b0ac3e77409f0011af c6d136e98a934571a91515e5dd3b9b01 3fa63dd87adf4d74ad616b4cfa977d28 RX(16.0*phi*w₄) 60f25ed384c6448da29e36a959aef574--3fa63dd87adf4d74ad616b4cfa977d28 3fa63dd87adf4d74ad616b4cfa977d28--c6d136e98a934571a91515e5dd3b9b01

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 5320ea9b66a64914a066b3bb302ec391 0 d08ed481770b4aa8839ee4a44d327645 RY(80.0*acos(w₄*(0.667*x + 1.667))) 5320ea9b66a64914a066b3bb302ec391--d08ed481770b4aa8839ee4a44d327645 a84ab78de42349ee9e9bbc9ba2eea8a2 1 d5bc546db69d48e2bad92e7bf5c3c5a4 d08ed481770b4aa8839ee4a44d327645--d5bc546db69d48e2bad92e7bf5c3c5a4 1e326e1572bd4e68845690095cf85e42 d0981268c4b741a2b99ccc695fda5523 RY(40.0*acos(w₃*(0.667*x + 1.667))) a84ab78de42349ee9e9bbc9ba2eea8a2--d0981268c4b741a2b99ccc695fda5523 8c05768e507a4c1c9fe270fbfafd74d2 2 d0981268c4b741a2b99ccc695fda5523--1e326e1572bd4e68845690095cf85e42 bda5182d0dc145f2a9838abc8b4ce6a7 96cb6ac36e5c4971b82eb5b8fb8d6f73 RY(20.0*acos(w₂*(0.667*x + 1.667))) 8c05768e507a4c1c9fe270fbfafd74d2--96cb6ac36e5c4971b82eb5b8fb8d6f73 d2231370eb614ee2bb6d9f11afdbf67b 3 96cb6ac36e5c4971b82eb5b8fb8d6f73--bda5182d0dc145f2a9838abc8b4ce6a7 b051ea0397794e1ab70592778568bb34 24bec948a2a14a459dec64b91df4354a RY(10.0*acos(w₁*(0.667*x + 1.667))) d2231370eb614ee2bb6d9f11afdbf67b--24bec948a2a14a459dec64b91df4354a ccb53b56e11c4e80aea53b952355fbcf 4 24bec948a2a14a459dec64b91df4354a--b051ea0397794e1ab70592778568bb34 a7dbc4a9d5144f80b71e4a926e55f44a aaaccd52fc314cf4aae04b5d776a2606 RY(5.0*acos(w₀*(0.667*x + 1.667))) ccb53b56e11c4e80aea53b952355fbcf--aaaccd52fc314cf4aae04b5d776a2606 aaaccd52fc314cf4aae04b5d776a2606--a7dbc4a9d5144f80b71e4a926e55f44a

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 e8d8c088421e4caaae3d5cb513ae99ec 0 e5a4e0aebfaf44a4b62b91b8fa274295 RX(theta₀) e8d8c088421e4caaae3d5cb513ae99ec--e5a4e0aebfaf44a4b62b91b8fa274295 86d78846c1554aac91edb06560c004e3 1 1d3363bdceb54b5594bc40fc4b0b8644 RY(theta₃) e5a4e0aebfaf44a4b62b91b8fa274295--1d3363bdceb54b5594bc40fc4b0b8644 30fd45e5856044c0843f2376dbe6aa24 RX(theta₆) 1d3363bdceb54b5594bc40fc4b0b8644--30fd45e5856044c0843f2376dbe6aa24 b6b011fc938a412b98f175cb1987ee2b 30fd45e5856044c0843f2376dbe6aa24--b6b011fc938a412b98f175cb1987ee2b 26be9be3a89b457fbbcb101c3d9bbb06 b6b011fc938a412b98f175cb1987ee2b--26be9be3a89b457fbbcb101c3d9bbb06 4353d96fc6db4613acd2af32e31f99e0 RX(theta₉) 26be9be3a89b457fbbcb101c3d9bbb06--4353d96fc6db4613acd2af32e31f99e0 1da882fae3c845e4b6456b998e9ddc94 RY(theta₁₂) 4353d96fc6db4613acd2af32e31f99e0--1da882fae3c845e4b6456b998e9ddc94 0468ddb6958041449ae91bb2424ee5fe RX(theta₁₅) 1da882fae3c845e4b6456b998e9ddc94--0468ddb6958041449ae91bb2424ee5fe ad046db2e0434252b5f1df4ce8c2fb9f 0468ddb6958041449ae91bb2424ee5fe--ad046db2e0434252b5f1df4ce8c2fb9f bfaf0e121fc5452baa02ae23f871e746 ad046db2e0434252b5f1df4ce8c2fb9f--bfaf0e121fc5452baa02ae23f871e746 1e28063413434f76a0e982f94c398a09 bfaf0e121fc5452baa02ae23f871e746--1e28063413434f76a0e982f94c398a09 60ff9bbc3ec8473b982b836aea76d5ed d3238d7648af4e6c9ff1acbd0cbc1059 RX(theta₁) 86d78846c1554aac91edb06560c004e3--d3238d7648af4e6c9ff1acbd0cbc1059 f94e533349874b08bf79a722383472b2 2 f1b4ca28223b47168cb9c37ad5140c2a RY(theta₄) d3238d7648af4e6c9ff1acbd0cbc1059--f1b4ca28223b47168cb9c37ad5140c2a 4e0bedf9acd84b91a9674e02885200e7 RX(theta₇) f1b4ca28223b47168cb9c37ad5140c2a--4e0bedf9acd84b91a9674e02885200e7 646b5868a62b48bf8406cad6fc12b967 X 4e0bedf9acd84b91a9674e02885200e7--646b5868a62b48bf8406cad6fc12b967 646b5868a62b48bf8406cad6fc12b967--b6b011fc938a412b98f175cb1987ee2b d499a22f8587418b89948f7fa0aade8b 646b5868a62b48bf8406cad6fc12b967--d499a22f8587418b89948f7fa0aade8b 383e01bac17e41bc964a8d8c4f045fa3 RX(theta₁₀) d499a22f8587418b89948f7fa0aade8b--383e01bac17e41bc964a8d8c4f045fa3 549e8c4952b043e884075a16ba5ac3b9 RY(theta₁₃) 383e01bac17e41bc964a8d8c4f045fa3--549e8c4952b043e884075a16ba5ac3b9 024f113c561746f5a106a48a80fd7dcc RX(theta₁₆) 549e8c4952b043e884075a16ba5ac3b9--024f113c561746f5a106a48a80fd7dcc da3bf4c411004829a778079ed856f869 X 024f113c561746f5a106a48a80fd7dcc--da3bf4c411004829a778079ed856f869 da3bf4c411004829a778079ed856f869--ad046db2e0434252b5f1df4ce8c2fb9f 59082e4c0b6f4d5ca18523a74f6d2da6 da3bf4c411004829a778079ed856f869--59082e4c0b6f4d5ca18523a74f6d2da6 59082e4c0b6f4d5ca18523a74f6d2da6--60ff9bbc3ec8473b982b836aea76d5ed 2c5428b5d2b2405d91c4ba0bb9040e50 8538e61bbeb54ff985012d13d5805751 RX(theta₂) f94e533349874b08bf79a722383472b2--8538e61bbeb54ff985012d13d5805751 c5b871d5e5c949a1b48a61b1dff05116 RY(theta₅) 8538e61bbeb54ff985012d13d5805751--c5b871d5e5c949a1b48a61b1dff05116 74892719f690478c852b44885f3de143 RX(theta₈) c5b871d5e5c949a1b48a61b1dff05116--74892719f690478c852b44885f3de143 9b7a201dab1e499ab46e4a42c8ba095c 74892719f690478c852b44885f3de143--9b7a201dab1e499ab46e4a42c8ba095c bbb76f3cbd33425db769b58df3afead4 X 9b7a201dab1e499ab46e4a42c8ba095c--bbb76f3cbd33425db769b58df3afead4 bbb76f3cbd33425db769b58df3afead4--d499a22f8587418b89948f7fa0aade8b 870e3ce967cc4ca8b670cbf6b96cb8e3 RX(theta₁₁) bbb76f3cbd33425db769b58df3afead4--870e3ce967cc4ca8b670cbf6b96cb8e3 6e7a14ec62f34759848089710dec5e86 RY(theta₁₄) 870e3ce967cc4ca8b670cbf6b96cb8e3--6e7a14ec62f34759848089710dec5e86 6e767c2e085c4a8280cdda3efbed62d9 RX(theta₁₇) 6e7a14ec62f34759848089710dec5e86--6e767c2e085c4a8280cdda3efbed62d9 a210e1a9934f475c98cbed99dd48bf0d 6e767c2e085c4a8280cdda3efbed62d9--a210e1a9934f475c98cbed99dd48bf0d 4607d92fa3f54ab28be2d8940363d2ce X a210e1a9934f475c98cbed99dd48bf0d--4607d92fa3f54ab28be2d8940363d2ce 4607d92fa3f54ab28be2d8940363d2ce--59082e4c0b6f4d5ca18523a74f6d2da6 4607d92fa3f54ab28be2d8940363d2ce--2c5428b5d2b2405d91c4ba0bb9040e50

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 db8d6fe1b5864b37ba945ba21ec99a5b 0 fdd5a45bfee24b3baad69ea0b9ea1df1 RX(phi₀) db8d6fe1b5864b37ba945ba21ec99a5b--fdd5a45bfee24b3baad69ea0b9ea1df1 dc14cbd454694ea2b018321779420e3f 1 18e231e8a4e54e96be5d5e19ff6dc3be RY(phi₃) fdd5a45bfee24b3baad69ea0b9ea1df1--18e231e8a4e54e96be5d5e19ff6dc3be c2cab519bdcf4a7f850de3aad122355c RX(phi₆) 18e231e8a4e54e96be5d5e19ff6dc3be--c2cab519bdcf4a7f850de3aad122355c b40c7e1889044d4594d1cbc9443b7e47 c2cab519bdcf4a7f850de3aad122355c--b40c7e1889044d4594d1cbc9443b7e47 e54526b67de14551b4dc60fd290c45c2 b40c7e1889044d4594d1cbc9443b7e47--e54526b67de14551b4dc60fd290c45c2 6a0148d64baa4d4e8bc27959e831cf50 RX(phi₉) e54526b67de14551b4dc60fd290c45c2--6a0148d64baa4d4e8bc27959e831cf50 d817f1b5507848838519ee3ec0482b8c RY(phi₁₂) 6a0148d64baa4d4e8bc27959e831cf50--d817f1b5507848838519ee3ec0482b8c 80d3e3d5f92d45bf9578f48f90a4b1fd RX(phi₁₅) d817f1b5507848838519ee3ec0482b8c--80d3e3d5f92d45bf9578f48f90a4b1fd 9135a26c6f0240e98f6a43b35a150ea1 80d3e3d5f92d45bf9578f48f90a4b1fd--9135a26c6f0240e98f6a43b35a150ea1 3fd49d32e183440bb5ce6ef7b1be19e2 9135a26c6f0240e98f6a43b35a150ea1--3fd49d32e183440bb5ce6ef7b1be19e2 cb09774d98f64fb3b2f4dffc78a6c573 3fd49d32e183440bb5ce6ef7b1be19e2--cb09774d98f64fb3b2f4dffc78a6c573 d9331460cb8742c381758c426949e939 58bb3e0ff13e4f108c399596aa8d4322 RX(phi₁) dc14cbd454694ea2b018321779420e3f--58bb3e0ff13e4f108c399596aa8d4322 aac496b68123424cab2a5095de233aa3 2 0592480899fa49039c1a7581e34a609c RY(phi₄) 58bb3e0ff13e4f108c399596aa8d4322--0592480899fa49039c1a7581e34a609c cef891a174e94998972349d3054a8ba2 RX(phi₇) 0592480899fa49039c1a7581e34a609c--cef891a174e94998972349d3054a8ba2 0d92c0a3eefc4d8989ddbb6df504f1b7 PHASE(phi_ent₀) cef891a174e94998972349d3054a8ba2--0d92c0a3eefc4d8989ddbb6df504f1b7 0d92c0a3eefc4d8989ddbb6df504f1b7--b40c7e1889044d4594d1cbc9443b7e47 d84c8a948d4444349029eadbc62f2e63 0d92c0a3eefc4d8989ddbb6df504f1b7--d84c8a948d4444349029eadbc62f2e63 997addaadb5e4afcbce17affeab2bd75 RX(phi₁₀) d84c8a948d4444349029eadbc62f2e63--997addaadb5e4afcbce17affeab2bd75 8e65064ee02247758807476d856b98ef RY(phi₁₃) 997addaadb5e4afcbce17affeab2bd75--8e65064ee02247758807476d856b98ef 62323a2a57404c9f9c7bacb9247fe3d4 RX(phi₁₆) 8e65064ee02247758807476d856b98ef--62323a2a57404c9f9c7bacb9247fe3d4 4419dab5a18146e7bae8b637a2975e09 PHASE(phi_ent₂) 62323a2a57404c9f9c7bacb9247fe3d4--4419dab5a18146e7bae8b637a2975e09 4419dab5a18146e7bae8b637a2975e09--9135a26c6f0240e98f6a43b35a150ea1 7cc51e76064341529102b84509e27855 4419dab5a18146e7bae8b637a2975e09--7cc51e76064341529102b84509e27855 7cc51e76064341529102b84509e27855--d9331460cb8742c381758c426949e939 38d8e31261454d79a80c7813149f6ae0 0579f4bf03714c3cb23878d3719fb65b RX(phi₂) aac496b68123424cab2a5095de233aa3--0579f4bf03714c3cb23878d3719fb65b 18179b27a7844a9f831d5839e5841ab6 RY(phi₅) 0579f4bf03714c3cb23878d3719fb65b--18179b27a7844a9f831d5839e5841ab6 9faff0d774784477ae093411c4379e11 RX(phi₈) 18179b27a7844a9f831d5839e5841ab6--9faff0d774784477ae093411c4379e11 6306b73ab9e5424a990942d181130339 9faff0d774784477ae093411c4379e11--6306b73ab9e5424a990942d181130339 0de8a54fe8de49fd82f9bd8d62b66632 PHASE(phi_ent₁) 6306b73ab9e5424a990942d181130339--0de8a54fe8de49fd82f9bd8d62b66632 0de8a54fe8de49fd82f9bd8d62b66632--d84c8a948d4444349029eadbc62f2e63 cb3428b5359d47628709e6997f7ce5f1 RX(phi₁₁) 0de8a54fe8de49fd82f9bd8d62b66632--cb3428b5359d47628709e6997f7ce5f1 e8eac508cc3445ba8e614b9d9106e9de RY(phi₁₄) cb3428b5359d47628709e6997f7ce5f1--e8eac508cc3445ba8e614b9d9106e9de e1ef9fd7ea2242a19b8ac16f7925e86f RX(phi₁₇) e8eac508cc3445ba8e614b9d9106e9de--e1ef9fd7ea2242a19b8ac16f7925e86f 79689dcf84a14e6b9ff20ec2e8740c86 e1ef9fd7ea2242a19b8ac16f7925e86f--79689dcf84a14e6b9ff20ec2e8740c86 0d4a2708775547628a2a2684f2d2858e PHASE(phi_ent₃) 79689dcf84a14e6b9ff20ec2e8740c86--0d4a2708775547628a2a2684f2d2858e 0d4a2708775547628a2a2684f2d2858e--7cc51e76064341529102b84509e27855 0d4a2708775547628a2a2684f2d2858e--38d8e31261454d79a80c7813149f6ae0

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_8f140863d749468d99ad12dddce80d9c cluster_f974b8963f4d4f20921210e0718485e1 16a0e56a5809484bafbb97a914e2e84b 0 0c9b308ad6c5457eab9ce12fc2fadfb6 RX(theta₀) 16a0e56a5809484bafbb97a914e2e84b--0c9b308ad6c5457eab9ce12fc2fadfb6 4de7b68beed445b3a55b713038b550f4 1 cfa5bd50fcc048ef94912a6194d587fd RY(theta₃) 0c9b308ad6c5457eab9ce12fc2fadfb6--cfa5bd50fcc048ef94912a6194d587fd 3477f5ff849347e4bf3959ba031036f0 RX(theta₆) cfa5bd50fcc048ef94912a6194d587fd--3477f5ff849347e4bf3959ba031036f0 b42c086cc21b4e8ca59c0b89ca837f8e HamEvo 3477f5ff849347e4bf3959ba031036f0--b42c086cc21b4e8ca59c0b89ca837f8e 8f9a66b228ec442f8e53f785cdedce17 RX(theta₉) b42c086cc21b4e8ca59c0b89ca837f8e--8f9a66b228ec442f8e53f785cdedce17 7ab709a5a35c4347972a6f5bfc9a740f RY(theta₁₂) 8f9a66b228ec442f8e53f785cdedce17--7ab709a5a35c4347972a6f5bfc9a740f a5c8152539824f918e93091bef3f76ae RX(theta₁₅) 7ab709a5a35c4347972a6f5bfc9a740f--a5c8152539824f918e93091bef3f76ae f20b109c8fc744059fe16452ce273c89 HamEvo a5c8152539824f918e93091bef3f76ae--f20b109c8fc744059fe16452ce273c89 f30567b5c7d64e2aa984fec487df8866 f20b109c8fc744059fe16452ce273c89--f30567b5c7d64e2aa984fec487df8866 4ba520d865f14e5aba18c17b35d35e27 ece8d6192e3b44708b81fe521975671e RX(theta₁) 4de7b68beed445b3a55b713038b550f4--ece8d6192e3b44708b81fe521975671e 37e8ad8a16ea4ff3bd82161880777dce 2 8312c499e31842f893c4475859bb2725 RY(theta₄) ece8d6192e3b44708b81fe521975671e--8312c499e31842f893c4475859bb2725 aa67a0238f524cefbb937d4a15605ca7 RX(theta₇) 8312c499e31842f893c4475859bb2725--aa67a0238f524cefbb937d4a15605ca7 e8457aee178046b7ab229939b680972f t = theta_t₀ aa67a0238f524cefbb937d4a15605ca7--e8457aee178046b7ab229939b680972f 737c9b58ff1c41e89051596b95d00286 RX(theta₁₀) e8457aee178046b7ab229939b680972f--737c9b58ff1c41e89051596b95d00286 a61c564c6587491b97afb1e4464b6e8e RY(theta₁₃) 737c9b58ff1c41e89051596b95d00286--a61c564c6587491b97afb1e4464b6e8e 199fdec29ead43ae94457fab031f2c89 RX(theta₁₆) a61c564c6587491b97afb1e4464b6e8e--199fdec29ead43ae94457fab031f2c89 4891c81db6a6421cb78846bf9dd94149 t = theta_t₁ 199fdec29ead43ae94457fab031f2c89--4891c81db6a6421cb78846bf9dd94149 4891c81db6a6421cb78846bf9dd94149--4ba520d865f14e5aba18c17b35d35e27 49c4a631e93348d38285441f63f3e608 7547c92a2af440ac8246a0943fd27697 RX(theta₂) 37e8ad8a16ea4ff3bd82161880777dce--7547c92a2af440ac8246a0943fd27697 bd3441a7ca0b43ec8f6e0adc4ba0f874 RY(theta₅) 7547c92a2af440ac8246a0943fd27697--bd3441a7ca0b43ec8f6e0adc4ba0f874 6fcd777994304319a805d7eca6513e4c RX(theta₈) bd3441a7ca0b43ec8f6e0adc4ba0f874--6fcd777994304319a805d7eca6513e4c fb74a2e045e545148335248f106c18e3 6fcd777994304319a805d7eca6513e4c--fb74a2e045e545148335248f106c18e3 56686b450c104a97ae5984ca45de1c18 RX(theta₁₁) fb74a2e045e545148335248f106c18e3--56686b450c104a97ae5984ca45de1c18 bc10416dd95249bba50f86fb9d10ad05 RY(theta₁₄) 56686b450c104a97ae5984ca45de1c18--bc10416dd95249bba50f86fb9d10ad05 d366e73975234444b830016deb82c674 RX(theta₁₇) bc10416dd95249bba50f86fb9d10ad05--d366e73975234444b830016deb82c674 9b06a55c9aee48c5be0ac2e3258c515f d366e73975234444b830016deb82c674--9b06a55c9aee48c5be0ac2e3258c515f 9b06a55c9aee48c5be0ac2e3258c515f--49c4a631e93348d38285441f63f3e608

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_927c31e458b3401dbcc652629aa4fa5b cluster_9339c119621b4f398f66c1021642652e 926c71ba04c247f88161d3973e9d591b 0 9cfb8ebb264b43ad89f2ae0068c01ace RX(theta₀) 926c71ba04c247f88161d3973e9d591b--9cfb8ebb264b43ad89f2ae0068c01ace e236d4adaa944195ba949fa77306098e 1 e3fe0461b4994f7cb26ba7c82f370371 RY(theta₆) 9cfb8ebb264b43ad89f2ae0068c01ace--e3fe0461b4994f7cb26ba7c82f370371 fde9b6c883c24d608226e88094b93bc8 RX(theta₁₂) e3fe0461b4994f7cb26ba7c82f370371--fde9b6c883c24d608226e88094b93bc8 962d8167d26d4665a0b1faf9c12fbfea fde9b6c883c24d608226e88094b93bc8--962d8167d26d4665a0b1faf9c12fbfea 93a6e5943de44896bb2476962706c78f RX(theta₁₈) 962d8167d26d4665a0b1faf9c12fbfea--93a6e5943de44896bb2476962706c78f a5ae63398834429e9a08371f099e62b6 RY(theta₂₄) 93a6e5943de44896bb2476962706c78f--a5ae63398834429e9a08371f099e62b6 b8bfff00d01b464c8cd04e5a795a89a8 RX(theta₃₀) a5ae63398834429e9a08371f099e62b6--b8bfff00d01b464c8cd04e5a795a89a8 c8151ec395e0496b81b13b70ea74249f b8bfff00d01b464c8cd04e5a795a89a8--c8151ec395e0496b81b13b70ea74249f b79d0aa268f74512b40c2bd43289a471 c8151ec395e0496b81b13b70ea74249f--b79d0aa268f74512b40c2bd43289a471 a8408bbba0014cf2b850f7a67ded78b2 e4eb98bc9d69442f9c70c770566d299a RX(theta₁) e236d4adaa944195ba949fa77306098e--e4eb98bc9d69442f9c70c770566d299a 31af0dcc1c874dd38dd83eee7234abe6 2 8bb3bc74da2b4cfb88120059d0aa6eab RY(theta₇) e4eb98bc9d69442f9c70c770566d299a--8bb3bc74da2b4cfb88120059d0aa6eab a6911b99f6734b0b98d0b59c7830177c RX(theta₁₃) 8bb3bc74da2b4cfb88120059d0aa6eab--a6911b99f6734b0b98d0b59c7830177c fa187e6acc4849c1812c46fb6ae781ef a6911b99f6734b0b98d0b59c7830177c--fa187e6acc4849c1812c46fb6ae781ef a651fb0a9b6d46079c0910c553b6f199 RX(theta₁₉) fa187e6acc4849c1812c46fb6ae781ef--a651fb0a9b6d46079c0910c553b6f199 b8f6682407f242629b13456167b11207 RY(theta₂₅) a651fb0a9b6d46079c0910c553b6f199--b8f6682407f242629b13456167b11207 db575994ba1e44ae81633e1682e7d206 RX(theta₃₁) b8f6682407f242629b13456167b11207--db575994ba1e44ae81633e1682e7d206 fa642e78fe1c4ce4b0e89a7317e0be84 db575994ba1e44ae81633e1682e7d206--fa642e78fe1c4ce4b0e89a7317e0be84 fa642e78fe1c4ce4b0e89a7317e0be84--a8408bbba0014cf2b850f7a67ded78b2 c29bc80d718a4d4f82a2b108d81d37a0 130e744d0bad4078837677e49019bebd RX(theta₂) 31af0dcc1c874dd38dd83eee7234abe6--130e744d0bad4078837677e49019bebd e3214ad5f73a4436b85c525538907483 3 d1bb17357c614fe69fedabd045248ada RY(theta₈) 130e744d0bad4078837677e49019bebd--d1bb17357c614fe69fedabd045248ada bfbb0d41327a4f4aae8810e2cccedbfd RX(theta₁₄) d1bb17357c614fe69fedabd045248ada--bfbb0d41327a4f4aae8810e2cccedbfd 098706a4d92d49898971e8588038c026 HamEvo bfbb0d41327a4f4aae8810e2cccedbfd--098706a4d92d49898971e8588038c026 48aa579d5f2240749c9247c94bbe2d11 RX(theta₂₀) 098706a4d92d49898971e8588038c026--48aa579d5f2240749c9247c94bbe2d11 c9c3cb0d01e140b381df68f5b4008b68 RY(theta₂₆) 48aa579d5f2240749c9247c94bbe2d11--c9c3cb0d01e140b381df68f5b4008b68 4ac4997afe234f76afe2e44301e8b4a0 RX(theta₃₂) c9c3cb0d01e140b381df68f5b4008b68--4ac4997afe234f76afe2e44301e8b4a0 eb0956d255c9426fa14a170fefa89639 HamEvo 4ac4997afe234f76afe2e44301e8b4a0--eb0956d255c9426fa14a170fefa89639 eb0956d255c9426fa14a170fefa89639--c29bc80d718a4d4f82a2b108d81d37a0 1f6d0eca88754a8a8500400bb7560249 8855ed5a338949aa894c96ce82052560 RX(theta₃) e3214ad5f73a4436b85c525538907483--8855ed5a338949aa894c96ce82052560 ebbb1dd76ae84ae3b7058a60e6e19244 4 f18ffa3a99ab45b9938f5c10eec349cb RY(theta₉) 8855ed5a338949aa894c96ce82052560--f18ffa3a99ab45b9938f5c10eec349cb c414ef1d0b0c4065be1184b1ff4e15df RX(theta₁₅) f18ffa3a99ab45b9938f5c10eec349cb--c414ef1d0b0c4065be1184b1ff4e15df 8816c73438dd4b978f20fdd465cabf16 t = theta_t₀ c414ef1d0b0c4065be1184b1ff4e15df--8816c73438dd4b978f20fdd465cabf16 5621ec502f7e4f918290ad7733d9bbca RX(theta₂₁) 8816c73438dd4b978f20fdd465cabf16--5621ec502f7e4f918290ad7733d9bbca ba8d26fa49cf4e8b867184fe0c483508 RY(theta₂₇) 5621ec502f7e4f918290ad7733d9bbca--ba8d26fa49cf4e8b867184fe0c483508 bcdcf2839281458eaf8598c75c52e7e3 RX(theta₃₃) ba8d26fa49cf4e8b867184fe0c483508--bcdcf2839281458eaf8598c75c52e7e3 2424e4efc0d9404fa1eb6d41ef3275f8 t = theta_t₁ bcdcf2839281458eaf8598c75c52e7e3--2424e4efc0d9404fa1eb6d41ef3275f8 2424e4efc0d9404fa1eb6d41ef3275f8--1f6d0eca88754a8a8500400bb7560249 a42c62328bea45c5adf3e29a13fa18d7 fb670ece919d4e0e9b81517a543a1dc4 RX(theta₄) ebbb1dd76ae84ae3b7058a60e6e19244--fb670ece919d4e0e9b81517a543a1dc4 b560ddeab036438fa54ff3187bed1948 5 91648c03347046628cfff4db02e4d58e RY(theta₁₀) fb670ece919d4e0e9b81517a543a1dc4--91648c03347046628cfff4db02e4d58e bbb037e63dcb4ee799a3fe018789db24 RX(theta₁₆) 91648c03347046628cfff4db02e4d58e--bbb037e63dcb4ee799a3fe018789db24 83ec7a5f0ef340b89e377f00fc897a84 bbb037e63dcb4ee799a3fe018789db24--83ec7a5f0ef340b89e377f00fc897a84 86b828d5c3e04434969ad8c1427d6731 RX(theta₂₂) 83ec7a5f0ef340b89e377f00fc897a84--86b828d5c3e04434969ad8c1427d6731 33cb8db354d04fcf8e1c5fbe83bfc3f6 RY(theta₂₈) 86b828d5c3e04434969ad8c1427d6731--33cb8db354d04fcf8e1c5fbe83bfc3f6 b538917978ac43499e7348d6706e97ef RX(theta₃₄) 33cb8db354d04fcf8e1c5fbe83bfc3f6--b538917978ac43499e7348d6706e97ef b4634fbed008472a98f18c4a0260b803 b538917978ac43499e7348d6706e97ef--b4634fbed008472a98f18c4a0260b803 b4634fbed008472a98f18c4a0260b803--a42c62328bea45c5adf3e29a13fa18d7 9648049e78794183bc431ac6e282e0e7 96602eb3332a4b859975328a22770f8a RX(theta₅) b560ddeab036438fa54ff3187bed1948--96602eb3332a4b859975328a22770f8a 117205a003c841ff8b7ba029546bb94e RY(theta₁₁) 96602eb3332a4b859975328a22770f8a--117205a003c841ff8b7ba029546bb94e c7c2bbbb183e4a098f58e64c3e7cc839 RX(theta₁₇) 117205a003c841ff8b7ba029546bb94e--c7c2bbbb183e4a098f58e64c3e7cc839 45eca65c6ce64928b086703e8fd282c0 c7c2bbbb183e4a098f58e64c3e7cc839--45eca65c6ce64928b086703e8fd282c0 6cf95e24cdc847d3a4e8842bd3ec3eff RX(theta₂₃) 45eca65c6ce64928b086703e8fd282c0--6cf95e24cdc847d3a4e8842bd3ec3eff 34bf40a3bded4a3b90f25ed92584598e RY(theta₂₉) 6cf95e24cdc847d3a4e8842bd3ec3eff--34bf40a3bded4a3b90f25ed92584598e 4d80ab4562fd4997b24e09f490bcd6a6 RX(theta₃₅) 34bf40a3bded4a3b90f25ed92584598e--4d80ab4562fd4997b24e09f490bcd6a6 36c291682dbd47b88632c2d6cd33e9ab 4d80ab4562fd4997b24e09f490bcd6a6--36c291682dbd47b88632c2d6cd33e9ab 36c291682dbd47b88632c2d6cd33e9ab--9648049e78794183bc431ac6e282e0e7

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_53df082dd2f147289f60f1358af22664 BPMA-1 cluster_e73d1c238abe467d99d77e95394d0cad BPMA-0 6a72eb002d1243b9bc643e42eafccc62 0 a8ca81fb379a449b96f52f9a25d5fa1c RX(iia_α₀₀) 6a72eb002d1243b9bc643e42eafccc62--a8ca81fb379a449b96f52f9a25d5fa1c 2c5d9626a61547128151f8bc0aab037b 1 fa84b500853846218d25deae2ab54f7a RY(iia_α₀₃) a8ca81fb379a449b96f52f9a25d5fa1c--fa84b500853846218d25deae2ab54f7a af64d626dce049b0b63b27a4408d9df4 fa84b500853846218d25deae2ab54f7a--af64d626dce049b0b63b27a4408d9df4 4415be447292426e8a44091d8ff6bca0 af64d626dce049b0b63b27a4408d9df4--4415be447292426e8a44091d8ff6bca0 cba8d8659d484d9d945795c83c2dc843 RX(iia_γ₀₀) 4415be447292426e8a44091d8ff6bca0--cba8d8659d484d9d945795c83c2dc843 f1422dfb858c4459996837f0d73657b7 cba8d8659d484d9d945795c83c2dc843--f1422dfb858c4459996837f0d73657b7 71e2dab0d3d84185993dabd5887da974 f1422dfb858c4459996837f0d73657b7--71e2dab0d3d84185993dabd5887da974 9690e7def98b49b6aab24b5e46b6ca51 RY(iia_β₀₃) 71e2dab0d3d84185993dabd5887da974--9690e7def98b49b6aab24b5e46b6ca51 96d69ebe41d5410dbff47b71fbc0d950 RX(iia_β₀₀) 9690e7def98b49b6aab24b5e46b6ca51--96d69ebe41d5410dbff47b71fbc0d950 eb1998129b14462eb34db547a5ee8528 RX(iia_α₁₀) 96d69ebe41d5410dbff47b71fbc0d950--eb1998129b14462eb34db547a5ee8528 59ae720eeec249b49dc6cc22c63118ca RY(iia_α₁₃) eb1998129b14462eb34db547a5ee8528--59ae720eeec249b49dc6cc22c63118ca 1324cd5e4ade4c0cb02eefb9d5215b69 59ae720eeec249b49dc6cc22c63118ca--1324cd5e4ade4c0cb02eefb9d5215b69 72b7c66ec96549228a69c8e9f8365b9d 1324cd5e4ade4c0cb02eefb9d5215b69--72b7c66ec96549228a69c8e9f8365b9d 8e69b128235f47bbb0524f3d88d3b9cf RX(iia_γ₁₀) 72b7c66ec96549228a69c8e9f8365b9d--8e69b128235f47bbb0524f3d88d3b9cf 61118e48182e4967b66ebae95e7b69c1 8e69b128235f47bbb0524f3d88d3b9cf--61118e48182e4967b66ebae95e7b69c1 2842810380714c0b9e5013a68468605a 61118e48182e4967b66ebae95e7b69c1--2842810380714c0b9e5013a68468605a 37cdd980ef00466693fc3e8ed04d3298 RY(iia_β₁₃) 2842810380714c0b9e5013a68468605a--37cdd980ef00466693fc3e8ed04d3298 49cb094fbf4f4c609c8e21bd41d74f71 RX(iia_β₁₀) 37cdd980ef00466693fc3e8ed04d3298--49cb094fbf4f4c609c8e21bd41d74f71 1d8caf4ee25d42fab7030e675275696a 49cb094fbf4f4c609c8e21bd41d74f71--1d8caf4ee25d42fab7030e675275696a 0225fcdb798846889a4afea7577f9409 4599f7abb87e47eeb180e3cb0bceaa3a RX(iia_α₀₁) 2c5d9626a61547128151f8bc0aab037b--4599f7abb87e47eeb180e3cb0bceaa3a 56ed15dee5634196a03df8bc8eb24e45 2 37526502d7fc4d4bb63820d6b973f2dc RY(iia_α₀₄) 4599f7abb87e47eeb180e3cb0bceaa3a--37526502d7fc4d4bb63820d6b973f2dc 7dcadeee445445a289ab70deac87dfa4 X 37526502d7fc4d4bb63820d6b973f2dc--7dcadeee445445a289ab70deac87dfa4 7dcadeee445445a289ab70deac87dfa4--af64d626dce049b0b63b27a4408d9df4 c1d21d485ba1442f913b0b9c6f833a31 7dcadeee445445a289ab70deac87dfa4--c1d21d485ba1442f913b0b9c6f833a31 489a6512268c47198bc24df39a12a4bb RX(iia_γ₀₁) c1d21d485ba1442f913b0b9c6f833a31--489a6512268c47198bc24df39a12a4bb 8406f47073314613be0d334cc7151e09 489a6512268c47198bc24df39a12a4bb--8406f47073314613be0d334cc7151e09 eba67a8ccf4d4d4faa632ab25cbb09d8 X 8406f47073314613be0d334cc7151e09--eba67a8ccf4d4d4faa632ab25cbb09d8 eba67a8ccf4d4d4faa632ab25cbb09d8--71e2dab0d3d84185993dabd5887da974 283adebff0024b2e92f9775efe5e7c7f RY(iia_β₀₄) eba67a8ccf4d4d4faa632ab25cbb09d8--283adebff0024b2e92f9775efe5e7c7f a392c17db8054f64ac08ae784a258ef5 RX(iia_β₀₁) 283adebff0024b2e92f9775efe5e7c7f--a392c17db8054f64ac08ae784a258ef5 fdb6f20bd36e4f1a81d180970360b06f RX(iia_α₁₁) a392c17db8054f64ac08ae784a258ef5--fdb6f20bd36e4f1a81d180970360b06f 2e4edcf7e41f4e4b8970fda19adb71e2 RY(iia_α₁₄) fdb6f20bd36e4f1a81d180970360b06f--2e4edcf7e41f4e4b8970fda19adb71e2 93b5b7fcc3644cac8ba491fb4a7ecadc X 2e4edcf7e41f4e4b8970fda19adb71e2--93b5b7fcc3644cac8ba491fb4a7ecadc 93b5b7fcc3644cac8ba491fb4a7ecadc--1324cd5e4ade4c0cb02eefb9d5215b69 76e2b56b489b4fa985a276eb4de8db8f 93b5b7fcc3644cac8ba491fb4a7ecadc--76e2b56b489b4fa985a276eb4de8db8f d19c01df267440aabcd7ab43ab4210d3 RX(iia_γ₁₁) 76e2b56b489b4fa985a276eb4de8db8f--d19c01df267440aabcd7ab43ab4210d3 9cd62f19b9e5478883d6127f9e0ad729 d19c01df267440aabcd7ab43ab4210d3--9cd62f19b9e5478883d6127f9e0ad729 6bfaee789d1c4c43a4581da01091f23f X 9cd62f19b9e5478883d6127f9e0ad729--6bfaee789d1c4c43a4581da01091f23f 6bfaee789d1c4c43a4581da01091f23f--2842810380714c0b9e5013a68468605a 6a65fde176734bed9e760f81c63ed984 RY(iia_β₁₄) 6bfaee789d1c4c43a4581da01091f23f--6a65fde176734bed9e760f81c63ed984 2f3e9369c3cf47ac8c8e71135f230394 RX(iia_β₁₁) 6a65fde176734bed9e760f81c63ed984--2f3e9369c3cf47ac8c8e71135f230394 2f3e9369c3cf47ac8c8e71135f230394--0225fcdb798846889a4afea7577f9409 bf5efaf3a5844fc29f06f5685021952c 1b599e5bd69f48bf833d93c02c6a3e35 RX(iia_α₀₂) 56ed15dee5634196a03df8bc8eb24e45--1b599e5bd69f48bf833d93c02c6a3e35 314cce38f65a4f918c0395aec901d583 RY(iia_α₀₅) 1b599e5bd69f48bf833d93c02c6a3e35--314cce38f65a4f918c0395aec901d583 ca3544f5ccdb4b5783498708d2a680c3 314cce38f65a4f918c0395aec901d583--ca3544f5ccdb4b5783498708d2a680c3 7f42222bd9d64f34a73e7f55c9942166 X ca3544f5ccdb4b5783498708d2a680c3--7f42222bd9d64f34a73e7f55c9942166 7f42222bd9d64f34a73e7f55c9942166--c1d21d485ba1442f913b0b9c6f833a31 5333558974894e2fb1bdb0999a56284b RX(iia_γ₀₂) 7f42222bd9d64f34a73e7f55c9942166--5333558974894e2fb1bdb0999a56284b 0b1c20c01a894b3c9df2d3534890573a X 5333558974894e2fb1bdb0999a56284b--0b1c20c01a894b3c9df2d3534890573a 0b1c20c01a894b3c9df2d3534890573a--8406f47073314613be0d334cc7151e09 ec8766d3170247f0bee31d1919c3b82f 0b1c20c01a894b3c9df2d3534890573a--ec8766d3170247f0bee31d1919c3b82f ffaaf2c2b1524a9cb7a3652cb630d63b RY(iia_β₀₅) ec8766d3170247f0bee31d1919c3b82f--ffaaf2c2b1524a9cb7a3652cb630d63b 46aafdee45c842c7859cea54bfc35779 RX(iia_β₀₂) ffaaf2c2b1524a9cb7a3652cb630d63b--46aafdee45c842c7859cea54bfc35779 e322b444429d484d8e3caabe74de6ff0 RX(iia_α₁₂) 46aafdee45c842c7859cea54bfc35779--e322b444429d484d8e3caabe74de6ff0 a399b26442634e69933cd0087de399b9 RY(iia_α₁₅) e322b444429d484d8e3caabe74de6ff0--a399b26442634e69933cd0087de399b9 bcaa8fb33e8c4ba1aee6f44c67def59d a399b26442634e69933cd0087de399b9--bcaa8fb33e8c4ba1aee6f44c67def59d 9dbf086bc55542339d54e3804c50c002 X bcaa8fb33e8c4ba1aee6f44c67def59d--9dbf086bc55542339d54e3804c50c002 9dbf086bc55542339d54e3804c50c002--76e2b56b489b4fa985a276eb4de8db8f d263c373b32944d2820e67182ac1b1c0 RX(iia_γ₁₂) 9dbf086bc55542339d54e3804c50c002--d263c373b32944d2820e67182ac1b1c0 32ea094a8fbc456fbd5005f3ef004efa X d263c373b32944d2820e67182ac1b1c0--32ea094a8fbc456fbd5005f3ef004efa 32ea094a8fbc456fbd5005f3ef004efa--9cd62f19b9e5478883d6127f9e0ad729 38e792078f0a4127af78b7b0dc2aaa11 32ea094a8fbc456fbd5005f3ef004efa--38e792078f0a4127af78b7b0dc2aaa11 8f6175bfac7a465984dcbc26c29cc489 RY(iia_β₁₅) 38e792078f0a4127af78b7b0dc2aaa11--8f6175bfac7a465984dcbc26c29cc489 321406b860c34b919cdac1e74ce36380 RX(iia_β₁₂) 8f6175bfac7a465984dcbc26c29cc489--321406b860c34b919cdac1e74ce36380 321406b860c34b919cdac1e74ce36380--bf5efaf3a5844fc29f06f5685021952c