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_dfceec7b925746a78f2130b0787640bc Constant Chebyshev FM cluster_430190f4762a4a7c90a4157cd1ab9527 Constant Fourier FM f0aaefe6b22b4ca487aceb02ee4b033c 0 3200081ad2ec42ffb4b93bce16072946 RX(phi) f0aaefe6b22b4ca487aceb02ee4b033c--3200081ad2ec42ffb4b93bce16072946 853a959373c548ee91948eba168b297f 1 3408b0b88f79480886bcb48cee197cf5 RX(acos(phi)) 3200081ad2ec42ffb4b93bce16072946--3408b0b88f79480886bcb48cee197cf5 b777cd973dbd45b29f934d6c1f1f5a44 3408b0b88f79480886bcb48cee197cf5--b777cd973dbd45b29f934d6c1f1f5a44 e638b7aa6e534045bcaf47f837892868 6c497c31f35043c5a0849c429133cb1b RX(phi) 853a959373c548ee91948eba168b297f--6c497c31f35043c5a0849c429133cb1b 0461c8f878e84a4d8c8ad11155a8f059 2 11f5aa87691348d9a8279ffd77adf663 RX(acos(phi)) 6c497c31f35043c5a0849c429133cb1b--11f5aa87691348d9a8279ffd77adf663 11f5aa87691348d9a8279ffd77adf663--e638b7aa6e534045bcaf47f837892868 8775e0cc50854ccdbeba475b87e39d1f 097a4582dd994218bc6dc01dfd45e7c8 RX(phi) 0461c8f878e84a4d8c8ad11155a8f059--097a4582dd994218bc6dc01dfd45e7c8 6a78adc731284a6abe44296332261153 RX(acos(phi)) 097a4582dd994218bc6dc01dfd45e7c8--6a78adc731284a6abe44296332261153 6a78adc731284a6abe44296332261153--8775e0cc50854ccdbeba475b87e39d1f

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_38a551f4e014435197d33a8f82c4765b Constant <function custom_fn at 0x7fe433f7f0a0> FM cluster_f862590d269245eeb3bf328b7edcebdf Constant asin FM 81dce4aa0fcc4d1680a6919bbc0da300 0 000ff16ef1e04420819a7df5ca861be2 RX(asin(phi)) 81dce4aa0fcc4d1680a6919bbc0da300--000ff16ef1e04420819a7df5ca861be2 b64ff39c9bac40c783e46df10c532969 1 00127f9345a94da3ba2c8c8046a3f36e RX(phi**2 + asin(phi)) 000ff16ef1e04420819a7df5ca861be2--00127f9345a94da3ba2c8c8046a3f36e 5d2025bd0b9342e69b769a350f523b4e 00127f9345a94da3ba2c8c8046a3f36e--5d2025bd0b9342e69b769a350f523b4e ecbc098b208e4aa29baaf7f20a25948b 52fea6c52a574939abc00944bc880f2f RX(asin(phi)) b64ff39c9bac40c783e46df10c532969--52fea6c52a574939abc00944bc880f2f 191ad33ac7ec44e3aefbe7f652ac20bb 2 0c1c24721341401da15caa8adb649577 RX(phi**2 + asin(phi)) 52fea6c52a574939abc00944bc880f2f--0c1c24721341401da15caa8adb649577 0c1c24721341401da15caa8adb649577--ecbc098b208e4aa29baaf7f20a25948b 0fe164ee2bbc4b059fa366a832f27a23 e8ae7958e7ca43398d5ffacdc507f56d RX(asin(phi)) 191ad33ac7ec44e3aefbe7f652ac20bb--e8ae7958e7ca43398d5ffacdc507f56d 64270f1126c24b4eb8adb0933874223a RX(phi**2 + asin(phi)) e8ae7958e7ca43398d5ffacdc507f56d--64270f1126c24b4eb8adb0933874223a 64270f1126c24b4eb8adb0933874223a--0fe164ee2bbc4b059fa366a832f27a23

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_64fdffbce4b049c4835926e3c0ea6c56 Exponential Fourier FM cluster_a658dee083c549729ad594db54e2cf96 Constant Fourier FM cluster_36bca2bf33fd4e78ac19ebacfc69f9e2 Tower Fourier FM 3125f8e38fc54b59b8bd6a46d45c7f95 0 0679c05fa4bb489a8ec2ab4372a6f973 RX(phi) 3125f8e38fc54b59b8bd6a46d45c7f95--0679c05fa4bb489a8ec2ab4372a6f973 c58c99fb2abd42ae9c2dbf4f7f0e9464 1 981e65550905435caa2289f3e4c82044 RX(1.0*phi) 0679c05fa4bb489a8ec2ab4372a6f973--981e65550905435caa2289f3e4c82044 be84585e4d4e4a009a82d4f610e2a2f0 RX(1.0*phi) 981e65550905435caa2289f3e4c82044--be84585e4d4e4a009a82d4f610e2a2f0 1154f89634294498b3f07fecd340ed82 be84585e4d4e4a009a82d4f610e2a2f0--1154f89634294498b3f07fecd340ed82 06f9500d7137405d9823c6f8afd3cef8 39b45ede9d0e4c05989fc5bf14a1caa6 RX(phi) c58c99fb2abd42ae9c2dbf4f7f0e9464--39b45ede9d0e4c05989fc5bf14a1caa6 f328e844bf7a4589bb8c815da8bbc1d7 2 736327b332504dc2bc195b8d7a0a9fe8 RX(2.0*phi) 39b45ede9d0e4c05989fc5bf14a1caa6--736327b332504dc2bc195b8d7a0a9fe8 b70df604c71048b6a61b05931836ca26 RX(2.0*phi) 736327b332504dc2bc195b8d7a0a9fe8--b70df604c71048b6a61b05931836ca26 b70df604c71048b6a61b05931836ca26--06f9500d7137405d9823c6f8afd3cef8 53842918a6e04bcdb037cbd300b641f0 2f886fb1e5f64292a53b3b69d4fb0675 RX(phi) f328e844bf7a4589bb8c815da8bbc1d7--2f886fb1e5f64292a53b3b69d4fb0675 00bebf43d9184ed4af2a6f1d71e147de 3 fcd046108f684f0cb9258e4a24d89bb1 RX(3.0*phi) 2f886fb1e5f64292a53b3b69d4fb0675--fcd046108f684f0cb9258e4a24d89bb1 3f8c5b5dd82a4207ac8fdc9c56699aab RX(4.0*phi) fcd046108f684f0cb9258e4a24d89bb1--3f8c5b5dd82a4207ac8fdc9c56699aab 3f8c5b5dd82a4207ac8fdc9c56699aab--53842918a6e04bcdb037cbd300b641f0 1af90750c6c7497bbdbe662e7b079406 20eedb6f4ae24c1089528697c3b13d58 RX(phi) 00bebf43d9184ed4af2a6f1d71e147de--20eedb6f4ae24c1089528697c3b13d58 76643c73f5434d6e95bfd71366a22fd0 4 4e9d0957239b49d7a15882ed5cc4ec2c RX(4.0*phi) 20eedb6f4ae24c1089528697c3b13d58--4e9d0957239b49d7a15882ed5cc4ec2c 263620b6aad548ae883ab92dc816b11c RX(8.0*phi) 4e9d0957239b49d7a15882ed5cc4ec2c--263620b6aad548ae883ab92dc816b11c 263620b6aad548ae883ab92dc816b11c--1af90750c6c7497bbdbe662e7b079406 b8da334ffd5b4ae98e338a3d97fc9c13 f576c6d4ac4544bb8d1cc2b57983e229 RX(phi) 76643c73f5434d6e95bfd71366a22fd0--f576c6d4ac4544bb8d1cc2b57983e229 e2236b91fbe344c59bd5f632bf48473c RX(5.0*phi) f576c6d4ac4544bb8d1cc2b57983e229--e2236b91fbe344c59bd5f632bf48473c 33996d6f299042ac958054e0052272a1 RX(16.0*phi) e2236b91fbe344c59bd5f632bf48473c--33996d6f299042ac958054e0052272a1 33996d6f299042ac958054e0052272a1--b8da334ffd5b4ae98e338a3d97fc9c13

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 2c1a592229794d30aca8c8fa4d5be62e 0 d8761bdd52dc40f095eea9f15fa68a51 RX(1.0*acos(phi)) 2c1a592229794d30aca8c8fa4d5be62e--d8761bdd52dc40f095eea9f15fa68a51 1b04ecd95ed14764819ac35d2db0b25e 1 b18fcb8998234e61960ba3b8c1e7a6f2 d8761bdd52dc40f095eea9f15fa68a51--b18fcb8998234e61960ba3b8c1e7a6f2 cfcb4a14ac8b4c48856f1cbd975a6b74 97da2e77045c43b18a735adc0921d78a RX(1.414*acos(phi)) 1b04ecd95ed14764819ac35d2db0b25e--97da2e77045c43b18a735adc0921d78a 78c0b142fcce4dbbae2db7475278d69c 2 97da2e77045c43b18a735adc0921d78a--cfcb4a14ac8b4c48856f1cbd975a6b74 4d72789c49f5466fba97831e2a1b0d38 60186141376b4e589c35bb62b2430edb RX(1.732*acos(phi)) 78c0b142fcce4dbbae2db7475278d69c--60186141376b4e589c35bb62b2430edb dd90d22712aa4519a804b756a3aa40f2 3 60186141376b4e589c35bb62b2430edb--4d72789c49f5466fba97831e2a1b0d38 bc3e55dea60344fc8d5609def47a1f9d fda87f12dbba4ce59877b675df52a162 RX(2.0*acos(phi)) dd90d22712aa4519a804b756a3aa40f2--fda87f12dbba4ce59877b675df52a162 108fc1dc89d5425a8862cc6ff6d4b0a1 4 fda87f12dbba4ce59877b675df52a162--bc3e55dea60344fc8d5609def47a1f9d ac415a0226b34457838d0ea7bfc48603 f4b388f96baa4df8aceb0f92a290cfd2 RX(2.236*acos(phi)) 108fc1dc89d5425a8862cc6ff6d4b0a1--f4b388f96baa4df8aceb0f92a290cfd2 f4b388f96baa4df8aceb0f92a290cfd2--ac415a0226b34457838d0ea7bfc48603

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 ebb71570accf405da4983305e89a5095 0 032bdc4c37ee45beac006b25e2cf0e85 RX(1.0*phi*w₀) ebb71570accf405da4983305e89a5095--032bdc4c37ee45beac006b25e2cf0e85 ca39e87c87c547cfa138dd0d6abcccdf 1 37f7b178410e49219200b6decab994fb 032bdc4c37ee45beac006b25e2cf0e85--37f7b178410e49219200b6decab994fb a7427304512f42888b7f04df0ceab911 cb3ef439cc144dbf9a4687149bf3a0be RX(2.0*phi*w₁) ca39e87c87c547cfa138dd0d6abcccdf--cb3ef439cc144dbf9a4687149bf3a0be 0080e300da24440f8fe3ad8dec98a459 2 cb3ef439cc144dbf9a4687149bf3a0be--a7427304512f42888b7f04df0ceab911 3115c77fe52043c1bf86cea5b003adeb eda30d038ab54d8ab6624678cb7f62e1 RX(4.0*phi*w₂) 0080e300da24440f8fe3ad8dec98a459--eda30d038ab54d8ab6624678cb7f62e1 5f3b08027e454d20af3d59025af2d19c 3 eda30d038ab54d8ab6624678cb7f62e1--3115c77fe52043c1bf86cea5b003adeb ff93630588d44a93a4851fc4eadd7165 ef8cd3c746214054adf2db66415736ae RX(8.0*phi*w₃) 5f3b08027e454d20af3d59025af2d19c--ef8cd3c746214054adf2db66415736ae 8d10eb94959b4067b7beaf4866e4e3d6 4 ef8cd3c746214054adf2db66415736ae--ff93630588d44a93a4851fc4eadd7165 e0236244d95e4db28b2a2a296d5270e8 4f75d068293044c894557a2261faed37 RX(16.0*phi*w₄) 8d10eb94959b4067b7beaf4866e4e3d6--4f75d068293044c894557a2261faed37 4f75d068293044c894557a2261faed37--e0236244d95e4db28b2a2a296d5270e8

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 296033f4436c4ba39a69e5e49a5eda19 0 71b245260c474accbdeb6992ed6c9aa1 RY(80.0*acos(w₄*(0.667*x + 1.667))) 296033f4436c4ba39a69e5e49a5eda19--71b245260c474accbdeb6992ed6c9aa1 ffeece40019942a08e69c631859ee2b5 1 7051590dee404eb38cd72801b4e1a70c 71b245260c474accbdeb6992ed6c9aa1--7051590dee404eb38cd72801b4e1a70c d03a0f92a89e415f8f77f16cad057642 e53f9cb814d24bd489af5bbeedffb5ae RY(40.0*acos(w₃*(0.667*x + 1.667))) ffeece40019942a08e69c631859ee2b5--e53f9cb814d24bd489af5bbeedffb5ae c2b711dc43a64418be36a74f2462ebec 2 e53f9cb814d24bd489af5bbeedffb5ae--d03a0f92a89e415f8f77f16cad057642 88ccac34674047e69efb20bc9d6cb29f bb7b517281e644e48d9ff4dc8f777237 RY(20.0*acos(w₂*(0.667*x + 1.667))) c2b711dc43a64418be36a74f2462ebec--bb7b517281e644e48d9ff4dc8f777237 861d6cd2ef6642eca46c3620d87dbe86 3 bb7b517281e644e48d9ff4dc8f777237--88ccac34674047e69efb20bc9d6cb29f 4e5742551db4450c844aeb1f46ef9f1e a8c64a235b704ea8aa87bb59c410f0fc RY(10.0*acos(w₁*(0.667*x + 1.667))) 861d6cd2ef6642eca46c3620d87dbe86--a8c64a235b704ea8aa87bb59c410f0fc 247f504f95e5404387cd0d3f4dab657a 4 a8c64a235b704ea8aa87bb59c410f0fc--4e5742551db4450c844aeb1f46ef9f1e 4d59e6ee40a34ad78bd4518cbe24b29b c48afefbd7be41fda0ac13204700f9fd RY(5.0*acos(w₀*(0.667*x + 1.667))) 247f504f95e5404387cd0d3f4dab657a--c48afefbd7be41fda0ac13204700f9fd c48afefbd7be41fda0ac13204700f9fd--4d59e6ee40a34ad78bd4518cbe24b29b

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 d9f3deb908ef43dcaf64ed1e73d6923d 0 103dd447a79647359c028b44c5335ba4 RX(theta₀) d9f3deb908ef43dcaf64ed1e73d6923d--103dd447a79647359c028b44c5335ba4 7607cf823a024f5e908ba7e63a60562a 1 21ba19139f97438b96879e4342344b84 RY(theta₃) 103dd447a79647359c028b44c5335ba4--21ba19139f97438b96879e4342344b84 94d7a53eb14541b8b630cb646803a528 RX(theta₆) 21ba19139f97438b96879e4342344b84--94d7a53eb14541b8b630cb646803a528 f62918bdbc0241ab8bc231ff8fa58cc2 94d7a53eb14541b8b630cb646803a528--f62918bdbc0241ab8bc231ff8fa58cc2 46e2435ced3e40ba9abed369ca861bdd f62918bdbc0241ab8bc231ff8fa58cc2--46e2435ced3e40ba9abed369ca861bdd 91dd783cef704832a9b4b9de33898985 RX(theta₉) 46e2435ced3e40ba9abed369ca861bdd--91dd783cef704832a9b4b9de33898985 ddd1a3a480a6441782a394d789bdbd20 RY(theta₁₂) 91dd783cef704832a9b4b9de33898985--ddd1a3a480a6441782a394d789bdbd20 cd3e566122d64f52a18c5101c30e3d4d RX(theta₁₅) ddd1a3a480a6441782a394d789bdbd20--cd3e566122d64f52a18c5101c30e3d4d 590064ba62774607853d1fd14aeb6a01 cd3e566122d64f52a18c5101c30e3d4d--590064ba62774607853d1fd14aeb6a01 feee3cfb760d41689d98dd8e4f506adb 590064ba62774607853d1fd14aeb6a01--feee3cfb760d41689d98dd8e4f506adb c78f8811220e4991a3358dc1370296f6 feee3cfb760d41689d98dd8e4f506adb--c78f8811220e4991a3358dc1370296f6 616043cc15b14a88bbbbc7ee5cf0a291 034660528d634c54b4ca9c50df38f7ff RX(theta₁) 7607cf823a024f5e908ba7e63a60562a--034660528d634c54b4ca9c50df38f7ff 4e501f3bc0a14d1bb141a5254658e2a9 2 40e87d7a65a14031ab2be8a82abdb2fb RY(theta₄) 034660528d634c54b4ca9c50df38f7ff--40e87d7a65a14031ab2be8a82abdb2fb 2dcdd77947b946298c3218dd2fd298d1 RX(theta₇) 40e87d7a65a14031ab2be8a82abdb2fb--2dcdd77947b946298c3218dd2fd298d1 112a6dcad2f34a09ab1004672ab75970 X 2dcdd77947b946298c3218dd2fd298d1--112a6dcad2f34a09ab1004672ab75970 112a6dcad2f34a09ab1004672ab75970--f62918bdbc0241ab8bc231ff8fa58cc2 e23019d2bc6a4596865d92ab276c679f 112a6dcad2f34a09ab1004672ab75970--e23019d2bc6a4596865d92ab276c679f 022bcc2bed064b409a6df322e6e50055 RX(theta₁₀) e23019d2bc6a4596865d92ab276c679f--022bcc2bed064b409a6df322e6e50055 423de07e107849648de93bf1fb23b3d2 RY(theta₁₃) 022bcc2bed064b409a6df322e6e50055--423de07e107849648de93bf1fb23b3d2 d55317c9fc944c31abe8c50b32bd6a4c RX(theta₁₆) 423de07e107849648de93bf1fb23b3d2--d55317c9fc944c31abe8c50b32bd6a4c e192176db1894eaf95a263e228661070 X d55317c9fc944c31abe8c50b32bd6a4c--e192176db1894eaf95a263e228661070 e192176db1894eaf95a263e228661070--590064ba62774607853d1fd14aeb6a01 02de5659d3264c83a7291e77d6fb2c38 e192176db1894eaf95a263e228661070--02de5659d3264c83a7291e77d6fb2c38 02de5659d3264c83a7291e77d6fb2c38--616043cc15b14a88bbbbc7ee5cf0a291 6fd9eb6a9c8e452f80dbae3143a1e903 065e78f9c8024dbb87b1344da5bfdd2d RX(theta₂) 4e501f3bc0a14d1bb141a5254658e2a9--065e78f9c8024dbb87b1344da5bfdd2d 4428f510b8b846979b13b4f317f8db13 RY(theta₅) 065e78f9c8024dbb87b1344da5bfdd2d--4428f510b8b846979b13b4f317f8db13 b9a5ea61d8ae424ab4038f3df4706535 RX(theta₈) 4428f510b8b846979b13b4f317f8db13--b9a5ea61d8ae424ab4038f3df4706535 679ffc5830174f7988950f104ead8bb2 b9a5ea61d8ae424ab4038f3df4706535--679ffc5830174f7988950f104ead8bb2 50416aea493e468daac6429a587800d8 X 679ffc5830174f7988950f104ead8bb2--50416aea493e468daac6429a587800d8 50416aea493e468daac6429a587800d8--e23019d2bc6a4596865d92ab276c679f 6836e509195644389608bdf6bbd4d529 RX(theta₁₁) 50416aea493e468daac6429a587800d8--6836e509195644389608bdf6bbd4d529 b23966813b0c47bcabf0891afd850308 RY(theta₁₄) 6836e509195644389608bdf6bbd4d529--b23966813b0c47bcabf0891afd850308 5426ce9bf4674e58b3f495151baec4ce RX(theta₁₇) b23966813b0c47bcabf0891afd850308--5426ce9bf4674e58b3f495151baec4ce 54bfae795e8845259524c3bb2fbcc3e7 5426ce9bf4674e58b3f495151baec4ce--54bfae795e8845259524c3bb2fbcc3e7 bd7da1a3824f49f4b321051bb717d6dc X 54bfae795e8845259524c3bb2fbcc3e7--bd7da1a3824f49f4b321051bb717d6dc bd7da1a3824f49f4b321051bb717d6dc--02de5659d3264c83a7291e77d6fb2c38 bd7da1a3824f49f4b321051bb717d6dc--6fd9eb6a9c8e452f80dbae3143a1e903

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 7f76bfbcc4b545ec853f9bdf2ad8dab0 0 2e0dfa37c797432da989f024ea624df3 RX(phi₀) 7f76bfbcc4b545ec853f9bdf2ad8dab0--2e0dfa37c797432da989f024ea624df3 b48be208a26b4d89a32788fd8e8f4b02 1 3a5559a9be9346e8a7632a6465402c95 RY(phi₃) 2e0dfa37c797432da989f024ea624df3--3a5559a9be9346e8a7632a6465402c95 0501cede20c94025bf185ceaf5a89e85 RX(phi₆) 3a5559a9be9346e8a7632a6465402c95--0501cede20c94025bf185ceaf5a89e85 f47056bf5e0d4ec794c96af0e71a7f23 0501cede20c94025bf185ceaf5a89e85--f47056bf5e0d4ec794c96af0e71a7f23 d774bf863fd04831a7f9238fa2bc7663 f47056bf5e0d4ec794c96af0e71a7f23--d774bf863fd04831a7f9238fa2bc7663 e9d331e05f3746cfbd7e5d9f3348cc78 RX(phi₉) d774bf863fd04831a7f9238fa2bc7663--e9d331e05f3746cfbd7e5d9f3348cc78 3528b3d79a0e444f9a0b95de89488898 RY(phi₁₂) e9d331e05f3746cfbd7e5d9f3348cc78--3528b3d79a0e444f9a0b95de89488898 706deaab77d74f00bff459da9e78a5c4 RX(phi₁₅) 3528b3d79a0e444f9a0b95de89488898--706deaab77d74f00bff459da9e78a5c4 92a8ebb6df574d94a67d004266afdb5c 706deaab77d74f00bff459da9e78a5c4--92a8ebb6df574d94a67d004266afdb5c d7755edec96a4cc2bf0b7011d619e4d2 92a8ebb6df574d94a67d004266afdb5c--d7755edec96a4cc2bf0b7011d619e4d2 b1e7c8b152ac44c8975709e83bf385e4 d7755edec96a4cc2bf0b7011d619e4d2--b1e7c8b152ac44c8975709e83bf385e4 8a4f1191425d44a794d459ca3b53f867 08d19878c7ba4f2cb4b1f0c0853a04f9 RX(phi₁) b48be208a26b4d89a32788fd8e8f4b02--08d19878c7ba4f2cb4b1f0c0853a04f9 21e396a176a042bdb919b50023a1a22c 2 33ade8616b2842638ac1ff1c0051c37b RY(phi₄) 08d19878c7ba4f2cb4b1f0c0853a04f9--33ade8616b2842638ac1ff1c0051c37b 9cff754763fa42d3b2b8bfae97883680 RX(phi₇) 33ade8616b2842638ac1ff1c0051c37b--9cff754763fa42d3b2b8bfae97883680 7bbfca2802b44d33b030e4565a59159d PHASE(phi_ent₀) 9cff754763fa42d3b2b8bfae97883680--7bbfca2802b44d33b030e4565a59159d 7bbfca2802b44d33b030e4565a59159d--f47056bf5e0d4ec794c96af0e71a7f23 2a67178659d84e0b8a67532ca0378104 7bbfca2802b44d33b030e4565a59159d--2a67178659d84e0b8a67532ca0378104 8a7dd9b9407445c6b8492124695f53a9 RX(phi₁₀) 2a67178659d84e0b8a67532ca0378104--8a7dd9b9407445c6b8492124695f53a9 80f08cd06ecc4fc4812e4a9b31f2b8ab RY(phi₁₃) 8a7dd9b9407445c6b8492124695f53a9--80f08cd06ecc4fc4812e4a9b31f2b8ab c150e53051084ac782546e6d788a0083 RX(phi₁₆) 80f08cd06ecc4fc4812e4a9b31f2b8ab--c150e53051084ac782546e6d788a0083 735830d649214cae9047e83c699103b4 PHASE(phi_ent₂) c150e53051084ac782546e6d788a0083--735830d649214cae9047e83c699103b4 735830d649214cae9047e83c699103b4--92a8ebb6df574d94a67d004266afdb5c 3a4f706bf66f4900a45d56538c014fc1 735830d649214cae9047e83c699103b4--3a4f706bf66f4900a45d56538c014fc1 3a4f706bf66f4900a45d56538c014fc1--8a4f1191425d44a794d459ca3b53f867 2f0795611e7847cfb0e90053fb808287 54868f602b8a4d18b85bfdfd485aaf73 RX(phi₂) 21e396a176a042bdb919b50023a1a22c--54868f602b8a4d18b85bfdfd485aaf73 4e95cb4c06d14ac3b123fb16ca8c47ec RY(phi₅) 54868f602b8a4d18b85bfdfd485aaf73--4e95cb4c06d14ac3b123fb16ca8c47ec 513dd385b74e4cae86a85807c1cb2b32 RX(phi₈) 4e95cb4c06d14ac3b123fb16ca8c47ec--513dd385b74e4cae86a85807c1cb2b32 08b5aa498e17468ebd6bf032aa91cf70 513dd385b74e4cae86a85807c1cb2b32--08b5aa498e17468ebd6bf032aa91cf70 b867faa22d0c407eab0e4496014a6515 PHASE(phi_ent₁) 08b5aa498e17468ebd6bf032aa91cf70--b867faa22d0c407eab0e4496014a6515 b867faa22d0c407eab0e4496014a6515--2a67178659d84e0b8a67532ca0378104 d24d3b93d75e413eb36c1b4ac6a3f352 RX(phi₁₁) b867faa22d0c407eab0e4496014a6515--d24d3b93d75e413eb36c1b4ac6a3f352 229c50e068fd41c584a3b4dd9c23e0f1 RY(phi₁₄) d24d3b93d75e413eb36c1b4ac6a3f352--229c50e068fd41c584a3b4dd9c23e0f1 eb5ab3b36a8b456c9a67bc5949d40b2a RX(phi₁₇) 229c50e068fd41c584a3b4dd9c23e0f1--eb5ab3b36a8b456c9a67bc5949d40b2a eba26a44e7294303ab32bc2a35e9b11f eb5ab3b36a8b456c9a67bc5949d40b2a--eba26a44e7294303ab32bc2a35e9b11f 1430abf3c165410a9478443647943f57 PHASE(phi_ent₃) eba26a44e7294303ab32bc2a35e9b11f--1430abf3c165410a9478443647943f57 1430abf3c165410a9478443647943f57--3a4f706bf66f4900a45d56538c014fc1 1430abf3c165410a9478443647943f57--2f0795611e7847cfb0e90053fb808287

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_1c634b88fd4d40208c0bce734b974aab cluster_0ebee49eaa4d4f7baebba01841f77daf e2008a08b72c4059b2c5c3979c9e0eff 0 1d9c3f12eb9f40d2b8f0624ffdd84fba RX(theta₀) e2008a08b72c4059b2c5c3979c9e0eff--1d9c3f12eb9f40d2b8f0624ffdd84fba 91d9a9ba492946fc902b9f41fbdccdc7 1 04b2f023206448ebbfc587d7d9d06678 RY(theta₃) 1d9c3f12eb9f40d2b8f0624ffdd84fba--04b2f023206448ebbfc587d7d9d06678 a839a8e1b65b432194e9de61e91ab5e8 RX(theta₆) 04b2f023206448ebbfc587d7d9d06678--a839a8e1b65b432194e9de61e91ab5e8 2d643426673045ac8f7b3a64c31eb023 HamEvo a839a8e1b65b432194e9de61e91ab5e8--2d643426673045ac8f7b3a64c31eb023 cc11992be2db480e9a4a467f95e8e8c7 RX(theta₉) 2d643426673045ac8f7b3a64c31eb023--cc11992be2db480e9a4a467f95e8e8c7 1352a3e5392b4325b13d5cfcaa638d07 RY(theta₁₂) cc11992be2db480e9a4a467f95e8e8c7--1352a3e5392b4325b13d5cfcaa638d07 4e5e03fdb31b48ddae806997b0935df4 RX(theta₁₅) 1352a3e5392b4325b13d5cfcaa638d07--4e5e03fdb31b48ddae806997b0935df4 31192db2cb1545a295b2c7efa763fd4b HamEvo 4e5e03fdb31b48ddae806997b0935df4--31192db2cb1545a295b2c7efa763fd4b cad5b70f01574e80bcee7cfe7c38841a 31192db2cb1545a295b2c7efa763fd4b--cad5b70f01574e80bcee7cfe7c38841a e6c3ab86c0c34573abafafa41cf85db2 4749b5a8f7d847ccaa82d57af8a31a6e RX(theta₁) 91d9a9ba492946fc902b9f41fbdccdc7--4749b5a8f7d847ccaa82d57af8a31a6e 260e0214dd164fe7b051282c20c154dc 2 75cda4fa70e64a25a05d71e2874c26a1 RY(theta₄) 4749b5a8f7d847ccaa82d57af8a31a6e--75cda4fa70e64a25a05d71e2874c26a1 e329f2a97ca24db49e4480c3bc6082dc RX(theta₇) 75cda4fa70e64a25a05d71e2874c26a1--e329f2a97ca24db49e4480c3bc6082dc 13a6ee5a35b5483dba25d121003e6a96 t = theta_t₀ e329f2a97ca24db49e4480c3bc6082dc--13a6ee5a35b5483dba25d121003e6a96 fa7635c0a1524765afd8deda25011773 RX(theta₁₀) 13a6ee5a35b5483dba25d121003e6a96--fa7635c0a1524765afd8deda25011773 834ac4d9b1204717a3b95c4f03b3ed92 RY(theta₁₃) fa7635c0a1524765afd8deda25011773--834ac4d9b1204717a3b95c4f03b3ed92 bc044292849241e99602ccb04d03e6ba RX(theta₁₆) 834ac4d9b1204717a3b95c4f03b3ed92--bc044292849241e99602ccb04d03e6ba 68d2e472790242408cfdf2983ae1f540 t = theta_t₁ bc044292849241e99602ccb04d03e6ba--68d2e472790242408cfdf2983ae1f540 68d2e472790242408cfdf2983ae1f540--e6c3ab86c0c34573abafafa41cf85db2 47a4a483363d41f4a7c5e05ed4a0a047 def6cda1a9ae40b89347d3a8e765e6e7 RX(theta₂) 260e0214dd164fe7b051282c20c154dc--def6cda1a9ae40b89347d3a8e765e6e7 d9d1129695174f059b1e0cbac2999ccb RY(theta₅) def6cda1a9ae40b89347d3a8e765e6e7--d9d1129695174f059b1e0cbac2999ccb 65daf5b62ce04c308f6115e6998bbf8e RX(theta₈) d9d1129695174f059b1e0cbac2999ccb--65daf5b62ce04c308f6115e6998bbf8e 61de8f42a2d44ea08eb75e21e0d60f56 65daf5b62ce04c308f6115e6998bbf8e--61de8f42a2d44ea08eb75e21e0d60f56 7b915a50372447988fe9dd05b58995a6 RX(theta₁₁) 61de8f42a2d44ea08eb75e21e0d60f56--7b915a50372447988fe9dd05b58995a6 f3ee5eac18d549bd80fa7cad0006c00c RY(theta₁₄) 7b915a50372447988fe9dd05b58995a6--f3ee5eac18d549bd80fa7cad0006c00c 8be609a09b4c4804bb6cac9fe09acb27 RX(theta₁₇) f3ee5eac18d549bd80fa7cad0006c00c--8be609a09b4c4804bb6cac9fe09acb27 a1a15a487190458eb18256dd829eaa29 8be609a09b4c4804bb6cac9fe09acb27--a1a15a487190458eb18256dd829eaa29 a1a15a487190458eb18256dd829eaa29--47a4a483363d41f4a7c5e05ed4a0a047

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_303be4a6a0a441818fa0026a5e618271 cluster_99c07b5d07f6404d9a14e0551f48ba20 bf030659d5eb4b599cc9c1811e698cb7 0 3e39780ff751435bbae2d25d03c49485 RX(theta₀) bf030659d5eb4b599cc9c1811e698cb7--3e39780ff751435bbae2d25d03c49485 881494cd8db049929b73249d1bd9e4fe 1 61139f966fa342d4aa0db677aba6fb49 RY(theta₆) 3e39780ff751435bbae2d25d03c49485--61139f966fa342d4aa0db677aba6fb49 d1767ea4a34349f38fd15d30966ed304 RX(theta₁₂) 61139f966fa342d4aa0db677aba6fb49--d1767ea4a34349f38fd15d30966ed304 bdf1e6780ac146e984f62d7a9aeb3c48 d1767ea4a34349f38fd15d30966ed304--bdf1e6780ac146e984f62d7a9aeb3c48 66addd16577946cb997b8a223038995f RX(theta₁₈) bdf1e6780ac146e984f62d7a9aeb3c48--66addd16577946cb997b8a223038995f 98001bbfa1844553a894d2e7253f55a3 RY(theta₂₄) 66addd16577946cb997b8a223038995f--98001bbfa1844553a894d2e7253f55a3 333ed345db4b439ea52e74b9f356a0c8 RX(theta₃₀) 98001bbfa1844553a894d2e7253f55a3--333ed345db4b439ea52e74b9f356a0c8 0f55ad6feb7d484eb8ada1a5a645837f 333ed345db4b439ea52e74b9f356a0c8--0f55ad6feb7d484eb8ada1a5a645837f ac44f2776c88426ba5e94cd362ba6347 0f55ad6feb7d484eb8ada1a5a645837f--ac44f2776c88426ba5e94cd362ba6347 b8e8c080ffc740d5b501c2453a15dc1c 09086bafb8ee4dd6a24ab839e0cde7c1 RX(theta₁) 881494cd8db049929b73249d1bd9e4fe--09086bafb8ee4dd6a24ab839e0cde7c1 7d22c6b560eb41e8b9a0c24e64dc31be 2 b4ab88d864c04d52ab2b309c2bab69e3 RY(theta₇) 09086bafb8ee4dd6a24ab839e0cde7c1--b4ab88d864c04d52ab2b309c2bab69e3 88dd6f9d272649e6b895fe68f24c8b71 RX(theta₁₃) b4ab88d864c04d52ab2b309c2bab69e3--88dd6f9d272649e6b895fe68f24c8b71 996be771947145d7872757631679c9eb 88dd6f9d272649e6b895fe68f24c8b71--996be771947145d7872757631679c9eb eca9dbcdd6fe4b8eb30b0b7c3351d087 RX(theta₁₉) 996be771947145d7872757631679c9eb--eca9dbcdd6fe4b8eb30b0b7c3351d087 927ce2b9ecf44902af56d0d769fc66f1 RY(theta₂₅) eca9dbcdd6fe4b8eb30b0b7c3351d087--927ce2b9ecf44902af56d0d769fc66f1 ef73d41ceafd4c0881b8c20c58f305e8 RX(theta₃₁) 927ce2b9ecf44902af56d0d769fc66f1--ef73d41ceafd4c0881b8c20c58f305e8 445a237e454742d4ac4117fd7487411d ef73d41ceafd4c0881b8c20c58f305e8--445a237e454742d4ac4117fd7487411d 445a237e454742d4ac4117fd7487411d--b8e8c080ffc740d5b501c2453a15dc1c c22a5adfa5b0465ca2e189a2f233cf0e d7afb6aa15df404fb79d656c30d948fb RX(theta₂) 7d22c6b560eb41e8b9a0c24e64dc31be--d7afb6aa15df404fb79d656c30d948fb 6fb92adfa4024c018018256884b39c76 3 8bcdccc648e24948b517469a940c2963 RY(theta₈) d7afb6aa15df404fb79d656c30d948fb--8bcdccc648e24948b517469a940c2963 39d2743d76d34b088ad6e1bf316487c4 RX(theta₁₄) 8bcdccc648e24948b517469a940c2963--39d2743d76d34b088ad6e1bf316487c4 dfb8e27208244eda8863a965a3de3725 HamEvo 39d2743d76d34b088ad6e1bf316487c4--dfb8e27208244eda8863a965a3de3725 474e26e8726041dab767b51bb0610e04 RX(theta₂₀) dfb8e27208244eda8863a965a3de3725--474e26e8726041dab767b51bb0610e04 f9b62b4712434184afe77afd5e066ca0 RY(theta₂₆) 474e26e8726041dab767b51bb0610e04--f9b62b4712434184afe77afd5e066ca0 45a5e43a065f4ef8aedaf790f4e4197b RX(theta₃₂) f9b62b4712434184afe77afd5e066ca0--45a5e43a065f4ef8aedaf790f4e4197b 675104cab2b24dfeb819d2cc2f4dccc2 HamEvo 45a5e43a065f4ef8aedaf790f4e4197b--675104cab2b24dfeb819d2cc2f4dccc2 675104cab2b24dfeb819d2cc2f4dccc2--c22a5adfa5b0465ca2e189a2f233cf0e 7a3d77b25f9748209eba6ddd873bea64 3eac154f0fc84c83ac545d0dea1e6d39 RX(theta₃) 6fb92adfa4024c018018256884b39c76--3eac154f0fc84c83ac545d0dea1e6d39 c5cd33dc46314cd58c3065e9c5496063 4 80c43d77bb4d4e1ab31769946e19efab RY(theta₉) 3eac154f0fc84c83ac545d0dea1e6d39--80c43d77bb4d4e1ab31769946e19efab ecc9112c7fc84268879f02855ca5b8eb RX(theta₁₅) 80c43d77bb4d4e1ab31769946e19efab--ecc9112c7fc84268879f02855ca5b8eb af57da02010b47f68285b7220908ac65 t = theta_t₀ ecc9112c7fc84268879f02855ca5b8eb--af57da02010b47f68285b7220908ac65 f2c237b27d3c4fefb7c7a0601111999f RX(theta₂₁) af57da02010b47f68285b7220908ac65--f2c237b27d3c4fefb7c7a0601111999f 65800090246447808d7f09175899b232 RY(theta₂₇) f2c237b27d3c4fefb7c7a0601111999f--65800090246447808d7f09175899b232 b041051ca9134af9868f21c01f532020 RX(theta₃₃) 65800090246447808d7f09175899b232--b041051ca9134af9868f21c01f532020 12b77c57b92942baa454993034751879 t = theta_t₁ b041051ca9134af9868f21c01f532020--12b77c57b92942baa454993034751879 12b77c57b92942baa454993034751879--7a3d77b25f9748209eba6ddd873bea64 d367172824f14b85b489b4f2b7bde6ce cb6a1ade65f74cc49ae2d671c90e23c4 RX(theta₄) c5cd33dc46314cd58c3065e9c5496063--cb6a1ade65f74cc49ae2d671c90e23c4 3b5d396cc19b4afcb2aa7277138c84b5 5 2f70d35ae064439f9e51733dec318de9 RY(theta₁₀) cb6a1ade65f74cc49ae2d671c90e23c4--2f70d35ae064439f9e51733dec318de9 5e17da1c67604ece8bf832e4ca2e3710 RX(theta₁₆) 2f70d35ae064439f9e51733dec318de9--5e17da1c67604ece8bf832e4ca2e3710 5c64f9e5f20c4116ba90ec98b5542b9c 5e17da1c67604ece8bf832e4ca2e3710--5c64f9e5f20c4116ba90ec98b5542b9c d8ae65632acf4bc58e7b5a2217f87bb1 RX(theta₂₂) 5c64f9e5f20c4116ba90ec98b5542b9c--d8ae65632acf4bc58e7b5a2217f87bb1 b654ff50ebed468f946932eeef4bd8a8 RY(theta₂₈) d8ae65632acf4bc58e7b5a2217f87bb1--b654ff50ebed468f946932eeef4bd8a8 99910405fff54cf3933bc2c3c3bff4f7 RX(theta₃₄) b654ff50ebed468f946932eeef4bd8a8--99910405fff54cf3933bc2c3c3bff4f7 cbcb73aebf794c00a09869f365a45c43 99910405fff54cf3933bc2c3c3bff4f7--cbcb73aebf794c00a09869f365a45c43 cbcb73aebf794c00a09869f365a45c43--d367172824f14b85b489b4f2b7bde6ce 9d570bd4ef134d00801d3f6f0da61df7 9c092553c7814df4ac0c4ad0cfb92490 RX(theta₅) 3b5d396cc19b4afcb2aa7277138c84b5--9c092553c7814df4ac0c4ad0cfb92490 bc59aa09179e465089d87023e2b409b2 RY(theta₁₁) 9c092553c7814df4ac0c4ad0cfb92490--bc59aa09179e465089d87023e2b409b2 00b651c903c04275aa7915933a956758 RX(theta₁₇) bc59aa09179e465089d87023e2b409b2--00b651c903c04275aa7915933a956758 a7f20f191f1f4077985ecd617aba7222 00b651c903c04275aa7915933a956758--a7f20f191f1f4077985ecd617aba7222 6150276872d8402094fbff6d4512f5fb RX(theta₂₃) a7f20f191f1f4077985ecd617aba7222--6150276872d8402094fbff6d4512f5fb e6f9cd31f65d4d458ea7c62c394e53b8 RY(theta₂₉) 6150276872d8402094fbff6d4512f5fb--e6f9cd31f65d4d458ea7c62c394e53b8 151d0cad16dd4a8abf9b40875135a45c RX(theta₃₅) e6f9cd31f65d4d458ea7c62c394e53b8--151d0cad16dd4a8abf9b40875135a45c 689f8ede5ba94626bf4fc818ba39c203 151d0cad16dd4a8abf9b40875135a45c--689f8ede5ba94626bf4fc818ba39c203 689f8ede5ba94626bf4fc818ba39c203--9d570bd4ef134d00801d3f6f0da61df7

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_9e26924fc28f4d7cbdb99e2091e2dc36 BPMA-1 cluster_c5de5e9ef65246418011d5aa144914c6 BPMA-0 81228504711549d7a5d6417e6eca541b 0 259e2cbefb39461590793827254a6b16 RX(iia_α₀₀) 81228504711549d7a5d6417e6eca541b--259e2cbefb39461590793827254a6b16 789aacab9f6640a1b173e5dcfea86c62 1 c795a70e2a3c45ab9297736417a3a94e RY(iia_α₀₃) 259e2cbefb39461590793827254a6b16--c795a70e2a3c45ab9297736417a3a94e 134e3cc66e0f498eb917caedf561665d c795a70e2a3c45ab9297736417a3a94e--134e3cc66e0f498eb917caedf561665d f5d7528eacdf4b32aeeb0f409cc43528 134e3cc66e0f498eb917caedf561665d--f5d7528eacdf4b32aeeb0f409cc43528 4440f40ed19f4782a60180ed2ba2b711 RX(iia_γ₀₀) f5d7528eacdf4b32aeeb0f409cc43528--4440f40ed19f4782a60180ed2ba2b711 74b0c73b3e394eb3b4771e63aaa7027c 4440f40ed19f4782a60180ed2ba2b711--74b0c73b3e394eb3b4771e63aaa7027c bed831163c8449cfa6b11bd1ba1bf035 74b0c73b3e394eb3b4771e63aaa7027c--bed831163c8449cfa6b11bd1ba1bf035 4ba9cbbd5e0f42acafc3341a5a7189c1 RY(iia_β₀₃) bed831163c8449cfa6b11bd1ba1bf035--4ba9cbbd5e0f42acafc3341a5a7189c1 3cb8f06b8e5c4a269e99e4d139fd2a98 RX(iia_β₀₀) 4ba9cbbd5e0f42acafc3341a5a7189c1--3cb8f06b8e5c4a269e99e4d139fd2a98 ff99f417844947919d2efe38a8698771 RX(iia_α₁₀) 3cb8f06b8e5c4a269e99e4d139fd2a98--ff99f417844947919d2efe38a8698771 e0426b38a12b4905842cca703e56a47a RY(iia_α₁₃) ff99f417844947919d2efe38a8698771--e0426b38a12b4905842cca703e56a47a 183517b1d14d45ffba43453ccef1819f e0426b38a12b4905842cca703e56a47a--183517b1d14d45ffba43453ccef1819f 9f050a08432c473ab8f09426f3d9b38b 183517b1d14d45ffba43453ccef1819f--9f050a08432c473ab8f09426f3d9b38b a41873e4bbb448619f2b2f6e9653b7da RX(iia_γ₁₀) 9f050a08432c473ab8f09426f3d9b38b--a41873e4bbb448619f2b2f6e9653b7da 84406e1a696c44cf949b4e4f081fecce a41873e4bbb448619f2b2f6e9653b7da--84406e1a696c44cf949b4e4f081fecce beae7054171e4523bc9933766e9758c0 84406e1a696c44cf949b4e4f081fecce--beae7054171e4523bc9933766e9758c0 7af265715b154f7d86bc0c1ba4301776 RY(iia_β₁₃) beae7054171e4523bc9933766e9758c0--7af265715b154f7d86bc0c1ba4301776 20eab53546764bf58b65566b76ba66b0 RX(iia_β₁₀) 7af265715b154f7d86bc0c1ba4301776--20eab53546764bf58b65566b76ba66b0 03cae83c303b4522a9ec7eb5465cdcd7 20eab53546764bf58b65566b76ba66b0--03cae83c303b4522a9ec7eb5465cdcd7 2363e2c9635e4c718dc375a2fae5343b c6500f1302ad44148cf65076d33c1f6a RX(iia_α₀₁) 789aacab9f6640a1b173e5dcfea86c62--c6500f1302ad44148cf65076d33c1f6a 57c3ba081e38476caf9fd6ac1e1f5268 2 95345b38f67841fc8b4c094933614ddb RY(iia_α₀₄) c6500f1302ad44148cf65076d33c1f6a--95345b38f67841fc8b4c094933614ddb 1822791027d14d8bace291947e440366 X 95345b38f67841fc8b4c094933614ddb--1822791027d14d8bace291947e440366 1822791027d14d8bace291947e440366--134e3cc66e0f498eb917caedf561665d f68b7e98ba824ef7b4a85395c7902c38 1822791027d14d8bace291947e440366--f68b7e98ba824ef7b4a85395c7902c38 aef01eca3f0a4c128cfb39683e332a10 RX(iia_γ₀₁) f68b7e98ba824ef7b4a85395c7902c38--aef01eca3f0a4c128cfb39683e332a10 ab47e6f882c647749698b14cebf75ce2 aef01eca3f0a4c128cfb39683e332a10--ab47e6f882c647749698b14cebf75ce2 55506b066bae4f4d87ef13a06ecee4e1 X ab47e6f882c647749698b14cebf75ce2--55506b066bae4f4d87ef13a06ecee4e1 55506b066bae4f4d87ef13a06ecee4e1--bed831163c8449cfa6b11bd1ba1bf035 e4320974ffc24e528ab041aa5d833762 RY(iia_β₀₄) 55506b066bae4f4d87ef13a06ecee4e1--e4320974ffc24e528ab041aa5d833762 890451bab16b402cb14107486fd48a91 RX(iia_β₀₁) e4320974ffc24e528ab041aa5d833762--890451bab16b402cb14107486fd48a91 61a7737ebfd14a4c812dd1709a33868f RX(iia_α₁₁) 890451bab16b402cb14107486fd48a91--61a7737ebfd14a4c812dd1709a33868f 47b5982969334b9d9e128880084fd75c RY(iia_α₁₄) 61a7737ebfd14a4c812dd1709a33868f--47b5982969334b9d9e128880084fd75c 79d98e0b2aa344f9ae9fe50944aab623 X 47b5982969334b9d9e128880084fd75c--79d98e0b2aa344f9ae9fe50944aab623 79d98e0b2aa344f9ae9fe50944aab623--183517b1d14d45ffba43453ccef1819f d574e8ebe84f4b37a37c342898ccff5c 79d98e0b2aa344f9ae9fe50944aab623--d574e8ebe84f4b37a37c342898ccff5c 8c19e192e89e421c98ab2b0d276e277a RX(iia_γ₁₁) d574e8ebe84f4b37a37c342898ccff5c--8c19e192e89e421c98ab2b0d276e277a e768de027a3f4d8c9c0446fa7f48f078 8c19e192e89e421c98ab2b0d276e277a--e768de027a3f4d8c9c0446fa7f48f078 638a0984e0f14ef295b0600c9a0d7334 X e768de027a3f4d8c9c0446fa7f48f078--638a0984e0f14ef295b0600c9a0d7334 638a0984e0f14ef295b0600c9a0d7334--beae7054171e4523bc9933766e9758c0 37c95dbf7d6a4929af450fdfaf414cbc RY(iia_β₁₄) 638a0984e0f14ef295b0600c9a0d7334--37c95dbf7d6a4929af450fdfaf414cbc da598ed651654e298e06375360da658b RX(iia_β₁₁) 37c95dbf7d6a4929af450fdfaf414cbc--da598ed651654e298e06375360da658b da598ed651654e298e06375360da658b--2363e2c9635e4c718dc375a2fae5343b eceabaf05c83481e97c494ad3826891d 6c8d16c9c0e349c5a38513b2a2cdb5e8 RX(iia_α₀₂) 57c3ba081e38476caf9fd6ac1e1f5268--6c8d16c9c0e349c5a38513b2a2cdb5e8 d1bde85199024d539cfee88e4a991423 RY(iia_α₀₅) 6c8d16c9c0e349c5a38513b2a2cdb5e8--d1bde85199024d539cfee88e4a991423 eb20d87f6eb347c087fedba1f1aeedc3 d1bde85199024d539cfee88e4a991423--eb20d87f6eb347c087fedba1f1aeedc3 9894a4eaf7a1400499303e00cbd785db X eb20d87f6eb347c087fedba1f1aeedc3--9894a4eaf7a1400499303e00cbd785db 9894a4eaf7a1400499303e00cbd785db--f68b7e98ba824ef7b4a85395c7902c38 b76547042f5a43808341753a0a1dd678 RX(iia_γ₀₂) 9894a4eaf7a1400499303e00cbd785db--b76547042f5a43808341753a0a1dd678 a9b5c2c2216143e8b515d7056d5ee6d7 X b76547042f5a43808341753a0a1dd678--a9b5c2c2216143e8b515d7056d5ee6d7 a9b5c2c2216143e8b515d7056d5ee6d7--ab47e6f882c647749698b14cebf75ce2 ca8378d34aa14c67a9b0c7e86c1d4465 a9b5c2c2216143e8b515d7056d5ee6d7--ca8378d34aa14c67a9b0c7e86c1d4465 07e232341a074a02b053a8715ec75c68 RY(iia_β₀₅) ca8378d34aa14c67a9b0c7e86c1d4465--07e232341a074a02b053a8715ec75c68 65d7058cff9d494ab44ed3ac2e9aea9b RX(iia_β₀₂) 07e232341a074a02b053a8715ec75c68--65d7058cff9d494ab44ed3ac2e9aea9b b78880e2e3354cb3bb5c6ac457a199b1 RX(iia_α₁₂) 65d7058cff9d494ab44ed3ac2e9aea9b--b78880e2e3354cb3bb5c6ac457a199b1 dbf98033b86443db90d4f7b593fd8478 RY(iia_α₁₅) b78880e2e3354cb3bb5c6ac457a199b1--dbf98033b86443db90d4f7b593fd8478 0ffed9d1b5ff4e5288a694be630f31c9 dbf98033b86443db90d4f7b593fd8478--0ffed9d1b5ff4e5288a694be630f31c9 de9bacd3ce2e48fcbb8aab6193a4ef5d X 0ffed9d1b5ff4e5288a694be630f31c9--de9bacd3ce2e48fcbb8aab6193a4ef5d de9bacd3ce2e48fcbb8aab6193a4ef5d--d574e8ebe84f4b37a37c342898ccff5c 10efe4999cfb42b4bfba9afd55423ab1 RX(iia_γ₁₂) de9bacd3ce2e48fcbb8aab6193a4ef5d--10efe4999cfb42b4bfba9afd55423ab1 a64c4fc2d63b42d4b18ffea9d11f08af X 10efe4999cfb42b4bfba9afd55423ab1--a64c4fc2d63b42d4b18ffea9d11f08af a64c4fc2d63b42d4b18ffea9d11f08af--e768de027a3f4d8c9c0446fa7f48f078 b7ef84fa99424bc592abaad1fd48ecbb a64c4fc2d63b42d4b18ffea9d11f08af--b7ef84fa99424bc592abaad1fd48ecbb 330c46fd79974d178bee7d64fa4b4191 RY(iia_β₁₅) b7ef84fa99424bc592abaad1fd48ecbb--330c46fd79974d178bee7d64fa4b4191 0b995d55a56c4b29b4212a609de25626 RX(iia_β₁₂) 330c46fd79974d178bee7d64fa4b4191--0b995d55a56c4b29b4212a609de25626 0b995d55a56c4b29b4212a609de25626--eceabaf05c83481e97c494ad3826891d