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_79398bf899124129a151cd3c455057d2 Constant Chebyshev FM cluster_3065aa526938479d8e9c910dbf8a93be Constant Fourier FM 416321d7d67b414c90a2b55840825f6e 0 09865386c5704693b1393ae7c248266c RX(phi) 416321d7d67b414c90a2b55840825f6e--09865386c5704693b1393ae7c248266c d75b036cc4544f7f8a0bd9bb855f66ae 1 a1b353ce7e6f4998a36dd94460c8d01a RX(acos(phi)) 09865386c5704693b1393ae7c248266c--a1b353ce7e6f4998a36dd94460c8d01a b8e901d40ce54e83b0a53997bafe1fbc a1b353ce7e6f4998a36dd94460c8d01a--b8e901d40ce54e83b0a53997bafe1fbc 35a914bdd3ee4d669ea960f47cbdbd15 5eeee7e437704648b277a6926bbcebd1 RX(phi) d75b036cc4544f7f8a0bd9bb855f66ae--5eeee7e437704648b277a6926bbcebd1 aec841de5885462fb20a9c94e5efc687 2 f48a2e0fe0714c188b35630e7f7a8b66 RX(acos(phi)) 5eeee7e437704648b277a6926bbcebd1--f48a2e0fe0714c188b35630e7f7a8b66 f48a2e0fe0714c188b35630e7f7a8b66--35a914bdd3ee4d669ea960f47cbdbd15 1a0e1e230f074d2880b6f43c055c2363 0ec0f4987ce54ae5bd9fc5e5567f75be RX(phi) aec841de5885462fb20a9c94e5efc687--0ec0f4987ce54ae5bd9fc5e5567f75be a249b12456094c6c9d6640edcc27b47b RX(acos(phi)) 0ec0f4987ce54ae5bd9fc5e5567f75be--a249b12456094c6c9d6640edcc27b47b a249b12456094c6c9d6640edcc27b47b--1a0e1e230f074d2880b6f43c055c2363

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_983dc0889f9344deacd940527d01c6f1 Constant <function custom_fn at 0x7ff03df97910> FM cluster_c73896c765134b1e8eeedb186b24fd27 Constant asin FM 2337badf32e04759b8300a09a15410e9 0 9803ebd184574244a3d7e0edadc1521d RX(asin(phi)) 2337badf32e04759b8300a09a15410e9--9803ebd184574244a3d7e0edadc1521d c7393f52e15f436b9b004fe52d095b3c 1 fc6d6aa333634f4b81b1c9f9f3a32eea RX(phi**2 + asin(phi)) 9803ebd184574244a3d7e0edadc1521d--fc6d6aa333634f4b81b1c9f9f3a32eea 0946a9db2e704e1ca0249ddccb3b8b1b fc6d6aa333634f4b81b1c9f9f3a32eea--0946a9db2e704e1ca0249ddccb3b8b1b fa55eb482db849b281359a42997eeb33 c30c61bae0bb43ee888c96af317b0493 RX(asin(phi)) c7393f52e15f436b9b004fe52d095b3c--c30c61bae0bb43ee888c96af317b0493 a8d73bb0b782444780897d684390ec4c 2 00f74f48b51e424d9d724f8497d40d28 RX(phi**2 + asin(phi)) c30c61bae0bb43ee888c96af317b0493--00f74f48b51e424d9d724f8497d40d28 00f74f48b51e424d9d724f8497d40d28--fa55eb482db849b281359a42997eeb33 4cfbe7374d024fb5b6fcba8a57fded55 ae669170896e42a69e609322a8741b5a RX(asin(phi)) a8d73bb0b782444780897d684390ec4c--ae669170896e42a69e609322a8741b5a f863fc07d3394056bac7b416c31e657b RX(phi**2 + asin(phi)) ae669170896e42a69e609322a8741b5a--f863fc07d3394056bac7b416c31e657b f863fc07d3394056bac7b416c31e657b--4cfbe7374d024fb5b6fcba8a57fded55

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_dfea6cb6ff264e26aa4c79468000a75b Exponential Fourier FM cluster_4a333aa7411c47aba862b520d5e01b67 Constant Fourier FM cluster_a01710f7804d406191620281d661f682 Tower Fourier FM a597fc5cf0704d31a60906ad768e09aa 0 df731f336922453099bc19b6a9566a02 RX(phi) a597fc5cf0704d31a60906ad768e09aa--df731f336922453099bc19b6a9566a02 1f18637d45a344ddb01c4c89ce5ec9e1 1 2cb3572bea1c4556a12de3a1dc833434 RX(1.0*phi) df731f336922453099bc19b6a9566a02--2cb3572bea1c4556a12de3a1dc833434 63a7731a981a40dcbe545818bf52ff17 RX(1.0*phi) 2cb3572bea1c4556a12de3a1dc833434--63a7731a981a40dcbe545818bf52ff17 2d4f89ddf6c547aa93127ceb44a14955 63a7731a981a40dcbe545818bf52ff17--2d4f89ddf6c547aa93127ceb44a14955 ccb718b9ec0f4245a56a557313432e76 8268661c19e2489f99e0d6f034f38945 RX(phi) 1f18637d45a344ddb01c4c89ce5ec9e1--8268661c19e2489f99e0d6f034f38945 fa5d556eaaa046c3995e383dbfab838a 2 657aae6054bb4d84b5dd7763250acbeb RX(2.0*phi) 8268661c19e2489f99e0d6f034f38945--657aae6054bb4d84b5dd7763250acbeb 507a7ba710964041996fb705c59232d1 RX(2.0*phi) 657aae6054bb4d84b5dd7763250acbeb--507a7ba710964041996fb705c59232d1 507a7ba710964041996fb705c59232d1--ccb718b9ec0f4245a56a557313432e76 4d594eba25234738aad33c4686f41c33 b10c91be71934aeb89f465182c886deb RX(phi) fa5d556eaaa046c3995e383dbfab838a--b10c91be71934aeb89f465182c886deb 82dac58be9fc4d2abb4d2a8aaab11b79 3 0d4575fa437a491ba4c374b5739d3dd3 RX(3.0*phi) b10c91be71934aeb89f465182c886deb--0d4575fa437a491ba4c374b5739d3dd3 b276971f1cf84d8b99def812dde48e30 RX(4.0*phi) 0d4575fa437a491ba4c374b5739d3dd3--b276971f1cf84d8b99def812dde48e30 b276971f1cf84d8b99def812dde48e30--4d594eba25234738aad33c4686f41c33 4d420105d63649ed8199832d5d069e8b b0af2504cf824b058d093fe5beaebe3c RX(phi) 82dac58be9fc4d2abb4d2a8aaab11b79--b0af2504cf824b058d093fe5beaebe3c 29a48a914610414f9bf2c86b6f33060c 4 e3d5f5e84d1f4a948a964b23e739b5b0 RX(4.0*phi) b0af2504cf824b058d093fe5beaebe3c--e3d5f5e84d1f4a948a964b23e739b5b0 788b0af2cad54212b8d5a9be0dbd818c RX(8.0*phi) e3d5f5e84d1f4a948a964b23e739b5b0--788b0af2cad54212b8d5a9be0dbd818c 788b0af2cad54212b8d5a9be0dbd818c--4d420105d63649ed8199832d5d069e8b 35a28beb3a1a4b3aa19aac4fb3f2a73c 4bac4833ecf3461b828ebb73c65a45f1 RX(phi) 29a48a914610414f9bf2c86b6f33060c--4bac4833ecf3461b828ebb73c65a45f1 073018acc6784cdcaf46b80d233c38ad RX(5.0*phi) 4bac4833ecf3461b828ebb73c65a45f1--073018acc6784cdcaf46b80d233c38ad cc27a6a62e9c42d6a527c9ee8105f50d RX(16.0*phi) 073018acc6784cdcaf46b80d233c38ad--cc27a6a62e9c42d6a527c9ee8105f50d cc27a6a62e9c42d6a527c9ee8105f50d--35a28beb3a1a4b3aa19aac4fb3f2a73c

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 3eb982198161493687839c2f313765ab 0 7b2b3d7fd4514bacbfcd4b61b6815422 RX(1.0*acos(phi)) 3eb982198161493687839c2f313765ab--7b2b3d7fd4514bacbfcd4b61b6815422 4676db33d31348e498651a0b30d9823f 1 abec8899b70c4a40aaeaf2882c472e19 7b2b3d7fd4514bacbfcd4b61b6815422--abec8899b70c4a40aaeaf2882c472e19 2030ef1b5bd242a4a1201287c12b1193 2d2ba8437f554c0dbd74cabfa40fc867 RX(1.414*acos(phi)) 4676db33d31348e498651a0b30d9823f--2d2ba8437f554c0dbd74cabfa40fc867 bfd342aa6bbc4bbeb08d7e13215a4c05 2 2d2ba8437f554c0dbd74cabfa40fc867--2030ef1b5bd242a4a1201287c12b1193 aab800be98e14e9caf9da937e699d3a8 f280bf74232a48ed9a0c81eb83a0d730 RX(1.732*acos(phi)) bfd342aa6bbc4bbeb08d7e13215a4c05--f280bf74232a48ed9a0c81eb83a0d730 4a645341897f464ca0778d7d1607723d 3 f280bf74232a48ed9a0c81eb83a0d730--aab800be98e14e9caf9da937e699d3a8 d0ffeb86ae7d417084d482d15f6d0111 525a87326c2841cdb23f1d413f18c384 RX(2.0*acos(phi)) 4a645341897f464ca0778d7d1607723d--525a87326c2841cdb23f1d413f18c384 3b9b6b487dc74002b1d91e6de1f9c349 4 525a87326c2841cdb23f1d413f18c384--d0ffeb86ae7d417084d482d15f6d0111 cdf0f48b5f9e479db26cc8a43747efd4 009baedb131b45bb897992e0f7c75e4e RX(2.236*acos(phi)) 3b9b6b487dc74002b1d91e6de1f9c349--009baedb131b45bb897992e0f7c75e4e 009baedb131b45bb897992e0f7c75e4e--cdf0f48b5f9e479db26cc8a43747efd4

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 c3abf4395bff4b83927c9d3aaf61d135 0 2bae966daf66423688e959e90142bde1 RX(1.0*phi*w₀) c3abf4395bff4b83927c9d3aaf61d135--2bae966daf66423688e959e90142bde1 d5dcfd84f85042f0b554b7585c26fdf9 1 6a7f6ce2041945f8b23b5e4503095559 2bae966daf66423688e959e90142bde1--6a7f6ce2041945f8b23b5e4503095559 41ec9659c341485fbef67c1b10e85527 d56f2588057a467e898ca0f67fd81418 RX(2.0*phi*w₁) d5dcfd84f85042f0b554b7585c26fdf9--d56f2588057a467e898ca0f67fd81418 d9aef5bc4d1d43328ff0b9333f30b3cb 2 d56f2588057a467e898ca0f67fd81418--41ec9659c341485fbef67c1b10e85527 80f8ff078e994ff6a3e288716d8b8654 6d9859ee53674af0ae8233b9d040c147 RX(4.0*phi*w₂) d9aef5bc4d1d43328ff0b9333f30b3cb--6d9859ee53674af0ae8233b9d040c147 df144f0811fe48099e4186e78b37e27e 3 6d9859ee53674af0ae8233b9d040c147--80f8ff078e994ff6a3e288716d8b8654 22fc92ffdbc24b54933d089b1ec3343d 1665276768714801afbebf0f2b74800a RX(8.0*phi*w₃) df144f0811fe48099e4186e78b37e27e--1665276768714801afbebf0f2b74800a 29193ba7e75b42b1b54fcd6d61737865 4 1665276768714801afbebf0f2b74800a--22fc92ffdbc24b54933d089b1ec3343d a653986b42464e9bbc63d659c462dbf0 de46812f08bf48a39412232392c01d67 RX(16.0*phi*w₄) 29193ba7e75b42b1b54fcd6d61737865--de46812f08bf48a39412232392c01d67 de46812f08bf48a39412232392c01d67--a653986b42464e9bbc63d659c462dbf0

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 3615109e76f645b0b6e2510c9d405229 0 7b6b73c7c7644b0b8414e548a6f9463f RY(80.0*acos(w₄*(0.667*x + 1.667))) 3615109e76f645b0b6e2510c9d405229--7b6b73c7c7644b0b8414e548a6f9463f e10b1dbfc1284659a0e4ea1f39d1d3b5 1 2ceca252652f4418b502483c0473b102 7b6b73c7c7644b0b8414e548a6f9463f--2ceca252652f4418b502483c0473b102 dd1a4a83a9a949878b5822a369213808 ac3013fc1020420f968a3a3e83d2a9e2 RY(40.0*acos(w₃*(0.667*x + 1.667))) e10b1dbfc1284659a0e4ea1f39d1d3b5--ac3013fc1020420f968a3a3e83d2a9e2 f3aabb9e7a9c4aceb6efd1ee7265543f 2 ac3013fc1020420f968a3a3e83d2a9e2--dd1a4a83a9a949878b5822a369213808 777f7103655848c68fa242984d3032ce 70c8ed8067294da6b0164595960fb4c0 RY(20.0*acos(w₂*(0.667*x + 1.667))) f3aabb9e7a9c4aceb6efd1ee7265543f--70c8ed8067294da6b0164595960fb4c0 d5a164995dc74aff9043190debe6cfeb 3 70c8ed8067294da6b0164595960fb4c0--777f7103655848c68fa242984d3032ce 703010dead7840ec9329404d2ba17cce 73abb5ef3baf4d8685955c5347c32204 RY(10.0*acos(w₁*(0.667*x + 1.667))) d5a164995dc74aff9043190debe6cfeb--73abb5ef3baf4d8685955c5347c32204 d72a33a75c6c4ada8620f70705d85184 4 73abb5ef3baf4d8685955c5347c32204--703010dead7840ec9329404d2ba17cce 096bcb34d53d491e851f0ada00c78d74 0a3b471ba70e4235b185134e012419c8 RY(5.0*acos(w₀*(0.667*x + 1.667))) d72a33a75c6c4ada8620f70705d85184--0a3b471ba70e4235b185134e012419c8 0a3b471ba70e4235b185134e012419c8--096bcb34d53d491e851f0ada00c78d74

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 d81338df5c7b4237985521e3ff23f2a8 0 22b7f4d4ba304063bee337e1bca1fd3b RX(theta₀) d81338df5c7b4237985521e3ff23f2a8--22b7f4d4ba304063bee337e1bca1fd3b 1f0d4629dd3a448aab9ff5e0c351c774 1 acf48d535f6e45279f83b393a9a38559 RY(theta₃) 22b7f4d4ba304063bee337e1bca1fd3b--acf48d535f6e45279f83b393a9a38559 d01f9be925b84e1e8aa1a5c549ab13ea RX(theta₆) acf48d535f6e45279f83b393a9a38559--d01f9be925b84e1e8aa1a5c549ab13ea 14f3cb34499042d586fb3035941fcca2 d01f9be925b84e1e8aa1a5c549ab13ea--14f3cb34499042d586fb3035941fcca2 bf19a4ad2f724419a26dc3ccf4c091f3 14f3cb34499042d586fb3035941fcca2--bf19a4ad2f724419a26dc3ccf4c091f3 f983886845594ee2bf4e4549d62bffd7 RX(theta₉) bf19a4ad2f724419a26dc3ccf4c091f3--f983886845594ee2bf4e4549d62bffd7 b0b973cc1d3e4434ba27d63ea70a64bf RY(theta₁₂) f983886845594ee2bf4e4549d62bffd7--b0b973cc1d3e4434ba27d63ea70a64bf 61d8635b7d0440a2a8908521fd5fa207 RX(theta₁₅) b0b973cc1d3e4434ba27d63ea70a64bf--61d8635b7d0440a2a8908521fd5fa207 0d59f081a2d34c5781d3e4c20c4a7ccf 61d8635b7d0440a2a8908521fd5fa207--0d59f081a2d34c5781d3e4c20c4a7ccf cad5407a03ce45958f38a40c0ac31ef2 0d59f081a2d34c5781d3e4c20c4a7ccf--cad5407a03ce45958f38a40c0ac31ef2 d1f5ee7849d34ebfb5a78eb21879304a cad5407a03ce45958f38a40c0ac31ef2--d1f5ee7849d34ebfb5a78eb21879304a 7c8c33fde5cf42adb0982fe5cf02dca1 edabb40a28124dd3a697d44b93571e1f RX(theta₁) 1f0d4629dd3a448aab9ff5e0c351c774--edabb40a28124dd3a697d44b93571e1f 424f987ee90b4e758cd2fdd96c4263e5 2 c1e86fdd76a94202a9eb6ad8dd9f2f90 RY(theta₄) edabb40a28124dd3a697d44b93571e1f--c1e86fdd76a94202a9eb6ad8dd9f2f90 30e7ce0da4ba403b9050ab4a3ed72f7f RX(theta₇) c1e86fdd76a94202a9eb6ad8dd9f2f90--30e7ce0da4ba403b9050ab4a3ed72f7f 5dadc108c9fb4c579a13e6441937d993 X 30e7ce0da4ba403b9050ab4a3ed72f7f--5dadc108c9fb4c579a13e6441937d993 5dadc108c9fb4c579a13e6441937d993--14f3cb34499042d586fb3035941fcca2 20db1fd9d8c1488d9675d99dbf47f044 5dadc108c9fb4c579a13e6441937d993--20db1fd9d8c1488d9675d99dbf47f044 6d110eff94514bafbc838e8063cb8c12 RX(theta₁₀) 20db1fd9d8c1488d9675d99dbf47f044--6d110eff94514bafbc838e8063cb8c12 b8381bc74a444ef6a21d7e7372a384ce RY(theta₁₃) 6d110eff94514bafbc838e8063cb8c12--b8381bc74a444ef6a21d7e7372a384ce 986c951809b74e0c8fcadf38c9e3ab0d RX(theta₁₆) b8381bc74a444ef6a21d7e7372a384ce--986c951809b74e0c8fcadf38c9e3ab0d 2d0877c18879432a8ae0b0e35bada556 X 986c951809b74e0c8fcadf38c9e3ab0d--2d0877c18879432a8ae0b0e35bada556 2d0877c18879432a8ae0b0e35bada556--0d59f081a2d34c5781d3e4c20c4a7ccf d8db7e4984d4436b9c07196d772ab004 2d0877c18879432a8ae0b0e35bada556--d8db7e4984d4436b9c07196d772ab004 d8db7e4984d4436b9c07196d772ab004--7c8c33fde5cf42adb0982fe5cf02dca1 c22e8141fd2b43328371dfa3a075e261 88b3f27c2d8747298424f078940ec1e3 RX(theta₂) 424f987ee90b4e758cd2fdd96c4263e5--88b3f27c2d8747298424f078940ec1e3 e170a6ac89d34fb2afe6803cb1fc83f5 RY(theta₅) 88b3f27c2d8747298424f078940ec1e3--e170a6ac89d34fb2afe6803cb1fc83f5 e4591c7b922c42319e75c90d34e83845 RX(theta₈) e170a6ac89d34fb2afe6803cb1fc83f5--e4591c7b922c42319e75c90d34e83845 16c3e665dffc4cf9933b8566ab8015a2 e4591c7b922c42319e75c90d34e83845--16c3e665dffc4cf9933b8566ab8015a2 c9daf6866065450b87dddd6132bce111 X 16c3e665dffc4cf9933b8566ab8015a2--c9daf6866065450b87dddd6132bce111 c9daf6866065450b87dddd6132bce111--20db1fd9d8c1488d9675d99dbf47f044 bad3893c2b7a4ba28e1a703c05ac844c RX(theta₁₁) c9daf6866065450b87dddd6132bce111--bad3893c2b7a4ba28e1a703c05ac844c aa2e92d546df40e1ad2f8625e6e60edf RY(theta₁₄) bad3893c2b7a4ba28e1a703c05ac844c--aa2e92d546df40e1ad2f8625e6e60edf 45613871eeeb44a99d817588366e6730 RX(theta₁₇) aa2e92d546df40e1ad2f8625e6e60edf--45613871eeeb44a99d817588366e6730 65abc450ed7545749f9b104a0f9a673b 45613871eeeb44a99d817588366e6730--65abc450ed7545749f9b104a0f9a673b 43c7f9514d8749f3aa5bd7221d31349a X 65abc450ed7545749f9b104a0f9a673b--43c7f9514d8749f3aa5bd7221d31349a 43c7f9514d8749f3aa5bd7221d31349a--d8db7e4984d4436b9c07196d772ab004 43c7f9514d8749f3aa5bd7221d31349a--c22e8141fd2b43328371dfa3a075e261

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 fb170b1d4e9b4bd8b9c34d93469cfd5a 0 966d1924c61f410dbc9fa4afd76dcdf1 RX(phi₀) fb170b1d4e9b4bd8b9c34d93469cfd5a--966d1924c61f410dbc9fa4afd76dcdf1 a345af49c8e243b99de5f0eaa5d10fee 1 d8011d1f7c2b4c6faeb8db7cee485355 RY(phi₃) 966d1924c61f410dbc9fa4afd76dcdf1--d8011d1f7c2b4c6faeb8db7cee485355 5c2c31326084446795a49064be547d8d RX(phi₆) d8011d1f7c2b4c6faeb8db7cee485355--5c2c31326084446795a49064be547d8d 48e29a45193941b4a83d7b033044a01d 5c2c31326084446795a49064be547d8d--48e29a45193941b4a83d7b033044a01d 41b6aee6deff4efaa8218024f156c0e4 48e29a45193941b4a83d7b033044a01d--41b6aee6deff4efaa8218024f156c0e4 991dd8f03b09464faa205bf0600f5386 RX(phi₉) 41b6aee6deff4efaa8218024f156c0e4--991dd8f03b09464faa205bf0600f5386 233625aed2fc4188951a65999c71aab9 RY(phi₁₂) 991dd8f03b09464faa205bf0600f5386--233625aed2fc4188951a65999c71aab9 d4cd2e3d25914402bc9566193a134016 RX(phi₁₅) 233625aed2fc4188951a65999c71aab9--d4cd2e3d25914402bc9566193a134016 d792c3a43135414cb4429259fc7e2c89 d4cd2e3d25914402bc9566193a134016--d792c3a43135414cb4429259fc7e2c89 b609bf357ac04ded824841f3dfe11b9e d792c3a43135414cb4429259fc7e2c89--b609bf357ac04ded824841f3dfe11b9e 00b86b47797c44f696958dbd586bb1c3 b609bf357ac04ded824841f3dfe11b9e--00b86b47797c44f696958dbd586bb1c3 70ad197ccc1f456ba1db7b0000d7e900 2bace85d1cf449709fd80256f9b52ccf RX(phi₁) a345af49c8e243b99de5f0eaa5d10fee--2bace85d1cf449709fd80256f9b52ccf 9cefb25aff21466fb7857448842d521f 2 10affda53bb4407081607522a06abe1c RY(phi₄) 2bace85d1cf449709fd80256f9b52ccf--10affda53bb4407081607522a06abe1c e26d8516d1f144cdb5e2b2fd09507d66 RX(phi₇) 10affda53bb4407081607522a06abe1c--e26d8516d1f144cdb5e2b2fd09507d66 007a2d94b6884f2086ae2aff14dd9cd4 PHASE(phi_ent₀) e26d8516d1f144cdb5e2b2fd09507d66--007a2d94b6884f2086ae2aff14dd9cd4 007a2d94b6884f2086ae2aff14dd9cd4--48e29a45193941b4a83d7b033044a01d 849e927e2d5849b1bb75b62aca9a70ea 007a2d94b6884f2086ae2aff14dd9cd4--849e927e2d5849b1bb75b62aca9a70ea ab8ec54e771a49398764f75be0bc2a24 RX(phi₁₀) 849e927e2d5849b1bb75b62aca9a70ea--ab8ec54e771a49398764f75be0bc2a24 aa1b97dca4eb44948fc0dbe0051e8d79 RY(phi₁₃) ab8ec54e771a49398764f75be0bc2a24--aa1b97dca4eb44948fc0dbe0051e8d79 91026893b0464df18a656ab67806a7dc RX(phi₁₆) aa1b97dca4eb44948fc0dbe0051e8d79--91026893b0464df18a656ab67806a7dc 4402cd695b9d40b59868c65c39edbbda PHASE(phi_ent₂) 91026893b0464df18a656ab67806a7dc--4402cd695b9d40b59868c65c39edbbda 4402cd695b9d40b59868c65c39edbbda--d792c3a43135414cb4429259fc7e2c89 e7690c27e7ce4f73972c4780ea627ac7 4402cd695b9d40b59868c65c39edbbda--e7690c27e7ce4f73972c4780ea627ac7 e7690c27e7ce4f73972c4780ea627ac7--70ad197ccc1f456ba1db7b0000d7e900 3dd0a62c1de44fb18f80464f5967882c dd5529cc54e54f4fb1dd9f1a99ef9442 RX(phi₂) 9cefb25aff21466fb7857448842d521f--dd5529cc54e54f4fb1dd9f1a99ef9442 fc75977eb227447d8d4f3830c8ed533e RY(phi₅) dd5529cc54e54f4fb1dd9f1a99ef9442--fc75977eb227447d8d4f3830c8ed533e bd227cc6c5654cb3806c808fc73a693c RX(phi₈) fc75977eb227447d8d4f3830c8ed533e--bd227cc6c5654cb3806c808fc73a693c cb0ba4f7df364ddd9bb6318f4f6ea825 bd227cc6c5654cb3806c808fc73a693c--cb0ba4f7df364ddd9bb6318f4f6ea825 062b6b02874e4c5381b093067b88ec6b PHASE(phi_ent₁) cb0ba4f7df364ddd9bb6318f4f6ea825--062b6b02874e4c5381b093067b88ec6b 062b6b02874e4c5381b093067b88ec6b--849e927e2d5849b1bb75b62aca9a70ea e244a527cad04a5c81e46a4261a9969f RX(phi₁₁) 062b6b02874e4c5381b093067b88ec6b--e244a527cad04a5c81e46a4261a9969f 627e7d290d2043299bb7bedda3484355 RY(phi₁₄) e244a527cad04a5c81e46a4261a9969f--627e7d290d2043299bb7bedda3484355 47687577a43442e782e4b0714caa08dd RX(phi₁₇) 627e7d290d2043299bb7bedda3484355--47687577a43442e782e4b0714caa08dd 009c9376592a4280922821b6f2a81c35 47687577a43442e782e4b0714caa08dd--009c9376592a4280922821b6f2a81c35 9d4ac1bbd35b4269b49671f321b48d01 PHASE(phi_ent₃) 009c9376592a4280922821b6f2a81c35--9d4ac1bbd35b4269b49671f321b48d01 9d4ac1bbd35b4269b49671f321b48d01--e7690c27e7ce4f73972c4780ea627ac7 9d4ac1bbd35b4269b49671f321b48d01--3dd0a62c1de44fb18f80464f5967882c

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_d83d17020d88431dab9d1fd07d737490 cluster_2d7600f903f64b4c8d6171183e498b4c f6f60c9f45d8428391983269f0f059e9 0 0442f9c096e7410e9584ba5e861c7b55 RX(theta₀) f6f60c9f45d8428391983269f0f059e9--0442f9c096e7410e9584ba5e861c7b55 ad45cbed5c6641279ebd32d6ce476f1b 1 edbd8f3fe0024ccd996db13e7d0ba490 RY(theta₃) 0442f9c096e7410e9584ba5e861c7b55--edbd8f3fe0024ccd996db13e7d0ba490 ac2f72b7e39c462bbf908a2da8892ebb RX(theta₆) edbd8f3fe0024ccd996db13e7d0ba490--ac2f72b7e39c462bbf908a2da8892ebb c4bd6af8b4174616b8ff2dccfe95c1c9 HamEvo ac2f72b7e39c462bbf908a2da8892ebb--c4bd6af8b4174616b8ff2dccfe95c1c9 f80b99c5438c43078d5ee4eda9161887 RX(theta₉) c4bd6af8b4174616b8ff2dccfe95c1c9--f80b99c5438c43078d5ee4eda9161887 741a15c4e0ca4c72b6160357282e7732 RY(theta₁₂) f80b99c5438c43078d5ee4eda9161887--741a15c4e0ca4c72b6160357282e7732 857de58e33b748cdb6e731ea14f5e0c6 RX(theta₁₅) 741a15c4e0ca4c72b6160357282e7732--857de58e33b748cdb6e731ea14f5e0c6 39311a50d5a940e896875e283899ff0b HamEvo 857de58e33b748cdb6e731ea14f5e0c6--39311a50d5a940e896875e283899ff0b 06582ed69c744597a107b4daaaaa3ac1 39311a50d5a940e896875e283899ff0b--06582ed69c744597a107b4daaaaa3ac1 004e1c457a264a548b43dd324e9ec04e da733b84ace9476898c2b857968c7d22 RX(theta₁) ad45cbed5c6641279ebd32d6ce476f1b--da733b84ace9476898c2b857968c7d22 f09a71ffd0864627ba79ef1d25869725 2 b7751870542a49d087ccb8eb05f73f14 RY(theta₄) da733b84ace9476898c2b857968c7d22--b7751870542a49d087ccb8eb05f73f14 cf54d96249fa4a4abe76830cce43ec27 RX(theta₇) b7751870542a49d087ccb8eb05f73f14--cf54d96249fa4a4abe76830cce43ec27 ee1e44dbaa074f69b8c19ad3faf304a4 t = theta_t₀ cf54d96249fa4a4abe76830cce43ec27--ee1e44dbaa074f69b8c19ad3faf304a4 fdd3bc2b973d456390cb9c15872b01af RX(theta₁₀) ee1e44dbaa074f69b8c19ad3faf304a4--fdd3bc2b973d456390cb9c15872b01af deb97473c03f4e39a8cd202ec97144a5 RY(theta₁₃) fdd3bc2b973d456390cb9c15872b01af--deb97473c03f4e39a8cd202ec97144a5 a2e0ecb23f034e34b23a5570ac92ab09 RX(theta₁₆) deb97473c03f4e39a8cd202ec97144a5--a2e0ecb23f034e34b23a5570ac92ab09 1bc75734625249f6b7cf1726c0fc9211 t = theta_t₁ a2e0ecb23f034e34b23a5570ac92ab09--1bc75734625249f6b7cf1726c0fc9211 1bc75734625249f6b7cf1726c0fc9211--004e1c457a264a548b43dd324e9ec04e 386fd1b6fca744ef96e513dd032d979f 1169990e79a14e2e954ac401fbe6cab4 RX(theta₂) f09a71ffd0864627ba79ef1d25869725--1169990e79a14e2e954ac401fbe6cab4 03089947560746f485b39bb192f1a9a9 RY(theta₅) 1169990e79a14e2e954ac401fbe6cab4--03089947560746f485b39bb192f1a9a9 d9aa5d311f174af08b431c7ebf39c99d RX(theta₈) 03089947560746f485b39bb192f1a9a9--d9aa5d311f174af08b431c7ebf39c99d e3a0175e880b49288ea11226858ef1aa d9aa5d311f174af08b431c7ebf39c99d--e3a0175e880b49288ea11226858ef1aa 3d3d8fbd23f441b1968e4388f7e38cf9 RX(theta₁₁) e3a0175e880b49288ea11226858ef1aa--3d3d8fbd23f441b1968e4388f7e38cf9 90ea48567f6242eaa9ce80a3e3d467dd RY(theta₁₄) 3d3d8fbd23f441b1968e4388f7e38cf9--90ea48567f6242eaa9ce80a3e3d467dd 227e54fb0c534858ab81c4738b5dda82 RX(theta₁₇) 90ea48567f6242eaa9ce80a3e3d467dd--227e54fb0c534858ab81c4738b5dda82 c8c3abe9adb7460d8d2a6b64dc4b708f 227e54fb0c534858ab81c4738b5dda82--c8c3abe9adb7460d8d2a6b64dc4b708f c8c3abe9adb7460d8d2a6b64dc4b708f--386fd1b6fca744ef96e513dd032d979f

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_87915b4bf15c4d68a739c02e7ba714bf cluster_4647ee04be084b0db96fb9b7139527b1 1cb46dcb60e547bfb0855ba5bb20a85f 0 cf5c84f4242b4ba98275235e5fec6ad0 RX(theta₀) 1cb46dcb60e547bfb0855ba5bb20a85f--cf5c84f4242b4ba98275235e5fec6ad0 57244bae1d2a48678a0e9ae9c5def047 1 81c998d57f714a34a06444d36feff183 RY(theta₆) cf5c84f4242b4ba98275235e5fec6ad0--81c998d57f714a34a06444d36feff183 c22972b53c974901b4198e741d2762f8 RX(theta₁₂) 81c998d57f714a34a06444d36feff183--c22972b53c974901b4198e741d2762f8 5b31111f24cb4221b23aefdf6d82bc6c c22972b53c974901b4198e741d2762f8--5b31111f24cb4221b23aefdf6d82bc6c dfcba9f8542440f1a336eaa812dd4f41 RX(theta₁₈) 5b31111f24cb4221b23aefdf6d82bc6c--dfcba9f8542440f1a336eaa812dd4f41 8f06bff96e5f4c1a85d479449d3a182c RY(theta₂₄) dfcba9f8542440f1a336eaa812dd4f41--8f06bff96e5f4c1a85d479449d3a182c 8106aea6138c441eb5e08b2eb0793127 RX(theta₃₀) 8f06bff96e5f4c1a85d479449d3a182c--8106aea6138c441eb5e08b2eb0793127 150ab4dbe0044b9791cba09f21a15a25 8106aea6138c441eb5e08b2eb0793127--150ab4dbe0044b9791cba09f21a15a25 95cca07a6a6b4a63a11fc5a5783a331d 150ab4dbe0044b9791cba09f21a15a25--95cca07a6a6b4a63a11fc5a5783a331d c52e69cf5e2d4918a23b975f8bb1fb5b 9524d5d862be4346a9ec1e63ed7f1bbc RX(theta₁) 57244bae1d2a48678a0e9ae9c5def047--9524d5d862be4346a9ec1e63ed7f1bbc 67a4ced3d82a4c7ba422ec4fe826fe6e 2 164d5bbe2bd142738a4fb8384e8e75ee RY(theta₇) 9524d5d862be4346a9ec1e63ed7f1bbc--164d5bbe2bd142738a4fb8384e8e75ee c99361560a8c4185b6053f95031d0793 RX(theta₁₃) 164d5bbe2bd142738a4fb8384e8e75ee--c99361560a8c4185b6053f95031d0793 8b86b68369f4444a9d92b3099b7f8033 c99361560a8c4185b6053f95031d0793--8b86b68369f4444a9d92b3099b7f8033 39c3d2d090d448168f132f301b74b266 RX(theta₁₉) 8b86b68369f4444a9d92b3099b7f8033--39c3d2d090d448168f132f301b74b266 8d8a912c4bf44219bacfa9af21508ba4 RY(theta₂₅) 39c3d2d090d448168f132f301b74b266--8d8a912c4bf44219bacfa9af21508ba4 42626198cbc945fca7651e2850c5c23a RX(theta₃₁) 8d8a912c4bf44219bacfa9af21508ba4--42626198cbc945fca7651e2850c5c23a 79fa8c28478c46c1af3d41966827a7d7 42626198cbc945fca7651e2850c5c23a--79fa8c28478c46c1af3d41966827a7d7 79fa8c28478c46c1af3d41966827a7d7--c52e69cf5e2d4918a23b975f8bb1fb5b 8e773a9d37d54ae6924cb78eca31def8 881e6264c25c4b00a957b94c482d5dcf RX(theta₂) 67a4ced3d82a4c7ba422ec4fe826fe6e--881e6264c25c4b00a957b94c482d5dcf 6b47175a025443c49d5f10b5dede801e 3 209d0bc273ca40efb484e28f1641b99b RY(theta₈) 881e6264c25c4b00a957b94c482d5dcf--209d0bc273ca40efb484e28f1641b99b 28508567b44349d3aff4360547bfe5c8 RX(theta₁₄) 209d0bc273ca40efb484e28f1641b99b--28508567b44349d3aff4360547bfe5c8 f3b6478637b74d848edc80542700bf18 HamEvo 28508567b44349d3aff4360547bfe5c8--f3b6478637b74d848edc80542700bf18 3771a76261e143de8682b16000ec51b1 RX(theta₂₀) f3b6478637b74d848edc80542700bf18--3771a76261e143de8682b16000ec51b1 d707ecee85ae49dcb1e1da3456e8b0c7 RY(theta₂₆) 3771a76261e143de8682b16000ec51b1--d707ecee85ae49dcb1e1da3456e8b0c7 d00fb94c1c3e46459ad7f22c1f0bf661 RX(theta₃₂) d707ecee85ae49dcb1e1da3456e8b0c7--d00fb94c1c3e46459ad7f22c1f0bf661 cf1c9e440a3248738e332da0983dc67c HamEvo d00fb94c1c3e46459ad7f22c1f0bf661--cf1c9e440a3248738e332da0983dc67c cf1c9e440a3248738e332da0983dc67c--8e773a9d37d54ae6924cb78eca31def8 8f156b26e4924178aefe64e58e599fe1 e517d3eeb3e14a4bbe5e1c4799107794 RX(theta₃) 6b47175a025443c49d5f10b5dede801e--e517d3eeb3e14a4bbe5e1c4799107794 4e11f45d739244f2bc2582f95008bc6b 4 cd6895b156594eef803dda5694475bb5 RY(theta₉) e517d3eeb3e14a4bbe5e1c4799107794--cd6895b156594eef803dda5694475bb5 155d03358b834cb7b0b6f0d8c298c3a2 RX(theta₁₅) cd6895b156594eef803dda5694475bb5--155d03358b834cb7b0b6f0d8c298c3a2 c1e9a2675ad74d04a2adb66eedf2da0f t = theta_t₀ 155d03358b834cb7b0b6f0d8c298c3a2--c1e9a2675ad74d04a2adb66eedf2da0f 75730edf3adf4e86a4c1bac484ac7749 RX(theta₂₁) c1e9a2675ad74d04a2adb66eedf2da0f--75730edf3adf4e86a4c1bac484ac7749 eacd653cb57b48afb4cdada82605c09e RY(theta₂₇) 75730edf3adf4e86a4c1bac484ac7749--eacd653cb57b48afb4cdada82605c09e ce532d2a36f743a2b346619d9481c4ee RX(theta₃₃) eacd653cb57b48afb4cdada82605c09e--ce532d2a36f743a2b346619d9481c4ee c3c50ed6e430472392b9f152c165b0e2 t = theta_t₁ ce532d2a36f743a2b346619d9481c4ee--c3c50ed6e430472392b9f152c165b0e2 c3c50ed6e430472392b9f152c165b0e2--8f156b26e4924178aefe64e58e599fe1 14ea6f76874d44d7918b06c68689f3cb 2a46ff2fc62c4a259f4a288dbb39f477 RX(theta₄) 4e11f45d739244f2bc2582f95008bc6b--2a46ff2fc62c4a259f4a288dbb39f477 0434c28800c74a94b71491dadda9d499 5 fc31f57d2cd149c983956d00c0f5b773 RY(theta₁₀) 2a46ff2fc62c4a259f4a288dbb39f477--fc31f57d2cd149c983956d00c0f5b773 0fffdb83eb844cc8a55d8e3ee9c7e9c1 RX(theta₁₆) fc31f57d2cd149c983956d00c0f5b773--0fffdb83eb844cc8a55d8e3ee9c7e9c1 df94a66db46a4dafb9b8b9ebb5789023 0fffdb83eb844cc8a55d8e3ee9c7e9c1--df94a66db46a4dafb9b8b9ebb5789023 de2df7447abc42beb6895d6407e7a641 RX(theta₂₂) df94a66db46a4dafb9b8b9ebb5789023--de2df7447abc42beb6895d6407e7a641 9a65911af036450588cd85eec9c0febd RY(theta₂₈) de2df7447abc42beb6895d6407e7a641--9a65911af036450588cd85eec9c0febd 685a1158bdf845f9a82f2ef31c13da92 RX(theta₃₄) 9a65911af036450588cd85eec9c0febd--685a1158bdf845f9a82f2ef31c13da92 bf56f199e941438691e5e94120865153 685a1158bdf845f9a82f2ef31c13da92--bf56f199e941438691e5e94120865153 bf56f199e941438691e5e94120865153--14ea6f76874d44d7918b06c68689f3cb b7a01fd14c2a4946b530c2229e7d54f0 713cd581dc344747bbe7e34e906b91e5 RX(theta₅) 0434c28800c74a94b71491dadda9d499--713cd581dc344747bbe7e34e906b91e5 4c759d4c84d84dab87cacb9936893a45 RY(theta₁₁) 713cd581dc344747bbe7e34e906b91e5--4c759d4c84d84dab87cacb9936893a45 83358313fe114df1831640bf460a1649 RX(theta₁₇) 4c759d4c84d84dab87cacb9936893a45--83358313fe114df1831640bf460a1649 70c7d69ab8904dba8e9ca93c5e2ae1a4 83358313fe114df1831640bf460a1649--70c7d69ab8904dba8e9ca93c5e2ae1a4 ec5f7ca36bc54df6a921b41518e758ed RX(theta₂₃) 70c7d69ab8904dba8e9ca93c5e2ae1a4--ec5f7ca36bc54df6a921b41518e758ed 49f18e811d4b427a961a5dbb00c42a72 RY(theta₂₉) ec5f7ca36bc54df6a921b41518e758ed--49f18e811d4b427a961a5dbb00c42a72 f258c486de1049c3b5005d30b285eb64 RX(theta₃₅) 49f18e811d4b427a961a5dbb00c42a72--f258c486de1049c3b5005d30b285eb64 d0cbbe169c1b437a9a47a4ec24ef7aee f258c486de1049c3b5005d30b285eb64--d0cbbe169c1b437a9a47a4ec24ef7aee d0cbbe169c1b437a9a47a4ec24ef7aee--b7a01fd14c2a4946b530c2229e7d54f0

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_2230b37ae654412fbd24118ba042e5dc BPMA-1 cluster_5979a327c7c2498bbfc1e90c69c9ab96 BPMA-0 1f237d0ceb03428bae4d2d9ea5ca758e 0 1d3916611f5847849d458a66012180c4 RX(iia_α₀₀) 1f237d0ceb03428bae4d2d9ea5ca758e--1d3916611f5847849d458a66012180c4 c887a45862244e189f27d486e32a97c6 1 247498cce4f543dc9062b08cff2e090f RY(iia_α₀₃) 1d3916611f5847849d458a66012180c4--247498cce4f543dc9062b08cff2e090f 4ca2878246f34c668c100b81104de29b 247498cce4f543dc9062b08cff2e090f--4ca2878246f34c668c100b81104de29b b4fe9d21906d4bb6badf664dc8f5b23e 4ca2878246f34c668c100b81104de29b--b4fe9d21906d4bb6badf664dc8f5b23e 9f48edd12b3e489c9a71b737864e52a4 RX(iia_γ₀₀) b4fe9d21906d4bb6badf664dc8f5b23e--9f48edd12b3e489c9a71b737864e52a4 489fde47404a405996b1b96c0b376c86 9f48edd12b3e489c9a71b737864e52a4--489fde47404a405996b1b96c0b376c86 b3649dbc6207481f952c4fb1acc55523 489fde47404a405996b1b96c0b376c86--b3649dbc6207481f952c4fb1acc55523 550ae85b564344a796118e94a80e4ba0 RY(iia_β₀₃) b3649dbc6207481f952c4fb1acc55523--550ae85b564344a796118e94a80e4ba0 566a6db3fd654f71ac0d01e154f876d8 RX(iia_β₀₀) 550ae85b564344a796118e94a80e4ba0--566a6db3fd654f71ac0d01e154f876d8 eef295e7c1da49e29f173a11f638073e RX(iia_α₁₀) 566a6db3fd654f71ac0d01e154f876d8--eef295e7c1da49e29f173a11f638073e ae566b40bbb34bf7a724aee67b8da3c1 RY(iia_α₁₃) eef295e7c1da49e29f173a11f638073e--ae566b40bbb34bf7a724aee67b8da3c1 9fe4c28829064d10830b86ff47ba316f ae566b40bbb34bf7a724aee67b8da3c1--9fe4c28829064d10830b86ff47ba316f 891563fc11ca47f78453f0de97e803ea 9fe4c28829064d10830b86ff47ba316f--891563fc11ca47f78453f0de97e803ea 2db7890cc7d04bd0afb7133327a6c67e RX(iia_γ₁₀) 891563fc11ca47f78453f0de97e803ea--2db7890cc7d04bd0afb7133327a6c67e b663ada7c812419984d4758310febd02 2db7890cc7d04bd0afb7133327a6c67e--b663ada7c812419984d4758310febd02 2a049c311ab542b3970f31b1687d22d8 b663ada7c812419984d4758310febd02--2a049c311ab542b3970f31b1687d22d8 1bd3581017a1470cac2772f8fed686ac RY(iia_β₁₃) 2a049c311ab542b3970f31b1687d22d8--1bd3581017a1470cac2772f8fed686ac 6330fc732e904c18ab0b5864f347168b RX(iia_β₁₀) 1bd3581017a1470cac2772f8fed686ac--6330fc732e904c18ab0b5864f347168b e2229a5d605744adb11d13bbe962e1f9 6330fc732e904c18ab0b5864f347168b--e2229a5d605744adb11d13bbe962e1f9 c94f60b79c6a40c9b3eef82534606ecb 72c4663dc5574e1eba03fc01a1abf549 RX(iia_α₀₁) c887a45862244e189f27d486e32a97c6--72c4663dc5574e1eba03fc01a1abf549 327b2bf18b0849358327ea10389bf590 2 e671181b5834496a953d568feaf514c8 RY(iia_α₀₄) 72c4663dc5574e1eba03fc01a1abf549--e671181b5834496a953d568feaf514c8 5de5e580fd614079ae65de55037650fb X e671181b5834496a953d568feaf514c8--5de5e580fd614079ae65de55037650fb 5de5e580fd614079ae65de55037650fb--4ca2878246f34c668c100b81104de29b 4490510c4f034b87bb54267a64887745 5de5e580fd614079ae65de55037650fb--4490510c4f034b87bb54267a64887745 9f7f88513330479993965de8a5afa338 RX(iia_γ₀₁) 4490510c4f034b87bb54267a64887745--9f7f88513330479993965de8a5afa338 8dbd9d438a3a43ce8c0ce21ebfd92130 9f7f88513330479993965de8a5afa338--8dbd9d438a3a43ce8c0ce21ebfd92130 44d6b40d8f2241c3bb4849a5dca291c2 X 8dbd9d438a3a43ce8c0ce21ebfd92130--44d6b40d8f2241c3bb4849a5dca291c2 44d6b40d8f2241c3bb4849a5dca291c2--b3649dbc6207481f952c4fb1acc55523 4887e77a5cb544aab9530edfc100bafb RY(iia_β₀₄) 44d6b40d8f2241c3bb4849a5dca291c2--4887e77a5cb544aab9530edfc100bafb e721822c0c9c4796a1f6ba529dde79e9 RX(iia_β₀₁) 4887e77a5cb544aab9530edfc100bafb--e721822c0c9c4796a1f6ba529dde79e9 e641d9739f95499693460a09aafd4b1c RX(iia_α₁₁) e721822c0c9c4796a1f6ba529dde79e9--e641d9739f95499693460a09aafd4b1c 3bf69dba2f5848a18f1050dbec2a40e3 RY(iia_α₁₄) e641d9739f95499693460a09aafd4b1c--3bf69dba2f5848a18f1050dbec2a40e3 f76936a6998740778ea4eaed73105299 X 3bf69dba2f5848a18f1050dbec2a40e3--f76936a6998740778ea4eaed73105299 f76936a6998740778ea4eaed73105299--9fe4c28829064d10830b86ff47ba316f 02677acb320c4daea61ba68a5397ecca f76936a6998740778ea4eaed73105299--02677acb320c4daea61ba68a5397ecca e29ce84c219948668f50470ef38cd883 RX(iia_γ₁₁) 02677acb320c4daea61ba68a5397ecca--e29ce84c219948668f50470ef38cd883 e095075c32024766b2e1c7e677b9a92c e29ce84c219948668f50470ef38cd883--e095075c32024766b2e1c7e677b9a92c f866046b438143ae81b369990ab0dc1a X e095075c32024766b2e1c7e677b9a92c--f866046b438143ae81b369990ab0dc1a f866046b438143ae81b369990ab0dc1a--2a049c311ab542b3970f31b1687d22d8 532b46d5a1dd40278308fd5ee874c840 RY(iia_β₁₄) f866046b438143ae81b369990ab0dc1a--532b46d5a1dd40278308fd5ee874c840 d7de53e0310e41f98582966208d59b10 RX(iia_β₁₁) 532b46d5a1dd40278308fd5ee874c840--d7de53e0310e41f98582966208d59b10 d7de53e0310e41f98582966208d59b10--c94f60b79c6a40c9b3eef82534606ecb d9166cdcac404bbf97e98c6ef35c1bc0 efa44d4eab46493084307daebfa0626d RX(iia_α₀₂) 327b2bf18b0849358327ea10389bf590--efa44d4eab46493084307daebfa0626d 81984ce5564e4f51918d65193a162f30 RY(iia_α₀₅) efa44d4eab46493084307daebfa0626d--81984ce5564e4f51918d65193a162f30 e2ad4e20fda64a4ea972ffe57556ad0c 81984ce5564e4f51918d65193a162f30--e2ad4e20fda64a4ea972ffe57556ad0c b65364d5fd0c4c31a6cc25ec08f4cf85 X e2ad4e20fda64a4ea972ffe57556ad0c--b65364d5fd0c4c31a6cc25ec08f4cf85 b65364d5fd0c4c31a6cc25ec08f4cf85--4490510c4f034b87bb54267a64887745 af55b431b39643d0803da553efafdedd RX(iia_γ₀₂) b65364d5fd0c4c31a6cc25ec08f4cf85--af55b431b39643d0803da553efafdedd b00b30521192489492e12f85e4946694 X af55b431b39643d0803da553efafdedd--b00b30521192489492e12f85e4946694 b00b30521192489492e12f85e4946694--8dbd9d438a3a43ce8c0ce21ebfd92130 d0459feed0bd4617817a7ed5a22bed41 b00b30521192489492e12f85e4946694--d0459feed0bd4617817a7ed5a22bed41 be9beb3b44d24007804a298555f3a4bd RY(iia_β₀₅) d0459feed0bd4617817a7ed5a22bed41--be9beb3b44d24007804a298555f3a4bd 4c72ba7380fc401d816bc73aff07f104 RX(iia_β₀₂) be9beb3b44d24007804a298555f3a4bd--4c72ba7380fc401d816bc73aff07f104 6de7387212e6407b99720b8d4cddf6bf RX(iia_α₁₂) 4c72ba7380fc401d816bc73aff07f104--6de7387212e6407b99720b8d4cddf6bf 60a393b74e164da3b15af783356c8861 RY(iia_α₁₅) 6de7387212e6407b99720b8d4cddf6bf--60a393b74e164da3b15af783356c8861 2a8cf302b75944149726f4db9dd40ac4 60a393b74e164da3b15af783356c8861--2a8cf302b75944149726f4db9dd40ac4 fd84af6ecf354189a42b6e73aa284084 X 2a8cf302b75944149726f4db9dd40ac4--fd84af6ecf354189a42b6e73aa284084 fd84af6ecf354189a42b6e73aa284084--02677acb320c4daea61ba68a5397ecca cb2bb28f2c8f4e2c89cb9d2e2f0bbce9 RX(iia_γ₁₂) fd84af6ecf354189a42b6e73aa284084--cb2bb28f2c8f4e2c89cb9d2e2f0bbce9 3c0880bc535645fea9bbdf3ac7266746 X cb2bb28f2c8f4e2c89cb9d2e2f0bbce9--3c0880bc535645fea9bbdf3ac7266746 3c0880bc535645fea9bbdf3ac7266746--e095075c32024766b2e1c7e677b9a92c 839846042b774371bd6e8c01db2aef45 3c0880bc535645fea9bbdf3ac7266746--839846042b774371bd6e8c01db2aef45 fbaa47965283428b8d9db9e37c9dc3f0 RY(iia_β₁₅) 839846042b774371bd6e8c01db2aef45--fbaa47965283428b8d9db9e37c9dc3f0 e662d985593845ad908805aada3cb539 RX(iia_β₁₂) fbaa47965283428b8d9db9e37c9dc3f0--e662d985593845ad908805aada3cb539 e662d985593845ad908805aada3cb539--d9166cdcac404bbf97e98c6ef35c1bc0