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_d7ff932d45b74f6698f2acd23f32b956 Constant Chebyshev FM cluster_28ee76c715204d48b8c7b93008a38324 Constant Fourier FM 700b9fcd3fdf4265a33f7b838c7d4ad8 0 09f05f94e99343418fa82a9c4a0349de RX(phi) 700b9fcd3fdf4265a33f7b838c7d4ad8--09f05f94e99343418fa82a9c4a0349de a1f228e7e35148aaa2a6a4941e6c5db9 1 d35ce2d55e424a68abea1fd76fe3a2ac RX(acos(phi)) 09f05f94e99343418fa82a9c4a0349de--d35ce2d55e424a68abea1fd76fe3a2ac dc50ab89d78745eaaef0c592f304f311 d35ce2d55e424a68abea1fd76fe3a2ac--dc50ab89d78745eaaef0c592f304f311 8deb6d73b57e4032bb089ae3891dd823 d447b804d7f64ccc8d1db76a0b0da50d RX(phi) a1f228e7e35148aaa2a6a4941e6c5db9--d447b804d7f64ccc8d1db76a0b0da50d db7bc09a2235432c9de6fdb1232fd3ec 2 eda5269047d04e52b1efca9ac12d6b5e RX(acos(phi)) d447b804d7f64ccc8d1db76a0b0da50d--eda5269047d04e52b1efca9ac12d6b5e eda5269047d04e52b1efca9ac12d6b5e--8deb6d73b57e4032bb089ae3891dd823 d9abaf67fe934dd9b8f44b737daa23d2 839c7875a30e4235967eeadd4d534b0f RX(phi) db7bc09a2235432c9de6fdb1232fd3ec--839c7875a30e4235967eeadd4d534b0f 535e0a2a0f064fa3881cc3298ffca2af RX(acos(phi)) 839c7875a30e4235967eeadd4d534b0f--535e0a2a0f064fa3881cc3298ffca2af 535e0a2a0f064fa3881cc3298ffca2af--d9abaf67fe934dd9b8f44b737daa23d2

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_623f43fc50224521beb033bd3f0c3f06 Constant <function custom_fn at 0x7ff7b4d6a0e0> FM cluster_2db56e791df04ef88697fe69391f4051 Constant asin FM 3972873cc3b54f2c81d5af88f61b2d8e 0 e74b39386fa545d186ad49bd57a7ccbf RX(asin(phi)) 3972873cc3b54f2c81d5af88f61b2d8e--e74b39386fa545d186ad49bd57a7ccbf 96c1b9e906574709b41b97a872053eb6 1 398bd692c5f349e6b8f7bf886df8b027 RX(phi**2 + asin(phi)) e74b39386fa545d186ad49bd57a7ccbf--398bd692c5f349e6b8f7bf886df8b027 92030472bbf94217999521f902120c24 398bd692c5f349e6b8f7bf886df8b027--92030472bbf94217999521f902120c24 7d00c95f009544f1a8fe61a5c64df82b 2c7b55246be24e1ca406d9d3603f6caf RX(asin(phi)) 96c1b9e906574709b41b97a872053eb6--2c7b55246be24e1ca406d9d3603f6caf d2399b61d7eb4caba1d78cf3cf89744d 2 e74681e1c1e54c40993364afd26adfe1 RX(phi**2 + asin(phi)) 2c7b55246be24e1ca406d9d3603f6caf--e74681e1c1e54c40993364afd26adfe1 e74681e1c1e54c40993364afd26adfe1--7d00c95f009544f1a8fe61a5c64df82b 1509b0506eac41a7a385d1a2c5f46157 b53cd138714843aab72b698c953828f9 RX(asin(phi)) d2399b61d7eb4caba1d78cf3cf89744d--b53cd138714843aab72b698c953828f9 bc0c9ce6128245a8bda1e8b7b8d8ad8d RX(phi**2 + asin(phi)) b53cd138714843aab72b698c953828f9--bc0c9ce6128245a8bda1e8b7b8d8ad8d bc0c9ce6128245a8bda1e8b7b8d8ad8d--1509b0506eac41a7a385d1a2c5f46157

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_0de7d50bfe6945428d5b165d7d593d55 Exponential Fourier FM cluster_9a58478ae474450f98e21b4ba135fe03 Constant Fourier FM cluster_a9646dd3464c4b05922850a4859889f6 Tower Fourier FM f386df6a0f2348cf9d74a5503323128e 0 bb6aa80f5b0a474984a885c7bbcbb906 RX(phi) f386df6a0f2348cf9d74a5503323128e--bb6aa80f5b0a474984a885c7bbcbb906 7c55bf47c4234c0c8d10b5d1f35ec287 1 9a716d63dcdf4c188f0c5daa73d252e6 RX(1.0*phi) bb6aa80f5b0a474984a885c7bbcbb906--9a716d63dcdf4c188f0c5daa73d252e6 60d9b055786142869dce9d964ba5c1d5 RX(1.0*phi) 9a716d63dcdf4c188f0c5daa73d252e6--60d9b055786142869dce9d964ba5c1d5 536f4edb41eb4bf48287b6eab8c7fd67 60d9b055786142869dce9d964ba5c1d5--536f4edb41eb4bf48287b6eab8c7fd67 5db11d87e3a64f6a951668a7318025ca a8201d808db3473db759e73244fb0906 RX(phi) 7c55bf47c4234c0c8d10b5d1f35ec287--a8201d808db3473db759e73244fb0906 d964f452cbec4b929125f999135c1a5c 2 5e3dd9d941ef4a4aa22072b2b8f802e8 RX(2.0*phi) a8201d808db3473db759e73244fb0906--5e3dd9d941ef4a4aa22072b2b8f802e8 b9d6ca297cf44f7ca310bc80b5692a7c RX(2.0*phi) 5e3dd9d941ef4a4aa22072b2b8f802e8--b9d6ca297cf44f7ca310bc80b5692a7c b9d6ca297cf44f7ca310bc80b5692a7c--5db11d87e3a64f6a951668a7318025ca 8857916480014e9dbd9ef58686762ebe 335236dc5374449193204177f0749571 RX(phi) d964f452cbec4b929125f999135c1a5c--335236dc5374449193204177f0749571 1b52a637144b4d41a61ed6da7f4624cc 3 096ef7cfde324bbfaf4f225605e9df29 RX(3.0*phi) 335236dc5374449193204177f0749571--096ef7cfde324bbfaf4f225605e9df29 b009414a2b5647f9bfe508b2bbfe05c4 RX(4.0*phi) 096ef7cfde324bbfaf4f225605e9df29--b009414a2b5647f9bfe508b2bbfe05c4 b009414a2b5647f9bfe508b2bbfe05c4--8857916480014e9dbd9ef58686762ebe 6166d371d1324f7d9d68afae44843ce8 bed899f25ffd4be9b6f9e1ef7b4ccd6c RX(phi) 1b52a637144b4d41a61ed6da7f4624cc--bed899f25ffd4be9b6f9e1ef7b4ccd6c 732a487552e04c8ea2b278398edc1f55 4 3cdd710c186b4549802ace9606a0250f RX(4.0*phi) bed899f25ffd4be9b6f9e1ef7b4ccd6c--3cdd710c186b4549802ace9606a0250f e594af9f7b9e4d6a8d3e3cf44db1fe8e RX(8.0*phi) 3cdd710c186b4549802ace9606a0250f--e594af9f7b9e4d6a8d3e3cf44db1fe8e e594af9f7b9e4d6a8d3e3cf44db1fe8e--6166d371d1324f7d9d68afae44843ce8 2c6423427df14e068ce59e4aa892104b d04951eebcf943d5be4b522eff73aa8a RX(phi) 732a487552e04c8ea2b278398edc1f55--d04951eebcf943d5be4b522eff73aa8a 84431e478649490685de7800cc0fb92d RX(5.0*phi) d04951eebcf943d5be4b522eff73aa8a--84431e478649490685de7800cc0fb92d 7ff029ded5c146bb9bae3f42852ec389 RX(16.0*phi) 84431e478649490685de7800cc0fb92d--7ff029ded5c146bb9bae3f42852ec389 7ff029ded5c146bb9bae3f42852ec389--2c6423427df14e068ce59e4aa892104b

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 3a5d98c7ba0f4e18b232c22d1f8b8dcb 0 6945261766434ad38f6d8f236c95b8b2 RX(1.0*acos(phi)) 3a5d98c7ba0f4e18b232c22d1f8b8dcb--6945261766434ad38f6d8f236c95b8b2 a6722dc782894449b2c890f96c4625a9 1 61f5e3c348f543698c19a917275df012 6945261766434ad38f6d8f236c95b8b2--61f5e3c348f543698c19a917275df012 33f4b4409c934fd0aecff1aa5cdc6293 43a51464f4084be3bacdc6d5e1ed8a92 RX(1.414*acos(phi)) a6722dc782894449b2c890f96c4625a9--43a51464f4084be3bacdc6d5e1ed8a92 58faa1e1e75d41baa0ef09fb36c56a67 2 43a51464f4084be3bacdc6d5e1ed8a92--33f4b4409c934fd0aecff1aa5cdc6293 4edd2c52c335456ebebb7b69d9e5a639 2943295271c946108af4293e44e169bb RX(1.732*acos(phi)) 58faa1e1e75d41baa0ef09fb36c56a67--2943295271c946108af4293e44e169bb 4e238c010ee14a8aada84005d8b7b4bf 3 2943295271c946108af4293e44e169bb--4edd2c52c335456ebebb7b69d9e5a639 5ff69715a77a43b5a5a9ac9d1194e192 3635b284e5b3470293a8d7e99a84dcb2 RX(2.0*acos(phi)) 4e238c010ee14a8aada84005d8b7b4bf--3635b284e5b3470293a8d7e99a84dcb2 1f2912a599f44fb49292485b8df5346b 4 3635b284e5b3470293a8d7e99a84dcb2--5ff69715a77a43b5a5a9ac9d1194e192 c0e10ef8137849f3a9ed68a5d97fdbc3 442e82d04c6d4a6781b9ed652c6a00da RX(2.236*acos(phi)) 1f2912a599f44fb49292485b8df5346b--442e82d04c6d4a6781b9ed652c6a00da 442e82d04c6d4a6781b9ed652c6a00da--c0e10ef8137849f3a9ed68a5d97fdbc3

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 5b6bea4742064b5391fff0d408f14683 0 be9ca40390424691adce2ccc10deac02 RX(1.0*phi*w₀) 5b6bea4742064b5391fff0d408f14683--be9ca40390424691adce2ccc10deac02 3551a60f2b8241139c4f188161e52d44 1 67c76ee9d0074488891427de2181e7f5 be9ca40390424691adce2ccc10deac02--67c76ee9d0074488891427de2181e7f5 1369a1ecadb74b46b4903eda8d8ea1ac 6b29de6aff3f4731876ac232f5e63996 RX(2.0*phi*w₁) 3551a60f2b8241139c4f188161e52d44--6b29de6aff3f4731876ac232f5e63996 f72a58452ce34852b677552d0b601006 2 6b29de6aff3f4731876ac232f5e63996--1369a1ecadb74b46b4903eda8d8ea1ac e53bc70aef9e46f7b14ef0663f047298 2d10d007e0134eb1bebef5cd686e3497 RX(4.0*phi*w₂) f72a58452ce34852b677552d0b601006--2d10d007e0134eb1bebef5cd686e3497 125a236ab37c41bb83b7708307d4d8e7 3 2d10d007e0134eb1bebef5cd686e3497--e53bc70aef9e46f7b14ef0663f047298 209798b6e77c4df39b5ef8f22388d895 405ec779c5e04c33ad0da6eec110aff8 RX(8.0*phi*w₃) 125a236ab37c41bb83b7708307d4d8e7--405ec779c5e04c33ad0da6eec110aff8 9e49a77597844882a04da715a057cfc0 4 405ec779c5e04c33ad0da6eec110aff8--209798b6e77c4df39b5ef8f22388d895 e4d821fdae344fb4aa2adba3a714f357 9d4f27e2a26544f6ba7ce003abda414c RX(16.0*phi*w₄) 9e49a77597844882a04da715a057cfc0--9d4f27e2a26544f6ba7ce003abda414c 9d4f27e2a26544f6ba7ce003abda414c--e4d821fdae344fb4aa2adba3a714f357

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 ea717baf0aa743e0a2afd9480b34fafe 0 bee10117e4ae4cc7bae92e333cc6e61b RY(80.0*acos(w₄*(0.667*x + 1.667))) ea717baf0aa743e0a2afd9480b34fafe--bee10117e4ae4cc7bae92e333cc6e61b 4ccc3c2cbbdd436baec0d08645503410 1 e068d479fee541a782274c788acc39bb bee10117e4ae4cc7bae92e333cc6e61b--e068d479fee541a782274c788acc39bb 36b961e3733d4e4c9584371b9e73382f 39e8daca804341239daae51309699267 RY(40.0*acos(w₃*(0.667*x + 1.667))) 4ccc3c2cbbdd436baec0d08645503410--39e8daca804341239daae51309699267 56dc90d60c3e4b69b08cf6eccf97a44a 2 39e8daca804341239daae51309699267--36b961e3733d4e4c9584371b9e73382f 871bc193168f4807bd93cb88118f3862 c36fc92c05ae4f7aa71bf6ecf55524a0 RY(20.0*acos(w₂*(0.667*x + 1.667))) 56dc90d60c3e4b69b08cf6eccf97a44a--c36fc92c05ae4f7aa71bf6ecf55524a0 eac7a0b8a25242af8c18529669019a4d 3 c36fc92c05ae4f7aa71bf6ecf55524a0--871bc193168f4807bd93cb88118f3862 104ab0a6c71d4574ba872d76aa9c814f 1d5dc5cd8143497d87d406f403b559a9 RY(10.0*acos(w₁*(0.667*x + 1.667))) eac7a0b8a25242af8c18529669019a4d--1d5dc5cd8143497d87d406f403b559a9 3bd0a0e5146344a790f79047eead620f 4 1d5dc5cd8143497d87d406f403b559a9--104ab0a6c71d4574ba872d76aa9c814f 592b1d72149a4bb58970f0e48230938b c5f3e91241a541b6a8770e7436cab990 RY(5.0*acos(w₀*(0.667*x + 1.667))) 3bd0a0e5146344a790f79047eead620f--c5f3e91241a541b6a8770e7436cab990 c5f3e91241a541b6a8770e7436cab990--592b1d72149a4bb58970f0e48230938b

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 460540788e2c46418cffdfe25f84d863 0 02473ef4842f4c6790d35e29b4d53769 RX(theta₀) 460540788e2c46418cffdfe25f84d863--02473ef4842f4c6790d35e29b4d53769 59b3dad9832c4e6d820b84a0d27b6818 1 49ddd62deff948ce9e5366f464a2cd67 RY(theta₃) 02473ef4842f4c6790d35e29b4d53769--49ddd62deff948ce9e5366f464a2cd67 eb6129e8d30f455fbf43cc84d0b967b3 RX(theta₆) 49ddd62deff948ce9e5366f464a2cd67--eb6129e8d30f455fbf43cc84d0b967b3 1eac9ad10751498185836ce35fb9b329 eb6129e8d30f455fbf43cc84d0b967b3--1eac9ad10751498185836ce35fb9b329 0011623e25b84891836ec261c2961ebb 1eac9ad10751498185836ce35fb9b329--0011623e25b84891836ec261c2961ebb 2963a8a0595f4547b100d2f11c9d0d0d RX(theta₉) 0011623e25b84891836ec261c2961ebb--2963a8a0595f4547b100d2f11c9d0d0d dc75d097077943a69e3069cc50fb5157 RY(theta₁₂) 2963a8a0595f4547b100d2f11c9d0d0d--dc75d097077943a69e3069cc50fb5157 a5a30afd54ca407fbd3f7c402416507c RX(theta₁₅) dc75d097077943a69e3069cc50fb5157--a5a30afd54ca407fbd3f7c402416507c ac6c84b9d2504471a9f20f90a29fe538 a5a30afd54ca407fbd3f7c402416507c--ac6c84b9d2504471a9f20f90a29fe538 a7ed2126168d48179175ef8983c6b20d ac6c84b9d2504471a9f20f90a29fe538--a7ed2126168d48179175ef8983c6b20d 8b1fc662783044118a3e8c2591dfa69c a7ed2126168d48179175ef8983c6b20d--8b1fc662783044118a3e8c2591dfa69c 97651ea0015f4690a759c81dd47e7562 e2cdafbcd4a8425387db386e06b7754a RX(theta₁) 59b3dad9832c4e6d820b84a0d27b6818--e2cdafbcd4a8425387db386e06b7754a 732f939994b64c9d8e4911fc8b901934 2 443ca5964ba14f6a80733c3c3bce1f57 RY(theta₄) e2cdafbcd4a8425387db386e06b7754a--443ca5964ba14f6a80733c3c3bce1f57 331948fde30941fabb78c3d4e8c1e410 RX(theta₇) 443ca5964ba14f6a80733c3c3bce1f57--331948fde30941fabb78c3d4e8c1e410 4b45288c52f44930b733453921559cef X 331948fde30941fabb78c3d4e8c1e410--4b45288c52f44930b733453921559cef 4b45288c52f44930b733453921559cef--1eac9ad10751498185836ce35fb9b329 982c0f86831d46229b2353b965f35e7f 4b45288c52f44930b733453921559cef--982c0f86831d46229b2353b965f35e7f fd9806c43f4c406d8183d3c401258433 RX(theta₁₀) 982c0f86831d46229b2353b965f35e7f--fd9806c43f4c406d8183d3c401258433 369e63e73e074b7789ed81d9500559ca RY(theta₁₃) fd9806c43f4c406d8183d3c401258433--369e63e73e074b7789ed81d9500559ca 1f68d80b63844ceb8c3ff09a7ed0d680 RX(theta₁₆) 369e63e73e074b7789ed81d9500559ca--1f68d80b63844ceb8c3ff09a7ed0d680 a27b2ff526a74aca8357565fca3d76e0 X 1f68d80b63844ceb8c3ff09a7ed0d680--a27b2ff526a74aca8357565fca3d76e0 a27b2ff526a74aca8357565fca3d76e0--ac6c84b9d2504471a9f20f90a29fe538 48594ff3732645a885c4b1011b99d6a7 a27b2ff526a74aca8357565fca3d76e0--48594ff3732645a885c4b1011b99d6a7 48594ff3732645a885c4b1011b99d6a7--97651ea0015f4690a759c81dd47e7562 de2219e92da34bfc9b56c449f6dc04fe 73f1c3de59244b4f9e5e9cd0c66dc108 RX(theta₂) 732f939994b64c9d8e4911fc8b901934--73f1c3de59244b4f9e5e9cd0c66dc108 7eabe55d89b640e1816fea79a088a2c4 RY(theta₅) 73f1c3de59244b4f9e5e9cd0c66dc108--7eabe55d89b640e1816fea79a088a2c4 effc77b5fa0a433abfc61e4530eae299 RX(theta₈) 7eabe55d89b640e1816fea79a088a2c4--effc77b5fa0a433abfc61e4530eae299 6b864ac7a71a49fda829eb0f763f9d44 effc77b5fa0a433abfc61e4530eae299--6b864ac7a71a49fda829eb0f763f9d44 653f56c9d9524790a9e2ad805707f3d3 X 6b864ac7a71a49fda829eb0f763f9d44--653f56c9d9524790a9e2ad805707f3d3 653f56c9d9524790a9e2ad805707f3d3--982c0f86831d46229b2353b965f35e7f d6da2d04c59b47038a500772b284ecd3 RX(theta₁₁) 653f56c9d9524790a9e2ad805707f3d3--d6da2d04c59b47038a500772b284ecd3 e7909cd5ae1d44cfb240f18473a346dc RY(theta₁₄) d6da2d04c59b47038a500772b284ecd3--e7909cd5ae1d44cfb240f18473a346dc 88ec68f7f94a41ab8023832c636d701b RX(theta₁₇) e7909cd5ae1d44cfb240f18473a346dc--88ec68f7f94a41ab8023832c636d701b 21a82170f0d649e5ad18e8164988e2bc 88ec68f7f94a41ab8023832c636d701b--21a82170f0d649e5ad18e8164988e2bc b2a56972bd4e46ad978db06fd3bd19c1 X 21a82170f0d649e5ad18e8164988e2bc--b2a56972bd4e46ad978db06fd3bd19c1 b2a56972bd4e46ad978db06fd3bd19c1--48594ff3732645a885c4b1011b99d6a7 b2a56972bd4e46ad978db06fd3bd19c1--de2219e92da34bfc9b56c449f6dc04fe

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 61943e2cb18744b0938e841427b5299c 0 1334d672a62a40fd9aef10644d4f892a RX(phi₀) 61943e2cb18744b0938e841427b5299c--1334d672a62a40fd9aef10644d4f892a 8991e422240548cbb50d33c70eb7ae52 1 06eeaa3a15bb44d5bf69ff2eeea15def RY(phi₃) 1334d672a62a40fd9aef10644d4f892a--06eeaa3a15bb44d5bf69ff2eeea15def 893407624eae417e91285fbba1af878b RX(phi₆) 06eeaa3a15bb44d5bf69ff2eeea15def--893407624eae417e91285fbba1af878b 3a2e681e1627442ca6de67f18a8d1984 893407624eae417e91285fbba1af878b--3a2e681e1627442ca6de67f18a8d1984 6fbff82442e344eea3d2e6ab62e0dec8 3a2e681e1627442ca6de67f18a8d1984--6fbff82442e344eea3d2e6ab62e0dec8 96da3651fa2a43eb880b59c3ca4ce7a3 RX(phi₉) 6fbff82442e344eea3d2e6ab62e0dec8--96da3651fa2a43eb880b59c3ca4ce7a3 e1b8d737f61140b8a08c15887884aeac RY(phi₁₂) 96da3651fa2a43eb880b59c3ca4ce7a3--e1b8d737f61140b8a08c15887884aeac f4734f10b40d48b4b9520c29881c6b11 RX(phi₁₅) e1b8d737f61140b8a08c15887884aeac--f4734f10b40d48b4b9520c29881c6b11 5b476e69eeab4e09a0a5474d286ba3c2 f4734f10b40d48b4b9520c29881c6b11--5b476e69eeab4e09a0a5474d286ba3c2 c967ac92786b4b8c975eb2af0cecc56f 5b476e69eeab4e09a0a5474d286ba3c2--c967ac92786b4b8c975eb2af0cecc56f b5f17e5db4e84b23ae65475b6f32f885 c967ac92786b4b8c975eb2af0cecc56f--b5f17e5db4e84b23ae65475b6f32f885 da943b0686ba4db687b0c27fd23cb3d4 de076058491f41a994c496521c35b05d RX(phi₁) 8991e422240548cbb50d33c70eb7ae52--de076058491f41a994c496521c35b05d ea8d96da4c804a1ab5c2ecf4decca164 2 46fd4ffc70bc4d34a472dc170e15e02a RY(phi₄) de076058491f41a994c496521c35b05d--46fd4ffc70bc4d34a472dc170e15e02a 25489e8a21df474991fa02b18a0da181 RX(phi₇) 46fd4ffc70bc4d34a472dc170e15e02a--25489e8a21df474991fa02b18a0da181 686d7a77b85e4212a6a688bf0b17fb23 PHASE(phi_ent₀) 25489e8a21df474991fa02b18a0da181--686d7a77b85e4212a6a688bf0b17fb23 686d7a77b85e4212a6a688bf0b17fb23--3a2e681e1627442ca6de67f18a8d1984 04265aa5314e45038c879fd1dcb93d6d 686d7a77b85e4212a6a688bf0b17fb23--04265aa5314e45038c879fd1dcb93d6d 48a9eb094a764bf08577f5ef3b5de864 RX(phi₁₀) 04265aa5314e45038c879fd1dcb93d6d--48a9eb094a764bf08577f5ef3b5de864 85928f66be21434d98542e1face88408 RY(phi₁₃) 48a9eb094a764bf08577f5ef3b5de864--85928f66be21434d98542e1face88408 9682b87d5e18475abd9837321dfb29cb RX(phi₁₆) 85928f66be21434d98542e1face88408--9682b87d5e18475abd9837321dfb29cb 78cc532235fe4f5d9f3663986aaa9e08 PHASE(phi_ent₂) 9682b87d5e18475abd9837321dfb29cb--78cc532235fe4f5d9f3663986aaa9e08 78cc532235fe4f5d9f3663986aaa9e08--5b476e69eeab4e09a0a5474d286ba3c2 811624f2296f49589849abe678e5fd1e 78cc532235fe4f5d9f3663986aaa9e08--811624f2296f49589849abe678e5fd1e 811624f2296f49589849abe678e5fd1e--da943b0686ba4db687b0c27fd23cb3d4 546a88bf459949dabceeebb0ed197731 5fffaf7bfe42405b907a2f2e4d497781 RX(phi₂) ea8d96da4c804a1ab5c2ecf4decca164--5fffaf7bfe42405b907a2f2e4d497781 541ca4b562d548fea2f5e911ae86e2ae RY(phi₅) 5fffaf7bfe42405b907a2f2e4d497781--541ca4b562d548fea2f5e911ae86e2ae 3ec0fa5eb1414f35b892faf7cad2ad89 RX(phi₈) 541ca4b562d548fea2f5e911ae86e2ae--3ec0fa5eb1414f35b892faf7cad2ad89 4d3d353a913048a582d34cbf96408a4a 3ec0fa5eb1414f35b892faf7cad2ad89--4d3d353a913048a582d34cbf96408a4a ae9e763240634226913d46804cbbf160 PHASE(phi_ent₁) 4d3d353a913048a582d34cbf96408a4a--ae9e763240634226913d46804cbbf160 ae9e763240634226913d46804cbbf160--04265aa5314e45038c879fd1dcb93d6d 30237d84fb7a4832b21f73fc576bc45b RX(phi₁₁) ae9e763240634226913d46804cbbf160--30237d84fb7a4832b21f73fc576bc45b afe7781dbb05414393e4356aec59a80d RY(phi₁₄) 30237d84fb7a4832b21f73fc576bc45b--afe7781dbb05414393e4356aec59a80d 3bfafcdfc4dc4fdc83fd3bd7f7b89156 RX(phi₁₇) afe7781dbb05414393e4356aec59a80d--3bfafcdfc4dc4fdc83fd3bd7f7b89156 19a4ad59d95f47259139868e7b1beeac 3bfafcdfc4dc4fdc83fd3bd7f7b89156--19a4ad59d95f47259139868e7b1beeac 20df186c17b24aecb03293c7833f5f0f PHASE(phi_ent₃) 19a4ad59d95f47259139868e7b1beeac--20df186c17b24aecb03293c7833f5f0f 20df186c17b24aecb03293c7833f5f0f--811624f2296f49589849abe678e5fd1e 20df186c17b24aecb03293c7833f5f0f--546a88bf459949dabceeebb0ed197731

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_10d1f694cd98442ba676f87cf3cfce84 cluster_1932005d89e241e8bdbbac2520c3eba5 8329f32507fe43d09375b7ca90185a9c 0 46c1b6c00d574b7d9bc63df0f79e88d3 RX(theta₀) 8329f32507fe43d09375b7ca90185a9c--46c1b6c00d574b7d9bc63df0f79e88d3 09e04634a08546ca957ecaf5121994cd 1 1e04690cf3df41a2874fbf4f422e0e38 RY(theta₃) 46c1b6c00d574b7d9bc63df0f79e88d3--1e04690cf3df41a2874fbf4f422e0e38 2ebbf7370870470eba9bd58161f4116c RX(theta₆) 1e04690cf3df41a2874fbf4f422e0e38--2ebbf7370870470eba9bd58161f4116c 358d222615204f3aaec691e24ea0c139 HamEvo 2ebbf7370870470eba9bd58161f4116c--358d222615204f3aaec691e24ea0c139 8d0112c536cb43619d97983aa5b02176 RX(theta₉) 358d222615204f3aaec691e24ea0c139--8d0112c536cb43619d97983aa5b02176 ae25205f37704fbcafcabf6c8255a8bd RY(theta₁₂) 8d0112c536cb43619d97983aa5b02176--ae25205f37704fbcafcabf6c8255a8bd 550be3907a364f2690a527fb06edcc25 RX(theta₁₅) ae25205f37704fbcafcabf6c8255a8bd--550be3907a364f2690a527fb06edcc25 e119f5e87be640f4aadf9b5242a98c93 HamEvo 550be3907a364f2690a527fb06edcc25--e119f5e87be640f4aadf9b5242a98c93 7ca6e1d81b24490196c1026931d4d09f e119f5e87be640f4aadf9b5242a98c93--7ca6e1d81b24490196c1026931d4d09f 58de6281f8a44cfd923240d9c32b2b6a 092f89b6987e4a6aa73b7344195e5376 RX(theta₁) 09e04634a08546ca957ecaf5121994cd--092f89b6987e4a6aa73b7344195e5376 c4e0fd94411746168740cde708530905 2 7f0c6c4bddd243219d601247b778ead5 RY(theta₄) 092f89b6987e4a6aa73b7344195e5376--7f0c6c4bddd243219d601247b778ead5 6e8b281064f3408ea4f1cf75beb35385 RX(theta₇) 7f0c6c4bddd243219d601247b778ead5--6e8b281064f3408ea4f1cf75beb35385 ea1b333f45dd440184b682b7f242e0d1 t = theta_t₀ 6e8b281064f3408ea4f1cf75beb35385--ea1b333f45dd440184b682b7f242e0d1 62d1841e96634309a0c238d47fbc716c RX(theta₁₀) ea1b333f45dd440184b682b7f242e0d1--62d1841e96634309a0c238d47fbc716c 7cb4c1107d754987b6fe45063eee7a4e RY(theta₁₃) 62d1841e96634309a0c238d47fbc716c--7cb4c1107d754987b6fe45063eee7a4e 3abe56696e704644a839fc87d55e3f66 RX(theta₁₆) 7cb4c1107d754987b6fe45063eee7a4e--3abe56696e704644a839fc87d55e3f66 649f969ba471475883510a9fab405841 t = theta_t₁ 3abe56696e704644a839fc87d55e3f66--649f969ba471475883510a9fab405841 649f969ba471475883510a9fab405841--58de6281f8a44cfd923240d9c32b2b6a e1168066695b46ba9694391e2db15131 b8d0e77901394b9ca49a838fbbe390cb RX(theta₂) c4e0fd94411746168740cde708530905--b8d0e77901394b9ca49a838fbbe390cb c0e8d28cc54a44549bb275b7e2fd1818 RY(theta₅) b8d0e77901394b9ca49a838fbbe390cb--c0e8d28cc54a44549bb275b7e2fd1818 19da767d66a8418cabf9b53603cb2405 RX(theta₈) c0e8d28cc54a44549bb275b7e2fd1818--19da767d66a8418cabf9b53603cb2405 f310b3ddbd88439e9576d963528e8f3c 19da767d66a8418cabf9b53603cb2405--f310b3ddbd88439e9576d963528e8f3c 69b7ccbb11854d35ad54e43f8ae11f1d RX(theta₁₁) f310b3ddbd88439e9576d963528e8f3c--69b7ccbb11854d35ad54e43f8ae11f1d 728b3b24d95944e992da7453b827077e RY(theta₁₄) 69b7ccbb11854d35ad54e43f8ae11f1d--728b3b24d95944e992da7453b827077e 010bf8d6107945aea1c7d52eac25b44c RX(theta₁₇) 728b3b24d95944e992da7453b827077e--010bf8d6107945aea1c7d52eac25b44c ce9fdf282cbb4344a1321f76d6a2144a 010bf8d6107945aea1c7d52eac25b44c--ce9fdf282cbb4344a1321f76d6a2144a ce9fdf282cbb4344a1321f76d6a2144a--e1168066695b46ba9694391e2db15131

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_157f8c6efc474f7ab4e59df36fd7ad29 cluster_3d55bb0ee2b54dfbbcc4f4bc4b3f9dba 376d9362807e42c59610ac87b84aa3e9 0 aacfd3ac10744a5196e1e05fec04d4d7 RX(theta₀) 376d9362807e42c59610ac87b84aa3e9--aacfd3ac10744a5196e1e05fec04d4d7 ee2618a1d93a44648aad24bc2fa0e1e5 1 f8aa6777545b4aaabf19b63be7845e39 RY(theta₆) aacfd3ac10744a5196e1e05fec04d4d7--f8aa6777545b4aaabf19b63be7845e39 8d749fc4250f490495d0140aacfa0640 RX(theta₁₂) f8aa6777545b4aaabf19b63be7845e39--8d749fc4250f490495d0140aacfa0640 0b43ae7dc1164464aa6072515ac5caaf 8d749fc4250f490495d0140aacfa0640--0b43ae7dc1164464aa6072515ac5caaf 1f6b8fd64eb24423af8423362598478c RX(theta₁₈) 0b43ae7dc1164464aa6072515ac5caaf--1f6b8fd64eb24423af8423362598478c 6733bed9906f4014918fa03d02179827 RY(theta₂₄) 1f6b8fd64eb24423af8423362598478c--6733bed9906f4014918fa03d02179827 d300d3e6c0184b43920356e3b6df02e2 RX(theta₃₀) 6733bed9906f4014918fa03d02179827--d300d3e6c0184b43920356e3b6df02e2 8cb8f103bd59436982ba5d8ee18bdedd d300d3e6c0184b43920356e3b6df02e2--8cb8f103bd59436982ba5d8ee18bdedd 12a0435b9b904021976a298a20abe2d8 8cb8f103bd59436982ba5d8ee18bdedd--12a0435b9b904021976a298a20abe2d8 235f750ffc36412496795b2e65046b3a 31067c062e704b5abb616ffd0b0408ff RX(theta₁) ee2618a1d93a44648aad24bc2fa0e1e5--31067c062e704b5abb616ffd0b0408ff 5b0fb75cf2ff4eb1bb4deb2f1d122fff 2 6d74f209a2454d3ba85b141096f28581 RY(theta₇) 31067c062e704b5abb616ffd0b0408ff--6d74f209a2454d3ba85b141096f28581 463ddef0e31f4f2384fa25db01c083cd RX(theta₁₃) 6d74f209a2454d3ba85b141096f28581--463ddef0e31f4f2384fa25db01c083cd 7f0e4040056c477786d0996d892f017c 463ddef0e31f4f2384fa25db01c083cd--7f0e4040056c477786d0996d892f017c 15ef618ea28a4adeb331e3c60a98fe58 RX(theta₁₉) 7f0e4040056c477786d0996d892f017c--15ef618ea28a4adeb331e3c60a98fe58 e6a7eca2ae1e442fab25f111fb4147ed RY(theta₂₅) 15ef618ea28a4adeb331e3c60a98fe58--e6a7eca2ae1e442fab25f111fb4147ed d1e581dad6bf421795e410547f28cbc8 RX(theta₃₁) e6a7eca2ae1e442fab25f111fb4147ed--d1e581dad6bf421795e410547f28cbc8 73f07bd9cc5d466f8f1dd7ea681d85b2 d1e581dad6bf421795e410547f28cbc8--73f07bd9cc5d466f8f1dd7ea681d85b2 73f07bd9cc5d466f8f1dd7ea681d85b2--235f750ffc36412496795b2e65046b3a 7231a3da0d964876a3badc64b0e16f4f ab17dcc326ba41368811409406b6f1f0 RX(theta₂) 5b0fb75cf2ff4eb1bb4deb2f1d122fff--ab17dcc326ba41368811409406b6f1f0 2facfedd0786431394b9759a5bedd428 3 53cf3875a0344b689b5944fcecc37318 RY(theta₈) ab17dcc326ba41368811409406b6f1f0--53cf3875a0344b689b5944fcecc37318 ce975547e4b54fe19beada1ba4f7c5b7 RX(theta₁₄) 53cf3875a0344b689b5944fcecc37318--ce975547e4b54fe19beada1ba4f7c5b7 9a9208bc5ec54e4a8c49713c0df49152 HamEvo ce975547e4b54fe19beada1ba4f7c5b7--9a9208bc5ec54e4a8c49713c0df49152 85c846c971ca4c11bbc36c3e01ee77e6 RX(theta₂₀) 9a9208bc5ec54e4a8c49713c0df49152--85c846c971ca4c11bbc36c3e01ee77e6 0c7c2e78fe534d3597be5e6edbb98247 RY(theta₂₆) 85c846c971ca4c11bbc36c3e01ee77e6--0c7c2e78fe534d3597be5e6edbb98247 0ba3fe2d916c44d0b079863ad5ced0db RX(theta₃₂) 0c7c2e78fe534d3597be5e6edbb98247--0ba3fe2d916c44d0b079863ad5ced0db d18a3f4bc3bc405b838903964ad19d32 HamEvo 0ba3fe2d916c44d0b079863ad5ced0db--d18a3f4bc3bc405b838903964ad19d32 d18a3f4bc3bc405b838903964ad19d32--7231a3da0d964876a3badc64b0e16f4f 6c7fc3c29039436b9f7b1ad960266029 68cf85216b6549f2a2c2ff71efe1ad3d RX(theta₃) 2facfedd0786431394b9759a5bedd428--68cf85216b6549f2a2c2ff71efe1ad3d dc06429cea154f2e98e4f1516f827640 4 14c292c857144b249b085c25679f17b2 RY(theta₉) 68cf85216b6549f2a2c2ff71efe1ad3d--14c292c857144b249b085c25679f17b2 8c2e4a29bcc94219ae087e390a1cdc72 RX(theta₁₅) 14c292c857144b249b085c25679f17b2--8c2e4a29bcc94219ae087e390a1cdc72 220f4dee213f4345ba04a62364f63b96 t = theta_t₀ 8c2e4a29bcc94219ae087e390a1cdc72--220f4dee213f4345ba04a62364f63b96 a5a652d6097046399ede882ad274500d RX(theta₂₁) 220f4dee213f4345ba04a62364f63b96--a5a652d6097046399ede882ad274500d 3a4033b6268b4821b9c5913dd113fc0b RY(theta₂₇) a5a652d6097046399ede882ad274500d--3a4033b6268b4821b9c5913dd113fc0b 39749c4ec61a463ca456f9aeae729541 RX(theta₃₃) 3a4033b6268b4821b9c5913dd113fc0b--39749c4ec61a463ca456f9aeae729541 e9e62ab69aa3490895276e08ffa69bc3 t = theta_t₁ 39749c4ec61a463ca456f9aeae729541--e9e62ab69aa3490895276e08ffa69bc3 e9e62ab69aa3490895276e08ffa69bc3--6c7fc3c29039436b9f7b1ad960266029 ec79a7721fbe4ace99692e81c7a2ad41 12fe40f46b3b489eae2abbd273e671d5 RX(theta₄) dc06429cea154f2e98e4f1516f827640--12fe40f46b3b489eae2abbd273e671d5 b0653b3ba4aa48bd8436110faeac6d0e 5 086190605612467dbddad14b2fdc2cd5 RY(theta₁₀) 12fe40f46b3b489eae2abbd273e671d5--086190605612467dbddad14b2fdc2cd5 c0f97a2501d34805820dc7abe1c1cca0 RX(theta₁₆) 086190605612467dbddad14b2fdc2cd5--c0f97a2501d34805820dc7abe1c1cca0 54a22c4b2a40475eb8cb66846f4f03e2 c0f97a2501d34805820dc7abe1c1cca0--54a22c4b2a40475eb8cb66846f4f03e2 03cfff348c5544f6855b66745978a796 RX(theta₂₂) 54a22c4b2a40475eb8cb66846f4f03e2--03cfff348c5544f6855b66745978a796 0c19c3bd06614a048fcb143879945ecd RY(theta₂₈) 03cfff348c5544f6855b66745978a796--0c19c3bd06614a048fcb143879945ecd 2ccea802133f411bbcdcb69e5007db8e RX(theta₃₄) 0c19c3bd06614a048fcb143879945ecd--2ccea802133f411bbcdcb69e5007db8e 218d0f4d6f024816a9bc7783ae46e681 2ccea802133f411bbcdcb69e5007db8e--218d0f4d6f024816a9bc7783ae46e681 218d0f4d6f024816a9bc7783ae46e681--ec79a7721fbe4ace99692e81c7a2ad41 e75c4e6812a448f7a6009f3b2f0c1a72 f0319f6da44b4d6cb5a1f4c7522680e6 RX(theta₅) b0653b3ba4aa48bd8436110faeac6d0e--f0319f6da44b4d6cb5a1f4c7522680e6 e687eb46e26f484ab585543fafa3bfc7 RY(theta₁₁) f0319f6da44b4d6cb5a1f4c7522680e6--e687eb46e26f484ab585543fafa3bfc7 5109f885d8624f0abe21e2dc7c324089 RX(theta₁₇) e687eb46e26f484ab585543fafa3bfc7--5109f885d8624f0abe21e2dc7c324089 0e1ebd6c88ed4054ac15332177b7e88f 5109f885d8624f0abe21e2dc7c324089--0e1ebd6c88ed4054ac15332177b7e88f 3580a26a86d043dfa49e50f4fef3a7d2 RX(theta₂₃) 0e1ebd6c88ed4054ac15332177b7e88f--3580a26a86d043dfa49e50f4fef3a7d2 a2ed17781bea4bba90ea95f2189071e8 RY(theta₂₉) 3580a26a86d043dfa49e50f4fef3a7d2--a2ed17781bea4bba90ea95f2189071e8 90c2eb58b9554e25a01e553c4da22ced RX(theta₃₅) a2ed17781bea4bba90ea95f2189071e8--90c2eb58b9554e25a01e553c4da22ced e63d2f18ccef4746ad23454da1416ede 90c2eb58b9554e25a01e553c4da22ced--e63d2f18ccef4746ad23454da1416ede e63d2f18ccef4746ad23454da1416ede--e75c4e6812a448f7a6009f3b2f0c1a72

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_5a4e45429a0142a5b20eeb81fe8543a1 BPMA-1 cluster_c11e8d954b0d448794e1bf7d52d927ad BPMA-0 56e3f44ff5124346a655dbfb83d6d5d7 0 956c080b8bd6498e9858aae2b7904643 RX(iia_α₀₀) 56e3f44ff5124346a655dbfb83d6d5d7--956c080b8bd6498e9858aae2b7904643 986cd9ee4633461a94c5f23549debb82 1 71deeb54ae42484db0ae2a81ec2255be RY(iia_α₀₃) 956c080b8bd6498e9858aae2b7904643--71deeb54ae42484db0ae2a81ec2255be 4ad2dbebb31c4e568e47e09eba8793af 71deeb54ae42484db0ae2a81ec2255be--4ad2dbebb31c4e568e47e09eba8793af 7c2a5b3ac11349edb459d6a681e5b71b 4ad2dbebb31c4e568e47e09eba8793af--7c2a5b3ac11349edb459d6a681e5b71b ea8b1f7f1a3346658aed5d68f376fc89 RX(iia_γ₀₀) 7c2a5b3ac11349edb459d6a681e5b71b--ea8b1f7f1a3346658aed5d68f376fc89 d56fe77b41c040b2be493f4d5ad3b57a ea8b1f7f1a3346658aed5d68f376fc89--d56fe77b41c040b2be493f4d5ad3b57a ff4cd702b5764b92add7982f8944a60a d56fe77b41c040b2be493f4d5ad3b57a--ff4cd702b5764b92add7982f8944a60a c4f08a66f2074fab8370ce88fb114a78 RY(iia_β₀₃) ff4cd702b5764b92add7982f8944a60a--c4f08a66f2074fab8370ce88fb114a78 baaf12b3906343ccbcb22c5b12b5ad3d RX(iia_β₀₀) c4f08a66f2074fab8370ce88fb114a78--baaf12b3906343ccbcb22c5b12b5ad3d 8bc98b8b244c4dfdb0b8aaa01beb5261 RX(iia_α₁₀) baaf12b3906343ccbcb22c5b12b5ad3d--8bc98b8b244c4dfdb0b8aaa01beb5261 5de016b6b3ed447db4cbe7f482a3e933 RY(iia_α₁₃) 8bc98b8b244c4dfdb0b8aaa01beb5261--5de016b6b3ed447db4cbe7f482a3e933 d91b06e98ff242999ddc48157a16d192 5de016b6b3ed447db4cbe7f482a3e933--d91b06e98ff242999ddc48157a16d192 ba41316c07a647b398d7bf33b8a88bdb d91b06e98ff242999ddc48157a16d192--ba41316c07a647b398d7bf33b8a88bdb 32c915a8430c4f189b19641fe53d9b85 RX(iia_γ₁₀) ba41316c07a647b398d7bf33b8a88bdb--32c915a8430c4f189b19641fe53d9b85 eb464bbe5cd04ff5abc85afc6955aae2 32c915a8430c4f189b19641fe53d9b85--eb464bbe5cd04ff5abc85afc6955aae2 39c1dab14fa9460abd7e8619b1b66ca4 eb464bbe5cd04ff5abc85afc6955aae2--39c1dab14fa9460abd7e8619b1b66ca4 c42488ebd8d94477bc2d33cffb4101cf RY(iia_β₁₃) 39c1dab14fa9460abd7e8619b1b66ca4--c42488ebd8d94477bc2d33cffb4101cf 111c250242c240a19cec962763088012 RX(iia_β₁₀) c42488ebd8d94477bc2d33cffb4101cf--111c250242c240a19cec962763088012 01e3b1ca3b204f8aa4d6ffdcbde5830f 111c250242c240a19cec962763088012--01e3b1ca3b204f8aa4d6ffdcbde5830f 64d1e56648bc4fcaa73c17d2e5bd3112 4cb95b8b484647dcb66c380333f78ff7 RX(iia_α₀₁) 986cd9ee4633461a94c5f23549debb82--4cb95b8b484647dcb66c380333f78ff7 e9b1e964873d4cdb925720945951f2d0 2 af9177a7ec6f47469a03b71da03dd566 RY(iia_α₀₄) 4cb95b8b484647dcb66c380333f78ff7--af9177a7ec6f47469a03b71da03dd566 ee1d476e565f4707a2a3560b2c3aeb50 X af9177a7ec6f47469a03b71da03dd566--ee1d476e565f4707a2a3560b2c3aeb50 ee1d476e565f4707a2a3560b2c3aeb50--4ad2dbebb31c4e568e47e09eba8793af d133106f49f04eadbf9a3c81f4a4c4ba ee1d476e565f4707a2a3560b2c3aeb50--d133106f49f04eadbf9a3c81f4a4c4ba 939df3153273493e8aecbe94de1038b4 RX(iia_γ₀₁) d133106f49f04eadbf9a3c81f4a4c4ba--939df3153273493e8aecbe94de1038b4 47c251be95864642a1b0ffd430a56a9b 939df3153273493e8aecbe94de1038b4--47c251be95864642a1b0ffd430a56a9b ada6aeb7f99948e3a4f2dbde9d959d12 X 47c251be95864642a1b0ffd430a56a9b--ada6aeb7f99948e3a4f2dbde9d959d12 ada6aeb7f99948e3a4f2dbde9d959d12--ff4cd702b5764b92add7982f8944a60a b2214f5f1d1c48259bf24f8b58527ed6 RY(iia_β₀₄) ada6aeb7f99948e3a4f2dbde9d959d12--b2214f5f1d1c48259bf24f8b58527ed6 eecda8f49c7e4aac853623f3b807a520 RX(iia_β₀₁) b2214f5f1d1c48259bf24f8b58527ed6--eecda8f49c7e4aac853623f3b807a520 b73cb5d63a024c78a2db737f77f45564 RX(iia_α₁₁) eecda8f49c7e4aac853623f3b807a520--b73cb5d63a024c78a2db737f77f45564 d8e94a5d22904f44b802738c0df2b328 RY(iia_α₁₄) b73cb5d63a024c78a2db737f77f45564--d8e94a5d22904f44b802738c0df2b328 f5a3d879aea14988ba17b56597c05e55 X d8e94a5d22904f44b802738c0df2b328--f5a3d879aea14988ba17b56597c05e55 f5a3d879aea14988ba17b56597c05e55--d91b06e98ff242999ddc48157a16d192 f408150cfb344b21bd9fbe6cf6f68bd6 f5a3d879aea14988ba17b56597c05e55--f408150cfb344b21bd9fbe6cf6f68bd6 c2d4e4f6a420460cb7e5dff73473e1fd RX(iia_γ₁₁) f408150cfb344b21bd9fbe6cf6f68bd6--c2d4e4f6a420460cb7e5dff73473e1fd 7375c110906c44b19069aac17b0d2eff c2d4e4f6a420460cb7e5dff73473e1fd--7375c110906c44b19069aac17b0d2eff a693d894456245fe8c86a99a19ef5ed4 X 7375c110906c44b19069aac17b0d2eff--a693d894456245fe8c86a99a19ef5ed4 a693d894456245fe8c86a99a19ef5ed4--39c1dab14fa9460abd7e8619b1b66ca4 9410f0dc610b4947be9381cf76aeb2c4 RY(iia_β₁₄) a693d894456245fe8c86a99a19ef5ed4--9410f0dc610b4947be9381cf76aeb2c4 06249b8fadb74f25baefc7f790fce3aa RX(iia_β₁₁) 9410f0dc610b4947be9381cf76aeb2c4--06249b8fadb74f25baefc7f790fce3aa 06249b8fadb74f25baefc7f790fce3aa--64d1e56648bc4fcaa73c17d2e5bd3112 d9cbf2a3dca64ce79ba1bb42d6e5184d 0d174c4cdfb84bb5b2e9ba35cd49dc4f RX(iia_α₀₂) e9b1e964873d4cdb925720945951f2d0--0d174c4cdfb84bb5b2e9ba35cd49dc4f e15b81581bc9457797f4e8c7a59f641b RY(iia_α₀₅) 0d174c4cdfb84bb5b2e9ba35cd49dc4f--e15b81581bc9457797f4e8c7a59f641b ad36c695b20f43eb96183c06de2d4a7d e15b81581bc9457797f4e8c7a59f641b--ad36c695b20f43eb96183c06de2d4a7d e6a44d5f1d464d9781da2dc649b1853b X ad36c695b20f43eb96183c06de2d4a7d--e6a44d5f1d464d9781da2dc649b1853b e6a44d5f1d464d9781da2dc649b1853b--d133106f49f04eadbf9a3c81f4a4c4ba d204fcf5c0464e66b7189e5e4f08247a RX(iia_γ₀₂) e6a44d5f1d464d9781da2dc649b1853b--d204fcf5c0464e66b7189e5e4f08247a 9e51841411524c18a4aded3a14846aa2 X d204fcf5c0464e66b7189e5e4f08247a--9e51841411524c18a4aded3a14846aa2 9e51841411524c18a4aded3a14846aa2--47c251be95864642a1b0ffd430a56a9b 4029cf72501e4dee84ace60d0acd4669 9e51841411524c18a4aded3a14846aa2--4029cf72501e4dee84ace60d0acd4669 645d9dfe4a524e5d8a89a31edba63f64 RY(iia_β₀₅) 4029cf72501e4dee84ace60d0acd4669--645d9dfe4a524e5d8a89a31edba63f64 e9be64d5e0014de7b4066cdf13e65e65 RX(iia_β₀₂) 645d9dfe4a524e5d8a89a31edba63f64--e9be64d5e0014de7b4066cdf13e65e65 e0ee44f1b32a4f9c9699b75907c4fe98 RX(iia_α₁₂) e9be64d5e0014de7b4066cdf13e65e65--e0ee44f1b32a4f9c9699b75907c4fe98 c91ad33f578848d59dfa6ce531d9eefd RY(iia_α₁₅) e0ee44f1b32a4f9c9699b75907c4fe98--c91ad33f578848d59dfa6ce531d9eefd a08c18cec76f40d3899b36595bcc92ed c91ad33f578848d59dfa6ce531d9eefd--a08c18cec76f40d3899b36595bcc92ed 3e574e779c084cca98812be8127fd5ee X a08c18cec76f40d3899b36595bcc92ed--3e574e779c084cca98812be8127fd5ee 3e574e779c084cca98812be8127fd5ee--f408150cfb344b21bd9fbe6cf6f68bd6 0415d72cba3a4fe69a15bda37b625e7f RX(iia_γ₁₂) 3e574e779c084cca98812be8127fd5ee--0415d72cba3a4fe69a15bda37b625e7f c0915cc64b1e475ca5b2362814218d1b X 0415d72cba3a4fe69a15bda37b625e7f--c0915cc64b1e475ca5b2362814218d1b c0915cc64b1e475ca5b2362814218d1b--7375c110906c44b19069aac17b0d2eff 6e071aa759d9492ca7c0d6e826c7ff05 c0915cc64b1e475ca5b2362814218d1b--6e071aa759d9492ca7c0d6e826c7ff05 763da72f83314fadab19cd7f404ce7cb RY(iia_β₁₅) 6e071aa759d9492ca7c0d6e826c7ff05--763da72f83314fadab19cd7f404ce7cb 0e77fa87f4aa42bf9fa5cc6529e70732 RX(iia_β₁₂) 763da72f83314fadab19cd7f404ce7cb--0e77fa87f4aa42bf9fa5cc6529e70732 0e77fa87f4aa42bf9fa5cc6529e70732--d9cbf2a3dca64ce79ba1bb42d6e5184d