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_0fa486a966e4451f9941b75c79a5a5b8 Constant Chebyshev FM cluster_ec6b1ba57f784d00b2ab1514071a8b9b Constant Fourier FM 1de7c28925214f96a220e79653cd8384 0 73549c250ab54eabaaee451cb624b7ff RX(phi) 1de7c28925214f96a220e79653cd8384--73549c250ab54eabaaee451cb624b7ff ce97348fb6b74727aa0834b412be38e0 1 082ed5d69d114c79bd825a7dd18e7085 RX(acos(phi)) 73549c250ab54eabaaee451cb624b7ff--082ed5d69d114c79bd825a7dd18e7085 cd824e5c20cc4ca2bcda466c7982a862 082ed5d69d114c79bd825a7dd18e7085--cd824e5c20cc4ca2bcda466c7982a862 f090b8b6ddb14b9a917be843fdd97042 a5a808d162774ef6816025a058d3be61 RX(phi) ce97348fb6b74727aa0834b412be38e0--a5a808d162774ef6816025a058d3be61 f6c66a48062c4ea180a03c372e6fea86 2 b78cbbdaf9e9442197bb6acad342e7c6 RX(acos(phi)) a5a808d162774ef6816025a058d3be61--b78cbbdaf9e9442197bb6acad342e7c6 b78cbbdaf9e9442197bb6acad342e7c6--f090b8b6ddb14b9a917be843fdd97042 578b9a5d96ba495388d7769941ca5d3b 4c668b83ccff47378b498a388ca7787a RX(phi) f6c66a48062c4ea180a03c372e6fea86--4c668b83ccff47378b498a388ca7787a 6f6f972e85544a87af20921b9e0bbbb2 RX(acos(phi)) 4c668b83ccff47378b498a388ca7787a--6f6f972e85544a87af20921b9e0bbbb2 6f6f972e85544a87af20921b9e0bbbb2--578b9a5d96ba495388d7769941ca5d3b

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_926febe0ce384c528515c5adf6e5088f Constant <function custom_fn at 0x7fcf4ca76680> FM cluster_d6d66808bf4348ca9400e52b5957fc0e Constant asin FM d0bedc3301e64bf0a693ad83cc2c1916 0 1ed4cb4e2d7e4a628a8ca55153eca84f RX(asin(phi)) d0bedc3301e64bf0a693ad83cc2c1916--1ed4cb4e2d7e4a628a8ca55153eca84f 9c31f5ffbbb64371b60778ef0baa3224 1 b5f6962c11a94b979885baa101999868 RX(phi**2 + asin(phi)) 1ed4cb4e2d7e4a628a8ca55153eca84f--b5f6962c11a94b979885baa101999868 475e53d87d4749e586fe574cb9c6d872 b5f6962c11a94b979885baa101999868--475e53d87d4749e586fe574cb9c6d872 ecf7972404b0435dbbf3eea55761665d 458b27ad2f0a4ca2bac5fa2ca36309eb RX(asin(phi)) 9c31f5ffbbb64371b60778ef0baa3224--458b27ad2f0a4ca2bac5fa2ca36309eb 982bb5cf0f8b4de9900c864a9544bfb9 2 f99a6bdf0ede4ff2bb5e9cb4e3b5c6d5 RX(phi**2 + asin(phi)) 458b27ad2f0a4ca2bac5fa2ca36309eb--f99a6bdf0ede4ff2bb5e9cb4e3b5c6d5 f99a6bdf0ede4ff2bb5e9cb4e3b5c6d5--ecf7972404b0435dbbf3eea55761665d a422794284834cfcb468db7508af5749 c3e3a2b6285d4b1cb74651f55a4c1f3d RX(asin(phi)) 982bb5cf0f8b4de9900c864a9544bfb9--c3e3a2b6285d4b1cb74651f55a4c1f3d c09ca3b2d0284af4a9c6512f234e365f RX(phi**2 + asin(phi)) c3e3a2b6285d4b1cb74651f55a4c1f3d--c09ca3b2d0284af4a9c6512f234e365f c09ca3b2d0284af4a9c6512f234e365f--a422794284834cfcb468db7508af5749

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_7c1e569ac8e34247b3d5b69eee5d8781 Exponential Fourier FM cluster_fd467a1774154cf6892f062d22ea0d50 Constant Fourier FM cluster_811cd7c584784df7984c6dbd64bb8119 Tower Fourier FM 989f6b933cbe4acca90cac90d4276a12 0 4143763e833840fdbbb9fa9372178f2f RX(phi) 989f6b933cbe4acca90cac90d4276a12--4143763e833840fdbbb9fa9372178f2f b48a54526b9d4163b512912bee6f3442 1 44c46ebac4d145ab8726c9c5433ebf1a RX(1.0*phi) 4143763e833840fdbbb9fa9372178f2f--44c46ebac4d145ab8726c9c5433ebf1a 7ca8a1fa52d64de8972fcf362d57d4c8 RX(1.0*phi) 44c46ebac4d145ab8726c9c5433ebf1a--7ca8a1fa52d64de8972fcf362d57d4c8 8147280081f745d88567ff39d39af2a1 7ca8a1fa52d64de8972fcf362d57d4c8--8147280081f745d88567ff39d39af2a1 bbb792d6779844bfbe9af2360ecb4bec 81ddf966e9504ecabf611a745a319a14 RX(phi) b48a54526b9d4163b512912bee6f3442--81ddf966e9504ecabf611a745a319a14 12b2acd41cbe49d4afefaf41c059bb74 2 640f5bf0d59043989374193680e6f76f RX(2.0*phi) 81ddf966e9504ecabf611a745a319a14--640f5bf0d59043989374193680e6f76f 1a95fd311f7241bdb5f7868f231fec84 RX(2.0*phi) 640f5bf0d59043989374193680e6f76f--1a95fd311f7241bdb5f7868f231fec84 1a95fd311f7241bdb5f7868f231fec84--bbb792d6779844bfbe9af2360ecb4bec 3532f646a5f44ef29ac4e96075709378 32bf59dfac0246cabe2964d692d9a6c6 RX(phi) 12b2acd41cbe49d4afefaf41c059bb74--32bf59dfac0246cabe2964d692d9a6c6 8e316292b69647d291cb2b1c81f06d7a 3 ce94308908344990ba0354fe5d1e1ede RX(3.0*phi) 32bf59dfac0246cabe2964d692d9a6c6--ce94308908344990ba0354fe5d1e1ede a973dd786a6b4d7e894bd84610f16ae6 RX(4.0*phi) ce94308908344990ba0354fe5d1e1ede--a973dd786a6b4d7e894bd84610f16ae6 a973dd786a6b4d7e894bd84610f16ae6--3532f646a5f44ef29ac4e96075709378 d8e8c062943043649c97d451822dc6f6 87624da355b14625ae5dc8e98a7c6472 RX(phi) 8e316292b69647d291cb2b1c81f06d7a--87624da355b14625ae5dc8e98a7c6472 b9cc5b4bfbf044e087616376dab8c8e7 4 3914ff36b0024163892f8e03596335bb RX(4.0*phi) 87624da355b14625ae5dc8e98a7c6472--3914ff36b0024163892f8e03596335bb 2e7b44e3945f4877957d606c826326a9 RX(8.0*phi) 3914ff36b0024163892f8e03596335bb--2e7b44e3945f4877957d606c826326a9 2e7b44e3945f4877957d606c826326a9--d8e8c062943043649c97d451822dc6f6 4201a0651a604f579620a4b4338639c6 964dd49f86514a4bb69bd24fbb7153f9 RX(phi) b9cc5b4bfbf044e087616376dab8c8e7--964dd49f86514a4bb69bd24fbb7153f9 7a875d2b0bc84ae9ad8cd755ffbd7d2a RX(5.0*phi) 964dd49f86514a4bb69bd24fbb7153f9--7a875d2b0bc84ae9ad8cd755ffbd7d2a 51695d7e9a63446f909e36ce11ccde9e RX(16.0*phi) 7a875d2b0bc84ae9ad8cd755ffbd7d2a--51695d7e9a63446f909e36ce11ccde9e 51695d7e9a63446f909e36ce11ccde9e--4201a0651a604f579620a4b4338639c6

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 f29d05770ee842e9936f851ad5b1d341 0 db73f76216034c7eadf03842587c2df2 RX(1.0*acos(phi)) f29d05770ee842e9936f851ad5b1d341--db73f76216034c7eadf03842587c2df2 6360006926e045268687811024ab9be8 1 6cffff1c3442454a95880b742a94677b db73f76216034c7eadf03842587c2df2--6cffff1c3442454a95880b742a94677b 4b1bc03b3a7e46f99b4226a5fea1749f 7103a1f0e773407c9d67eafd9cf60cc6 RX(1.414*acos(phi)) 6360006926e045268687811024ab9be8--7103a1f0e773407c9d67eafd9cf60cc6 e636aa0796754e8f9be16921c856cfff 2 7103a1f0e773407c9d67eafd9cf60cc6--4b1bc03b3a7e46f99b4226a5fea1749f 19082ff801dd420c9f39a88938b5f82b 7006bb6dd6644c86802642f7cce8c345 RX(1.732*acos(phi)) e636aa0796754e8f9be16921c856cfff--7006bb6dd6644c86802642f7cce8c345 114fbac20cf440baadc4ba789e355e80 3 7006bb6dd6644c86802642f7cce8c345--19082ff801dd420c9f39a88938b5f82b 8cdd1f45ad4a479d949cd37825cd0b2f 6a2c3830858743e797e3626dd2f14137 RX(2.0*acos(phi)) 114fbac20cf440baadc4ba789e355e80--6a2c3830858743e797e3626dd2f14137 5c1e7c9f9978468eac4da247b0a6d2a2 4 6a2c3830858743e797e3626dd2f14137--8cdd1f45ad4a479d949cd37825cd0b2f 2702a265648342c283958735d09bce05 e738e7462b904105bd2b337805b8d12b RX(2.236*acos(phi)) 5c1e7c9f9978468eac4da247b0a6d2a2--e738e7462b904105bd2b337805b8d12b e738e7462b904105bd2b337805b8d12b--2702a265648342c283958735d09bce05

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 f0e85824fb1d4615b05f0c46799adb3e 0 979dc2015f0e4f958b73771ac648d117 RX(1.0*phi*w₀) f0e85824fb1d4615b05f0c46799adb3e--979dc2015f0e4f958b73771ac648d117 34bc6562e7614c598c3c08d032feecfb 1 8125901ca1184fd3a9d038649aa40d2d 979dc2015f0e4f958b73771ac648d117--8125901ca1184fd3a9d038649aa40d2d 47a32b5da983455fbaff11fd69ae7e51 4a14d7ff15d1437b8d60dbf6c20cd498 RX(2.0*phi*w₁) 34bc6562e7614c598c3c08d032feecfb--4a14d7ff15d1437b8d60dbf6c20cd498 11762968778e4fb7ad869139a801a41f 2 4a14d7ff15d1437b8d60dbf6c20cd498--47a32b5da983455fbaff11fd69ae7e51 ac0adaef78ee400d842d9383c5012029 2d02ebcdeb164933b298fe2f2d903eb1 RX(4.0*phi*w₂) 11762968778e4fb7ad869139a801a41f--2d02ebcdeb164933b298fe2f2d903eb1 3caebe68cb8241d6b87e6aa7ce512560 3 2d02ebcdeb164933b298fe2f2d903eb1--ac0adaef78ee400d842d9383c5012029 05f9fbc07efe4ccdacc9004179338ef1 64fe49189c24437c95779d8797742355 RX(8.0*phi*w₃) 3caebe68cb8241d6b87e6aa7ce512560--64fe49189c24437c95779d8797742355 976158e2dc8b4ae4ba3c6ea115e56d50 4 64fe49189c24437c95779d8797742355--05f9fbc07efe4ccdacc9004179338ef1 9380f93edf64413d9b8dde2e062740b7 e559575d5ee84763a753b361c857424a RX(16.0*phi*w₄) 976158e2dc8b4ae4ba3c6ea115e56d50--e559575d5ee84763a753b361c857424a e559575d5ee84763a753b361c857424a--9380f93edf64413d9b8dde2e062740b7

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 890aefdad64a4b368ed2cf0d0fd168a8 0 d1977820411e4290bfc68cf4f2fe2113 RY(80.0*acos(w₄*(0.667*x + 1.667))) 890aefdad64a4b368ed2cf0d0fd168a8--d1977820411e4290bfc68cf4f2fe2113 da1bf877b0f8431d8421d6cf21144a78 1 56341025f264485eb4be63268c631e7e d1977820411e4290bfc68cf4f2fe2113--56341025f264485eb4be63268c631e7e 36f1cf8be2904536becec73dfce07f6f bc18b0bd665448a1ba3a09a7d54212a0 RY(40.0*acos(w₃*(0.667*x + 1.667))) da1bf877b0f8431d8421d6cf21144a78--bc18b0bd665448a1ba3a09a7d54212a0 920e0020ce0646d89b1e96d716012b3b 2 bc18b0bd665448a1ba3a09a7d54212a0--36f1cf8be2904536becec73dfce07f6f dc6b5b43b7264a82ac5209cd98e67a7b 68c2d9c1a3344b4d8bdcc3b51e8a026e RY(20.0*acos(w₂*(0.667*x + 1.667))) 920e0020ce0646d89b1e96d716012b3b--68c2d9c1a3344b4d8bdcc3b51e8a026e 48c131c3b8994f3e8b11a8245bd0ba38 3 68c2d9c1a3344b4d8bdcc3b51e8a026e--dc6b5b43b7264a82ac5209cd98e67a7b 540cd1048b9c4c9b97a285eeaf0f5a02 fa524f9adf5748f98e59c93476d6d2c5 RY(10.0*acos(w₁*(0.667*x + 1.667))) 48c131c3b8994f3e8b11a8245bd0ba38--fa524f9adf5748f98e59c93476d6d2c5 b06981ae756a4b75b138a7c0c59859c1 4 fa524f9adf5748f98e59c93476d6d2c5--540cd1048b9c4c9b97a285eeaf0f5a02 00cf3b8c232541f093783fa8eece891a 12c70b4298204eea9c03865f60fe7bf0 RY(5.0*acos(w₀*(0.667*x + 1.667))) b06981ae756a4b75b138a7c0c59859c1--12c70b4298204eea9c03865f60fe7bf0 12c70b4298204eea9c03865f60fe7bf0--00cf3b8c232541f093783fa8eece891a

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 4f96b6eb06ae4e79b40a699e4785c6a2 0 8c4b088c11a34bd68bbeb44c4b1822d1 RX(theta₀) 4f96b6eb06ae4e79b40a699e4785c6a2--8c4b088c11a34bd68bbeb44c4b1822d1 cd87536052bb4a1b8a9bcb5607dfe111 1 f755b1f5543a4ebb8e7242c2fdee5f17 RY(theta₃) 8c4b088c11a34bd68bbeb44c4b1822d1--f755b1f5543a4ebb8e7242c2fdee5f17 a175892caf20449dbdefcf834c8cd759 RX(theta₆) f755b1f5543a4ebb8e7242c2fdee5f17--a175892caf20449dbdefcf834c8cd759 02f09c52b0244ad48a9f5acc3de42519 a175892caf20449dbdefcf834c8cd759--02f09c52b0244ad48a9f5acc3de42519 b43d721e6a8d4c22b35a5a988ab04561 02f09c52b0244ad48a9f5acc3de42519--b43d721e6a8d4c22b35a5a988ab04561 83c3196864804e1abdc3a4f2dc6c9ecd RX(theta₉) b43d721e6a8d4c22b35a5a988ab04561--83c3196864804e1abdc3a4f2dc6c9ecd 6dab748060284a8892d57481d49805db RY(theta₁₂) 83c3196864804e1abdc3a4f2dc6c9ecd--6dab748060284a8892d57481d49805db 351f317a5518480092fa5680b2eb32e4 RX(theta₁₅) 6dab748060284a8892d57481d49805db--351f317a5518480092fa5680b2eb32e4 a4fcf0a711bd431bb1a00d89f75c472d 351f317a5518480092fa5680b2eb32e4--a4fcf0a711bd431bb1a00d89f75c472d 7620dd3860784372b747b278ea48463a a4fcf0a711bd431bb1a00d89f75c472d--7620dd3860784372b747b278ea48463a 305a709469874d37a90dbb804bc7c96a 7620dd3860784372b747b278ea48463a--305a709469874d37a90dbb804bc7c96a b12ae94e089347b294d75022da59fc87 60d56557ba504bc08d039badc52647a8 RX(theta₁) cd87536052bb4a1b8a9bcb5607dfe111--60d56557ba504bc08d039badc52647a8 3cf246738dd84d29afb27c27de745ecb 2 ae3fee59b08d449ea26b8e5b80188374 RY(theta₄) 60d56557ba504bc08d039badc52647a8--ae3fee59b08d449ea26b8e5b80188374 348d9db18ece421cbea4a619050a21c6 RX(theta₇) ae3fee59b08d449ea26b8e5b80188374--348d9db18ece421cbea4a619050a21c6 ac3cb03be1d2499fb2125dd8b244aadf X 348d9db18ece421cbea4a619050a21c6--ac3cb03be1d2499fb2125dd8b244aadf ac3cb03be1d2499fb2125dd8b244aadf--02f09c52b0244ad48a9f5acc3de42519 eb582c9b49e442c68e0de1ee6773b2b3 ac3cb03be1d2499fb2125dd8b244aadf--eb582c9b49e442c68e0de1ee6773b2b3 9c85aca87f1e4e889acda0e12e976b63 RX(theta₁₀) eb582c9b49e442c68e0de1ee6773b2b3--9c85aca87f1e4e889acda0e12e976b63 ad6482ba770c479793140564bd1c10e1 RY(theta₁₃) 9c85aca87f1e4e889acda0e12e976b63--ad6482ba770c479793140564bd1c10e1 73101f825f78425a85c33e47334e1818 RX(theta₁₆) ad6482ba770c479793140564bd1c10e1--73101f825f78425a85c33e47334e1818 a417da33cbe047c8839ea96b453e968c X 73101f825f78425a85c33e47334e1818--a417da33cbe047c8839ea96b453e968c a417da33cbe047c8839ea96b453e968c--a4fcf0a711bd431bb1a00d89f75c472d bb11d2c4248f45c094dafd70a661f5cd a417da33cbe047c8839ea96b453e968c--bb11d2c4248f45c094dafd70a661f5cd bb11d2c4248f45c094dafd70a661f5cd--b12ae94e089347b294d75022da59fc87 e9342b454e414d46856da21f618ddfaf d4c9743f7b284f6eb51689efb6317c1b RX(theta₂) 3cf246738dd84d29afb27c27de745ecb--d4c9743f7b284f6eb51689efb6317c1b 7e9f2e09a6ed4488ae5416248a220fa7 RY(theta₅) d4c9743f7b284f6eb51689efb6317c1b--7e9f2e09a6ed4488ae5416248a220fa7 4e06706bced34e0d967c5b49996b7d9e RX(theta₈) 7e9f2e09a6ed4488ae5416248a220fa7--4e06706bced34e0d967c5b49996b7d9e d45a9c13f77f4a7d831324944033cbc6 4e06706bced34e0d967c5b49996b7d9e--d45a9c13f77f4a7d831324944033cbc6 eff6c9549da1426eaaf33ae99b90d506 X d45a9c13f77f4a7d831324944033cbc6--eff6c9549da1426eaaf33ae99b90d506 eff6c9549da1426eaaf33ae99b90d506--eb582c9b49e442c68e0de1ee6773b2b3 207c44345099490b99019763ea6ad46d RX(theta₁₁) eff6c9549da1426eaaf33ae99b90d506--207c44345099490b99019763ea6ad46d 4bd8d7eb26d04fac82643104f461abd0 RY(theta₁₄) 207c44345099490b99019763ea6ad46d--4bd8d7eb26d04fac82643104f461abd0 184ce93c71924beeb4effda95ac8c6e4 RX(theta₁₇) 4bd8d7eb26d04fac82643104f461abd0--184ce93c71924beeb4effda95ac8c6e4 6e5ca5a8a70b406d907547c1319ec5b1 184ce93c71924beeb4effda95ac8c6e4--6e5ca5a8a70b406d907547c1319ec5b1 46692beb8d6a475b96aa85bd8cbd8f6b X 6e5ca5a8a70b406d907547c1319ec5b1--46692beb8d6a475b96aa85bd8cbd8f6b 46692beb8d6a475b96aa85bd8cbd8f6b--bb11d2c4248f45c094dafd70a661f5cd 46692beb8d6a475b96aa85bd8cbd8f6b--e9342b454e414d46856da21f618ddfaf

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 48fdae57e48c4fc3881eac609bbdbf2c 0 d917c6f668fe4daba158d7ff580e6509 RX(phi₀) 48fdae57e48c4fc3881eac609bbdbf2c--d917c6f668fe4daba158d7ff580e6509 c4aa4ee1e0b244e2b50e2dd234379fd0 1 9285a05ecc624217bb06a591a70c813c RY(phi₃) d917c6f668fe4daba158d7ff580e6509--9285a05ecc624217bb06a591a70c813c 0bb530411f654d10b2662ff1be6b4e7c RX(phi₆) 9285a05ecc624217bb06a591a70c813c--0bb530411f654d10b2662ff1be6b4e7c 888f435779254563a93d5a213b992427 0bb530411f654d10b2662ff1be6b4e7c--888f435779254563a93d5a213b992427 4ac4d2819dae4bc6b732a9746b462251 888f435779254563a93d5a213b992427--4ac4d2819dae4bc6b732a9746b462251 bfc0d72f18e346ffbe6f1766eb72ce9f RX(phi₉) 4ac4d2819dae4bc6b732a9746b462251--bfc0d72f18e346ffbe6f1766eb72ce9f f7230cc085564585beb5e161e536a1ae RY(phi₁₂) bfc0d72f18e346ffbe6f1766eb72ce9f--f7230cc085564585beb5e161e536a1ae 7ed4ec620fad4429aa2536c770dacfa0 RX(phi₁₅) f7230cc085564585beb5e161e536a1ae--7ed4ec620fad4429aa2536c770dacfa0 adee14eac15741aa9c14585e95c3fbb8 7ed4ec620fad4429aa2536c770dacfa0--adee14eac15741aa9c14585e95c3fbb8 a6fb997041174350a2bbbb240d60aeb1 adee14eac15741aa9c14585e95c3fbb8--a6fb997041174350a2bbbb240d60aeb1 4afc5a57e1ef433bb8821b340d6d5a70 a6fb997041174350a2bbbb240d60aeb1--4afc5a57e1ef433bb8821b340d6d5a70 3362f842d8f543a087960e21908091e8 e0409e0bc11c4b73ba1490043161dc40 RX(phi₁) c4aa4ee1e0b244e2b50e2dd234379fd0--e0409e0bc11c4b73ba1490043161dc40 d14ffa027ba042ffb3da1522b354d4cd 2 ef3ec181f45f4db8bfff47fe59785ba1 RY(phi₄) e0409e0bc11c4b73ba1490043161dc40--ef3ec181f45f4db8bfff47fe59785ba1 5e20236cbcd242c1a51788cd420fd147 RX(phi₇) ef3ec181f45f4db8bfff47fe59785ba1--5e20236cbcd242c1a51788cd420fd147 587ae7c3bfd544f2bb265f8cfc87f1ab PHASE(phi_ent₀) 5e20236cbcd242c1a51788cd420fd147--587ae7c3bfd544f2bb265f8cfc87f1ab 587ae7c3bfd544f2bb265f8cfc87f1ab--888f435779254563a93d5a213b992427 34ab688740424618a0548d191b3b38c6 587ae7c3bfd544f2bb265f8cfc87f1ab--34ab688740424618a0548d191b3b38c6 b77708af66d1448e8106fa4ba1b300ed RX(phi₁₀) 34ab688740424618a0548d191b3b38c6--b77708af66d1448e8106fa4ba1b300ed 2bddba35687649fba921765258fc43f0 RY(phi₁₃) b77708af66d1448e8106fa4ba1b300ed--2bddba35687649fba921765258fc43f0 1240f00805b54c9d98bcf2d7389fcdae RX(phi₁₆) 2bddba35687649fba921765258fc43f0--1240f00805b54c9d98bcf2d7389fcdae 443cefb90a324047af8f919a2e2f61e7 PHASE(phi_ent₂) 1240f00805b54c9d98bcf2d7389fcdae--443cefb90a324047af8f919a2e2f61e7 443cefb90a324047af8f919a2e2f61e7--adee14eac15741aa9c14585e95c3fbb8 ec6d269d4fc04996be58d066042b780c 443cefb90a324047af8f919a2e2f61e7--ec6d269d4fc04996be58d066042b780c ec6d269d4fc04996be58d066042b780c--3362f842d8f543a087960e21908091e8 ca1c409aa2e844b9b21fd9a5be2314fb cadd50fce39a4183b30f102fd45eb4b5 RX(phi₂) d14ffa027ba042ffb3da1522b354d4cd--cadd50fce39a4183b30f102fd45eb4b5 bf4c7f837b084625b54e9bc50f7fc5df RY(phi₅) cadd50fce39a4183b30f102fd45eb4b5--bf4c7f837b084625b54e9bc50f7fc5df c5d7076d4f12401c9adba3a85d51931a RX(phi₈) bf4c7f837b084625b54e9bc50f7fc5df--c5d7076d4f12401c9adba3a85d51931a db900c0463154ca2be32d63add14458e c5d7076d4f12401c9adba3a85d51931a--db900c0463154ca2be32d63add14458e 1abafa2ebe274631851751326729db68 PHASE(phi_ent₁) db900c0463154ca2be32d63add14458e--1abafa2ebe274631851751326729db68 1abafa2ebe274631851751326729db68--34ab688740424618a0548d191b3b38c6 494405c055e54ebd852c949f90d2b8ea RX(phi₁₁) 1abafa2ebe274631851751326729db68--494405c055e54ebd852c949f90d2b8ea ef7ca60aceae4704b57cca13e630b64d RY(phi₁₄) 494405c055e54ebd852c949f90d2b8ea--ef7ca60aceae4704b57cca13e630b64d d4eb33cbf2bd409fbe3401fcc46c8ff2 RX(phi₁₇) ef7ca60aceae4704b57cca13e630b64d--d4eb33cbf2bd409fbe3401fcc46c8ff2 7b3585d5504f4ee487f7d294d1653029 d4eb33cbf2bd409fbe3401fcc46c8ff2--7b3585d5504f4ee487f7d294d1653029 7ea876a6e97d485294c805eddfc243df PHASE(phi_ent₃) 7b3585d5504f4ee487f7d294d1653029--7ea876a6e97d485294c805eddfc243df 7ea876a6e97d485294c805eddfc243df--ec6d269d4fc04996be58d066042b780c 7ea876a6e97d485294c805eddfc243df--ca1c409aa2e844b9b21fd9a5be2314fb

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_5a7d2c4c9d474981ba2a181523e73484 cluster_a7cf5af3c06e43dea234d4a30b69ed0b 89f877713a1341d089008133ee8bae29 0 d578aad02c524697ab7342f1f3201dfa RX(theta₀) 89f877713a1341d089008133ee8bae29--d578aad02c524697ab7342f1f3201dfa 17d08eb7081d4da5a570885f3e4d1377 1 a81514ae642043e683a6c71f14e9654b RY(theta₃) d578aad02c524697ab7342f1f3201dfa--a81514ae642043e683a6c71f14e9654b 64983baa4241448d94c2d192f11f1e86 RX(theta₆) a81514ae642043e683a6c71f14e9654b--64983baa4241448d94c2d192f11f1e86 24d362e251f849028b4cd8ac69639108 HamEvo 64983baa4241448d94c2d192f11f1e86--24d362e251f849028b4cd8ac69639108 7e96c7b523754d0bbe1ca985cd4f1afb RX(theta₉) 24d362e251f849028b4cd8ac69639108--7e96c7b523754d0bbe1ca985cd4f1afb b84e3248601349859f0b0fbb82fe8713 RY(theta₁₂) 7e96c7b523754d0bbe1ca985cd4f1afb--b84e3248601349859f0b0fbb82fe8713 c729148e6ff244858597ff2922633cdc RX(theta₁₅) b84e3248601349859f0b0fbb82fe8713--c729148e6ff244858597ff2922633cdc ff2dc7cfd09f4f9b87f799375c1e0fac HamEvo c729148e6ff244858597ff2922633cdc--ff2dc7cfd09f4f9b87f799375c1e0fac 8811d42fa9344f098d100d6e2a7583ef ff2dc7cfd09f4f9b87f799375c1e0fac--8811d42fa9344f098d100d6e2a7583ef d81043f6d00a41a4ac1b35b417d1cad4 8218f43ad82640748c178f048eef09c6 RX(theta₁) 17d08eb7081d4da5a570885f3e4d1377--8218f43ad82640748c178f048eef09c6 cdd75e2d53084b8fb356a37d3631a7a2 2 1f4ba04e08824dae90bc63b6f7958d05 RY(theta₄) 8218f43ad82640748c178f048eef09c6--1f4ba04e08824dae90bc63b6f7958d05 4ee3001a5641415cb68020e8ee920553 RX(theta₇) 1f4ba04e08824dae90bc63b6f7958d05--4ee3001a5641415cb68020e8ee920553 ce42cfffca3441a6bd6c03def0029925 t = theta_t₀ 4ee3001a5641415cb68020e8ee920553--ce42cfffca3441a6bd6c03def0029925 be6a6b23d5764e469bc4379616364007 RX(theta₁₀) ce42cfffca3441a6bd6c03def0029925--be6a6b23d5764e469bc4379616364007 9b9711bea9c74d0cb4d81ce04d104d5d RY(theta₁₃) be6a6b23d5764e469bc4379616364007--9b9711bea9c74d0cb4d81ce04d104d5d d32b92dce4734266a9c35df8c4ca8178 RX(theta₁₆) 9b9711bea9c74d0cb4d81ce04d104d5d--d32b92dce4734266a9c35df8c4ca8178 342c7e5a87cd4a8f883a296a8c1ef788 t = theta_t₁ d32b92dce4734266a9c35df8c4ca8178--342c7e5a87cd4a8f883a296a8c1ef788 342c7e5a87cd4a8f883a296a8c1ef788--d81043f6d00a41a4ac1b35b417d1cad4 7f1c25cb14ad49cea5c2e290ca935a1d 805b800b67774a1fba528404aa7e77d5 RX(theta₂) cdd75e2d53084b8fb356a37d3631a7a2--805b800b67774a1fba528404aa7e77d5 fce158fdf9bf432eac288325857ce90d RY(theta₅) 805b800b67774a1fba528404aa7e77d5--fce158fdf9bf432eac288325857ce90d d45b1d796eb641d1be59b6ef03f759b5 RX(theta₈) fce158fdf9bf432eac288325857ce90d--d45b1d796eb641d1be59b6ef03f759b5 7427a1c8d64347f28daa80c34aff59fb d45b1d796eb641d1be59b6ef03f759b5--7427a1c8d64347f28daa80c34aff59fb f196114e5ea741999f1bdc5de8f659c4 RX(theta₁₁) 7427a1c8d64347f28daa80c34aff59fb--f196114e5ea741999f1bdc5de8f659c4 129cc7b14a604bcf8bada04775e12ae8 RY(theta₁₄) f196114e5ea741999f1bdc5de8f659c4--129cc7b14a604bcf8bada04775e12ae8 a3f51632491f4f4687037507f917fa4e RX(theta₁₇) 129cc7b14a604bcf8bada04775e12ae8--a3f51632491f4f4687037507f917fa4e 234369791c9e45408247a799b5d38eeb a3f51632491f4f4687037507f917fa4e--234369791c9e45408247a799b5d38eeb 234369791c9e45408247a799b5d38eeb--7f1c25cb14ad49cea5c2e290ca935a1d

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_ec879d4caf084e938958ecc8e9b6025d cluster_30a0c0f00edc478587e1db82138c11e6 e06915b13f634dab83ab8a1798a48a46 0 97354ffcf9d8480e9e332898753d8b5f RX(theta₀) e06915b13f634dab83ab8a1798a48a46--97354ffcf9d8480e9e332898753d8b5f 671b5c15058c4a4d86781b834991adfa 1 082e025a60dd407ba64d923ca6e6acfa RY(theta₆) 97354ffcf9d8480e9e332898753d8b5f--082e025a60dd407ba64d923ca6e6acfa 4e7c9d09a04a41b2822fb7d2a6621e4a RX(theta₁₂) 082e025a60dd407ba64d923ca6e6acfa--4e7c9d09a04a41b2822fb7d2a6621e4a 2bf47042c4a3434aa5e8b6a5467bc2ad 4e7c9d09a04a41b2822fb7d2a6621e4a--2bf47042c4a3434aa5e8b6a5467bc2ad 21f07b937f2e4067a15b2022f8cac23b RX(theta₁₈) 2bf47042c4a3434aa5e8b6a5467bc2ad--21f07b937f2e4067a15b2022f8cac23b c2b94c91d2924c0c90c4b031f57923df RY(theta₂₄) 21f07b937f2e4067a15b2022f8cac23b--c2b94c91d2924c0c90c4b031f57923df 5af6df012bd843db8b9aa0513e66bbf2 RX(theta₃₀) c2b94c91d2924c0c90c4b031f57923df--5af6df012bd843db8b9aa0513e66bbf2 06fbba17c3824ce1b4e00e8f80c2abf5 5af6df012bd843db8b9aa0513e66bbf2--06fbba17c3824ce1b4e00e8f80c2abf5 581b1edae5324656a98daee52e854692 06fbba17c3824ce1b4e00e8f80c2abf5--581b1edae5324656a98daee52e854692 9a8044ed72e1441aadb12e8d5549f066 da52d90de8e841a580d34d312a2c7fcf RX(theta₁) 671b5c15058c4a4d86781b834991adfa--da52d90de8e841a580d34d312a2c7fcf 49a6df7b3a14447d81ffbb67310d2afd 2 0dd2249c7f6e451db1a95bc40756c74d RY(theta₇) da52d90de8e841a580d34d312a2c7fcf--0dd2249c7f6e451db1a95bc40756c74d 030781ebe5d64c58ba910971c6687d9a RX(theta₁₃) 0dd2249c7f6e451db1a95bc40756c74d--030781ebe5d64c58ba910971c6687d9a 1209afa22c1340cbbe47971d549e8b17 030781ebe5d64c58ba910971c6687d9a--1209afa22c1340cbbe47971d549e8b17 8ded048de5c74e9f89a743a312e984aa RX(theta₁₉) 1209afa22c1340cbbe47971d549e8b17--8ded048de5c74e9f89a743a312e984aa da4c88e3ac694985b2f0a17cc19cea29 RY(theta₂₅) 8ded048de5c74e9f89a743a312e984aa--da4c88e3ac694985b2f0a17cc19cea29 e69a8ac3a5ee49b489cf0e51cf142b87 RX(theta₃₁) da4c88e3ac694985b2f0a17cc19cea29--e69a8ac3a5ee49b489cf0e51cf142b87 eb4a3f351408421281cfb1fe21b288c1 e69a8ac3a5ee49b489cf0e51cf142b87--eb4a3f351408421281cfb1fe21b288c1 eb4a3f351408421281cfb1fe21b288c1--9a8044ed72e1441aadb12e8d5549f066 c7408a3a0209460eb4db062ef986c5b1 26efeff497e544618477d53095ade47d RX(theta₂) 49a6df7b3a14447d81ffbb67310d2afd--26efeff497e544618477d53095ade47d 9e86cb92d0dd4f65b18b0d6a3c1721de 3 230be976076e4e00bcd946e4c8e692c0 RY(theta₈) 26efeff497e544618477d53095ade47d--230be976076e4e00bcd946e4c8e692c0 d90efeb4cc5343bf86de69120dd771fa RX(theta₁₄) 230be976076e4e00bcd946e4c8e692c0--d90efeb4cc5343bf86de69120dd771fa b2333fc7e1804f1eb0d75354befaebaa HamEvo d90efeb4cc5343bf86de69120dd771fa--b2333fc7e1804f1eb0d75354befaebaa 933b76c93a6c499189a2da2f6a858096 RX(theta₂₀) b2333fc7e1804f1eb0d75354befaebaa--933b76c93a6c499189a2da2f6a858096 6f3708af7acf4f77ab6b054c8fec1f5f RY(theta₂₆) 933b76c93a6c499189a2da2f6a858096--6f3708af7acf4f77ab6b054c8fec1f5f 846279cabfee41ec8bf27a85418749d2 RX(theta₃₂) 6f3708af7acf4f77ab6b054c8fec1f5f--846279cabfee41ec8bf27a85418749d2 e559f286c5fe46ef86dadd10a25468e0 HamEvo 846279cabfee41ec8bf27a85418749d2--e559f286c5fe46ef86dadd10a25468e0 e559f286c5fe46ef86dadd10a25468e0--c7408a3a0209460eb4db062ef986c5b1 221bcb8ce49c4e62aeca170f4a4acca1 2cde677d70904cc0bb772a51d5912e70 RX(theta₃) 9e86cb92d0dd4f65b18b0d6a3c1721de--2cde677d70904cc0bb772a51d5912e70 8362a20fe15e469eb5dc1d3a1c01f0c4 4 0224e10439fe4946b283af9ead50d0cd RY(theta₉) 2cde677d70904cc0bb772a51d5912e70--0224e10439fe4946b283af9ead50d0cd b92cfdb13bcf477aae30a29988d85291 RX(theta₁₅) 0224e10439fe4946b283af9ead50d0cd--b92cfdb13bcf477aae30a29988d85291 ce71eb728fb045819747d1a1b37f1474 t = theta_t₀ b92cfdb13bcf477aae30a29988d85291--ce71eb728fb045819747d1a1b37f1474 262835a879ff400bb72813fcd029d2e3 RX(theta₂₁) ce71eb728fb045819747d1a1b37f1474--262835a879ff400bb72813fcd029d2e3 277b0b89cc764784ad9b9a13790f602f RY(theta₂₇) 262835a879ff400bb72813fcd029d2e3--277b0b89cc764784ad9b9a13790f602f 0e667c313330413da2080948c6273f58 RX(theta₃₃) 277b0b89cc764784ad9b9a13790f602f--0e667c313330413da2080948c6273f58 e0c9e4794ef24551b4df3dceac247226 t = theta_t₁ 0e667c313330413da2080948c6273f58--e0c9e4794ef24551b4df3dceac247226 e0c9e4794ef24551b4df3dceac247226--221bcb8ce49c4e62aeca170f4a4acca1 8c10e95ab78c4a738f8cb09b4d48a1a8 89efd23d381c49a9b88d423061194340 RX(theta₄) 8362a20fe15e469eb5dc1d3a1c01f0c4--89efd23d381c49a9b88d423061194340 82987ada59bf41659fd436cd39fa963c 5 8d800b66d5294765ae4dfe21db228764 RY(theta₁₀) 89efd23d381c49a9b88d423061194340--8d800b66d5294765ae4dfe21db228764 b8d96de2f26e4e28b80d93fa9c9e26aa RX(theta₁₆) 8d800b66d5294765ae4dfe21db228764--b8d96de2f26e4e28b80d93fa9c9e26aa b74136a6925c48d18560cd3d2958e8fa b8d96de2f26e4e28b80d93fa9c9e26aa--b74136a6925c48d18560cd3d2958e8fa 51042c9dbbec4fc89641d5539ae1a82b RX(theta₂₂) b74136a6925c48d18560cd3d2958e8fa--51042c9dbbec4fc89641d5539ae1a82b 10716020095a429295f80641ba9bd11a RY(theta₂₈) 51042c9dbbec4fc89641d5539ae1a82b--10716020095a429295f80641ba9bd11a 87f67f2c34364fb890d34eab8b521b70 RX(theta₃₄) 10716020095a429295f80641ba9bd11a--87f67f2c34364fb890d34eab8b521b70 30035eb66b504323af09aa07043daae8 87f67f2c34364fb890d34eab8b521b70--30035eb66b504323af09aa07043daae8 30035eb66b504323af09aa07043daae8--8c10e95ab78c4a738f8cb09b4d48a1a8 61dca2e532444c359c2996c6030f2f6f 13337821198b4a55944f4fcec9b45aed RX(theta₅) 82987ada59bf41659fd436cd39fa963c--13337821198b4a55944f4fcec9b45aed f2314028ba894d398bd2165d8964d5af RY(theta₁₁) 13337821198b4a55944f4fcec9b45aed--f2314028ba894d398bd2165d8964d5af 29e9ab30c9124e2486242d863c031ff2 RX(theta₁₇) f2314028ba894d398bd2165d8964d5af--29e9ab30c9124e2486242d863c031ff2 0f272b4972924a1aaa0a349ac79e124f 29e9ab30c9124e2486242d863c031ff2--0f272b4972924a1aaa0a349ac79e124f 07736834858949c0ad87378fdd9c2835 RX(theta₂₃) 0f272b4972924a1aaa0a349ac79e124f--07736834858949c0ad87378fdd9c2835 9a5c67b6758347bf9f8e2ccc2c03937b RY(theta₂₉) 07736834858949c0ad87378fdd9c2835--9a5c67b6758347bf9f8e2ccc2c03937b 73a2a07c1e8a4af9bbe71ca8a3e6a95e RX(theta₃₅) 9a5c67b6758347bf9f8e2ccc2c03937b--73a2a07c1e8a4af9bbe71ca8a3e6a95e 0f4ad6a1b59041958e68160e0d87f1bc 73a2a07c1e8a4af9bbe71ca8a3e6a95e--0f4ad6a1b59041958e68160e0d87f1bc 0f4ad6a1b59041958e68160e0d87f1bc--61dca2e532444c359c2996c6030f2f6f

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_3bba864a77bf49bd870dbafeeec3e539 BPMA-1 cluster_396b03a547f04c16be0a22b18a3333a4 BPMA-0 f66de7718e794f5e9c1af5a0d20be9f7 0 e39107545bda45398e9d954bc6c0ad8e RX(iia_α₀₀) f66de7718e794f5e9c1af5a0d20be9f7--e39107545bda45398e9d954bc6c0ad8e 89ab8188efd74e3e8a20d22c442afdf7 1 09f7045df2b84115ae5aa7830339d301 RY(iia_α₀₃) e39107545bda45398e9d954bc6c0ad8e--09f7045df2b84115ae5aa7830339d301 a78f2fe14f764ccf8d02c3d6f18b65cf 09f7045df2b84115ae5aa7830339d301--a78f2fe14f764ccf8d02c3d6f18b65cf 623958d7bd1a46b7bfaa3f1e91977c93 a78f2fe14f764ccf8d02c3d6f18b65cf--623958d7bd1a46b7bfaa3f1e91977c93 c6ae0b3be3f14aeaa58daaa1f145c2be RX(iia_γ₀₀) 623958d7bd1a46b7bfaa3f1e91977c93--c6ae0b3be3f14aeaa58daaa1f145c2be 9230c5e71a5c4a60b327c6fff230db7e c6ae0b3be3f14aeaa58daaa1f145c2be--9230c5e71a5c4a60b327c6fff230db7e 4af1f48ec529449f8b4318c5531a8eac 9230c5e71a5c4a60b327c6fff230db7e--4af1f48ec529449f8b4318c5531a8eac b72475f9fa3d46c9a373bd8af2c0fb92 RY(iia_β₀₃) 4af1f48ec529449f8b4318c5531a8eac--b72475f9fa3d46c9a373bd8af2c0fb92 0857a3d6fa04499d90e5137c3f48c5b5 RX(iia_β₀₀) b72475f9fa3d46c9a373bd8af2c0fb92--0857a3d6fa04499d90e5137c3f48c5b5 6465274fc2384cfbb7aa009c56228450 RX(iia_α₁₀) 0857a3d6fa04499d90e5137c3f48c5b5--6465274fc2384cfbb7aa009c56228450 fe9338894abc46cb801862598ccda0f6 RY(iia_α₁₃) 6465274fc2384cfbb7aa009c56228450--fe9338894abc46cb801862598ccda0f6 0e4612d337a34c84bd0f1e124ce1ba1b fe9338894abc46cb801862598ccda0f6--0e4612d337a34c84bd0f1e124ce1ba1b 8eb3285e90294494a3afb9e40c2a0605 0e4612d337a34c84bd0f1e124ce1ba1b--8eb3285e90294494a3afb9e40c2a0605 55a323061a3f496bb04cfa590bc538d6 RX(iia_γ₁₀) 8eb3285e90294494a3afb9e40c2a0605--55a323061a3f496bb04cfa590bc538d6 625d92e9c61c42ed84ae314ebc0c7278 55a323061a3f496bb04cfa590bc538d6--625d92e9c61c42ed84ae314ebc0c7278 57d4136ec0a54776b41d80493688a479 625d92e9c61c42ed84ae314ebc0c7278--57d4136ec0a54776b41d80493688a479 6c32ad7ca90b41e1ad0b000ba60ca073 RY(iia_β₁₃) 57d4136ec0a54776b41d80493688a479--6c32ad7ca90b41e1ad0b000ba60ca073 cbf3770c1dbf4338a7df1275d8f6542e RX(iia_β₁₀) 6c32ad7ca90b41e1ad0b000ba60ca073--cbf3770c1dbf4338a7df1275d8f6542e 84d7472c6ec540b7829e799e0b999b29 cbf3770c1dbf4338a7df1275d8f6542e--84d7472c6ec540b7829e799e0b999b29 aef8392d023e470b82ad63d4ecbad4ec 9fc075de700d4bc7a9413bd1b3425bfc RX(iia_α₀₁) 89ab8188efd74e3e8a20d22c442afdf7--9fc075de700d4bc7a9413bd1b3425bfc 0bde8114d3164460b539f4bc155bdc99 2 11b353c912224af79afacfe3b00f7a3f RY(iia_α₀₄) 9fc075de700d4bc7a9413bd1b3425bfc--11b353c912224af79afacfe3b00f7a3f af3c87a6fe65489faea167e6291d0c62 X 11b353c912224af79afacfe3b00f7a3f--af3c87a6fe65489faea167e6291d0c62 af3c87a6fe65489faea167e6291d0c62--a78f2fe14f764ccf8d02c3d6f18b65cf b9d4aaa6b4b64df9abc3bf062b3894c5 af3c87a6fe65489faea167e6291d0c62--b9d4aaa6b4b64df9abc3bf062b3894c5 d78c949ea86f477ca872b0c2e4958467 RX(iia_γ₀₁) b9d4aaa6b4b64df9abc3bf062b3894c5--d78c949ea86f477ca872b0c2e4958467 167e50e6ff7b47d5ac03fd653295bf7f d78c949ea86f477ca872b0c2e4958467--167e50e6ff7b47d5ac03fd653295bf7f a03d52a7dd8c4ae1ad775cd66111df66 X 167e50e6ff7b47d5ac03fd653295bf7f--a03d52a7dd8c4ae1ad775cd66111df66 a03d52a7dd8c4ae1ad775cd66111df66--4af1f48ec529449f8b4318c5531a8eac 4b9cab5ae18045bcb349981512a1b263 RY(iia_β₀₄) a03d52a7dd8c4ae1ad775cd66111df66--4b9cab5ae18045bcb349981512a1b263 f1653bfad5934c6ab887591671a404c8 RX(iia_β₀₁) 4b9cab5ae18045bcb349981512a1b263--f1653bfad5934c6ab887591671a404c8 dcdeedba5cc347c4b2eb71b5490cd4b7 RX(iia_α₁₁) f1653bfad5934c6ab887591671a404c8--dcdeedba5cc347c4b2eb71b5490cd4b7 da9902728517494b82efa305fb3d5a95 RY(iia_α₁₄) dcdeedba5cc347c4b2eb71b5490cd4b7--da9902728517494b82efa305fb3d5a95 aef2fe071490422d9ef949c9583bf51e X da9902728517494b82efa305fb3d5a95--aef2fe071490422d9ef949c9583bf51e aef2fe071490422d9ef949c9583bf51e--0e4612d337a34c84bd0f1e124ce1ba1b 2320df9093a74e119e09f912f603f1c9 aef2fe071490422d9ef949c9583bf51e--2320df9093a74e119e09f912f603f1c9 109b8c81f419450b81b02b4490b4e25c RX(iia_γ₁₁) 2320df9093a74e119e09f912f603f1c9--109b8c81f419450b81b02b4490b4e25c e5399b1f3eca458d8e9b27ba5bce3956 109b8c81f419450b81b02b4490b4e25c--e5399b1f3eca458d8e9b27ba5bce3956 84d364371f5a454c93d64c076d8e98c0 X e5399b1f3eca458d8e9b27ba5bce3956--84d364371f5a454c93d64c076d8e98c0 84d364371f5a454c93d64c076d8e98c0--57d4136ec0a54776b41d80493688a479 a029236b74514907abf272ae27155123 RY(iia_β₁₄) 84d364371f5a454c93d64c076d8e98c0--a029236b74514907abf272ae27155123 c717e23e9f1d4f0393e7aa36fe0b3266 RX(iia_β₁₁) a029236b74514907abf272ae27155123--c717e23e9f1d4f0393e7aa36fe0b3266 c717e23e9f1d4f0393e7aa36fe0b3266--aef8392d023e470b82ad63d4ecbad4ec b4380cd296134dc6a6a129df679209a9 1903dc9b4ab9413585989d26b7752979 RX(iia_α₀₂) 0bde8114d3164460b539f4bc155bdc99--1903dc9b4ab9413585989d26b7752979 f24a012459d345c68a4280bbca6927c8 RY(iia_α₀₅) 1903dc9b4ab9413585989d26b7752979--f24a012459d345c68a4280bbca6927c8 abc007db87cd466d8b4bfdf1460271ad f24a012459d345c68a4280bbca6927c8--abc007db87cd466d8b4bfdf1460271ad 98ba1c057513452c87c9710b1d1d259d X abc007db87cd466d8b4bfdf1460271ad--98ba1c057513452c87c9710b1d1d259d 98ba1c057513452c87c9710b1d1d259d--b9d4aaa6b4b64df9abc3bf062b3894c5 e0d9ed088644437badc870a67889ea14 RX(iia_γ₀₂) 98ba1c057513452c87c9710b1d1d259d--e0d9ed088644437badc870a67889ea14 eaac7f7c7dfd4f508dd4c6ae69d869a8 X e0d9ed088644437badc870a67889ea14--eaac7f7c7dfd4f508dd4c6ae69d869a8 eaac7f7c7dfd4f508dd4c6ae69d869a8--167e50e6ff7b47d5ac03fd653295bf7f 02424d47be7b44b9b6da1f53eddd122c eaac7f7c7dfd4f508dd4c6ae69d869a8--02424d47be7b44b9b6da1f53eddd122c 2c83bd2bfc0d4ffaae6d05c743d67175 RY(iia_β₀₅) 02424d47be7b44b9b6da1f53eddd122c--2c83bd2bfc0d4ffaae6d05c743d67175 7ba0c6965ee74ac3bffe0eac6f06a57f RX(iia_β₀₂) 2c83bd2bfc0d4ffaae6d05c743d67175--7ba0c6965ee74ac3bffe0eac6f06a57f ac611a2e254b4902b1c9488db8f8a6d6 RX(iia_α₁₂) 7ba0c6965ee74ac3bffe0eac6f06a57f--ac611a2e254b4902b1c9488db8f8a6d6 86f2d404aaf749b68463b1f7edfe4189 RY(iia_α₁₅) ac611a2e254b4902b1c9488db8f8a6d6--86f2d404aaf749b68463b1f7edfe4189 514567da9ec14464b8d931f738710080 86f2d404aaf749b68463b1f7edfe4189--514567da9ec14464b8d931f738710080 be26c80e2e3f4f3cb0a6a187d989d636 X 514567da9ec14464b8d931f738710080--be26c80e2e3f4f3cb0a6a187d989d636 be26c80e2e3f4f3cb0a6a187d989d636--2320df9093a74e119e09f912f603f1c9 ad5724e5bf5a4cda8a15921e48cddd9e RX(iia_γ₁₂) be26c80e2e3f4f3cb0a6a187d989d636--ad5724e5bf5a4cda8a15921e48cddd9e f2df417ab2eb4b6ab96e7dd2ced051ab X ad5724e5bf5a4cda8a15921e48cddd9e--f2df417ab2eb4b6ab96e7dd2ced051ab f2df417ab2eb4b6ab96e7dd2ced051ab--e5399b1f3eca458d8e9b27ba5bce3956 e5265d5b9fed4a71b92e3eff4726b668 f2df417ab2eb4b6ab96e7dd2ced051ab--e5265d5b9fed4a71b92e3eff4726b668 cbd1184a5c62497c8bb0795986a1adbe RY(iia_β₁₅) e5265d5b9fed4a71b92e3eff4726b668--cbd1184a5c62497c8bb0795986a1adbe 05df34c9ad6a44cc96765c3b9f0d56c4 RX(iia_β₁₂) cbd1184a5c62497c8bb0795986a1adbe--05df34c9ad6a44cc96765c3b9f0d56c4 05df34c9ad6a44cc96765c3b9f0d56c4--b4380cd296134dc6a6a129df679209a9