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_cc56f6d225e04437b867170dd806de27 Constant Chebyshev FM cluster_de5df18abd37473d91724c61659cdea1 Constant Fourier FM 4b9cb394ec994c03bc1b29d85b0eb9bf 0 5160d178c1cd46e6b2b4c5e01306dbfa RX(phi) 4b9cb394ec994c03bc1b29d85b0eb9bf--5160d178c1cd46e6b2b4c5e01306dbfa ec8955c94b614ec6ba283370bcb5027d 1 68faff697ef0440b8099537b5a6d75b5 RX(acos(phi)) 5160d178c1cd46e6b2b4c5e01306dbfa--68faff697ef0440b8099537b5a6d75b5 586d1672b0f6495ba49edd8f4e11952a 68faff697ef0440b8099537b5a6d75b5--586d1672b0f6495ba49edd8f4e11952a ccd91323b4e94613bdb896fee4d04ff3 5301b30c6bf941d3afb4a89a1dc561cf RX(phi) ec8955c94b614ec6ba283370bcb5027d--5301b30c6bf941d3afb4a89a1dc561cf b899ab9aaf854dcb9a273932116a8b57 2 99a18011a78a4c7cb1bf4f20cbcd6094 RX(acos(phi)) 5301b30c6bf941d3afb4a89a1dc561cf--99a18011a78a4c7cb1bf4f20cbcd6094 99a18011a78a4c7cb1bf4f20cbcd6094--ccd91323b4e94613bdb896fee4d04ff3 71df1327b36d4e1d85c6fd3fa4947421 7ad18c13b9f54938a6191d315d5775df RX(phi) b899ab9aaf854dcb9a273932116a8b57--7ad18c13b9f54938a6191d315d5775df 1adeb2586e49439490a9e9a2567eb0c4 RX(acos(phi)) 7ad18c13b9f54938a6191d315d5775df--1adeb2586e49439490a9e9a2567eb0c4 1adeb2586e49439490a9e9a2567eb0c4--71df1327b36d4e1d85c6fd3fa4947421

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_aeb9cd6e7aaf4f69b9ec4a31d4fcbb6f Constant <function custom_fn at 0x7f01156775b0> FM cluster_4f0f28ca4d474e04904b2cff444e98ad Constant asin FM a34194e4000c465d971f99b22c5ff59a 0 b3d547889acb45ba95886f8ca155ecc1 RX(asin(phi)) a34194e4000c465d971f99b22c5ff59a--b3d547889acb45ba95886f8ca155ecc1 208ec4e3b1d14b03b79e6d66ed1eecda 1 c4afc1266ace4eb89ae873a55818b3e3 RX(phi**2 + asin(phi)) b3d547889acb45ba95886f8ca155ecc1--c4afc1266ace4eb89ae873a55818b3e3 54c00f3bbae54d88b62f6cd26b3139fd c4afc1266ace4eb89ae873a55818b3e3--54c00f3bbae54d88b62f6cd26b3139fd d67d4b194c834688b22304997958cf5c 69ec90f159d142889994f9c2aa7562eb RX(asin(phi)) 208ec4e3b1d14b03b79e6d66ed1eecda--69ec90f159d142889994f9c2aa7562eb 9a1fb9511fd44f9fa8dd2e6bebf4bc8e 2 ae5d0ead6d504cd183a83d6f5d56de1a RX(phi**2 + asin(phi)) 69ec90f159d142889994f9c2aa7562eb--ae5d0ead6d504cd183a83d6f5d56de1a ae5d0ead6d504cd183a83d6f5d56de1a--d67d4b194c834688b22304997958cf5c 67620553da8a487ba8410a1541e9ce2d d34a45fad84947559e5a0f94a355239d RX(asin(phi)) 9a1fb9511fd44f9fa8dd2e6bebf4bc8e--d34a45fad84947559e5a0f94a355239d efcc33eaa75c4ed58e82c8abd3e8085c RX(phi**2 + asin(phi)) d34a45fad84947559e5a0f94a355239d--efcc33eaa75c4ed58e82c8abd3e8085c efcc33eaa75c4ed58e82c8abd3e8085c--67620553da8a487ba8410a1541e9ce2d

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_cbcbce9c610842ea99078093ad22d9d1 Exponential Fourier FM cluster_8c8d2334781b446a91b3c6b6e0c419bb Constant Fourier FM cluster_b8812923503c429099ca1a374fe903eb Tower Fourier FM ee5df4451fea4888ac574eb903205894 0 022c61e11d5e4a7da119ac86368fd133 RX(phi) ee5df4451fea4888ac574eb903205894--022c61e11d5e4a7da119ac86368fd133 ebc2649941084d2f8e4c6f803943f594 1 221b7e6a94f9468db43168206434e875 RX(1.0*phi) 022c61e11d5e4a7da119ac86368fd133--221b7e6a94f9468db43168206434e875 db6e11e98de4455094695387e0aa3b2d RX(1.0*phi) 221b7e6a94f9468db43168206434e875--db6e11e98de4455094695387e0aa3b2d 00a388b236c94671b3fa38dccb0476cd db6e11e98de4455094695387e0aa3b2d--00a388b236c94671b3fa38dccb0476cd 0309226b4ef143238139d7d2bc3d38e2 7aafb2abfb9b492a8ac8691f48d39cb4 RX(phi) ebc2649941084d2f8e4c6f803943f594--7aafb2abfb9b492a8ac8691f48d39cb4 57f6f368fd004491ad1e39d01b0520b8 2 6792f6293ae44575afb734ad53ec37d1 RX(2.0*phi) 7aafb2abfb9b492a8ac8691f48d39cb4--6792f6293ae44575afb734ad53ec37d1 306e6ecddef14a41b3e79d163a80da3d RX(2.0*phi) 6792f6293ae44575afb734ad53ec37d1--306e6ecddef14a41b3e79d163a80da3d 306e6ecddef14a41b3e79d163a80da3d--0309226b4ef143238139d7d2bc3d38e2 d43b95609fa84eb088330bd2c0cee656 0d53ef324f3e46d8937559f0d189afd2 RX(phi) 57f6f368fd004491ad1e39d01b0520b8--0d53ef324f3e46d8937559f0d189afd2 806d925759424f9abba63783a92f0339 3 c991e5926ed04d76a0d88b695005921e RX(3.0*phi) 0d53ef324f3e46d8937559f0d189afd2--c991e5926ed04d76a0d88b695005921e 1d69435907174d19880d0d1f97db9b26 RX(4.0*phi) c991e5926ed04d76a0d88b695005921e--1d69435907174d19880d0d1f97db9b26 1d69435907174d19880d0d1f97db9b26--d43b95609fa84eb088330bd2c0cee656 f0eb7625adf4414fa281072b569f3f9a 11762baf30f1400997202378c909a21e RX(phi) 806d925759424f9abba63783a92f0339--11762baf30f1400997202378c909a21e 3ade3b7f64374c37ae1a0de1b782d29a 4 11dc822efed94458b9e4c59763a830a7 RX(4.0*phi) 11762baf30f1400997202378c909a21e--11dc822efed94458b9e4c59763a830a7 23fef8657c2a4ae886c154fecead61e0 RX(8.0*phi) 11dc822efed94458b9e4c59763a830a7--23fef8657c2a4ae886c154fecead61e0 23fef8657c2a4ae886c154fecead61e0--f0eb7625adf4414fa281072b569f3f9a 2ab2827264184fd496479f5e4d790f8d e52c5fb1c5b14557be147335feaad6c9 RX(phi) 3ade3b7f64374c37ae1a0de1b782d29a--e52c5fb1c5b14557be147335feaad6c9 f9836ba4862949bea6dd0a215ac06a94 RX(5.0*phi) e52c5fb1c5b14557be147335feaad6c9--f9836ba4862949bea6dd0a215ac06a94 b9635857da964b4ca87e981148923e30 RX(16.0*phi) f9836ba4862949bea6dd0a215ac06a94--b9635857da964b4ca87e981148923e30 b9635857da964b4ca87e981148923e30--2ab2827264184fd496479f5e4d790f8d

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 817db277da964ec98cfe3e9dc10b6d36 0 2bb766e454b44fd8b052d8fd13de1aed RX(1.0*acos(phi)) 817db277da964ec98cfe3e9dc10b6d36--2bb766e454b44fd8b052d8fd13de1aed 023ba04f527b4a919f5a0e55b6151ed2 1 7e4eb16640b9443788bb100a667766f6 2bb766e454b44fd8b052d8fd13de1aed--7e4eb16640b9443788bb100a667766f6 c4afe22c33ca43059931ab75cff45f95 bd995283c1dc4184bd0c4709755a3fca RX(1.414*acos(phi)) 023ba04f527b4a919f5a0e55b6151ed2--bd995283c1dc4184bd0c4709755a3fca 0c16fad91c2847b9aed98cf5688ad679 2 bd995283c1dc4184bd0c4709755a3fca--c4afe22c33ca43059931ab75cff45f95 43e8b8ebeb5243d68aed405b6bb19706 b0398439e83e44a7b62fdef1ec0dd643 RX(1.732*acos(phi)) 0c16fad91c2847b9aed98cf5688ad679--b0398439e83e44a7b62fdef1ec0dd643 30864330f1ec46f4b3d740c0dcb768c8 3 b0398439e83e44a7b62fdef1ec0dd643--43e8b8ebeb5243d68aed405b6bb19706 04c6b80181204a6d8e4884d997b89bd0 e42505f5ed9d421d935ac9d6dcffa7d3 RX(2.0*acos(phi)) 30864330f1ec46f4b3d740c0dcb768c8--e42505f5ed9d421d935ac9d6dcffa7d3 569a30273bf141ae8d7ff8adbba1e794 4 e42505f5ed9d421d935ac9d6dcffa7d3--04c6b80181204a6d8e4884d997b89bd0 d01ed83e6f7148f1917eb257dffeba35 96a1262a7fb043cdbdc564b86663becb RX(2.236*acos(phi)) 569a30273bf141ae8d7ff8adbba1e794--96a1262a7fb043cdbdc564b86663becb 96a1262a7fb043cdbdc564b86663becb--d01ed83e6f7148f1917eb257dffeba35

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 529786b0f79b4eae98c5b3fbdaffe9db 0 528bfa83bc524960a3ad3c53b096c31d RX(1.0*phi*w₀) 529786b0f79b4eae98c5b3fbdaffe9db--528bfa83bc524960a3ad3c53b096c31d c280546cd7fd4e40bcc715dd24980fa4 1 791bd310d9ce4f9d82d32e21d520dc04 528bfa83bc524960a3ad3c53b096c31d--791bd310d9ce4f9d82d32e21d520dc04 1fa5d7aff83f403993ca94b9b6a24ea2 ed7157babcf04746b8d145e2a49a9822 RX(2.0*phi*w₁) c280546cd7fd4e40bcc715dd24980fa4--ed7157babcf04746b8d145e2a49a9822 8d6131873a8541fb81e31b5369e21985 2 ed7157babcf04746b8d145e2a49a9822--1fa5d7aff83f403993ca94b9b6a24ea2 751db978612a4fbead59b65b081b25db 53fd60c5b264462899073d3ba09a716c RX(4.0*phi*w₂) 8d6131873a8541fb81e31b5369e21985--53fd60c5b264462899073d3ba09a716c 17cbb26ba58b44c4ad431c22c359c339 3 53fd60c5b264462899073d3ba09a716c--751db978612a4fbead59b65b081b25db 93b578ae60f54fa9ae5c569352fff731 054d2d8af25c47c7be91ebc334b0fb60 RX(8.0*phi*w₃) 17cbb26ba58b44c4ad431c22c359c339--054d2d8af25c47c7be91ebc334b0fb60 19cb7000bfaf4f22a67dceadec8cafbc 4 054d2d8af25c47c7be91ebc334b0fb60--93b578ae60f54fa9ae5c569352fff731 3ff26dfe845b46dd8f0f05256bbc9b68 1df54b7f81824e3795d82d809550a6e5 RX(16.0*phi*w₄) 19cb7000bfaf4f22a67dceadec8cafbc--1df54b7f81824e3795d82d809550a6e5 1df54b7f81824e3795d82d809550a6e5--3ff26dfe845b46dd8f0f05256bbc9b68

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 5444ef63b27c4e849db263e045fc0501 0 4daf705f490a467d8466655afd8cc32c RY(80.0*acos(w₄*(0.667*x + 1.667))) 5444ef63b27c4e849db263e045fc0501--4daf705f490a467d8466655afd8cc32c c4f7d176cdb1460e89c073016c9687a7 1 fe8892303dd1443992d67845d57e0938 4daf705f490a467d8466655afd8cc32c--fe8892303dd1443992d67845d57e0938 a90ff9ba0f994125b4e4dca722be1e39 2b702d6785714d49ade92878f027435f RY(40.0*acos(w₃*(0.667*x + 1.667))) c4f7d176cdb1460e89c073016c9687a7--2b702d6785714d49ade92878f027435f 064acf85f7464b59b79420b187504154 2 2b702d6785714d49ade92878f027435f--a90ff9ba0f994125b4e4dca722be1e39 3bf95517b05d498dad013683871a0a57 223b1480a23f4f16bae89e4186f7ad33 RY(20.0*acos(w₂*(0.667*x + 1.667))) 064acf85f7464b59b79420b187504154--223b1480a23f4f16bae89e4186f7ad33 9592fddcacf2463681713e748c7f7cd3 3 223b1480a23f4f16bae89e4186f7ad33--3bf95517b05d498dad013683871a0a57 1c4eeed5dfed41af9e509701af6d8fe9 cb6b6abb79b6406c977af95a7df93199 RY(10.0*acos(w₁*(0.667*x + 1.667))) 9592fddcacf2463681713e748c7f7cd3--cb6b6abb79b6406c977af95a7df93199 db95158527f6465bb276b4da6dc91954 4 cb6b6abb79b6406c977af95a7df93199--1c4eeed5dfed41af9e509701af6d8fe9 0fc510d0bcff42ad939f477f3ea0ae50 8966a8b9c30540788c92a7854cc4577c RY(5.0*acos(w₀*(0.667*x + 1.667))) db95158527f6465bb276b4da6dc91954--8966a8b9c30540788c92a7854cc4577c 8966a8b9c30540788c92a7854cc4577c--0fc510d0bcff42ad939f477f3ea0ae50

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 e4c61c2a6d8a4c7ba26c506e9b50a930 0 2200f4f6efd04c639cef502f50b2104e RX(theta₀) e4c61c2a6d8a4c7ba26c506e9b50a930--2200f4f6efd04c639cef502f50b2104e 49aadf73e19c47699352d1aa37b71fd3 1 5f864c906c814959b93218a8794c5760 RY(theta₃) 2200f4f6efd04c639cef502f50b2104e--5f864c906c814959b93218a8794c5760 cf90bef7e09d4523adba2a3b9aeb6d4b RX(theta₆) 5f864c906c814959b93218a8794c5760--cf90bef7e09d4523adba2a3b9aeb6d4b 42f24899596946d2aa0c92f32cd8029a cf90bef7e09d4523adba2a3b9aeb6d4b--42f24899596946d2aa0c92f32cd8029a 540f99bdf2b0427cab0150c3fd8401de 42f24899596946d2aa0c92f32cd8029a--540f99bdf2b0427cab0150c3fd8401de f836acc3d36e4faaa890c6309ef12051 RX(theta₉) 540f99bdf2b0427cab0150c3fd8401de--f836acc3d36e4faaa890c6309ef12051 efe287b455c7403da7f3f0b3122c375b RY(theta₁₂) f836acc3d36e4faaa890c6309ef12051--efe287b455c7403da7f3f0b3122c375b 9832f8744af944dcba29afdcbe46e614 RX(theta₁₅) efe287b455c7403da7f3f0b3122c375b--9832f8744af944dcba29afdcbe46e614 afe31a2909cb476eaf849d30aed29185 9832f8744af944dcba29afdcbe46e614--afe31a2909cb476eaf849d30aed29185 66a6c42b38884affb152b73c7e38d497 afe31a2909cb476eaf849d30aed29185--66a6c42b38884affb152b73c7e38d497 beaf5e461c444aa1be446899738269a3 66a6c42b38884affb152b73c7e38d497--beaf5e461c444aa1be446899738269a3 d98f45f216bf424eb0ecab341d36b0d4 629bb1cf71674d40b1f56d24fda1aeea RX(theta₁) 49aadf73e19c47699352d1aa37b71fd3--629bb1cf71674d40b1f56d24fda1aeea 4b398c170446466190a2cc1dc6523b22 2 5d2251e7cc804925bd2015ab9d2b9142 RY(theta₄) 629bb1cf71674d40b1f56d24fda1aeea--5d2251e7cc804925bd2015ab9d2b9142 0414f620dc2a4a29ab8f532dc984d614 RX(theta₇) 5d2251e7cc804925bd2015ab9d2b9142--0414f620dc2a4a29ab8f532dc984d614 f31e187774744162ae1377496b1725b0 X 0414f620dc2a4a29ab8f532dc984d614--f31e187774744162ae1377496b1725b0 f31e187774744162ae1377496b1725b0--42f24899596946d2aa0c92f32cd8029a 383d8308cd234bf985733fe1d8e95ff1 f31e187774744162ae1377496b1725b0--383d8308cd234bf985733fe1d8e95ff1 91596fc6c4f047f49287bf9ff06b60ac RX(theta₁₀) 383d8308cd234bf985733fe1d8e95ff1--91596fc6c4f047f49287bf9ff06b60ac 9623bcd0c6e143b7ae63b9853132ea0e RY(theta₁₃) 91596fc6c4f047f49287bf9ff06b60ac--9623bcd0c6e143b7ae63b9853132ea0e c9fec6e8429a43c5bc36fb37b71ce240 RX(theta₁₆) 9623bcd0c6e143b7ae63b9853132ea0e--c9fec6e8429a43c5bc36fb37b71ce240 a046280e85b7446e80b9e955bb197c24 X c9fec6e8429a43c5bc36fb37b71ce240--a046280e85b7446e80b9e955bb197c24 a046280e85b7446e80b9e955bb197c24--afe31a2909cb476eaf849d30aed29185 0538b3dfdb6546c3bf113394764bbe3b a046280e85b7446e80b9e955bb197c24--0538b3dfdb6546c3bf113394764bbe3b 0538b3dfdb6546c3bf113394764bbe3b--d98f45f216bf424eb0ecab341d36b0d4 0a350deb4e3d499abd03e6bbd96b48c0 26d0bb96df3f46ee822f692293ca6c17 RX(theta₂) 4b398c170446466190a2cc1dc6523b22--26d0bb96df3f46ee822f692293ca6c17 c278bc16299b49758d46929447ef0378 RY(theta₅) 26d0bb96df3f46ee822f692293ca6c17--c278bc16299b49758d46929447ef0378 00b9d02e6c0a4f248d3a894ed8a90c9f RX(theta₈) c278bc16299b49758d46929447ef0378--00b9d02e6c0a4f248d3a894ed8a90c9f d75eb6d948194f2f835697967fb51561 00b9d02e6c0a4f248d3a894ed8a90c9f--d75eb6d948194f2f835697967fb51561 76395e0c677d4320832634a272b9363e X d75eb6d948194f2f835697967fb51561--76395e0c677d4320832634a272b9363e 76395e0c677d4320832634a272b9363e--383d8308cd234bf985733fe1d8e95ff1 adbc7a508c374096a96b16121d203e06 RX(theta₁₁) 76395e0c677d4320832634a272b9363e--adbc7a508c374096a96b16121d203e06 5344e6909312481495e745c29991e59d RY(theta₁₄) adbc7a508c374096a96b16121d203e06--5344e6909312481495e745c29991e59d 799ef82a824f48c8b8a275f4cf8ccbbc RX(theta₁₇) 5344e6909312481495e745c29991e59d--799ef82a824f48c8b8a275f4cf8ccbbc 41bfa3de5d2b4311b4391522555f0f57 799ef82a824f48c8b8a275f4cf8ccbbc--41bfa3de5d2b4311b4391522555f0f57 7c5c19050fbb4d2ab3d26d5c3556a26c X 41bfa3de5d2b4311b4391522555f0f57--7c5c19050fbb4d2ab3d26d5c3556a26c 7c5c19050fbb4d2ab3d26d5c3556a26c--0538b3dfdb6546c3bf113394764bbe3b 7c5c19050fbb4d2ab3d26d5c3556a26c--0a350deb4e3d499abd03e6bbd96b48c0

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 abfece3c83434348ac2171635b77cc75 0 440f9d4cbecb427caea4c6dbfba3200f RX(phi₀) abfece3c83434348ac2171635b77cc75--440f9d4cbecb427caea4c6dbfba3200f 8bfa86b7ba3c4efaa2b7e468947767f4 1 f8ba786459c74e319271b62ea86d27ad RY(phi₃) 440f9d4cbecb427caea4c6dbfba3200f--f8ba786459c74e319271b62ea86d27ad 01a28e16a785410283973e679969b926 RX(phi₆) f8ba786459c74e319271b62ea86d27ad--01a28e16a785410283973e679969b926 5b935502969f4c678cab98106ddfb089 01a28e16a785410283973e679969b926--5b935502969f4c678cab98106ddfb089 618c307df417454e915a3c7fec49ed65 5b935502969f4c678cab98106ddfb089--618c307df417454e915a3c7fec49ed65 c37f84cf69cd4335954b39959e01a1f2 RX(phi₉) 618c307df417454e915a3c7fec49ed65--c37f84cf69cd4335954b39959e01a1f2 ea3b829e065d4a7eae4b51e57f60bc4e RY(phi₁₂) c37f84cf69cd4335954b39959e01a1f2--ea3b829e065d4a7eae4b51e57f60bc4e a4fdece4d30b4833a4208228a38ae116 RX(phi₁₅) ea3b829e065d4a7eae4b51e57f60bc4e--a4fdece4d30b4833a4208228a38ae116 edec9afeb17f4ad2b7b9ef30ec0f2bab a4fdece4d30b4833a4208228a38ae116--edec9afeb17f4ad2b7b9ef30ec0f2bab 37fa0b969d0c44e2b037330ec700256a edec9afeb17f4ad2b7b9ef30ec0f2bab--37fa0b969d0c44e2b037330ec700256a 63b5ffc01d6c45e88b52073a36dc761f 37fa0b969d0c44e2b037330ec700256a--63b5ffc01d6c45e88b52073a36dc761f 8afec026d331413f98e0cf3a17cf55e3 e8d3f636ce47410fadd629267bbfa656 RX(phi₁) 8bfa86b7ba3c4efaa2b7e468947767f4--e8d3f636ce47410fadd629267bbfa656 0b22481b782940f580ec82bad2fd4999 2 b99bf6a3467642f9babe7ced259f52b8 RY(phi₄) e8d3f636ce47410fadd629267bbfa656--b99bf6a3467642f9babe7ced259f52b8 fb7e16503128401ab5bc93e0c94f7c3d RX(phi₇) b99bf6a3467642f9babe7ced259f52b8--fb7e16503128401ab5bc93e0c94f7c3d 4b1b443b772a4f64be2963d6c429dfcc PHASE(phi_ent₀) fb7e16503128401ab5bc93e0c94f7c3d--4b1b443b772a4f64be2963d6c429dfcc 4b1b443b772a4f64be2963d6c429dfcc--5b935502969f4c678cab98106ddfb089 9febf0850c3740cc8f6fbad3b40ee458 4b1b443b772a4f64be2963d6c429dfcc--9febf0850c3740cc8f6fbad3b40ee458 0a418a7d97104562bb3f2dc9ec34e29e RX(phi₁₀) 9febf0850c3740cc8f6fbad3b40ee458--0a418a7d97104562bb3f2dc9ec34e29e b1a5449f3dcc41e5a26b6a512f0c4cb7 RY(phi₁₃) 0a418a7d97104562bb3f2dc9ec34e29e--b1a5449f3dcc41e5a26b6a512f0c4cb7 ad7050c99526427b925ffc1291551167 RX(phi₁₆) b1a5449f3dcc41e5a26b6a512f0c4cb7--ad7050c99526427b925ffc1291551167 9d68739375f544c1b7f4a3c6e6a33a02 PHASE(phi_ent₂) ad7050c99526427b925ffc1291551167--9d68739375f544c1b7f4a3c6e6a33a02 9d68739375f544c1b7f4a3c6e6a33a02--edec9afeb17f4ad2b7b9ef30ec0f2bab 5a4d7bce4a614d828bcd772466231953 9d68739375f544c1b7f4a3c6e6a33a02--5a4d7bce4a614d828bcd772466231953 5a4d7bce4a614d828bcd772466231953--8afec026d331413f98e0cf3a17cf55e3 74dfe751246841ab93d0b18f01a52b28 b0d2afde58d747f980c74031752b5f28 RX(phi₂) 0b22481b782940f580ec82bad2fd4999--b0d2afde58d747f980c74031752b5f28 c23711efb4fe488ba298fdaac3b9cff3 RY(phi₅) b0d2afde58d747f980c74031752b5f28--c23711efb4fe488ba298fdaac3b9cff3 e6bd5345656546919287480bf73da403 RX(phi₈) c23711efb4fe488ba298fdaac3b9cff3--e6bd5345656546919287480bf73da403 313f08237fc44e96aaa5db503d9ccdbe e6bd5345656546919287480bf73da403--313f08237fc44e96aaa5db503d9ccdbe c6a89be1896e41bb809c9e3dd94c56ee PHASE(phi_ent₁) 313f08237fc44e96aaa5db503d9ccdbe--c6a89be1896e41bb809c9e3dd94c56ee c6a89be1896e41bb809c9e3dd94c56ee--9febf0850c3740cc8f6fbad3b40ee458 1ba3b1fb6a8843238cc8bcb4a10fa47f RX(phi₁₁) c6a89be1896e41bb809c9e3dd94c56ee--1ba3b1fb6a8843238cc8bcb4a10fa47f 3568df94e2fa4152b5b4f7123aa07128 RY(phi₁₄) 1ba3b1fb6a8843238cc8bcb4a10fa47f--3568df94e2fa4152b5b4f7123aa07128 4ee42115b57546d997bf65e1b10b0f06 RX(phi₁₇) 3568df94e2fa4152b5b4f7123aa07128--4ee42115b57546d997bf65e1b10b0f06 d623faf72e8c4e0cbda3c003077eaf6c 4ee42115b57546d997bf65e1b10b0f06--d623faf72e8c4e0cbda3c003077eaf6c 74e80f5a5c0e42c99350459576dcb44e PHASE(phi_ent₃) d623faf72e8c4e0cbda3c003077eaf6c--74e80f5a5c0e42c99350459576dcb44e 74e80f5a5c0e42c99350459576dcb44e--5a4d7bce4a614d828bcd772466231953 74e80f5a5c0e42c99350459576dcb44e--74dfe751246841ab93d0b18f01a52b28

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_a03575d68eb34103875fb8734877f05a cluster_7495c59a485f4ff2b3521e4e7191d238 ffc34d511e384a1497c3b0f96c80ad44 0 4d936630b4ad40f9889df0c6109b168b RX(theta₀) ffc34d511e384a1497c3b0f96c80ad44--4d936630b4ad40f9889df0c6109b168b 201f146a27f346488750f7a5f9fc5428 1 36069adb4af1434a86956f5b457dd2c7 RY(theta₃) 4d936630b4ad40f9889df0c6109b168b--36069adb4af1434a86956f5b457dd2c7 3375b725a939431292a2b42e82375d05 RX(theta₆) 36069adb4af1434a86956f5b457dd2c7--3375b725a939431292a2b42e82375d05 814214d4387741728634345b221eb639 HamEvo 3375b725a939431292a2b42e82375d05--814214d4387741728634345b221eb639 25704641f608427ba3550d5349512add RX(theta₉) 814214d4387741728634345b221eb639--25704641f608427ba3550d5349512add 9e4a6a301b44447cae5a7b895748f850 RY(theta₁₂) 25704641f608427ba3550d5349512add--9e4a6a301b44447cae5a7b895748f850 9a3a6eb8c38e448584cd3c735bd0aede RX(theta₁₅) 9e4a6a301b44447cae5a7b895748f850--9a3a6eb8c38e448584cd3c735bd0aede a426a0236ade4c2296ddaff272a44d71 HamEvo 9a3a6eb8c38e448584cd3c735bd0aede--a426a0236ade4c2296ddaff272a44d71 5d11d031209a4184b5d2493f8aa8d566 a426a0236ade4c2296ddaff272a44d71--5d11d031209a4184b5d2493f8aa8d566 5acf3a9d303247a2a4f49c091a4c89a3 dc4b59fe454448b0979110c95fbeab4f RX(theta₁) 201f146a27f346488750f7a5f9fc5428--dc4b59fe454448b0979110c95fbeab4f de618d1aa02944648778edfb45c87408 2 c5964b630a7f4011868e7d65e4c0af7c RY(theta₄) dc4b59fe454448b0979110c95fbeab4f--c5964b630a7f4011868e7d65e4c0af7c 37a9a9e429b04fa3828e71546952d900 RX(theta₇) c5964b630a7f4011868e7d65e4c0af7c--37a9a9e429b04fa3828e71546952d900 33b540ee644e405b91fe1a3ce274870a t = theta_t₀ 37a9a9e429b04fa3828e71546952d900--33b540ee644e405b91fe1a3ce274870a a8bf8dff0d944c0088704d352c0ab571 RX(theta₁₀) 33b540ee644e405b91fe1a3ce274870a--a8bf8dff0d944c0088704d352c0ab571 c5c3dd4cc63e4cd1b94e5b446d53a4ce RY(theta₁₃) a8bf8dff0d944c0088704d352c0ab571--c5c3dd4cc63e4cd1b94e5b446d53a4ce 8e041c02ca994b69be9c534541020768 RX(theta₁₆) c5c3dd4cc63e4cd1b94e5b446d53a4ce--8e041c02ca994b69be9c534541020768 201d63223600479db508de6bb0ba741e t = theta_t₁ 8e041c02ca994b69be9c534541020768--201d63223600479db508de6bb0ba741e 201d63223600479db508de6bb0ba741e--5acf3a9d303247a2a4f49c091a4c89a3 0245305f78104e93a88b66c531447535 e04c175cd84e410bb918cc948d2cb646 RX(theta₂) de618d1aa02944648778edfb45c87408--e04c175cd84e410bb918cc948d2cb646 24628763f6dd411784efcd46b2bf685b RY(theta₅) e04c175cd84e410bb918cc948d2cb646--24628763f6dd411784efcd46b2bf685b 723a2775652843edb111140fd932dd67 RX(theta₈) 24628763f6dd411784efcd46b2bf685b--723a2775652843edb111140fd932dd67 328229a2a76746cda60cd97acc61e7e8 723a2775652843edb111140fd932dd67--328229a2a76746cda60cd97acc61e7e8 9c9819ef123047ecbc3a384c9d1601f4 RX(theta₁₁) 328229a2a76746cda60cd97acc61e7e8--9c9819ef123047ecbc3a384c9d1601f4 7e66b5412c744fb88b5b85f806b5f6b6 RY(theta₁₄) 9c9819ef123047ecbc3a384c9d1601f4--7e66b5412c744fb88b5b85f806b5f6b6 bd2de560f6c447c78f125364194d4466 RX(theta₁₇) 7e66b5412c744fb88b5b85f806b5f6b6--bd2de560f6c447c78f125364194d4466 f2726bf340e74be085e9ad6fe0aae053 bd2de560f6c447c78f125364194d4466--f2726bf340e74be085e9ad6fe0aae053 f2726bf340e74be085e9ad6fe0aae053--0245305f78104e93a88b66c531447535

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_e2f29236b28d41b09cd9541fb46d9a5b cluster_5600f86d9be14f219634b8e5db12273e 8b260aa0d59d41bbbdb5f087e9df362c 0 b76927ce7bf14731a3d5a93c3ddec9f5 RX(theta₀) 8b260aa0d59d41bbbdb5f087e9df362c--b76927ce7bf14731a3d5a93c3ddec9f5 a98ff604f6724f1f8c85ab90a34d60f8 1 17a4aa662fc5461e9fdd357e12f73ba2 RY(theta₆) b76927ce7bf14731a3d5a93c3ddec9f5--17a4aa662fc5461e9fdd357e12f73ba2 ea762fc4bd184e8780cf91f0fbfd8567 RX(theta₁₂) 17a4aa662fc5461e9fdd357e12f73ba2--ea762fc4bd184e8780cf91f0fbfd8567 3f6e355b7ed34d9dbc43ced325da15ac ea762fc4bd184e8780cf91f0fbfd8567--3f6e355b7ed34d9dbc43ced325da15ac 44575bcfca9c415a9dfdcbda143a3a47 RX(theta₁₈) 3f6e355b7ed34d9dbc43ced325da15ac--44575bcfca9c415a9dfdcbda143a3a47 b021169c62634812b7fd7221cd4aa03a RY(theta₂₄) 44575bcfca9c415a9dfdcbda143a3a47--b021169c62634812b7fd7221cd4aa03a fe8d5ed1207348fab40cb98ce90e5ad5 RX(theta₃₀) b021169c62634812b7fd7221cd4aa03a--fe8d5ed1207348fab40cb98ce90e5ad5 fcb87da544b34092879c86d13bf976a9 fe8d5ed1207348fab40cb98ce90e5ad5--fcb87da544b34092879c86d13bf976a9 91e0623fd2ac42109330cf6be117ba97 fcb87da544b34092879c86d13bf976a9--91e0623fd2ac42109330cf6be117ba97 298c6432cb274359ab58080d020e7634 a40905a29cd1467c9f2af7d361aa8002 RX(theta₁) a98ff604f6724f1f8c85ab90a34d60f8--a40905a29cd1467c9f2af7d361aa8002 6c1a7c5bcf8741e4b03523a1f2906724 2 5d94757eaed547ea941f6c586a7b84b9 RY(theta₇) a40905a29cd1467c9f2af7d361aa8002--5d94757eaed547ea941f6c586a7b84b9 a88d678eb8db4d91a07783d196ff8c20 RX(theta₁₃) 5d94757eaed547ea941f6c586a7b84b9--a88d678eb8db4d91a07783d196ff8c20 24f8e7eb385c498391ceddd8d0c6ebc1 a88d678eb8db4d91a07783d196ff8c20--24f8e7eb385c498391ceddd8d0c6ebc1 c67d5e5fa792432fbbeaa668de137cf3 RX(theta₁₉) 24f8e7eb385c498391ceddd8d0c6ebc1--c67d5e5fa792432fbbeaa668de137cf3 1df88da395c7489d80e9089d167fe270 RY(theta₂₅) c67d5e5fa792432fbbeaa668de137cf3--1df88da395c7489d80e9089d167fe270 ffab5a0654804df39c933da3ab722cee RX(theta₃₁) 1df88da395c7489d80e9089d167fe270--ffab5a0654804df39c933da3ab722cee 78606383b89744578a5ff4753e421805 ffab5a0654804df39c933da3ab722cee--78606383b89744578a5ff4753e421805 78606383b89744578a5ff4753e421805--298c6432cb274359ab58080d020e7634 b36e7bae8e844dadab7a1a75b2a40578 e6a68e1d49aa47048aebf228a81a3183 RX(theta₂) 6c1a7c5bcf8741e4b03523a1f2906724--e6a68e1d49aa47048aebf228a81a3183 3637fcce41b04e0cb1ab7b4f5a2d0da3 3 b0cc61a7521c48d6989e67065ccf8a4a RY(theta₈) e6a68e1d49aa47048aebf228a81a3183--b0cc61a7521c48d6989e67065ccf8a4a b898b26296c64a0f81479b81feb4f5bf RX(theta₁₄) b0cc61a7521c48d6989e67065ccf8a4a--b898b26296c64a0f81479b81feb4f5bf f17e4a38b422477a9da778aac849b313 HamEvo b898b26296c64a0f81479b81feb4f5bf--f17e4a38b422477a9da778aac849b313 5d0d3b31eb3c401ca6adb307b816d162 RX(theta₂₀) f17e4a38b422477a9da778aac849b313--5d0d3b31eb3c401ca6adb307b816d162 57880ac707cc4b2f9cbe60970f499348 RY(theta₂₆) 5d0d3b31eb3c401ca6adb307b816d162--57880ac707cc4b2f9cbe60970f499348 66aa367e5b994acf98606831df564e98 RX(theta₃₂) 57880ac707cc4b2f9cbe60970f499348--66aa367e5b994acf98606831df564e98 87a65ebe65334b3984ecc7ae9d205e5f HamEvo 66aa367e5b994acf98606831df564e98--87a65ebe65334b3984ecc7ae9d205e5f 87a65ebe65334b3984ecc7ae9d205e5f--b36e7bae8e844dadab7a1a75b2a40578 2f1d3d88d5244011baf4fd5426d78f2d 143cb68a4b2f480a8d38a1ecbd3c2589 RX(theta₃) 3637fcce41b04e0cb1ab7b4f5a2d0da3--143cb68a4b2f480a8d38a1ecbd3c2589 b830af8767044e3eb36a077baeb8fbe2 4 0f2308335df0451497a13b14f58b543f RY(theta₉) 143cb68a4b2f480a8d38a1ecbd3c2589--0f2308335df0451497a13b14f58b543f 70730ba0495f432895f25d3464e59c4b RX(theta₁₅) 0f2308335df0451497a13b14f58b543f--70730ba0495f432895f25d3464e59c4b 4cb4cae2772f43da8ec25f5f043dde18 t = theta_t₀ 70730ba0495f432895f25d3464e59c4b--4cb4cae2772f43da8ec25f5f043dde18 9bd736e02bee4069b7b0965344aded8a RX(theta₂₁) 4cb4cae2772f43da8ec25f5f043dde18--9bd736e02bee4069b7b0965344aded8a 65ddb118c7df4dbfbd2ccae488c2bf33 RY(theta₂₇) 9bd736e02bee4069b7b0965344aded8a--65ddb118c7df4dbfbd2ccae488c2bf33 6b23d54f112348dfb9d5360e0679f02c RX(theta₃₃) 65ddb118c7df4dbfbd2ccae488c2bf33--6b23d54f112348dfb9d5360e0679f02c 564203ffa22947758d4e0290346cde18 t = theta_t₁ 6b23d54f112348dfb9d5360e0679f02c--564203ffa22947758d4e0290346cde18 564203ffa22947758d4e0290346cde18--2f1d3d88d5244011baf4fd5426d78f2d 50911d8e06be41b796ddcb5fb4f166f6 2221cd32b9ee4d85861cba4e46568b02 RX(theta₄) b830af8767044e3eb36a077baeb8fbe2--2221cd32b9ee4d85861cba4e46568b02 51ac9632b05748f585b761d409327bff 5 22752233e97c4bd9885ca50833c8e814 RY(theta₁₀) 2221cd32b9ee4d85861cba4e46568b02--22752233e97c4bd9885ca50833c8e814 ef4d8b97e2124945b03b2f06c5c61e24 RX(theta₁₆) 22752233e97c4bd9885ca50833c8e814--ef4d8b97e2124945b03b2f06c5c61e24 2b68fb1f222d4b889cb1e9b4c7b39a8e ef4d8b97e2124945b03b2f06c5c61e24--2b68fb1f222d4b889cb1e9b4c7b39a8e bb1a5630c6204a0bbc9084bd322793ae RX(theta₂₂) 2b68fb1f222d4b889cb1e9b4c7b39a8e--bb1a5630c6204a0bbc9084bd322793ae 4000c72538f74b1a96075bd3b96faaa4 RY(theta₂₈) bb1a5630c6204a0bbc9084bd322793ae--4000c72538f74b1a96075bd3b96faaa4 7f776411b9264fca8ef7341dd15149cf RX(theta₃₄) 4000c72538f74b1a96075bd3b96faaa4--7f776411b9264fca8ef7341dd15149cf 70e53a10a02b4d28bababdb68d23ce72 7f776411b9264fca8ef7341dd15149cf--70e53a10a02b4d28bababdb68d23ce72 70e53a10a02b4d28bababdb68d23ce72--50911d8e06be41b796ddcb5fb4f166f6 286ede67f05043f98e393b9cc6b5febb a86737a6097e4bb9a7c4ea370b17d95b RX(theta₅) 51ac9632b05748f585b761d409327bff--a86737a6097e4bb9a7c4ea370b17d95b 0ad1d7748b5244fd9ecb3bc0cbf12a08 RY(theta₁₁) a86737a6097e4bb9a7c4ea370b17d95b--0ad1d7748b5244fd9ecb3bc0cbf12a08 bae19369b1e14f5c8961de1708625fce RX(theta₁₇) 0ad1d7748b5244fd9ecb3bc0cbf12a08--bae19369b1e14f5c8961de1708625fce b38ae841a28d425b83b9c87c24d86fd0 bae19369b1e14f5c8961de1708625fce--b38ae841a28d425b83b9c87c24d86fd0 d576a8c7ae634471aa5bec65e90b9041 RX(theta₂₃) b38ae841a28d425b83b9c87c24d86fd0--d576a8c7ae634471aa5bec65e90b9041 4a11afbda07f4a4a8866b3b431b64bf0 RY(theta₂₉) d576a8c7ae634471aa5bec65e90b9041--4a11afbda07f4a4a8866b3b431b64bf0 ebae7238e3d4401aa3d6b79b29634e86 RX(theta₃₅) 4a11afbda07f4a4a8866b3b431b64bf0--ebae7238e3d4401aa3d6b79b29634e86 17c8a8a4777249959be40e6386042cc9 ebae7238e3d4401aa3d6b79b29634e86--17c8a8a4777249959be40e6386042cc9 17c8a8a4777249959be40e6386042cc9--286ede67f05043f98e393b9cc6b5febb

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_1de2ddfd76f849bea0236d61118075e9 BPMA-1 cluster_22264212f9114f95b69a5d3dbe5e9bfb BPMA-0 bbbbe191186b404081db3349776bae77 0 161aabc2e85c44f293f5664e4d7297eb RX(iia_α₀₀) bbbbe191186b404081db3349776bae77--161aabc2e85c44f293f5664e4d7297eb a849b93293d34d58a4eb6ede725c86a3 1 33233b2ea8d84547a319766a5f92e321 RY(iia_α₀₃) 161aabc2e85c44f293f5664e4d7297eb--33233b2ea8d84547a319766a5f92e321 96020b2b28f541a69638cc224cac287c 33233b2ea8d84547a319766a5f92e321--96020b2b28f541a69638cc224cac287c 08031dbdaa2244e68625ed60da9c3f06 96020b2b28f541a69638cc224cac287c--08031dbdaa2244e68625ed60da9c3f06 7f25e6fe654a40da8efc6ce1f4620867 RX(iia_γ₀₀) 08031dbdaa2244e68625ed60da9c3f06--7f25e6fe654a40da8efc6ce1f4620867 2284a8833b6d4cd7baece25a5f824c4e 7f25e6fe654a40da8efc6ce1f4620867--2284a8833b6d4cd7baece25a5f824c4e cb4146bf6cf44977b9bbab33ef4a185b 2284a8833b6d4cd7baece25a5f824c4e--cb4146bf6cf44977b9bbab33ef4a185b 45f5be9563114cf6be084859888984e7 RY(iia_β₀₃) cb4146bf6cf44977b9bbab33ef4a185b--45f5be9563114cf6be084859888984e7 383b9eef5db94505bdf200530c2f7a52 RX(iia_β₀₀) 45f5be9563114cf6be084859888984e7--383b9eef5db94505bdf200530c2f7a52 a245d2f991ad48b2ac80a10338095023 RX(iia_α₁₀) 383b9eef5db94505bdf200530c2f7a52--a245d2f991ad48b2ac80a10338095023 51f4c1c27be0441eac96a8fef5bdaf95 RY(iia_α₁₃) a245d2f991ad48b2ac80a10338095023--51f4c1c27be0441eac96a8fef5bdaf95 70452e370356461180f1785330dbca79 51f4c1c27be0441eac96a8fef5bdaf95--70452e370356461180f1785330dbca79 823e177fe04a4398bc5045c5628ae05a 70452e370356461180f1785330dbca79--823e177fe04a4398bc5045c5628ae05a fb85a87e4e144a52bbca74033c2c0b97 RX(iia_γ₁₀) 823e177fe04a4398bc5045c5628ae05a--fb85a87e4e144a52bbca74033c2c0b97 eeab318659444dc6be574f74227d1804 fb85a87e4e144a52bbca74033c2c0b97--eeab318659444dc6be574f74227d1804 6f48b00fa162424ea9f8ddbfdb54d1e8 eeab318659444dc6be574f74227d1804--6f48b00fa162424ea9f8ddbfdb54d1e8 6e6b159900774bcfb7af5571ab8727a6 RY(iia_β₁₃) 6f48b00fa162424ea9f8ddbfdb54d1e8--6e6b159900774bcfb7af5571ab8727a6 682e77817b34499297ac4812e0255bd5 RX(iia_β₁₀) 6e6b159900774bcfb7af5571ab8727a6--682e77817b34499297ac4812e0255bd5 ea30455df8aa4a12a3dadf5fe26cd5e5 682e77817b34499297ac4812e0255bd5--ea30455df8aa4a12a3dadf5fe26cd5e5 96ea105a735a4725a047885a88adef93 7f34124398914a1eac7be2ce1f713093 RX(iia_α₀₁) a849b93293d34d58a4eb6ede725c86a3--7f34124398914a1eac7be2ce1f713093 09deb97cd99d44a7bb8a5e80cca0e3e8 2 e15e9223f4f647e997ac3c66c4a2ca20 RY(iia_α₀₄) 7f34124398914a1eac7be2ce1f713093--e15e9223f4f647e997ac3c66c4a2ca20 a044d57922bf4e1898481a6a8769603e X e15e9223f4f647e997ac3c66c4a2ca20--a044d57922bf4e1898481a6a8769603e a044d57922bf4e1898481a6a8769603e--96020b2b28f541a69638cc224cac287c da2f7678df11423eba8de5405f67c576 a044d57922bf4e1898481a6a8769603e--da2f7678df11423eba8de5405f67c576 ef259cc57c41414d8a73e8c834b762a9 RX(iia_γ₀₁) da2f7678df11423eba8de5405f67c576--ef259cc57c41414d8a73e8c834b762a9 525fd183585a4453aac9c7603ef08eb8 ef259cc57c41414d8a73e8c834b762a9--525fd183585a4453aac9c7603ef08eb8 2ae49d6fbc424c26a2405026a5f5cd49 X 525fd183585a4453aac9c7603ef08eb8--2ae49d6fbc424c26a2405026a5f5cd49 2ae49d6fbc424c26a2405026a5f5cd49--cb4146bf6cf44977b9bbab33ef4a185b aafc7f0902fa47e7a107c7b1065030a1 RY(iia_β₀₄) 2ae49d6fbc424c26a2405026a5f5cd49--aafc7f0902fa47e7a107c7b1065030a1 e06ec064131d49d789a4225350592bdc RX(iia_β₀₁) aafc7f0902fa47e7a107c7b1065030a1--e06ec064131d49d789a4225350592bdc f80f261dbf93416fa7ddc7f8c4ba181b RX(iia_α₁₁) e06ec064131d49d789a4225350592bdc--f80f261dbf93416fa7ddc7f8c4ba181b 04e97a1a50424f63a9880f683ef57bf4 RY(iia_α₁₄) f80f261dbf93416fa7ddc7f8c4ba181b--04e97a1a50424f63a9880f683ef57bf4 8f5fae3cb4e0432b867b46e207565c22 X 04e97a1a50424f63a9880f683ef57bf4--8f5fae3cb4e0432b867b46e207565c22 8f5fae3cb4e0432b867b46e207565c22--70452e370356461180f1785330dbca79 b4467c7a044c4c659190e31661e3bee3 8f5fae3cb4e0432b867b46e207565c22--b4467c7a044c4c659190e31661e3bee3 16d90770b69442739c40f8d8254d0b6d RX(iia_γ₁₁) b4467c7a044c4c659190e31661e3bee3--16d90770b69442739c40f8d8254d0b6d 55ef3c362b8c4f2e8aeb6418ed00b996 16d90770b69442739c40f8d8254d0b6d--55ef3c362b8c4f2e8aeb6418ed00b996 fe467a60f7474c56b2ef72dabf6c9e53 X 55ef3c362b8c4f2e8aeb6418ed00b996--fe467a60f7474c56b2ef72dabf6c9e53 fe467a60f7474c56b2ef72dabf6c9e53--6f48b00fa162424ea9f8ddbfdb54d1e8 812aaa09bd5145c18c4980e2d67a896d RY(iia_β₁₄) fe467a60f7474c56b2ef72dabf6c9e53--812aaa09bd5145c18c4980e2d67a896d 68a4b684a5c7492ea54250c1555918d7 RX(iia_β₁₁) 812aaa09bd5145c18c4980e2d67a896d--68a4b684a5c7492ea54250c1555918d7 68a4b684a5c7492ea54250c1555918d7--96ea105a735a4725a047885a88adef93 ce9ef8ab9cc74d749098fd2262f373b4 38f8f2d86d4741a3813f5d9b14452953 RX(iia_α₀₂) 09deb97cd99d44a7bb8a5e80cca0e3e8--38f8f2d86d4741a3813f5d9b14452953 6d0a76fcd59d4dcfaf6041db4fa7228f RY(iia_α₀₅) 38f8f2d86d4741a3813f5d9b14452953--6d0a76fcd59d4dcfaf6041db4fa7228f aef16c96c0dd423f85faf8d10088b922 6d0a76fcd59d4dcfaf6041db4fa7228f--aef16c96c0dd423f85faf8d10088b922 9803cf9401f14f299b87ac2553afdb83 X aef16c96c0dd423f85faf8d10088b922--9803cf9401f14f299b87ac2553afdb83 9803cf9401f14f299b87ac2553afdb83--da2f7678df11423eba8de5405f67c576 427ec2fff629477096eeecf95d39bda7 RX(iia_γ₀₂) 9803cf9401f14f299b87ac2553afdb83--427ec2fff629477096eeecf95d39bda7 8edba5f906c54426a16b5ed656ae8be9 X 427ec2fff629477096eeecf95d39bda7--8edba5f906c54426a16b5ed656ae8be9 8edba5f906c54426a16b5ed656ae8be9--525fd183585a4453aac9c7603ef08eb8 a2fbb5ce8e1b46c482fcd76a26ac526b 8edba5f906c54426a16b5ed656ae8be9--a2fbb5ce8e1b46c482fcd76a26ac526b 892ba3dae2e549dbbbb2b808c344db8b RY(iia_β₀₅) a2fbb5ce8e1b46c482fcd76a26ac526b--892ba3dae2e549dbbbb2b808c344db8b a249722efeee402c9e03b3c6afbb86ec RX(iia_β₀₂) 892ba3dae2e549dbbbb2b808c344db8b--a249722efeee402c9e03b3c6afbb86ec 651b0c8037f8482db9b6768713a9de95 RX(iia_α₁₂) a249722efeee402c9e03b3c6afbb86ec--651b0c8037f8482db9b6768713a9de95 1d7284c93b254514a597ed4fcd79ef38 RY(iia_α₁₅) 651b0c8037f8482db9b6768713a9de95--1d7284c93b254514a597ed4fcd79ef38 3c24f39f760f469ca24a0217ea41a75c 1d7284c93b254514a597ed4fcd79ef38--3c24f39f760f469ca24a0217ea41a75c 670c7ea1024c4ad9970766d491843952 X 3c24f39f760f469ca24a0217ea41a75c--670c7ea1024c4ad9970766d491843952 670c7ea1024c4ad9970766d491843952--b4467c7a044c4c659190e31661e3bee3 9cbcaa43b1234c3eb9c980d31fc8328f RX(iia_γ₁₂) 670c7ea1024c4ad9970766d491843952--9cbcaa43b1234c3eb9c980d31fc8328f c3522fc33ae249258ce4d8475091f320 X 9cbcaa43b1234c3eb9c980d31fc8328f--c3522fc33ae249258ce4d8475091f320 c3522fc33ae249258ce4d8475091f320--55ef3c362b8c4f2e8aeb6418ed00b996 7c8c350a83b94daeab6191075d7f257b c3522fc33ae249258ce4d8475091f320--7c8c350a83b94daeab6191075d7f257b ab99dab9bc8b45b9ad62cbe6a7b5fbfe RY(iia_β₁₅) 7c8c350a83b94daeab6191075d7f257b--ab99dab9bc8b45b9ad62cbe6a7b5fbfe 8213dbf1f8dc49bba0f69d43a5813bf9 RX(iia_β₁₂) ab99dab9bc8b45b9ad62cbe6a7b5fbfe--8213dbf1f8dc49bba0f69d43a5813bf9 8213dbf1f8dc49bba0f69d43a5813bf9--ce9ef8ab9cc74d749098fd2262f373b4