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_01bf6b270de74a1d88f9fe79637175ce Constant Chebyshev FM cluster_07e911d2557c4b73ac18f0ec0dd4802e Constant Fourier FM d5cddf54507c466c8e1fc7ed98f1e4f9 0 6867ddaabae841319da742c0a5a3d664 RX(phi) d5cddf54507c466c8e1fc7ed98f1e4f9--6867ddaabae841319da742c0a5a3d664 ec25d65e6b0645e78a396e509d49e7c6 1 51a6ceedb95643d5b0922bbdbc4bf9c2 RX(acos(phi)) 6867ddaabae841319da742c0a5a3d664--51a6ceedb95643d5b0922bbdbc4bf9c2 0ab82b837ed74b56a674b59b39f9abdb 51a6ceedb95643d5b0922bbdbc4bf9c2--0ab82b837ed74b56a674b59b39f9abdb 0075ce2fd8284b5391f7fc5cd4c52390 3bd38570a5514f988cf5006ea35f0319 RX(phi) ec25d65e6b0645e78a396e509d49e7c6--3bd38570a5514f988cf5006ea35f0319 ff45fc3c2512474aa021f35c1d6d4031 2 5e04aae287244e419524d76ddb41cd94 RX(acos(phi)) 3bd38570a5514f988cf5006ea35f0319--5e04aae287244e419524d76ddb41cd94 5e04aae287244e419524d76ddb41cd94--0075ce2fd8284b5391f7fc5cd4c52390 32ac1a0277b740a590748b426adb470d 299e9e1d518d4858a83337c444723796 RX(phi) ff45fc3c2512474aa021f35c1d6d4031--299e9e1d518d4858a83337c444723796 9bd7e453d9ad40f685a7f4e67be1404d RX(acos(phi)) 299e9e1d518d4858a83337c444723796--9bd7e453d9ad40f685a7f4e67be1404d 9bd7e453d9ad40f685a7f4e67be1404d--32ac1a0277b740a590748b426adb470d

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_9a924a84d1564e89ba339700341aac75 Constant <function custom_fn at 0x7f926859bf40> FM cluster_b0cbeca295ee45d19c1f9f1544a7b462 Constant asin FM 679958688a5941769f4027b4c544be12 0 391c72213af44132b7d8158d22bc764d RX(asin(phi)) 679958688a5941769f4027b4c544be12--391c72213af44132b7d8158d22bc764d b3a5fca180b54a308d94baf09291ecb1 1 b7bcd98cc01c45a792e77aedb7159832 RX(phi**2 + asin(phi)) 391c72213af44132b7d8158d22bc764d--b7bcd98cc01c45a792e77aedb7159832 412ae9878c1e4aa7a90b1ec4f72899de b7bcd98cc01c45a792e77aedb7159832--412ae9878c1e4aa7a90b1ec4f72899de cfad3bef01f942fd81225113aee9c56e 70343e782beb494fb23974af043e16fb RX(asin(phi)) b3a5fca180b54a308d94baf09291ecb1--70343e782beb494fb23974af043e16fb c238a62b0e1149b3a6676ec51ee75e21 2 061cc647c9ef43a39f6e95032a39d94b RX(phi**2 + asin(phi)) 70343e782beb494fb23974af043e16fb--061cc647c9ef43a39f6e95032a39d94b 061cc647c9ef43a39f6e95032a39d94b--cfad3bef01f942fd81225113aee9c56e 78f4a8571f584a369a057ce8c287a236 1589f81c4f8c41e68b54edb1a0956126 RX(asin(phi)) c238a62b0e1149b3a6676ec51ee75e21--1589f81c4f8c41e68b54edb1a0956126 65b62d2192554741a2e260e1f012d0be RX(phi**2 + asin(phi)) 1589f81c4f8c41e68b54edb1a0956126--65b62d2192554741a2e260e1f012d0be 65b62d2192554741a2e260e1f012d0be--78f4a8571f584a369a057ce8c287a236

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_a7bdbd487dfd4c089855dc610bf1349d Exponential Fourier FM cluster_5c1d35a98d3f4361ac179ebcbecf2a3d Constant Fourier FM cluster_bd4c934407ec44f9b486068f2dcf8204 Tower Fourier FM d6523501bd4841bb923f3760d6d3174f 0 80d5cb7497ca45d2b420e3b130de72e1 RX(phi) d6523501bd4841bb923f3760d6d3174f--80d5cb7497ca45d2b420e3b130de72e1 3f07dc3f73f844228af8ff17daa091b5 1 19701a9507f545bb91e79235b30368ca RX(1.0*phi) 80d5cb7497ca45d2b420e3b130de72e1--19701a9507f545bb91e79235b30368ca d37a5e52f9374b67bb6f066d0bb70c7b RX(1.0*phi) 19701a9507f545bb91e79235b30368ca--d37a5e52f9374b67bb6f066d0bb70c7b 6bd6594093854815b1f4c06989b5ddd6 d37a5e52f9374b67bb6f066d0bb70c7b--6bd6594093854815b1f4c06989b5ddd6 6753013b14f349bda6e96a6cd3a0f419 37be58de61a74eea94da2624e3ef5be4 RX(phi) 3f07dc3f73f844228af8ff17daa091b5--37be58de61a74eea94da2624e3ef5be4 575d74621f4747b293db090d60277c6a 2 0fef373236ff40ed8f659879c9141942 RX(2.0*phi) 37be58de61a74eea94da2624e3ef5be4--0fef373236ff40ed8f659879c9141942 fbd30a98de3b40c081e559bab14b9e68 RX(2.0*phi) 0fef373236ff40ed8f659879c9141942--fbd30a98de3b40c081e559bab14b9e68 fbd30a98de3b40c081e559bab14b9e68--6753013b14f349bda6e96a6cd3a0f419 f2b274ee402647188261863a7caf5f82 10f0ef7cf43c4effb1ad1b7e91e5ca85 RX(phi) 575d74621f4747b293db090d60277c6a--10f0ef7cf43c4effb1ad1b7e91e5ca85 0afa2e50d6e840d9960809996eb837c9 3 c12e5686abee4b3ab68db77b53590c50 RX(3.0*phi) 10f0ef7cf43c4effb1ad1b7e91e5ca85--c12e5686abee4b3ab68db77b53590c50 c689e4713652475e80ee7635fc7a7fa7 RX(4.0*phi) c12e5686abee4b3ab68db77b53590c50--c689e4713652475e80ee7635fc7a7fa7 c689e4713652475e80ee7635fc7a7fa7--f2b274ee402647188261863a7caf5f82 9b76b401bbc24b91b767df052b8c1ae0 2fdf9ffbdf704057a9de91e3a48e5a51 RX(phi) 0afa2e50d6e840d9960809996eb837c9--2fdf9ffbdf704057a9de91e3a48e5a51 72b8a2d43f32421ab3a185a7a25b595e 4 f974c75f835a40a39a3972f9f52ef324 RX(4.0*phi) 2fdf9ffbdf704057a9de91e3a48e5a51--f974c75f835a40a39a3972f9f52ef324 659b10e4629c469a99b47ba5d30dec48 RX(8.0*phi) f974c75f835a40a39a3972f9f52ef324--659b10e4629c469a99b47ba5d30dec48 659b10e4629c469a99b47ba5d30dec48--9b76b401bbc24b91b767df052b8c1ae0 1eacb2a8cd304b19aecd135893dd02b1 bf643382d3774eae863caa003a0e32d0 RX(phi) 72b8a2d43f32421ab3a185a7a25b595e--bf643382d3774eae863caa003a0e32d0 0fac07ec8fb34d29b984fb14293f5314 RX(5.0*phi) bf643382d3774eae863caa003a0e32d0--0fac07ec8fb34d29b984fb14293f5314 e33838ce8bd549d9ba656aae7afb05e1 RX(16.0*phi) 0fac07ec8fb34d29b984fb14293f5314--e33838ce8bd549d9ba656aae7afb05e1 e33838ce8bd549d9ba656aae7afb05e1--1eacb2a8cd304b19aecd135893dd02b1

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 1a7301e37f0e475bafb810a955d026ce 0 b1b3ba51314949a8aed52c26021996a3 RX(1.0*acos(phi)) 1a7301e37f0e475bafb810a955d026ce--b1b3ba51314949a8aed52c26021996a3 cbf9b3203be24ad1b74cb4c8eac847ca 1 7a52f3a8de8a48c8bb9ff1582094364b b1b3ba51314949a8aed52c26021996a3--7a52f3a8de8a48c8bb9ff1582094364b 209ba0abacbd477a86be9fe6541d468f 21b9784d3f904c7abb274ae8e61e132d RX(1.414*acos(phi)) cbf9b3203be24ad1b74cb4c8eac847ca--21b9784d3f904c7abb274ae8e61e132d f39d277f01664c9991c7f62b5e2429b5 2 21b9784d3f904c7abb274ae8e61e132d--209ba0abacbd477a86be9fe6541d468f f0aeb484918e4eada99d14d3d1008b48 2bdca2924bab4d428a8bdd6b9366e2a9 RX(1.732*acos(phi)) f39d277f01664c9991c7f62b5e2429b5--2bdca2924bab4d428a8bdd6b9366e2a9 fe822dbc47514839a670175efaa5fb63 3 2bdca2924bab4d428a8bdd6b9366e2a9--f0aeb484918e4eada99d14d3d1008b48 5f97562310394935a1e4e42a6a23df08 20e3ba92f7e848e2bea566acaf1dff8c RX(2.0*acos(phi)) fe822dbc47514839a670175efaa5fb63--20e3ba92f7e848e2bea566acaf1dff8c f22f793e25334076996b22666133998e 4 20e3ba92f7e848e2bea566acaf1dff8c--5f97562310394935a1e4e42a6a23df08 3106befbe88f4bab914fe6be516b1ff8 3fc32cf7845f425fbf1c57e92b4fd944 RX(2.236*acos(phi)) f22f793e25334076996b22666133998e--3fc32cf7845f425fbf1c57e92b4fd944 3fc32cf7845f425fbf1c57e92b4fd944--3106befbe88f4bab914fe6be516b1ff8

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 dfc97c9a284c4d4cbafb10df14479cbc 0 5391d102fde7495eb22ae9dab951acad RX(1.0*phi*w₀) dfc97c9a284c4d4cbafb10df14479cbc--5391d102fde7495eb22ae9dab951acad 4e4d9d7c9e4b470fa49e1d684ba34cf3 1 471c148be6354d5a97d9b53f2c2b05d3 5391d102fde7495eb22ae9dab951acad--471c148be6354d5a97d9b53f2c2b05d3 424a682a08864409b97938331d55e0b6 6546d4c498a8439997c9f915d7dafd3b RX(2.0*phi*w₁) 4e4d9d7c9e4b470fa49e1d684ba34cf3--6546d4c498a8439997c9f915d7dafd3b ec7fa4bd4dc74ef79b1bd0b83f3b0f53 2 6546d4c498a8439997c9f915d7dafd3b--424a682a08864409b97938331d55e0b6 362f9746860844ca9969114d2d8d31b3 a3c35ebd30ac4a7ba562a0ca4f0f886e RX(4.0*phi*w₂) ec7fa4bd4dc74ef79b1bd0b83f3b0f53--a3c35ebd30ac4a7ba562a0ca4f0f886e 9193f80a44b940109a93d908981d5f41 3 a3c35ebd30ac4a7ba562a0ca4f0f886e--362f9746860844ca9969114d2d8d31b3 3eb4dfd75a7945499ae6cb10f8306a74 eb560b5333e44c4b9dff6e3187947d83 RX(8.0*phi*w₃) 9193f80a44b940109a93d908981d5f41--eb560b5333e44c4b9dff6e3187947d83 d3a11bc6ae9e4c1499e59d0ef6d20953 4 eb560b5333e44c4b9dff6e3187947d83--3eb4dfd75a7945499ae6cb10f8306a74 d9421027227b4265b163420aca2fce14 ac5a621628db4b9fa2fe67e370772e04 RX(16.0*phi*w₄) d3a11bc6ae9e4c1499e59d0ef6d20953--ac5a621628db4b9fa2fe67e370772e04 ac5a621628db4b9fa2fe67e370772e04--d9421027227b4265b163420aca2fce14

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 9e4efaad676245ccb97cb7136273596d 0 30de73993afd48a09c246d0179a67950 RY(80.0*acos(w₄*(0.667*x + 1.667))) 9e4efaad676245ccb97cb7136273596d--30de73993afd48a09c246d0179a67950 934416ea027f4eeaa1a990c784b49858 1 a70e8ae35a234694a82f4e910c12a9df 30de73993afd48a09c246d0179a67950--a70e8ae35a234694a82f4e910c12a9df 65b58695de6849ae9fe3e96a9f20a7e5 ce49e0806d6d4aae8f28c14f2fab8454 RY(40.0*acos(w₃*(0.667*x + 1.667))) 934416ea027f4eeaa1a990c784b49858--ce49e0806d6d4aae8f28c14f2fab8454 efaf3fedf895437f9c67efe083c9e47d 2 ce49e0806d6d4aae8f28c14f2fab8454--65b58695de6849ae9fe3e96a9f20a7e5 d877e93be6bb4c4aa2cfb46e9903347a a09020e45d0946d086231d2ae12b91a0 RY(20.0*acos(w₂*(0.667*x + 1.667))) efaf3fedf895437f9c67efe083c9e47d--a09020e45d0946d086231d2ae12b91a0 ed89aa1444834b9da719d482595d2ea0 3 a09020e45d0946d086231d2ae12b91a0--d877e93be6bb4c4aa2cfb46e9903347a 913465f9c3d14a28aa9c83da3865ca78 494c93e0c73d46f4a0559b1dfc15cc79 RY(10.0*acos(w₁*(0.667*x + 1.667))) ed89aa1444834b9da719d482595d2ea0--494c93e0c73d46f4a0559b1dfc15cc79 3b98b9c5182c49ce82fdc0966fd9fcdc 4 494c93e0c73d46f4a0559b1dfc15cc79--913465f9c3d14a28aa9c83da3865ca78 ea70345f001545e5a7b5381c0d491abc 71893b0cf1b84c9cb2a33f61f4ea10e3 RY(5.0*acos(w₀*(0.667*x + 1.667))) 3b98b9c5182c49ce82fdc0966fd9fcdc--71893b0cf1b84c9cb2a33f61f4ea10e3 71893b0cf1b84c9cb2a33f61f4ea10e3--ea70345f001545e5a7b5381c0d491abc

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 35f3b2d320e044219230516ab738b82e 0 25e87002980e453ab427e91cb87062a0 RX(theta₀) 35f3b2d320e044219230516ab738b82e--25e87002980e453ab427e91cb87062a0 ad8d1307c703452a81562789c66d44b9 1 004a1ff2815b40428aa7f30ba7b415a4 RY(theta₃) 25e87002980e453ab427e91cb87062a0--004a1ff2815b40428aa7f30ba7b415a4 4b6002276708466090a913a938f19fcf RX(theta₆) 004a1ff2815b40428aa7f30ba7b415a4--4b6002276708466090a913a938f19fcf 9c3cb6271f0e425ab162438eda47ec3c 4b6002276708466090a913a938f19fcf--9c3cb6271f0e425ab162438eda47ec3c 2de3974e4f924e04be3180982e60d5e0 9c3cb6271f0e425ab162438eda47ec3c--2de3974e4f924e04be3180982e60d5e0 ccb1404b5c7044598765da27e0d61956 RX(theta₉) 2de3974e4f924e04be3180982e60d5e0--ccb1404b5c7044598765da27e0d61956 4612e2094fef4891926f6fabca7be4c3 RY(theta₁₂) ccb1404b5c7044598765da27e0d61956--4612e2094fef4891926f6fabca7be4c3 39f9e42f1e554956813b621771edfdfc RX(theta₁₅) 4612e2094fef4891926f6fabca7be4c3--39f9e42f1e554956813b621771edfdfc 17696e1058444aac9b4b9db0e914c437 39f9e42f1e554956813b621771edfdfc--17696e1058444aac9b4b9db0e914c437 73f24224eda94f6fb2cc6a8ef2cfa94b 17696e1058444aac9b4b9db0e914c437--73f24224eda94f6fb2cc6a8ef2cfa94b 0a30c1bd92904463bd5ae58ae4372a3b 73f24224eda94f6fb2cc6a8ef2cfa94b--0a30c1bd92904463bd5ae58ae4372a3b fe65b878e1c84a36a528cda08f9876ac dbc99ebc616f42e88bd9c9e6140307cc RX(theta₁) ad8d1307c703452a81562789c66d44b9--dbc99ebc616f42e88bd9c9e6140307cc 5300d278b4c441ce99078c1196d16da9 2 f49dfe21950845e7ba087c3a7345c26c RY(theta₄) dbc99ebc616f42e88bd9c9e6140307cc--f49dfe21950845e7ba087c3a7345c26c cf8c3457809741958e6213a12f2ba796 RX(theta₇) f49dfe21950845e7ba087c3a7345c26c--cf8c3457809741958e6213a12f2ba796 ea9f27172b0a4891b8ec0b906a623f31 X cf8c3457809741958e6213a12f2ba796--ea9f27172b0a4891b8ec0b906a623f31 ea9f27172b0a4891b8ec0b906a623f31--9c3cb6271f0e425ab162438eda47ec3c 29c2306860c34f9da9a7546df3efee4d ea9f27172b0a4891b8ec0b906a623f31--29c2306860c34f9da9a7546df3efee4d 5d8ea486229b4b66a7321b8e790e444e RX(theta₁₀) 29c2306860c34f9da9a7546df3efee4d--5d8ea486229b4b66a7321b8e790e444e d1be8f6d9d2741d3a3e78f98ec5cdd9f RY(theta₁₃) 5d8ea486229b4b66a7321b8e790e444e--d1be8f6d9d2741d3a3e78f98ec5cdd9f 15b9a00ffdd6486b911489938a332780 RX(theta₁₆) d1be8f6d9d2741d3a3e78f98ec5cdd9f--15b9a00ffdd6486b911489938a332780 ba447882aff64037b3389b114a1a8da7 X 15b9a00ffdd6486b911489938a332780--ba447882aff64037b3389b114a1a8da7 ba447882aff64037b3389b114a1a8da7--17696e1058444aac9b4b9db0e914c437 136ab67e0c8349de9f6b722c20535073 ba447882aff64037b3389b114a1a8da7--136ab67e0c8349de9f6b722c20535073 136ab67e0c8349de9f6b722c20535073--fe65b878e1c84a36a528cda08f9876ac a5d9e48f6bd1430a84522158a3d49851 a3ab2883d03c445b9dc2e2f395050a86 RX(theta₂) 5300d278b4c441ce99078c1196d16da9--a3ab2883d03c445b9dc2e2f395050a86 eeec9abb37204e93aeebcec698f13047 RY(theta₅) a3ab2883d03c445b9dc2e2f395050a86--eeec9abb37204e93aeebcec698f13047 6712ff01c0484ce29bc2884f5e44d5e8 RX(theta₈) eeec9abb37204e93aeebcec698f13047--6712ff01c0484ce29bc2884f5e44d5e8 bd035b91f40e4d6c8c05780b516acfb1 6712ff01c0484ce29bc2884f5e44d5e8--bd035b91f40e4d6c8c05780b516acfb1 a76ad3b2e0c847c6bbca4e62e55834ad X bd035b91f40e4d6c8c05780b516acfb1--a76ad3b2e0c847c6bbca4e62e55834ad a76ad3b2e0c847c6bbca4e62e55834ad--29c2306860c34f9da9a7546df3efee4d 90d77fd9af2d4cc29169dbc5686a5914 RX(theta₁₁) a76ad3b2e0c847c6bbca4e62e55834ad--90d77fd9af2d4cc29169dbc5686a5914 ee08010978494459ace07c17b5c468ef RY(theta₁₄) 90d77fd9af2d4cc29169dbc5686a5914--ee08010978494459ace07c17b5c468ef 467e3bf5c47d4bbbbd7592453b716bd6 RX(theta₁₇) ee08010978494459ace07c17b5c468ef--467e3bf5c47d4bbbbd7592453b716bd6 482e0bb387f94757939f0f45ac877dd8 467e3bf5c47d4bbbbd7592453b716bd6--482e0bb387f94757939f0f45ac877dd8 12a14542cdcb4254aafee0021b57493b X 482e0bb387f94757939f0f45ac877dd8--12a14542cdcb4254aafee0021b57493b 12a14542cdcb4254aafee0021b57493b--136ab67e0c8349de9f6b722c20535073 12a14542cdcb4254aafee0021b57493b--a5d9e48f6bd1430a84522158a3d49851

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 5c67e4e9a59740a499302b768f66d907 0 b5053811d72f4751b7d445b4ce039b1a RX(phi₀) 5c67e4e9a59740a499302b768f66d907--b5053811d72f4751b7d445b4ce039b1a 9e818d456e904e669f66d25ac80e3129 1 cb9cf1ab2b4d4bf1b5adc8d1cb1d9c95 RY(phi₃) b5053811d72f4751b7d445b4ce039b1a--cb9cf1ab2b4d4bf1b5adc8d1cb1d9c95 732c64b6fe774462bdb2d13a0b903510 RX(phi₆) cb9cf1ab2b4d4bf1b5adc8d1cb1d9c95--732c64b6fe774462bdb2d13a0b903510 88fe865ae96c4ccfb428369b4e54cbe3 732c64b6fe774462bdb2d13a0b903510--88fe865ae96c4ccfb428369b4e54cbe3 a7eb28785fa1420aada3611787eeeac0 88fe865ae96c4ccfb428369b4e54cbe3--a7eb28785fa1420aada3611787eeeac0 e459765101c34232a1068f0e5ebb20fe RX(phi₉) a7eb28785fa1420aada3611787eeeac0--e459765101c34232a1068f0e5ebb20fe b2e42857186a409aa3641c9d1eb345fb RY(phi₁₂) e459765101c34232a1068f0e5ebb20fe--b2e42857186a409aa3641c9d1eb345fb 1fda1db57a8b428b99abd4d8fd44ad9a RX(phi₁₅) b2e42857186a409aa3641c9d1eb345fb--1fda1db57a8b428b99abd4d8fd44ad9a de6e7721749a47af8013b60a0a8ccc6b 1fda1db57a8b428b99abd4d8fd44ad9a--de6e7721749a47af8013b60a0a8ccc6b 1c308a5b0e844228a7e413da4348c89a de6e7721749a47af8013b60a0a8ccc6b--1c308a5b0e844228a7e413da4348c89a 8af5fb958be9482fadb5966801a85925 1c308a5b0e844228a7e413da4348c89a--8af5fb958be9482fadb5966801a85925 509ff3c87166498cb99d43a7ab7eaf04 201e4c0b1a3c47ecaabb19fccfaf56bf RX(phi₁) 9e818d456e904e669f66d25ac80e3129--201e4c0b1a3c47ecaabb19fccfaf56bf 41e4755b30a544ce81057fe7caadeddc 2 8da994077cc0465c9b21d82daf13f699 RY(phi₄) 201e4c0b1a3c47ecaabb19fccfaf56bf--8da994077cc0465c9b21d82daf13f699 5398aa9c9c2048e88bb59da6273aadd5 RX(phi₇) 8da994077cc0465c9b21d82daf13f699--5398aa9c9c2048e88bb59da6273aadd5 da2347dd15254e8d9bb7dfcd459325d2 PHASE(phi_ent₀) 5398aa9c9c2048e88bb59da6273aadd5--da2347dd15254e8d9bb7dfcd459325d2 da2347dd15254e8d9bb7dfcd459325d2--88fe865ae96c4ccfb428369b4e54cbe3 b017e30ff82d40e68e7032e37375cdbc da2347dd15254e8d9bb7dfcd459325d2--b017e30ff82d40e68e7032e37375cdbc f100a3db3826490c95a7ddc733079f97 RX(phi₁₀) b017e30ff82d40e68e7032e37375cdbc--f100a3db3826490c95a7ddc733079f97 45fb3c9604ce4d4faeece645ad0e6279 RY(phi₁₃) f100a3db3826490c95a7ddc733079f97--45fb3c9604ce4d4faeece645ad0e6279 b629a0db73ce446ab34d89793f04b1c2 RX(phi₁₆) 45fb3c9604ce4d4faeece645ad0e6279--b629a0db73ce446ab34d89793f04b1c2 7279fe774b9146ef9313a60f645a4e5a PHASE(phi_ent₂) b629a0db73ce446ab34d89793f04b1c2--7279fe774b9146ef9313a60f645a4e5a 7279fe774b9146ef9313a60f645a4e5a--de6e7721749a47af8013b60a0a8ccc6b 4503a94e2d6a466fb56785384808572c 7279fe774b9146ef9313a60f645a4e5a--4503a94e2d6a466fb56785384808572c 4503a94e2d6a466fb56785384808572c--509ff3c87166498cb99d43a7ab7eaf04 63087ec39e19472589fb4cdbf4df1fe3 4712d263cac7462b99ee384f108b3342 RX(phi₂) 41e4755b30a544ce81057fe7caadeddc--4712d263cac7462b99ee384f108b3342 3243acc6596b429b933d071cb0e6b54a RY(phi₅) 4712d263cac7462b99ee384f108b3342--3243acc6596b429b933d071cb0e6b54a 277eb881912644b4b57f1a3231c1decf RX(phi₈) 3243acc6596b429b933d071cb0e6b54a--277eb881912644b4b57f1a3231c1decf 6af352cee4b64676ae3ea56bf07dbe0a 277eb881912644b4b57f1a3231c1decf--6af352cee4b64676ae3ea56bf07dbe0a 48f76b189d22424293fd9a63ba80f673 PHASE(phi_ent₁) 6af352cee4b64676ae3ea56bf07dbe0a--48f76b189d22424293fd9a63ba80f673 48f76b189d22424293fd9a63ba80f673--b017e30ff82d40e68e7032e37375cdbc 1d58871d28614da780842a24060ac264 RX(phi₁₁) 48f76b189d22424293fd9a63ba80f673--1d58871d28614da780842a24060ac264 069699f8c08f4faebb9651370c8f4b15 RY(phi₁₄) 1d58871d28614da780842a24060ac264--069699f8c08f4faebb9651370c8f4b15 6762e815c8fa49ff96d730e48be00d7c RX(phi₁₇) 069699f8c08f4faebb9651370c8f4b15--6762e815c8fa49ff96d730e48be00d7c 45b2ed307f6043368ca38e65e4139c4c 6762e815c8fa49ff96d730e48be00d7c--45b2ed307f6043368ca38e65e4139c4c fe6e115e6644489392ce61cb8a5ae93e PHASE(phi_ent₃) 45b2ed307f6043368ca38e65e4139c4c--fe6e115e6644489392ce61cb8a5ae93e fe6e115e6644489392ce61cb8a5ae93e--4503a94e2d6a466fb56785384808572c fe6e115e6644489392ce61cb8a5ae93e--63087ec39e19472589fb4cdbf4df1fe3

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_2c506fc5ac624554a6f667d12b8c545b cluster_a3cd96b5ec324fe89aca4fd3eb2c2f20 a63d9ba704144eaf911278b637722130 0 9587aff8e2524926bd96af1cd303c150 RX(theta₀) a63d9ba704144eaf911278b637722130--9587aff8e2524926bd96af1cd303c150 be02e90c9bdc4fb6906f4c43d11930ad 1 b8b317b67eb64ab197bf87b9903219f0 RY(theta₃) 9587aff8e2524926bd96af1cd303c150--b8b317b67eb64ab197bf87b9903219f0 fca1c66289984debbe3884cf76d4c8bb RX(theta₆) b8b317b67eb64ab197bf87b9903219f0--fca1c66289984debbe3884cf76d4c8bb a455102b6b604f7db84d9cea79cb2769 HamEvo fca1c66289984debbe3884cf76d4c8bb--a455102b6b604f7db84d9cea79cb2769 9a3a963856e446d69cb8667f1f10292d RX(theta₉) a455102b6b604f7db84d9cea79cb2769--9a3a963856e446d69cb8667f1f10292d ddee2857789b4a5a84260830fa39199c RY(theta₁₂) 9a3a963856e446d69cb8667f1f10292d--ddee2857789b4a5a84260830fa39199c 23fedd2144c241c1b06eacaccfc8a80f RX(theta₁₅) ddee2857789b4a5a84260830fa39199c--23fedd2144c241c1b06eacaccfc8a80f f8101ea2c0544fd0999c6b5b39e0bbb3 HamEvo 23fedd2144c241c1b06eacaccfc8a80f--f8101ea2c0544fd0999c6b5b39e0bbb3 32c40a26ce8a44629908334379d7ca65 f8101ea2c0544fd0999c6b5b39e0bbb3--32c40a26ce8a44629908334379d7ca65 555a2b8c052c4a938030beabc222bf67 a382e0bb1b244efcbfb8e97db538bc5b RX(theta₁) be02e90c9bdc4fb6906f4c43d11930ad--a382e0bb1b244efcbfb8e97db538bc5b d34845e512b745d49ccdc413e43cef42 2 d5828faf6219417d8f1d9e449773faae RY(theta₄) a382e0bb1b244efcbfb8e97db538bc5b--d5828faf6219417d8f1d9e449773faae a478413de75349c0a71e7da98a951605 RX(theta₇) d5828faf6219417d8f1d9e449773faae--a478413de75349c0a71e7da98a951605 510d38d7102e4b229dffc80f009cdc9d t = theta_t₀ a478413de75349c0a71e7da98a951605--510d38d7102e4b229dffc80f009cdc9d a49525db37024fbfb5146f090c0b03df RX(theta₁₀) 510d38d7102e4b229dffc80f009cdc9d--a49525db37024fbfb5146f090c0b03df cb66a96ddc744f76b6184aef42b55e98 RY(theta₁₃) a49525db37024fbfb5146f090c0b03df--cb66a96ddc744f76b6184aef42b55e98 efdca06481b549e9af4fa5086a16d26b RX(theta₁₆) cb66a96ddc744f76b6184aef42b55e98--efdca06481b549e9af4fa5086a16d26b 73fd777f00fc49dc9fca3f3c93e92669 t = theta_t₁ efdca06481b549e9af4fa5086a16d26b--73fd777f00fc49dc9fca3f3c93e92669 73fd777f00fc49dc9fca3f3c93e92669--555a2b8c052c4a938030beabc222bf67 4b4acddd78f741af9d0d27509c997b26 05c964f315ec4808876a1dae4992999e RX(theta₂) d34845e512b745d49ccdc413e43cef42--05c964f315ec4808876a1dae4992999e e992e33b830447b9838996e1a49e8600 RY(theta₅) 05c964f315ec4808876a1dae4992999e--e992e33b830447b9838996e1a49e8600 e90c2a7734e34fc6a87fff813fe09d41 RX(theta₈) e992e33b830447b9838996e1a49e8600--e90c2a7734e34fc6a87fff813fe09d41 46ae9dd09b7e48d8ada8c4ef65275a98 e90c2a7734e34fc6a87fff813fe09d41--46ae9dd09b7e48d8ada8c4ef65275a98 118e479019c94cccb98af37e60da3609 RX(theta₁₁) 46ae9dd09b7e48d8ada8c4ef65275a98--118e479019c94cccb98af37e60da3609 e1a78e40285947a6aceac31913c400a4 RY(theta₁₄) 118e479019c94cccb98af37e60da3609--e1a78e40285947a6aceac31913c400a4 20562bd877ec4abe9ead6be34a889f5d RX(theta₁₇) e1a78e40285947a6aceac31913c400a4--20562bd877ec4abe9ead6be34a889f5d 6bffa3c2a89d4012a8ac91d9ddff735a 20562bd877ec4abe9ead6be34a889f5d--6bffa3c2a89d4012a8ac91d9ddff735a 6bffa3c2a89d4012a8ac91d9ddff735a--4b4acddd78f741af9d0d27509c997b26

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_69dfd3c3c04e49c690ba4ef2e889019f cluster_409916617cbf40f488766d89a3d3a156 f2ae81238136487fb1153bcc5e5bf88a 0 5ec814c9129940b58bfc2b7761d84074 RX(theta₀) f2ae81238136487fb1153bcc5e5bf88a--5ec814c9129940b58bfc2b7761d84074 cdd7ef53e8124cdab51eef1b4093527d 1 95ab3e28579c4f4f926d68f3f5feadf3 RY(theta₆) 5ec814c9129940b58bfc2b7761d84074--95ab3e28579c4f4f926d68f3f5feadf3 142939886c6743a897f5c89d08aaa02b RX(theta₁₂) 95ab3e28579c4f4f926d68f3f5feadf3--142939886c6743a897f5c89d08aaa02b e3847d98eb1f43928ef366e835e54bbf 142939886c6743a897f5c89d08aaa02b--e3847d98eb1f43928ef366e835e54bbf 041cad404f0a449382c68f95ff4f39c0 RX(theta₁₈) e3847d98eb1f43928ef366e835e54bbf--041cad404f0a449382c68f95ff4f39c0 b74c5c09e9454816a0ab96340885b185 RY(theta₂₄) 041cad404f0a449382c68f95ff4f39c0--b74c5c09e9454816a0ab96340885b185 d634f4b9d4fd4959ac4e1cfdb9c015d9 RX(theta₃₀) b74c5c09e9454816a0ab96340885b185--d634f4b9d4fd4959ac4e1cfdb9c015d9 ab9c8f0429b647029d85d17516c88a81 d634f4b9d4fd4959ac4e1cfdb9c015d9--ab9c8f0429b647029d85d17516c88a81 0a19f5cd742c4428902745009243ba9a ab9c8f0429b647029d85d17516c88a81--0a19f5cd742c4428902745009243ba9a 8d9f8619168c4bc0baabfa5b013fb0e8 596b5d01ccd045229da78d4883287630 RX(theta₁) cdd7ef53e8124cdab51eef1b4093527d--596b5d01ccd045229da78d4883287630 4fc17586c8ab4c4cb533c6126cf53e67 2 bfd38b4a94a54aa188c699542ea83cd5 RY(theta₇) 596b5d01ccd045229da78d4883287630--bfd38b4a94a54aa188c699542ea83cd5 4b2269ccec9147b187de279190c0cea2 RX(theta₁₃) bfd38b4a94a54aa188c699542ea83cd5--4b2269ccec9147b187de279190c0cea2 f756a88a44ab4049b25b02fe1de663b9 4b2269ccec9147b187de279190c0cea2--f756a88a44ab4049b25b02fe1de663b9 a5844dae8dd14c2ab5c08f0ef1f98597 RX(theta₁₉) f756a88a44ab4049b25b02fe1de663b9--a5844dae8dd14c2ab5c08f0ef1f98597 3a24698665c2431c916c9128166b0115 RY(theta₂₅) a5844dae8dd14c2ab5c08f0ef1f98597--3a24698665c2431c916c9128166b0115 afca3f1ff6454421a9bfb5975ad52c6f RX(theta₃₁) 3a24698665c2431c916c9128166b0115--afca3f1ff6454421a9bfb5975ad52c6f 6c297755e5a24787b6a0cb99ff0115c2 afca3f1ff6454421a9bfb5975ad52c6f--6c297755e5a24787b6a0cb99ff0115c2 6c297755e5a24787b6a0cb99ff0115c2--8d9f8619168c4bc0baabfa5b013fb0e8 7661df3cb65b403897ad89f8289c3445 ba0dd593a0934b0fb0a25c2f4080884f RX(theta₂) 4fc17586c8ab4c4cb533c6126cf53e67--ba0dd593a0934b0fb0a25c2f4080884f 64e4446b0a304d52be2f30f0296a8dc7 3 3ffdb322a62e41b19ae9804b1832fac2 RY(theta₈) ba0dd593a0934b0fb0a25c2f4080884f--3ffdb322a62e41b19ae9804b1832fac2 bddbe98db65e405086cc27a83e3e9ae6 RX(theta₁₄) 3ffdb322a62e41b19ae9804b1832fac2--bddbe98db65e405086cc27a83e3e9ae6 ba2109fbaf504ba9ab977eba4d54d60f HamEvo bddbe98db65e405086cc27a83e3e9ae6--ba2109fbaf504ba9ab977eba4d54d60f 16b23f6b5cad4eb29350c68dfde8c994 RX(theta₂₀) ba2109fbaf504ba9ab977eba4d54d60f--16b23f6b5cad4eb29350c68dfde8c994 58edaad6fd8344229d043dc2d37d32ec RY(theta₂₆) 16b23f6b5cad4eb29350c68dfde8c994--58edaad6fd8344229d043dc2d37d32ec c00e2d57b5824dd8aaf5fb0a58ef0397 RX(theta₃₂) 58edaad6fd8344229d043dc2d37d32ec--c00e2d57b5824dd8aaf5fb0a58ef0397 6a00a3260d67487e86e6b019b3a23bfa HamEvo c00e2d57b5824dd8aaf5fb0a58ef0397--6a00a3260d67487e86e6b019b3a23bfa 6a00a3260d67487e86e6b019b3a23bfa--7661df3cb65b403897ad89f8289c3445 033cac10327946128560199885f8fb9f da0c5514d93b48808eec120874954459 RX(theta₃) 64e4446b0a304d52be2f30f0296a8dc7--da0c5514d93b48808eec120874954459 6487577059eb439eb762883cc88f5341 4 ca342c56b1424d96a8e17543c5b2d9d2 RY(theta₉) da0c5514d93b48808eec120874954459--ca342c56b1424d96a8e17543c5b2d9d2 4c8ebf2d5abd4e58907f752f89a8a1e0 RX(theta₁₅) ca342c56b1424d96a8e17543c5b2d9d2--4c8ebf2d5abd4e58907f752f89a8a1e0 d038041cc6164260b0aaae85d76096dc t = theta_t₀ 4c8ebf2d5abd4e58907f752f89a8a1e0--d038041cc6164260b0aaae85d76096dc a0855a7fb6114c3a8a913fc6f00e1008 RX(theta₂₁) d038041cc6164260b0aaae85d76096dc--a0855a7fb6114c3a8a913fc6f00e1008 7c5dca13ef5a41dbac7be39f339e1c08 RY(theta₂₇) a0855a7fb6114c3a8a913fc6f00e1008--7c5dca13ef5a41dbac7be39f339e1c08 0d80e9c4e629427082b3bad7e2c9c2b1 RX(theta₃₃) 7c5dca13ef5a41dbac7be39f339e1c08--0d80e9c4e629427082b3bad7e2c9c2b1 ec4dc0c4498047a58eabfd86f5ea9297 t = theta_t₁ 0d80e9c4e629427082b3bad7e2c9c2b1--ec4dc0c4498047a58eabfd86f5ea9297 ec4dc0c4498047a58eabfd86f5ea9297--033cac10327946128560199885f8fb9f b4fbb988af1542dfa52daf4271e0cb2a a8535f551311425b9761427ebc6b023c RX(theta₄) 6487577059eb439eb762883cc88f5341--a8535f551311425b9761427ebc6b023c c100a37feee94852b489ca5d10378869 5 e602ae5c144c4812b4cdcaee8bb2be3d RY(theta₁₀) a8535f551311425b9761427ebc6b023c--e602ae5c144c4812b4cdcaee8bb2be3d 8f9a8b0b8dd341038fd8ce813f046116 RX(theta₁₆) e602ae5c144c4812b4cdcaee8bb2be3d--8f9a8b0b8dd341038fd8ce813f046116 c587137b534543fdb9d9f03b4ed1eed7 8f9a8b0b8dd341038fd8ce813f046116--c587137b534543fdb9d9f03b4ed1eed7 85e602bfe8b94d44974cc75d695a57ec RX(theta₂₂) c587137b534543fdb9d9f03b4ed1eed7--85e602bfe8b94d44974cc75d695a57ec f9b576957a834ba29dcf3647ab210501 RY(theta₂₈) 85e602bfe8b94d44974cc75d695a57ec--f9b576957a834ba29dcf3647ab210501 2e0a189de1da417785d26f1fc8dafa2d RX(theta₃₄) f9b576957a834ba29dcf3647ab210501--2e0a189de1da417785d26f1fc8dafa2d 8f7846c8a54c495db5100e09ee0b2f20 2e0a189de1da417785d26f1fc8dafa2d--8f7846c8a54c495db5100e09ee0b2f20 8f7846c8a54c495db5100e09ee0b2f20--b4fbb988af1542dfa52daf4271e0cb2a a24f721acf154e0eaaf29db48ffa3d95 ecf17030344f435cb951d049967c6abb RX(theta₅) c100a37feee94852b489ca5d10378869--ecf17030344f435cb951d049967c6abb 43d21e3ba19649edb026a3bc71265fb6 RY(theta₁₁) ecf17030344f435cb951d049967c6abb--43d21e3ba19649edb026a3bc71265fb6 0e28a5c3be94416296717973de3b7929 RX(theta₁₇) 43d21e3ba19649edb026a3bc71265fb6--0e28a5c3be94416296717973de3b7929 e82a27d58f4740d185e1f6ae9d5876ab 0e28a5c3be94416296717973de3b7929--e82a27d58f4740d185e1f6ae9d5876ab fc2efeb0b5f94f0aa68ce874bc4fe332 RX(theta₂₃) e82a27d58f4740d185e1f6ae9d5876ab--fc2efeb0b5f94f0aa68ce874bc4fe332 13d16d00c157427d91a134a23f3bd631 RY(theta₂₉) fc2efeb0b5f94f0aa68ce874bc4fe332--13d16d00c157427d91a134a23f3bd631 aecca43575b94e6c8ba874887c3d38ff RX(theta₃₅) 13d16d00c157427d91a134a23f3bd631--aecca43575b94e6c8ba874887c3d38ff 627fb47a82394db7a37c27af11b05627 aecca43575b94e6c8ba874887c3d38ff--627fb47a82394db7a37c27af11b05627 627fb47a82394db7a37c27af11b05627--a24f721acf154e0eaaf29db48ffa3d95

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_7afabbcbbf5d4f75b4dd48c3cbf85450 BPMA-1 cluster_98b4d495b7e0404ab80a27ad8454fc6b BPMA-0 25c261a8541b412c9106d6b3597e9d03 0 c51bd0e9a91c4aab8c980cc85c83b9f3 RX(iia_α₀₀) 25c261a8541b412c9106d6b3597e9d03--c51bd0e9a91c4aab8c980cc85c83b9f3 a8d07ca27348400fadc32b408b17da36 1 90cd54f805ff4e369536435a497302b3 RY(iia_α₀₃) c51bd0e9a91c4aab8c980cc85c83b9f3--90cd54f805ff4e369536435a497302b3 a2402c7d7a4e401796fc78925ab76878 90cd54f805ff4e369536435a497302b3--a2402c7d7a4e401796fc78925ab76878 0fea457566274009a1e3a7c77711735f a2402c7d7a4e401796fc78925ab76878--0fea457566274009a1e3a7c77711735f a0732551d1d7420da06fb747b0513e05 RX(iia_γ₀₀) 0fea457566274009a1e3a7c77711735f--a0732551d1d7420da06fb747b0513e05 23698804aa6f4c928ea9dbf35a96187b a0732551d1d7420da06fb747b0513e05--23698804aa6f4c928ea9dbf35a96187b 9762b0f49bc044c792ac3b9200999cfa 23698804aa6f4c928ea9dbf35a96187b--9762b0f49bc044c792ac3b9200999cfa 04931bc92160471babf8ec07dd940a9f RY(iia_β₀₃) 9762b0f49bc044c792ac3b9200999cfa--04931bc92160471babf8ec07dd940a9f 00e21466fc0440fdbaecb626e68298fb RX(iia_β₀₀) 04931bc92160471babf8ec07dd940a9f--00e21466fc0440fdbaecb626e68298fb de09002e66624468a59ed9517fd0db5f RX(iia_α₁₀) 00e21466fc0440fdbaecb626e68298fb--de09002e66624468a59ed9517fd0db5f 2565c1470376490b8104def4c5a82f23 RY(iia_α₁₃) de09002e66624468a59ed9517fd0db5f--2565c1470376490b8104def4c5a82f23 06c09c7c6b0f4b07b494be16e00d3577 2565c1470376490b8104def4c5a82f23--06c09c7c6b0f4b07b494be16e00d3577 ff1070aa259042bd8a824eab4e8f7102 06c09c7c6b0f4b07b494be16e00d3577--ff1070aa259042bd8a824eab4e8f7102 faab3efddbb34ae884daf7cefbc97037 RX(iia_γ₁₀) ff1070aa259042bd8a824eab4e8f7102--faab3efddbb34ae884daf7cefbc97037 a9a14dbe82de4732a33492bbd0e869c4 faab3efddbb34ae884daf7cefbc97037--a9a14dbe82de4732a33492bbd0e869c4 b038db3df94b43e894fe8a532a3c5f9f a9a14dbe82de4732a33492bbd0e869c4--b038db3df94b43e894fe8a532a3c5f9f cd2d9cca5490422298e2fa083f889576 RY(iia_β₁₃) b038db3df94b43e894fe8a532a3c5f9f--cd2d9cca5490422298e2fa083f889576 a32c6f5097714a368415d0de30d91617 RX(iia_β₁₀) cd2d9cca5490422298e2fa083f889576--a32c6f5097714a368415d0de30d91617 6d57a58c8191445c98e15a3b0e994225 a32c6f5097714a368415d0de30d91617--6d57a58c8191445c98e15a3b0e994225 1ed1dc65a6614d1684f6b9e608b3acc4 cb8ec3fd46984b5eb9ee24cadf9f87eb RX(iia_α₀₁) a8d07ca27348400fadc32b408b17da36--cb8ec3fd46984b5eb9ee24cadf9f87eb edd107e34e404a23bd19ad3320bb06d7 2 e3de032a22324378a90959a23963df62 RY(iia_α₀₄) cb8ec3fd46984b5eb9ee24cadf9f87eb--e3de032a22324378a90959a23963df62 a2a1d429632945bcb9ec00a16d74cf5e X e3de032a22324378a90959a23963df62--a2a1d429632945bcb9ec00a16d74cf5e a2a1d429632945bcb9ec00a16d74cf5e--a2402c7d7a4e401796fc78925ab76878 0090f4db42dc4ab1a22741b5832be22b a2a1d429632945bcb9ec00a16d74cf5e--0090f4db42dc4ab1a22741b5832be22b 00f14253909f4fcdb5802563fb5a577c RX(iia_γ₀₁) 0090f4db42dc4ab1a22741b5832be22b--00f14253909f4fcdb5802563fb5a577c b8f70df9b7f443e48e9ac00032ad258f 00f14253909f4fcdb5802563fb5a577c--b8f70df9b7f443e48e9ac00032ad258f a67fa4fb9e884f2fbc97317d03e74118 X b8f70df9b7f443e48e9ac00032ad258f--a67fa4fb9e884f2fbc97317d03e74118 a67fa4fb9e884f2fbc97317d03e74118--9762b0f49bc044c792ac3b9200999cfa 50faf18262ef47b08334f132ba53da21 RY(iia_β₀₄) a67fa4fb9e884f2fbc97317d03e74118--50faf18262ef47b08334f132ba53da21 7b4c78802ec242e79180e5a81b565f87 RX(iia_β₀₁) 50faf18262ef47b08334f132ba53da21--7b4c78802ec242e79180e5a81b565f87 0de7ef6c65344d6b872f0712938aea15 RX(iia_α₁₁) 7b4c78802ec242e79180e5a81b565f87--0de7ef6c65344d6b872f0712938aea15 a0ee69342ba148c1a53172645b4d5b07 RY(iia_α₁₄) 0de7ef6c65344d6b872f0712938aea15--a0ee69342ba148c1a53172645b4d5b07 0427744279a6456e952005d1a3ed1e53 X a0ee69342ba148c1a53172645b4d5b07--0427744279a6456e952005d1a3ed1e53 0427744279a6456e952005d1a3ed1e53--06c09c7c6b0f4b07b494be16e00d3577 3dd4aeaa30ad4e38939ad92728a4ca56 0427744279a6456e952005d1a3ed1e53--3dd4aeaa30ad4e38939ad92728a4ca56 d83c1626be784666996ab5f6de6d2115 RX(iia_γ₁₁) 3dd4aeaa30ad4e38939ad92728a4ca56--d83c1626be784666996ab5f6de6d2115 2233eaa4662e4544b435d465babd9a46 d83c1626be784666996ab5f6de6d2115--2233eaa4662e4544b435d465babd9a46 90f5d0a4e5dd41cd8095fce01c7e0359 X 2233eaa4662e4544b435d465babd9a46--90f5d0a4e5dd41cd8095fce01c7e0359 90f5d0a4e5dd41cd8095fce01c7e0359--b038db3df94b43e894fe8a532a3c5f9f 1b1f696a6f0d4076b7c308f79824b585 RY(iia_β₁₄) 90f5d0a4e5dd41cd8095fce01c7e0359--1b1f696a6f0d4076b7c308f79824b585 110924ded1134609bcd1d2bfd95e62e0 RX(iia_β₁₁) 1b1f696a6f0d4076b7c308f79824b585--110924ded1134609bcd1d2bfd95e62e0 110924ded1134609bcd1d2bfd95e62e0--1ed1dc65a6614d1684f6b9e608b3acc4 b54b792c240b483e9393290a92f7574e bee007eb1b4d409b83df84edb7131b3d RX(iia_α₀₂) edd107e34e404a23bd19ad3320bb06d7--bee007eb1b4d409b83df84edb7131b3d e00efc7dcdbc4b0bac667ab840ed7bde RY(iia_α₀₅) bee007eb1b4d409b83df84edb7131b3d--e00efc7dcdbc4b0bac667ab840ed7bde 90dec8fba29a46cab521de130b568f44 e00efc7dcdbc4b0bac667ab840ed7bde--90dec8fba29a46cab521de130b568f44 aa0fcc6130c344d6956c313e61d6e898 X 90dec8fba29a46cab521de130b568f44--aa0fcc6130c344d6956c313e61d6e898 aa0fcc6130c344d6956c313e61d6e898--0090f4db42dc4ab1a22741b5832be22b d2b0bd83c819453faa54853a103075d1 RX(iia_γ₀₂) aa0fcc6130c344d6956c313e61d6e898--d2b0bd83c819453faa54853a103075d1 06181c3afef64dd4be9eb6c56355fef7 X d2b0bd83c819453faa54853a103075d1--06181c3afef64dd4be9eb6c56355fef7 06181c3afef64dd4be9eb6c56355fef7--b8f70df9b7f443e48e9ac00032ad258f 7e6ac499c8ed4e778bb23f717b18647d 06181c3afef64dd4be9eb6c56355fef7--7e6ac499c8ed4e778bb23f717b18647d 554eee82331546a2b680d04adb2d79c2 RY(iia_β₀₅) 7e6ac499c8ed4e778bb23f717b18647d--554eee82331546a2b680d04adb2d79c2 eed5d473ef7f4c73bd307687677bc702 RX(iia_β₀₂) 554eee82331546a2b680d04adb2d79c2--eed5d473ef7f4c73bd307687677bc702 64e91c387ad745c8836e2573230edd13 RX(iia_α₁₂) eed5d473ef7f4c73bd307687677bc702--64e91c387ad745c8836e2573230edd13 c725566b79ea45c48d92607997ec063b RY(iia_α₁₅) 64e91c387ad745c8836e2573230edd13--c725566b79ea45c48d92607997ec063b 2a49498788d14025a02434687db53b57 c725566b79ea45c48d92607997ec063b--2a49498788d14025a02434687db53b57 f9c0fd0abee24a60a8b5e68c170d45d8 X 2a49498788d14025a02434687db53b57--f9c0fd0abee24a60a8b5e68c170d45d8 f9c0fd0abee24a60a8b5e68c170d45d8--3dd4aeaa30ad4e38939ad92728a4ca56 06d1ed38eb2d49c7af2eebb961ae2f1a RX(iia_γ₁₂) f9c0fd0abee24a60a8b5e68c170d45d8--06d1ed38eb2d49c7af2eebb961ae2f1a 59bf026623cd4ea18dddcf0b25fe3822 X 06d1ed38eb2d49c7af2eebb961ae2f1a--59bf026623cd4ea18dddcf0b25fe3822 59bf026623cd4ea18dddcf0b25fe3822--2233eaa4662e4544b435d465babd9a46 18c53914582e48799ce968453aec0ed9 59bf026623cd4ea18dddcf0b25fe3822--18c53914582e48799ce968453aec0ed9 839eb51a1c344338b20049fee8accebe RY(iia_β₁₅) 18c53914582e48799ce968453aec0ed9--839eb51a1c344338b20049fee8accebe 06be2224bec94d86b3a01400193c8c89 RX(iia_β₁₂) 839eb51a1c344338b20049fee8accebe--06be2224bec94d86b3a01400193c8c89 06be2224bec94d86b3a01400193c8c89--b54b792c240b483e9393290a92f7574e