Parametric programs 
Qadence base Parameter type is a subtype of sympy.Symbol. There are three kinds of parameter subtypes used:
Fixed Parameter  : A constant with a fixed, non-trainable value (e.g.  \(\dfrac{\pi}{2}\) ). 
Variational Parameter  : A trainable parameter which can be optimized. 
Feature Parameter  : A non-trainable parameter which can be used to encode classical data into a quantum state. 
 
Fixed Parameters 
To pass a fixed parameter to a gate (or any parametrizable block), one can simply use either Python numeric types or wrapped in
a torch.Tensor.
from  qadence  import  RX ,  run ,  PI 
 
# Let's use a torch type. 
block  =  RX ( 0 ,  PI ) 
wf  =  run ( block ) 
 
# Let's pass a simple float. 
block  =  RX ( 0 ,  1. ) 
wf  =  run ( block ) 
 
w f   =   tens or( [[ 6.1232e-17+0. j ,   0.0000e+00-1. j ]] ) 
w f   =   tens or( [[ 0.8776+0.0000 j ,   0.0000-0.4794 j ]] ) 
 
 
Variational Parameters 
To parametrize a block by an angle theta, either a Python string or an instance of  VariationalParameter can be passed instead of a numeric type to the gate constructor:
from  qadence  import  RX ,  run ,  VariationalParameter 
 
block  =  RX ( 0 ,  "theta" ) 
# This is equivalent to: 
block  =  RX ( 0 ,  VariationalParameter ( "theta" )) 
 
wf  =  run ( block ) 
 
w f   =   tens or( [[ 0.9895+0.0000 j ,   0.0000-0.1448 j ]] ) 
 
 
In the first case in the above example, theta is automatically inferred as a VariationalParameter (i.e.  trainable). It is initialized to a random value for the purposes of execution. In the context of a QuantumModel, there is no need to pass a value for theta to the run method since it is stored within the underlying model parameter dictionary.
Feature Parameters 
FeatureParameter types (i.e.  inputs), always need to be provided with a value or a batch of values as a dictionary:
from  torch  import  tensor 
from  qadence  import  RX ,  run ,  FeatureParameter 
 
block  =  RX ( 0 ,  FeatureParameter ( "phi" )) 
 
wf  =  run ( block ,  values = { "phi" :  tensor ([ 1. ,  2. ])}) 
 
w f   =   tens or( [[ 0.8776+0.0000 j ,   0.0000-0.4794 j ], 
         [ 0.5403+0.0000 j ,   0.0000-0.8415 j ]] ) 
 
 
Now, run returns a batch of states, one for every provided angle which coincides with the value of the particular FeatureParameter.
Multiparameter Expressions 
However, an angle can itself be an expression Parameter types of any kind.
As such, any sympy expression expr: sympy.Basic consisting of a combination of free symbols (i.e.  sympy types) and Qadence Parameter can
be passed to a block, including trigonometric functions.
from  torch  import  tensor 
from  qadence  import  RX ,  Parameter ,  run ,  FeatureParameter 
from  sympy  import  sin 
 
theta ,  phi  =  Parameter ( "theta" ),  FeatureParameter ( "phi" ) 
block  =  RX ( 0 ,  sin ( theta + phi )) 
 
# Remember, to run the block, only FeatureParameter values have to be provided: 
values  =  { "phi" :  tensor ([ 1.0 ,  2.0 ])} 
wf  =  run ( block ,  values = values ) 
 
w f   =   tens or( [[ 0.8811+0.0000 j ,   0.0000-0.4730 j ], 
         [ 0.9812+0.0000 j ,   0.0000-0.1931 j ]] ) 
 
 
Parameters Redundancy 
Parameters are uniquely defined by their name and redundancy is allowed in composite blocks to
assign the same value to different blocks.
import  torch 
from  qadence  import  RX ,  RY ,  run ,  chain ,  kron 
 
block  =  chain ( 
     kron ( RX ( 0 ,  "phi" ),  RY ( 1 ,  "theta" )), 
     kron ( RX ( 0 ,  "phi" ),  RY ( 1 ,  "theta" )), 
) 
 
wf  =  run ( block )   # Same random initialization for all instances of phi and theta. 
 
w f   =   tens or( [[ 0.8543+0.0000 j ,   0.3484+0.0000 j ,   0.0000-0.3572 j ,   0.0000-0.1457 j ]] ) 
 
 
Parametrized Circuits 
Now, let's have a look at the construction of a variational ansatz which composes FeatureParameter and VariationalParameter types:
import  sympy 
from  qadence  import  RX ,  RY ,  RZ ,  CNOT ,  Z ,  run ,  chain ,  kron ,  FeatureParameter ,  VariationalParameter 
 
phi  =  FeatureParameter ( "phi" ) 
theta  =  VariationalParameter ( "theta" ) 
 
block  =  chain ( 
     kron ( 
         RX ( 0 ,  phi / theta ), 
         RY ( 1 ,  theta * 2 ), 
         RZ ( 2 ,  sympy . cos ( phi )), 
     ), 
     kron ( 
         RX ( 0 ,  phi ), 
         RY ( 1 ,  theta ), 
         RZ ( 2 ,  phi ), 
     ), 
     kron ( 
         RX ( 0 ,  phi ), 
         RY ( 1 ,  theta ), 
         RZ ( 2 ,  phi ), 
     ), 
     kron ( 
         RX ( 0 ,  phi  +  theta ), 
         RY ( 1 ,  theta ** 2 ), 
         RZ ( 2 ,  sympy . cos ( phi )), 
     ), 
     chain ( CNOT ( 0 , 1 ),  CNOT ( 1 , 2 )) 
) 
block . tag  =  "Rotations" 
 
obs  =  2 * kron ( * map ( Z ,  range ( 3 ))) 
block  =  chain ( block ,  obs ) 
 
%3 
 
cluster_dfe375d8132740509441d749380475b3 
 
[* 2] 
 
cluster_b603a0939e574ec4b85a116096f2fce3 
 
Rotations 
 
5260ccef0f2e41768bc207903d310650 
0 
 
028a521968374f95bfcf201e67d60f17 
 
RX(phi/theta) 
 
5260ccef0f2e41768bc207903d310650--028a521968374f95bfcf201e67d60f17 
 
 
dd30abe9ebeb4854bc6caee1b67d2f1e 
1 
 
0f0b77c6685f4049aca195b80c73f29c 
 
RX(phi) 
 
028a521968374f95bfcf201e67d60f17--0f0b77c6685f4049aca195b80c73f29c 
 
 
c3e146f1108e4be585434755d6a51519 
 
RX(phi) 
 
0f0b77c6685f4049aca195b80c73f29c--c3e146f1108e4be585434755d6a51519 
 
 
9b2baab232d04bfe9d922c32b588ec60 
 
RX(phi + theta) 
 
c3e146f1108e4be585434755d6a51519--9b2baab232d04bfe9d922c32b588ec60 
 
 
c70ad9c5138f4390bfa758f31788bfff 
 
 
9b2baab232d04bfe9d922c32b588ec60--c70ad9c5138f4390bfa758f31788bfff 
 
 
0b1c6093849b452282cba668d31618ec 
 
 
c70ad9c5138f4390bfa758f31788bfff--0b1c6093849b452282cba668d31618ec 
 
 
e7e7d1cf04e7480b93f755e9fa311a6c 
 
Z 
 
0b1c6093849b452282cba668d31618ec--e7e7d1cf04e7480b93f755e9fa311a6c 
 
 
84e8ea06458a483c8832c2c67ba82e83 
 
e7e7d1cf04e7480b93f755e9fa311a6c--84e8ea06458a483c8832c2c67ba82e83 
 
 
c4fe6b6b45594b82b6aaf7270407cc5c 
 
d932286dc4c64808a6aa1ff9e602354a 
 
RY(2*theta) 
 
dd30abe9ebeb4854bc6caee1b67d2f1e--d932286dc4c64808a6aa1ff9e602354a 
 
 
1bfbefde28d546dbaf25fecd26ae877a 
2 
 
25cb3fc90c2f4af2a40ebc8c50bb4329 
 
RY(theta) 
 
d932286dc4c64808a6aa1ff9e602354a--25cb3fc90c2f4af2a40ebc8c50bb4329 
 
 
fc37fffde0cf47949f5b04b876e73fac 
 
RY(theta) 
 
25cb3fc90c2f4af2a40ebc8c50bb4329--fc37fffde0cf47949f5b04b876e73fac 
 
 
171e4c4e194743538e682867edc48ef1 
 
RY(theta**2) 
 
fc37fffde0cf47949f5b04b876e73fac--171e4c4e194743538e682867edc48ef1 
 
 
afcffa770355456286f9d0cb4fa77db9 
 
X 
 
171e4c4e194743538e682867edc48ef1--afcffa770355456286f9d0cb4fa77db9 
 
 
afcffa770355456286f9d0cb4fa77db9--c70ad9c5138f4390bfa758f31788bfff 
 
 
03aaa28f3c5047dfa71bde320ec5ac38 
 
 
afcffa770355456286f9d0cb4fa77db9--03aaa28f3c5047dfa71bde320ec5ac38 
 
 
e5306a202fb449a5b43b13cc25f11c43 
 
Z 
 
03aaa28f3c5047dfa71bde320ec5ac38--e5306a202fb449a5b43b13cc25f11c43 
 
 
e5306a202fb449a5b43b13cc25f11c43--c4fe6b6b45594b82b6aaf7270407cc5c 
 
 
073c3f26562d4e258993d2acc1601cf4 
 
092076ee82e24e978162e98ad505f149 
 
RZ(cos(phi)) 
 
1bfbefde28d546dbaf25fecd26ae877a--092076ee82e24e978162e98ad505f149 
 
 
2f617df2993a44caab93e6574724bd41 
 
RZ(phi) 
 
092076ee82e24e978162e98ad505f149--2f617df2993a44caab93e6574724bd41 
 
 
3659afc7465d4b57ae30aca9255aba3e 
 
RZ(phi) 
 
2f617df2993a44caab93e6574724bd41--3659afc7465d4b57ae30aca9255aba3e 
 
 
5ed549676d2145c5ada9dacdf0723b3a 
 
RZ(cos(phi)) 
 
3659afc7465d4b57ae30aca9255aba3e--5ed549676d2145c5ada9dacdf0723b3a 
 
 
954b54094acd49d8bccad34709e48a63 
 
 
5ed549676d2145c5ada9dacdf0723b3a--954b54094acd49d8bccad34709e48a63 
 
 
d8b09e41bddf409b9c84a8ffa0955235 
 
X 
 
954b54094acd49d8bccad34709e48a63--d8b09e41bddf409b9c84a8ffa0955235 
 
 
d8b09e41bddf409b9c84a8ffa0955235--03aaa28f3c5047dfa71bde320ec5ac38 
 
 
eb28ade19bd94ee0b3689fb98edaac84 
 
Z 
 
d8b09e41bddf409b9c84a8ffa0955235--eb28ade19bd94ee0b3689fb98edaac84 
 
 
eb28ade19bd94ee0b3689fb98edaac84--073c3f26562d4e258993d2acc1601cf4 
 
 
 
 
 
Please note the different colors for the parametrization with different types. The default palette assigns light blue for VariationalParameter, light green for FeatureParameter and shaded red for observables.
Parametrized QuantumModels 
As a quick reminder: FeatureParameter are used for data input and data encoding into a quantum state.
VariationalParameter are trainable parameters in a variational ansatz. When used within a QuantumModel , an abstract quantum circuit is made differentiable with respect to both variational and feature
parameters which are uniquely identified by their name.
from  qadence  import  FeatureParameter ,  Parameter ,  VariationalParameter 
 
# Feature parameters are non-trainable parameters. 
# Their primary use is input data encoding. 
fp  =  FeatureParameter ( "x" ) 
assert  fp  ==  Parameter ( "x" ,  trainable = False ) 
 
# Variational parameters are trainable parameters. 
# Their primary use is for optimization. 
vp  =  VariationalParameter ( "y" ) 
assert  vp  ==  Parameter ( "y" ,  trainable = True ) 
 
Let's construct a parametric quantum circuit.
from  qadence  import  QuantumCircuit ,  RX ,  RY ,  chain ,  kron 
 
theta  =  VariationalParameter ( "theta" ) 
phi  =  FeatureParameter ( "phi" ) 
 
block  =  chain ( 
     kron ( RX ( 0 ,  theta ),  RY ( 1 ,  theta )), 
     kron ( RX ( 0 ,  phi ),  RY ( 1 ,  phi )), 
) 
 
circuit  =  QuantumCircuit ( 2 ,  block ) 
unique_params  =  circuit . unique_parameters 
 
u n ique_params   =   [ t he ta ,   phi ] 
 
 
In the circuit above, four parameters are defined but only two unique names. Therefore, there will be only one
variational parameter to be optimized.
The QuantumModel class also provides convenience methods to manipulate parameters.
from  qadence  import  QuantumModel ,  BackendName ,  DiffMode 
 
model  =  QuantumModel ( circuit ,  backend = BackendName . PYQTORCH ,  diff_mode = DiffMode . AD ) 
num_vparams  =  model . num_vparams  # get the number of variational parameters 
vparams_values  =  model . vparams 
 
nu m_vparams   =   1 
vparams_values   =   OrderedDic t ( [ (' t he ta ' ,   tens or( [ 0.7213 ] )) ] ) 
 
 
Only provide feature parameter values to the quantum model
In order to run the variational circuit only feature parameter values   have to be provided.
Variational parameters are stored in the model itself. If multiple feature parameters are present,
values must be provided in batches of same length.
import  torch 
 
values  =  { "phi" :  torch . rand ( 3 )}  # theta does not appear here 
wf  =  model . run ( values ) 
 
w f   =   tens or( [[ 0.4423+0.0000 j ,   0.4967+0.0000 j ,   0.0000-0.4967 j ,   0.0000-0.5577 j ], 
         [ 0.5495+0.0000 j ,   0.4975+0.0000 j ,   0.0000-0.4975 j ,   0.0000-0.4505 j ], 
         [ 0.8138+0.0000 j ,   0.3893+0.0000 j ,   0.0000-0.3893 j ,   0.0000-0.1862 j ]], 
        grad_ fn =<TBackward 0 >) 
 
 
 
Standard constructors 
The unique parameter identification is relevant when using built-in Qadence block
constructors in the qadence.constructors module such as feature maps and hardware
efficient ansatze (HEA).
from  qadence  import  QuantumCircuit ,  hea 
 
n_qubits  =  4 
depth  =  2 
 
hea1  =  hea ( n_qubits = n_qubits ,  depth = depth ) 
circuit  =  QuantumCircuit ( n_qubits ,  hea1 ) 
num_unique_parameters  =  circuit . num_unique_parameters 
 
U n ique   parame ters   wi t h   a   si n gle   HEA :   24 
 
 
%3 
 
bc9d05ede5944d5bb4b8cb352ace4bcb 
0 
 
f611f26851d840bd951bfa6588040a32 
 
RX(theta₀) 
 
bc9d05ede5944d5bb4b8cb352ace4bcb--f611f26851d840bd951bfa6588040a32 
 
 
dd1ecd17790541e5b725b2547d313e87 
1 
 
ced308b9b96642c8bfcbafa86a122b11 
 
RY(theta₄) 
 
f611f26851d840bd951bfa6588040a32--ced308b9b96642c8bfcbafa86a122b11 
 
 
16d2bc829fac42c291e5a1d3e8e801af 
 
RX(theta₈) 
 
ced308b9b96642c8bfcbafa86a122b11--16d2bc829fac42c291e5a1d3e8e801af 
 
 
d6c1d197bc0644bf8d1cf1d54864db56 
 
 
16d2bc829fac42c291e5a1d3e8e801af--d6c1d197bc0644bf8d1cf1d54864db56 
 
 
e5cc704b7b354208a6949423bb582c15 
 
 
d6c1d197bc0644bf8d1cf1d54864db56--e5cc704b7b354208a6949423bb582c15 
 
 
3536869f52a94d9eb7e1642e28e12908 
 
RX(theta₁₂) 
 
e5cc704b7b354208a6949423bb582c15--3536869f52a94d9eb7e1642e28e12908 
 
 
9664d6fdcf5e4b40b8832355d77cd2bb 
 
RY(theta₁₆) 
 
3536869f52a94d9eb7e1642e28e12908--9664d6fdcf5e4b40b8832355d77cd2bb 
 
 
0c4d50f990d64f5a86f9c8545f4c3547 
 
RX(theta₂₀) 
 
9664d6fdcf5e4b40b8832355d77cd2bb--0c4d50f990d64f5a86f9c8545f4c3547 
 
 
5d83ae1866d04c3ca98bdb6bd578f01b 
 
 
0c4d50f990d64f5a86f9c8545f4c3547--5d83ae1866d04c3ca98bdb6bd578f01b 
 
 
f4425bd6ad744b49a377c4c70f3d6aea 
 
 
5d83ae1866d04c3ca98bdb6bd578f01b--f4425bd6ad744b49a377c4c70f3d6aea 
 
 
5bda6a75d7094604b54aa9e80745b6d0 
 
f4425bd6ad744b49a377c4c70f3d6aea--5bda6a75d7094604b54aa9e80745b6d0 
 
 
26fe24de0e3b41deb807a4dbe8609f15 
 
676a87d54adb4834b1c859ecd17ae864 
 
RX(theta₁) 
 
dd1ecd17790541e5b725b2547d313e87--676a87d54adb4834b1c859ecd17ae864 
 
 
440248f7f05340699422031c824e0075 
2 
 
82b29df4280046589aac004bf6b15156 
 
RY(theta₅) 
 
676a87d54adb4834b1c859ecd17ae864--82b29df4280046589aac004bf6b15156 
 
 
2ba20e07e1424b97b207f5edce79d81a 
 
RX(theta₉) 
 
82b29df4280046589aac004bf6b15156--2ba20e07e1424b97b207f5edce79d81a 
 
 
74ec352be1ae4bfa8558cc438d39ad4c 
 
X 
 
2ba20e07e1424b97b207f5edce79d81a--74ec352be1ae4bfa8558cc438d39ad4c 
 
 
74ec352be1ae4bfa8558cc438d39ad4c--d6c1d197bc0644bf8d1cf1d54864db56 
 
 
da9efa008afd43b9b15b1ba2db893ca5 
 
 
74ec352be1ae4bfa8558cc438d39ad4c--da9efa008afd43b9b15b1ba2db893ca5 
 
 
3c035f4e7dda40ab8e961a6bacc3c914 
 
RX(theta₁₃) 
 
da9efa008afd43b9b15b1ba2db893ca5--3c035f4e7dda40ab8e961a6bacc3c914 
 
 
270685efd93a4365a6dbdb7b65a2ded4 
 
RY(theta₁₇) 
 
3c035f4e7dda40ab8e961a6bacc3c914--270685efd93a4365a6dbdb7b65a2ded4 
 
 
4b742461b32b4a5994e932152704cacb 
 
RX(theta₂₁) 
 
270685efd93a4365a6dbdb7b65a2ded4--4b742461b32b4a5994e932152704cacb 
 
 
15c5ecac19cf49a2a6a90e66a43e952d 
 
X 
 
4b742461b32b4a5994e932152704cacb--15c5ecac19cf49a2a6a90e66a43e952d 
 
 
15c5ecac19cf49a2a6a90e66a43e952d--5d83ae1866d04c3ca98bdb6bd578f01b 
 
 
4458120e5ecd49318de01d72d3c5fa9b 
 
 
15c5ecac19cf49a2a6a90e66a43e952d--4458120e5ecd49318de01d72d3c5fa9b 
 
 
4458120e5ecd49318de01d72d3c5fa9b--26fe24de0e3b41deb807a4dbe8609f15 
 
 
f8152ab8beed4193895cd05f5a4c0d98 
 
c19411479d72488e9e277421cb5afd18 
 
RX(theta₂) 
 
440248f7f05340699422031c824e0075--c19411479d72488e9e277421cb5afd18 
 
 
3db4524c454c40bba6725c777e24ed2a 
3 
 
1f120487c2c841999ce2a1998ce8bd92 
 
RY(theta₆) 
 
c19411479d72488e9e277421cb5afd18--1f120487c2c841999ce2a1998ce8bd92 
 
 
59a22a6d2401453ba8399d0f1c1ee4ff 
 
RX(theta₁₀) 
 
1f120487c2c841999ce2a1998ce8bd92--59a22a6d2401453ba8399d0f1c1ee4ff 
 
 
69c77b87c9294937b01d8bb7008a1be8 
 
 
59a22a6d2401453ba8399d0f1c1ee4ff--69c77b87c9294937b01d8bb7008a1be8 
 
 
5c4b9eb88eb24352ab44e2f11234f939 
 
X 
 
69c77b87c9294937b01d8bb7008a1be8--5c4b9eb88eb24352ab44e2f11234f939 
 
 
5c4b9eb88eb24352ab44e2f11234f939--da9efa008afd43b9b15b1ba2db893ca5 
 
 
3e8c3eb223dd405397fc34cd5ed05e0f 
 
RX(theta₁₄) 
 
5c4b9eb88eb24352ab44e2f11234f939--3e8c3eb223dd405397fc34cd5ed05e0f 
 
 
8f63b33347254118a63e4a7c0bb48d63 
 
RY(theta₁₈) 
 
3e8c3eb223dd405397fc34cd5ed05e0f--8f63b33347254118a63e4a7c0bb48d63 
 
 
df032503be7a415887562d62df5863c8 
 
RX(theta₂₂) 
 
8f63b33347254118a63e4a7c0bb48d63--df032503be7a415887562d62df5863c8 
 
 
feccd62fcc4f4b5993d825df02d575dd 
 
 
df032503be7a415887562d62df5863c8--feccd62fcc4f4b5993d825df02d575dd 
 
 
5d8c8525a7634aada39ea0d2dade9e22 
 
X 
 
feccd62fcc4f4b5993d825df02d575dd--5d8c8525a7634aada39ea0d2dade9e22 
 
 
5d8c8525a7634aada39ea0d2dade9e22--4458120e5ecd49318de01d72d3c5fa9b 
 
 
5d8c8525a7634aada39ea0d2dade9e22--f8152ab8beed4193895cd05f5a4c0d98 
 
 
8a0429d440064676bcf94f160f6e23ed 
 
d5ef10a1815b40a1a1984bcd15748f85 
 
RX(theta₃) 
 
3db4524c454c40bba6725c777e24ed2a--d5ef10a1815b40a1a1984bcd15748f85 
 
 
e76e4a972f964c86ab216e03a4815c9a 
 
RY(theta₇) 
 
d5ef10a1815b40a1a1984bcd15748f85--e76e4a972f964c86ab216e03a4815c9a 
 
 
d47e78ea540a496aad41e9f8f9cdc948 
 
RX(theta₁₁) 
 
e76e4a972f964c86ab216e03a4815c9a--d47e78ea540a496aad41e9f8f9cdc948 
 
 
60c6fdbc012b4833827f262e40ef0433 
 
X 
 
d47e78ea540a496aad41e9f8f9cdc948--60c6fdbc012b4833827f262e40ef0433 
 
 
60c6fdbc012b4833827f262e40ef0433--69c77b87c9294937b01d8bb7008a1be8 
 
 
188a7155ea634283afeef97d822fdef1 
 
 
60c6fdbc012b4833827f262e40ef0433--188a7155ea634283afeef97d822fdef1 
 
 
314e70c154f34ff79a030a057f900238 
 
RX(theta₁₅) 
 
188a7155ea634283afeef97d822fdef1--314e70c154f34ff79a030a057f900238 
 
 
0c28a88a228d4f42a11f1f481c31baad 
 
RY(theta₁₉) 
 
314e70c154f34ff79a030a057f900238--0c28a88a228d4f42a11f1f481c31baad 
 
 
6cbeac8f30114035a5a0b48558eb79fe 
 
RX(theta₂₃) 
 
0c28a88a228d4f42a11f1f481c31baad--6cbeac8f30114035a5a0b48558eb79fe 
 
 
886b572e2d8445619857a74d761862a2 
 
X 
 
6cbeac8f30114035a5a0b48558eb79fe--886b572e2d8445619857a74d761862a2 
 
 
886b572e2d8445619857a74d761862a2--feccd62fcc4f4b5993d825df02d575dd 
 
 
664ebec1a63a4a9da8681b20596cd577 
 
 
886b572e2d8445619857a74d761862a2--664ebec1a63a4a9da8681b20596cd577 
 
 
664ebec1a63a4a9da8681b20596cd577--8a0429d440064676bcf94f160f6e23ed 
 
 
 
 
A new circuit can be created by adding another identical HEA. As expected, the number of unique parameters
is the same.
hea2  =  hea ( n_qubits = n_qubits ,  depth = depth ) 
 
circuit  =  QuantumCircuit ( n_qubits ,  hea1 ,  hea2 ) 
num_unique_params_two_heas  =  circuit . num_unique_parameters 
 
U n ique   parame ters   wi t h   t wo   s ta cked   HEAs :   24 
 
 
%3 
 
cluster_351e4fee9bc544b18aa05f81d4503000 
 
HEA 
 
cluster_695d56cf12fa4bd0acc887c1fa4dd90a 
 
HEA 
 
a37f9183ee354e4aa0f95344c4d98cdd 
0 
 
2a06e94656ff44b8922384c285a633f1 
 
RX(theta₀) 
 
a37f9183ee354e4aa0f95344c4d98cdd--2a06e94656ff44b8922384c285a633f1 
 
 
fc2d7b6ccba649a791490369888670aa 
1 
 
6b8b790976464a07a220a27a2bdd1085 
 
RY(theta₄) 
 
2a06e94656ff44b8922384c285a633f1--6b8b790976464a07a220a27a2bdd1085 
 
 
bb1e4e61b1ab4b7c87da9720dd5a2067 
 
RX(theta₈) 
 
6b8b790976464a07a220a27a2bdd1085--bb1e4e61b1ab4b7c87da9720dd5a2067 
 
 
81150532f15d4601b00cb059ed56068c 
 
 
bb1e4e61b1ab4b7c87da9720dd5a2067--81150532f15d4601b00cb059ed56068c 
 
 
96b60e002d2c460f836960337274c2dc 
 
 
81150532f15d4601b00cb059ed56068c--96b60e002d2c460f836960337274c2dc 
 
 
2f8cb79431054e26835e867376e38acd 
 
RX(theta₁₂) 
 
96b60e002d2c460f836960337274c2dc--2f8cb79431054e26835e867376e38acd 
 
 
0bc6e3e1353c45c48c74d745aa9228f8 
 
RY(theta₁₆) 
 
2f8cb79431054e26835e867376e38acd--0bc6e3e1353c45c48c74d745aa9228f8 
 
 
dffa1e5375504e158dff26c284705b24 
 
RX(theta₂₀) 
 
0bc6e3e1353c45c48c74d745aa9228f8--dffa1e5375504e158dff26c284705b24 
 
 
9efa4189db724b02a88e163e59c4e980 
 
 
dffa1e5375504e158dff26c284705b24--9efa4189db724b02a88e163e59c4e980 
 
 
c9a213d1dcff44d58122f41da9d95942 
 
 
9efa4189db724b02a88e163e59c4e980--c9a213d1dcff44d58122f41da9d95942 
 
 
e91f73abfea64d868a38e1f2fab0c8cc 
 
RX(theta₀) 
 
c9a213d1dcff44d58122f41da9d95942--e91f73abfea64d868a38e1f2fab0c8cc 
 
 
eeb9da96f75b431caaab00c17e992a9b 
 
RY(theta₄) 
 
e91f73abfea64d868a38e1f2fab0c8cc--eeb9da96f75b431caaab00c17e992a9b 
 
 
f5bdadccc2974b5bba2763fb194c6de4 
 
RX(theta₈) 
 
eeb9da96f75b431caaab00c17e992a9b--f5bdadccc2974b5bba2763fb194c6de4 
 
 
fa84ba0ccfe4490eba5d0fdd4fdce86c 
 
 
f5bdadccc2974b5bba2763fb194c6de4--fa84ba0ccfe4490eba5d0fdd4fdce86c 
 
 
0f037f28f294436f88c68fae86a177a2 
 
 
fa84ba0ccfe4490eba5d0fdd4fdce86c--0f037f28f294436f88c68fae86a177a2 
 
 
ee08dee4ab984ee2a8803466ce93d006 
 
RX(theta₁₂) 
 
0f037f28f294436f88c68fae86a177a2--ee08dee4ab984ee2a8803466ce93d006 
 
 
1340e9fdd26043eeabab842dbdfd40d9 
 
RY(theta₁₆) 
 
ee08dee4ab984ee2a8803466ce93d006--1340e9fdd26043eeabab842dbdfd40d9 
 
 
a93892a5e6ee4516b41391f4f58f17ea 
 
RX(theta₂₀) 
 
1340e9fdd26043eeabab842dbdfd40d9--a93892a5e6ee4516b41391f4f58f17ea 
 
 
1e5d2a50d85b4d7cb8e82078dac530c0 
 
 
a93892a5e6ee4516b41391f4f58f17ea--1e5d2a50d85b4d7cb8e82078dac530c0 
 
 
27678222331d40858d36d7f8a18aa6f4 
 
 
1e5d2a50d85b4d7cb8e82078dac530c0--27678222331d40858d36d7f8a18aa6f4 
 
 
07accd54cf5240b98bc6c93e5cd0a1d2 
 
27678222331d40858d36d7f8a18aa6f4--07accd54cf5240b98bc6c93e5cd0a1d2 
 
 
281734dbfeb74ba69a6bb5d974da3db4 
 
5de109aa4cdb48daba9a8703d5f6d11d 
 
RX(theta₁) 
 
fc2d7b6ccba649a791490369888670aa--5de109aa4cdb48daba9a8703d5f6d11d 
 
 
6eb5d418c04b4b1b8390d6c33468e8d6 
2 
 
b7e6d55b084d4503ad93756dcafab395 
 
RY(theta₅) 
 
5de109aa4cdb48daba9a8703d5f6d11d--b7e6d55b084d4503ad93756dcafab395 
 
 
46b88b0e56e44e719ec36b5e89bba40e 
 
RX(theta₉) 
 
b7e6d55b084d4503ad93756dcafab395--46b88b0e56e44e719ec36b5e89bba40e 
 
 
621f875368ae419aa1d4e23af526f389 
 
X 
 
46b88b0e56e44e719ec36b5e89bba40e--621f875368ae419aa1d4e23af526f389 
 
 
621f875368ae419aa1d4e23af526f389--81150532f15d4601b00cb059ed56068c 
 
 
5fbbf11e6da64695a20c43533ff39987 
 
 
621f875368ae419aa1d4e23af526f389--5fbbf11e6da64695a20c43533ff39987 
 
 
06152d3c8ac34c939d4dae6d1a6e9ce5 
 
RX(theta₁₃) 
 
5fbbf11e6da64695a20c43533ff39987--06152d3c8ac34c939d4dae6d1a6e9ce5 
 
 
06e9d5ec067b4d47867a7513db07035e 
 
RY(theta₁₇) 
 
06152d3c8ac34c939d4dae6d1a6e9ce5--06e9d5ec067b4d47867a7513db07035e 
 
 
41e6955f75b94d2d9f2152d7c079c689 
 
RX(theta₂₁) 
 
06e9d5ec067b4d47867a7513db07035e--41e6955f75b94d2d9f2152d7c079c689 
 
 
25e5c77859324633b79d279406e13eaf 
 
X 
 
41e6955f75b94d2d9f2152d7c079c689--25e5c77859324633b79d279406e13eaf 
 
 
25e5c77859324633b79d279406e13eaf--9efa4189db724b02a88e163e59c4e980 
 
 
750b4b0d82884339a9698b60d6ba6fc1 
 
 
25e5c77859324633b79d279406e13eaf--750b4b0d82884339a9698b60d6ba6fc1 
 
 
f0005f6209484ba3a9750494be1f55e5 
 
RX(theta₁) 
 
750b4b0d82884339a9698b60d6ba6fc1--f0005f6209484ba3a9750494be1f55e5 
 
 
2f3546da27fd406d863647c4c81a6d38 
 
RY(theta₅) 
 
f0005f6209484ba3a9750494be1f55e5--2f3546da27fd406d863647c4c81a6d38 
 
 
a101bbb76c6d4442be5a40f4b2f85f12 
 
RX(theta₉) 
 
2f3546da27fd406d863647c4c81a6d38--a101bbb76c6d4442be5a40f4b2f85f12 
 
 
57b3eba755c6414a95f68c22c43ef113 
 
X 
 
a101bbb76c6d4442be5a40f4b2f85f12--57b3eba755c6414a95f68c22c43ef113 
 
 
57b3eba755c6414a95f68c22c43ef113--fa84ba0ccfe4490eba5d0fdd4fdce86c 
 
 
c5a28b25659f46968bec426185ad9d20 
 
 
57b3eba755c6414a95f68c22c43ef113--c5a28b25659f46968bec426185ad9d20 
 
 
a87017ad175843cdaf54bfaa9c01b29e 
 
RX(theta₁₃) 
 
c5a28b25659f46968bec426185ad9d20--a87017ad175843cdaf54bfaa9c01b29e 
 
 
d18cc3260d9a40178032862158293716 
 
RY(theta₁₇) 
 
a87017ad175843cdaf54bfaa9c01b29e--d18cc3260d9a40178032862158293716 
 
 
7ee356e0b8de465c9a622b20322cb85b 
 
RX(theta₂₁) 
 
d18cc3260d9a40178032862158293716--7ee356e0b8de465c9a622b20322cb85b 
 
 
6dbb0641103c4d36ae1b2b71696016ad 
 
X 
 
7ee356e0b8de465c9a622b20322cb85b--6dbb0641103c4d36ae1b2b71696016ad 
 
 
6dbb0641103c4d36ae1b2b71696016ad--1e5d2a50d85b4d7cb8e82078dac530c0 
 
 
7f84aa4563b245478e50142542fdccd6 
 
 
6dbb0641103c4d36ae1b2b71696016ad--7f84aa4563b245478e50142542fdccd6 
 
 
7f84aa4563b245478e50142542fdccd6--281734dbfeb74ba69a6bb5d974da3db4 
 
 
f22ea65eec994ef3ae10791baad19738 
 
bfc8d7c784d346dabc9feae2bdb23ed5 
 
RX(theta₂) 
 
6eb5d418c04b4b1b8390d6c33468e8d6--bfc8d7c784d346dabc9feae2bdb23ed5 
 
 
630f6d88d00e449784050f8223d19a1b 
3 
 
c62e98d0abb34fcda4b0890b5c0ffea3 
 
RY(theta₆) 
 
bfc8d7c784d346dabc9feae2bdb23ed5--c62e98d0abb34fcda4b0890b5c0ffea3 
 
 
8394bbd7081843c5813d066cf6decc53 
 
RX(theta₁₀) 
 
c62e98d0abb34fcda4b0890b5c0ffea3--8394bbd7081843c5813d066cf6decc53 
 
 
d731dc523d1c473d9d75da84db20c381 
 
 
8394bbd7081843c5813d066cf6decc53--d731dc523d1c473d9d75da84db20c381 
 
 
7182c183dc6940638392fd3f0fc6a964 
 
X 
 
d731dc523d1c473d9d75da84db20c381--7182c183dc6940638392fd3f0fc6a964 
 
 
7182c183dc6940638392fd3f0fc6a964--5fbbf11e6da64695a20c43533ff39987 
 
 
43e5c85ee1e74ec789b543a096461c16 
 
RX(theta₁₄) 
 
7182c183dc6940638392fd3f0fc6a964--43e5c85ee1e74ec789b543a096461c16 
 
 
cfa6beeecd254d46a08d1cc934e4d71f 
 
RY(theta₁₈) 
 
43e5c85ee1e74ec789b543a096461c16--cfa6beeecd254d46a08d1cc934e4d71f 
 
 
94325b3ccc124369909e9d733de9dff0 
 
RX(theta₂₂) 
 
cfa6beeecd254d46a08d1cc934e4d71f--94325b3ccc124369909e9d733de9dff0 
 
 
3b157041271e46978fc6f789e43160a4 
 
 
94325b3ccc124369909e9d733de9dff0--3b157041271e46978fc6f789e43160a4 
 
 
75af1796f1534ca88d570ca75561783f 
 
X 
 
3b157041271e46978fc6f789e43160a4--75af1796f1534ca88d570ca75561783f 
 
 
75af1796f1534ca88d570ca75561783f--750b4b0d82884339a9698b60d6ba6fc1 
 
 
34ce622679ca448292d5017398202d4e 
 
RX(theta₂) 
 
75af1796f1534ca88d570ca75561783f--34ce622679ca448292d5017398202d4e 
 
 
d093ac017935479b945e8d677f613d49 
 
RY(theta₆) 
 
34ce622679ca448292d5017398202d4e--d093ac017935479b945e8d677f613d49 
 
 
109f0bee41c64b02ac8d5affe3c367ac 
 
RX(theta₁₀) 
 
d093ac017935479b945e8d677f613d49--109f0bee41c64b02ac8d5affe3c367ac 
 
 
333a4deb4b164374915a28d053cde912 
 
 
109f0bee41c64b02ac8d5affe3c367ac--333a4deb4b164374915a28d053cde912 
 
 
922beee076954713bacff6b45a19fdc8 
 
X 
 
333a4deb4b164374915a28d053cde912--922beee076954713bacff6b45a19fdc8 
 
 
922beee076954713bacff6b45a19fdc8--c5a28b25659f46968bec426185ad9d20 
 
 
3eb468f85a154c59a6ecf73f1c6db0d4 
 
RX(theta₁₄) 
 
922beee076954713bacff6b45a19fdc8--3eb468f85a154c59a6ecf73f1c6db0d4 
 
 
3edb333c544f4a88bc0824f842cae909 
 
RY(theta₁₈) 
 
3eb468f85a154c59a6ecf73f1c6db0d4--3edb333c544f4a88bc0824f842cae909 
 
 
c7ef62e62e3a457d9be1ba5053e836c9 
 
RX(theta₂₂) 
 
3edb333c544f4a88bc0824f842cae909--c7ef62e62e3a457d9be1ba5053e836c9 
 
 
eca3ec5cba5f4d2db67c3798522b5ef7 
 
 
c7ef62e62e3a457d9be1ba5053e836c9--eca3ec5cba5f4d2db67c3798522b5ef7 
 
 
1f0f8ca0b276449e8512926a8c4b1aa0 
 
X 
 
eca3ec5cba5f4d2db67c3798522b5ef7--1f0f8ca0b276449e8512926a8c4b1aa0 
 
 
1f0f8ca0b276449e8512926a8c4b1aa0--7f84aa4563b245478e50142542fdccd6 
 
 
1f0f8ca0b276449e8512926a8c4b1aa0--f22ea65eec994ef3ae10791baad19738 
 
 
7a131d691b8542d1b162b592a36ddaac 
 
13344361d8494ae0978b2064ea608147 
 
RX(theta₃) 
 
630f6d88d00e449784050f8223d19a1b--13344361d8494ae0978b2064ea608147 
 
 
5ff112fcae1a4d799aac98b962d49277 
 
RY(theta₇) 
 
13344361d8494ae0978b2064ea608147--5ff112fcae1a4d799aac98b962d49277 
 
 
c02f56e4e2774a87847c6dc129545b2e 
 
RX(theta₁₁) 
 
5ff112fcae1a4d799aac98b962d49277--c02f56e4e2774a87847c6dc129545b2e 
 
 
5f077882774b498796b5714ecd06b0b2 
 
X 
 
c02f56e4e2774a87847c6dc129545b2e--5f077882774b498796b5714ecd06b0b2 
 
 
5f077882774b498796b5714ecd06b0b2--d731dc523d1c473d9d75da84db20c381 
 
 
0c87a90d77b548e9bd04c98f51beb975 
 
 
5f077882774b498796b5714ecd06b0b2--0c87a90d77b548e9bd04c98f51beb975 
 
 
4e1b590b22cf4a3a8ebde687eadc61be 
 
RX(theta₁₅) 
 
0c87a90d77b548e9bd04c98f51beb975--4e1b590b22cf4a3a8ebde687eadc61be 
 
 
38d0b0ed1c0f4823ac78ba80ae526882 
 
RY(theta₁₉) 
 
4e1b590b22cf4a3a8ebde687eadc61be--38d0b0ed1c0f4823ac78ba80ae526882 
 
 
510370e8e34d41c8aa9f7c650531ee82 
 
RX(theta₂₃) 
 
38d0b0ed1c0f4823ac78ba80ae526882--510370e8e34d41c8aa9f7c650531ee82 
 
 
9c2ab9b39ac243fba4e0c9aedbb36787 
 
X 
 
510370e8e34d41c8aa9f7c650531ee82--9c2ab9b39ac243fba4e0c9aedbb36787 
 
 
9c2ab9b39ac243fba4e0c9aedbb36787--3b157041271e46978fc6f789e43160a4 
 
 
bd5a153ace76466d902b945bda98c740 
 
 
9c2ab9b39ac243fba4e0c9aedbb36787--bd5a153ace76466d902b945bda98c740 
 
 
af57d5b49c004ec594ee4dd87c8373e3 
 
RX(theta₃) 
 
bd5a153ace76466d902b945bda98c740--af57d5b49c004ec594ee4dd87c8373e3 
 
 
84898892225b462595eacc23422bda3f 
 
RY(theta₇) 
 
af57d5b49c004ec594ee4dd87c8373e3--84898892225b462595eacc23422bda3f 
 
 
a97d4b0b47714f3bac4b0743cfc7a46b 
 
RX(theta₁₁) 
 
84898892225b462595eacc23422bda3f--a97d4b0b47714f3bac4b0743cfc7a46b 
 
 
270112b5990d460aafea4ca2973d7a8c 
 
X 
 
a97d4b0b47714f3bac4b0743cfc7a46b--270112b5990d460aafea4ca2973d7a8c 
 
 
270112b5990d460aafea4ca2973d7a8c--333a4deb4b164374915a28d053cde912 
 
 
f9c9383e1b5f479891d37cfa39427a6c 
 
 
270112b5990d460aafea4ca2973d7a8c--f9c9383e1b5f479891d37cfa39427a6c 
 
 
34b426677c43420eb7dbfa0ceb8dabb3 
 
RX(theta₁₅) 
 
f9c9383e1b5f479891d37cfa39427a6c--34b426677c43420eb7dbfa0ceb8dabb3 
 
 
3f49070113484dd1b10536cff9baba11 
 
RY(theta₁₉) 
 
34b426677c43420eb7dbfa0ceb8dabb3--3f49070113484dd1b10536cff9baba11 
 
 
d8aa8f0cd5d647749b26e67aad48eba1 
 
RX(theta₂₃) 
 
3f49070113484dd1b10536cff9baba11--d8aa8f0cd5d647749b26e67aad48eba1 
 
 
d4e925661db5495ab0293f7bec6080ad 
 
X 
 
d8aa8f0cd5d647749b26e67aad48eba1--d4e925661db5495ab0293f7bec6080ad 
 
 
d4e925661db5495ab0293f7bec6080ad--eca3ec5cba5f4d2db67c3798522b5ef7 
 
 
6dd39e92e52440a3956e0fc7b315fe67 
 
 
d4e925661db5495ab0293f7bec6080ad--6dd39e92e52440a3956e0fc7b315fe67 
 
 
6dd39e92e52440a3956e0fc7b315fe67--7a131d691b8542d1b162b592a36ddaac 
 
 
 
 
Avoid non-unique names by prefixing
A parameter prefix for each HEA can be passed as follows:
hea1  =  hea ( n_qubits = n_qubits ,  depth = depth ,  param_prefix = "p1" ) 
hea2  =  hea ( n_qubits = n_qubits ,  depth = depth ,  param_prefix = "p2" ) 
 
circuit  =  QuantumCircuit ( n_qubits ,  hea1 ,  hea2 ) 
n_params_two_heas  =  circuit . num_unique_parameters 
 
U n ique   parame ters   wi t h   t wo   s ta cked   HEAs :   48 
 
 
%3 
 
cluster_48ae310aa7bc4eaa9d2d4c8a8442d9ed 
 
HEA 
 
cluster_3c5ce23f0aa047bbbaae2996a0a6d27b 
 
HEA 
 
480f8151d41b4f98a527cbdb80151e9e 
0 
 
e66ae45428c94109bee0820c47c1e14e 
 
RX(p1₀) 
 
480f8151d41b4f98a527cbdb80151e9e--e66ae45428c94109bee0820c47c1e14e 
 
 
3bc58a02e4f143c0a64ded157cc7273c 
1 
 
a63ea47e46f64923bc0a457eb5338767 
 
RY(p1₄) 
 
e66ae45428c94109bee0820c47c1e14e--a63ea47e46f64923bc0a457eb5338767 
 
 
8bb23a31695441139c0dd7ccfd0e781a 
 
RX(p1₈) 
 
a63ea47e46f64923bc0a457eb5338767--8bb23a31695441139c0dd7ccfd0e781a 
 
 
3bb6aa31b81048178c374e7e909a4f43 
 
 
8bb23a31695441139c0dd7ccfd0e781a--3bb6aa31b81048178c374e7e909a4f43 
 
 
162d1e5036b546ec95ec7f0cd91630fc 
 
 
3bb6aa31b81048178c374e7e909a4f43--162d1e5036b546ec95ec7f0cd91630fc 
 
 
f5001a6755df47da9cb6916595d99d7b 
 
RX(p1₁₂) 
 
162d1e5036b546ec95ec7f0cd91630fc--f5001a6755df47da9cb6916595d99d7b 
 
 
c7b2ba850a1f4ffa968d90a6bd6da81a 
 
RY(p1₁₆) 
 
f5001a6755df47da9cb6916595d99d7b--c7b2ba850a1f4ffa968d90a6bd6da81a 
 
 
fdca7d209cc44f32877f7e26cee4a094 
 
RX(p1₂₀) 
 
c7b2ba850a1f4ffa968d90a6bd6da81a--fdca7d209cc44f32877f7e26cee4a094 
 
 
c414b801815a4da181ed8c20fa905cfe 
 
 
fdca7d209cc44f32877f7e26cee4a094--c414b801815a4da181ed8c20fa905cfe 
 
 
4197335972964742b4db07ea7921d0b1 
 
 
c414b801815a4da181ed8c20fa905cfe--4197335972964742b4db07ea7921d0b1 
 
 
9396d2d7f52047a0827b99fea70dc53e 
 
RX(p2₀) 
 
4197335972964742b4db07ea7921d0b1--9396d2d7f52047a0827b99fea70dc53e 
 
 
62b9af498d3b42d09edc4aa3e0a11ce6 
 
RY(p2₄) 
 
9396d2d7f52047a0827b99fea70dc53e--62b9af498d3b42d09edc4aa3e0a11ce6 
 
 
a576d84f4d7c4a91bb35f1b570cd5ad4 
 
RX(p2₈) 
 
62b9af498d3b42d09edc4aa3e0a11ce6--a576d84f4d7c4a91bb35f1b570cd5ad4 
 
 
c6d33fdbc942450695c34d72f11036d5 
 
 
a576d84f4d7c4a91bb35f1b570cd5ad4--c6d33fdbc942450695c34d72f11036d5 
 
 
04b5f4ee85e84c0db3ef3b38836be49a 
 
 
c6d33fdbc942450695c34d72f11036d5--04b5f4ee85e84c0db3ef3b38836be49a 
 
 
d235f365019f431e82cf87ca7c1ea189 
 
RX(p2₁₂) 
 
04b5f4ee85e84c0db3ef3b38836be49a--d235f365019f431e82cf87ca7c1ea189 
 
 
d29e39e2328247c08cef5d8ffea2f278 
 
RY(p2₁₆) 
 
d235f365019f431e82cf87ca7c1ea189--d29e39e2328247c08cef5d8ffea2f278 
 
 
a5dc2f673b9f4beaa48f1e491454b7aa 
 
RX(p2₂₀) 
 
d29e39e2328247c08cef5d8ffea2f278--a5dc2f673b9f4beaa48f1e491454b7aa 
 
 
ac2388d1fc884d10bb60227917932af4 
 
 
a5dc2f673b9f4beaa48f1e491454b7aa--ac2388d1fc884d10bb60227917932af4 
 
 
4184fc7f54fd4511aa988e4f94786bb4 
 
 
ac2388d1fc884d10bb60227917932af4--4184fc7f54fd4511aa988e4f94786bb4 
 
 
900f137aecad4e94887e2d0727288a77 
 
4184fc7f54fd4511aa988e4f94786bb4--900f137aecad4e94887e2d0727288a77 
 
 
63858d1909a2476e9616331b11d19226 
 
0fa76547f1dd4671a3467f2c20319779 
 
RX(p1₁) 
 
3bc58a02e4f143c0a64ded157cc7273c--0fa76547f1dd4671a3467f2c20319779 
 
 
71d114e04dba4635a638e12a42733edb 
2 
 
4529777449584198be9f6739466efdee 
 
RY(p1₅) 
 
0fa76547f1dd4671a3467f2c20319779--4529777449584198be9f6739466efdee 
 
 
9260f9bdd2a640cbbf49e1df37bbc4e7 
 
RX(p1₉) 
 
4529777449584198be9f6739466efdee--9260f9bdd2a640cbbf49e1df37bbc4e7 
 
 
19db2bfd688446d5936497c0e424ebc3 
 
X 
 
9260f9bdd2a640cbbf49e1df37bbc4e7--19db2bfd688446d5936497c0e424ebc3 
 
 
19db2bfd688446d5936497c0e424ebc3--3bb6aa31b81048178c374e7e909a4f43 
 
 
e5cf937e770a4f4fbe0343043341c0b3 
 
 
19db2bfd688446d5936497c0e424ebc3--e5cf937e770a4f4fbe0343043341c0b3 
 
 
ebe088f1d7844199adce6ad900d60ed3 
 
RX(p1₁₃) 
 
e5cf937e770a4f4fbe0343043341c0b3--ebe088f1d7844199adce6ad900d60ed3 
 
 
af97495732bf4215b44da686a8835c91 
 
RY(p1₁₇) 
 
ebe088f1d7844199adce6ad900d60ed3--af97495732bf4215b44da686a8835c91 
 
 
02a0ec6062344a3aa8d5d3b62b6a00bc 
 
RX(p1₂₁) 
 
af97495732bf4215b44da686a8835c91--02a0ec6062344a3aa8d5d3b62b6a00bc 
 
 
c098019ffcb34b7f920a02e809d6e194 
 
X 
 
02a0ec6062344a3aa8d5d3b62b6a00bc--c098019ffcb34b7f920a02e809d6e194 
 
 
c098019ffcb34b7f920a02e809d6e194--c414b801815a4da181ed8c20fa905cfe 
 
 
02581279e4c14ba28ebda89be6b7c428 
 
 
c098019ffcb34b7f920a02e809d6e194--02581279e4c14ba28ebda89be6b7c428 
 
 
509168da1f0945aba2e40eeaa7a53c45 
 
RX(p2₁) 
 
02581279e4c14ba28ebda89be6b7c428--509168da1f0945aba2e40eeaa7a53c45 
 
 
fdbfaf3732c24c9495d09926c3b75a25 
 
RY(p2₅) 
 
509168da1f0945aba2e40eeaa7a53c45--fdbfaf3732c24c9495d09926c3b75a25 
 
 
edd06c6bc160455f90dcb6fbd81b1633 
 
RX(p2₉) 
 
fdbfaf3732c24c9495d09926c3b75a25--edd06c6bc160455f90dcb6fbd81b1633 
 
 
472d63b5bd6845bda09f6e5f402a0738 
 
X 
 
edd06c6bc160455f90dcb6fbd81b1633--472d63b5bd6845bda09f6e5f402a0738 
 
 
472d63b5bd6845bda09f6e5f402a0738--c6d33fdbc942450695c34d72f11036d5 
 
 
d5148dc65ce24249b43c1792c2d50b6b 
 
 
472d63b5bd6845bda09f6e5f402a0738--d5148dc65ce24249b43c1792c2d50b6b 
 
 
086e365c7bd6440ab9f059ff6e34c484 
 
RX(p2₁₃) 
 
d5148dc65ce24249b43c1792c2d50b6b--086e365c7bd6440ab9f059ff6e34c484 
 
 
12cd6cc315ee4ee080f1ec17e1ad89ee 
 
RY(p2₁₇) 
 
086e365c7bd6440ab9f059ff6e34c484--12cd6cc315ee4ee080f1ec17e1ad89ee 
 
 
7bd881df6d8e4e38afd72e3fbe04f596 
 
RX(p2₂₁) 
 
12cd6cc315ee4ee080f1ec17e1ad89ee--7bd881df6d8e4e38afd72e3fbe04f596 
 
 
79f6da2b8e0e4c3aa5bb72f0e9bd8f2a 
 
X 
 
7bd881df6d8e4e38afd72e3fbe04f596--79f6da2b8e0e4c3aa5bb72f0e9bd8f2a 
 
 
79f6da2b8e0e4c3aa5bb72f0e9bd8f2a--ac2388d1fc884d10bb60227917932af4 
 
 
0d68907e78754b81905c36bc1578fa56 
 
 
79f6da2b8e0e4c3aa5bb72f0e9bd8f2a--0d68907e78754b81905c36bc1578fa56 
 
 
0d68907e78754b81905c36bc1578fa56--63858d1909a2476e9616331b11d19226 
 
 
f1515e0b5d0148c69fb01e4b8c39455d 
 
1c21f829a4684133a25ef92d761bc789 
 
RX(p1₂) 
 
71d114e04dba4635a638e12a42733edb--1c21f829a4684133a25ef92d761bc789 
 
 
2effa892e9f0441aad00327df823e56a 
3 
 
fd51502a22f5460d8fb60f7fa95f0d64 
 
RY(p1₆) 
 
1c21f829a4684133a25ef92d761bc789--fd51502a22f5460d8fb60f7fa95f0d64 
 
 
46c826dca1e948a08fae4163ae1c6ea9 
 
RX(p1₁₀) 
 
fd51502a22f5460d8fb60f7fa95f0d64--46c826dca1e948a08fae4163ae1c6ea9 
 
 
a839ff0a8b2941e9968b69c47980fa65 
 
 
46c826dca1e948a08fae4163ae1c6ea9--a839ff0a8b2941e9968b69c47980fa65 
 
 
79d5f574cee245de9cdc38eda6db55be 
 
X 
 
a839ff0a8b2941e9968b69c47980fa65--79d5f574cee245de9cdc38eda6db55be 
 
 
79d5f574cee245de9cdc38eda6db55be--e5cf937e770a4f4fbe0343043341c0b3 
 
 
b33b13a5bac844a3bdc5a17a53c43925 
 
RX(p1₁₄) 
 
79d5f574cee245de9cdc38eda6db55be--b33b13a5bac844a3bdc5a17a53c43925 
 
 
2f4bb22aab1b4a9eb9af5f0077bbd5b6 
 
RY(p1₁₈) 
 
b33b13a5bac844a3bdc5a17a53c43925--2f4bb22aab1b4a9eb9af5f0077bbd5b6 
 
 
d97e67e33b0f4e5c969b03587b1697a1 
 
RX(p1₂₂) 
 
2f4bb22aab1b4a9eb9af5f0077bbd5b6--d97e67e33b0f4e5c969b03587b1697a1 
 
 
cd4b35deb0d44f8abddf7abea51c5024 
 
 
d97e67e33b0f4e5c969b03587b1697a1--cd4b35deb0d44f8abddf7abea51c5024 
 
 
03902a0a73104828a67bf1da026e998a 
 
X 
 
cd4b35deb0d44f8abddf7abea51c5024--03902a0a73104828a67bf1da026e998a 
 
 
03902a0a73104828a67bf1da026e998a--02581279e4c14ba28ebda89be6b7c428 
 
 
7f29db652966457494c9dcccdb6f2a3c 
 
RX(p2₂) 
 
03902a0a73104828a67bf1da026e998a--7f29db652966457494c9dcccdb6f2a3c 
 
 
b5cba69ed6c247a4a889c38e9e45f29b 
 
RY(p2₆) 
 
7f29db652966457494c9dcccdb6f2a3c--b5cba69ed6c247a4a889c38e9e45f29b 
 
 
516097304ae3422aba82ace55c904d0d 
 
RX(p2₁₀) 
 
b5cba69ed6c247a4a889c38e9e45f29b--516097304ae3422aba82ace55c904d0d 
 
 
b5e6fdc3c1894bcf9d5422c99848de05 
 
 
516097304ae3422aba82ace55c904d0d--b5e6fdc3c1894bcf9d5422c99848de05 
 
 
2c30fc83555a4d3081e23cb7bada6d89 
 
X 
 
b5e6fdc3c1894bcf9d5422c99848de05--2c30fc83555a4d3081e23cb7bada6d89 
 
 
2c30fc83555a4d3081e23cb7bada6d89--d5148dc65ce24249b43c1792c2d50b6b 
 
 
391586b7785b44919d9968bed4e245bd 
 
RX(p2₁₄) 
 
2c30fc83555a4d3081e23cb7bada6d89--391586b7785b44919d9968bed4e245bd 
 
 
8b960dfabb61427087d6356476a5ec2f 
 
RY(p2₁₈) 
 
391586b7785b44919d9968bed4e245bd--8b960dfabb61427087d6356476a5ec2f 
 
 
f9c53c5c9d83415493cdd38f9e12a9c8 
 
RX(p2₂₂) 
 
8b960dfabb61427087d6356476a5ec2f--f9c53c5c9d83415493cdd38f9e12a9c8 
 
 
498d36d9b0064cbb8a927eed4731458a 
 
 
f9c53c5c9d83415493cdd38f9e12a9c8--498d36d9b0064cbb8a927eed4731458a 
 
 
cf97a85fd3244d019e15b9390919481d 
 
X 
 
498d36d9b0064cbb8a927eed4731458a--cf97a85fd3244d019e15b9390919481d 
 
 
cf97a85fd3244d019e15b9390919481d--0d68907e78754b81905c36bc1578fa56 
 
 
cf97a85fd3244d019e15b9390919481d--f1515e0b5d0148c69fb01e4b8c39455d 
 
 
92343b8cbc6e45fe823d78457d21c594 
 
f496840267de4a319100ee6c12dc5adb 
 
RX(p1₃) 
 
2effa892e9f0441aad00327df823e56a--f496840267de4a319100ee6c12dc5adb 
 
 
d73a8c989ebb4680bbb6d44d4d091302 
 
RY(p1₇) 
 
f496840267de4a319100ee6c12dc5adb--d73a8c989ebb4680bbb6d44d4d091302 
 
 
bb0a5429ac85477a859088e66ce31146 
 
RX(p1₁₁) 
 
d73a8c989ebb4680bbb6d44d4d091302--bb0a5429ac85477a859088e66ce31146 
 
 
53656acd575847e78002199345e7f014 
 
X 
 
bb0a5429ac85477a859088e66ce31146--53656acd575847e78002199345e7f014 
 
 
53656acd575847e78002199345e7f014--a839ff0a8b2941e9968b69c47980fa65 
 
 
fc3c0378d248479db91f135f9e5e0759 
 
 
53656acd575847e78002199345e7f014--fc3c0378d248479db91f135f9e5e0759 
 
 
7705962ed73747a99f9e7f3fcaac0b14 
 
RX(p1₁₅) 
 
fc3c0378d248479db91f135f9e5e0759--7705962ed73747a99f9e7f3fcaac0b14 
 
 
f4f94792f1bf4824b72724c3c56408e0 
 
RY(p1₁₉) 
 
7705962ed73747a99f9e7f3fcaac0b14--f4f94792f1bf4824b72724c3c56408e0 
 
 
20a75ac1a5324955bca66b97a517c72d 
 
RX(p1₂₃) 
 
f4f94792f1bf4824b72724c3c56408e0--20a75ac1a5324955bca66b97a517c72d 
 
 
a8b17402c0b24640930f2f3d9ba6835c 
 
X 
 
20a75ac1a5324955bca66b97a517c72d--a8b17402c0b24640930f2f3d9ba6835c 
 
 
a8b17402c0b24640930f2f3d9ba6835c--cd4b35deb0d44f8abddf7abea51c5024 
 
 
ecc55adfa5054102b637baf15f860f9c 
 
 
a8b17402c0b24640930f2f3d9ba6835c--ecc55adfa5054102b637baf15f860f9c 
 
 
c1c7704457ec4b5ab70a5ea927cd669d 
 
RX(p2₃) 
 
ecc55adfa5054102b637baf15f860f9c--c1c7704457ec4b5ab70a5ea927cd669d 
 
 
0aca44ca95b94d0aa3d2a8cb5daf33d9 
 
RY(p2₇) 
 
c1c7704457ec4b5ab70a5ea927cd669d--0aca44ca95b94d0aa3d2a8cb5daf33d9 
 
 
27b33ff5d08a426b887fde851c76c580 
 
RX(p2₁₁) 
 
0aca44ca95b94d0aa3d2a8cb5daf33d9--27b33ff5d08a426b887fde851c76c580 
 
 
9cb063a179984d218947c6d02e510cc5 
 
X 
 
27b33ff5d08a426b887fde851c76c580--9cb063a179984d218947c6d02e510cc5 
 
 
9cb063a179984d218947c6d02e510cc5--b5e6fdc3c1894bcf9d5422c99848de05 
 
 
1c9bb29bc6e542ee8803bb1901b25452 
 
 
9cb063a179984d218947c6d02e510cc5--1c9bb29bc6e542ee8803bb1901b25452 
 
 
aa27a91abc0e41a98876b2270d9d6315 
 
RX(p2₁₅) 
 
1c9bb29bc6e542ee8803bb1901b25452--aa27a91abc0e41a98876b2270d9d6315 
 
 
bf4bb453f591416c9caeac9cb9114217 
 
RY(p2₁₉) 
 
aa27a91abc0e41a98876b2270d9d6315--bf4bb453f591416c9caeac9cb9114217 
 
 
86013838cff6437fa986324521892166 
 
RX(p2₂₃) 
 
bf4bb453f591416c9caeac9cb9114217--86013838cff6437fa986324521892166 
 
 
ad6592c121294b45b9d7efce88c23f15 
 
X 
 
86013838cff6437fa986324521892166--ad6592c121294b45b9d7efce88c23f15 
 
 
ad6592c121294b45b9d7efce88c23f15--498d36d9b0064cbb8a927eed4731458a 
 
 
2094bc70ae954cd19c3874647a7bbf7b 
 
 
ad6592c121294b45b9d7efce88c23f15--2094bc70ae954cd19c3874647a7bbf7b 
 
 
2094bc70ae954cd19c3874647a7bbf7b--92343b8cbc6e45fe823d78457d21c594 
 
 
 
 
 
The hea function will be further explored in the QML Constructors tutorial .
Parametric observables 
In Qadence, one can define quantum observables with classical optimizable parameters to
improve the convergence of QML calculations. This is particularly useful for differentiable quantum circuits.
from  qadence  import  VariationalParameter ,  Z ,  add ,  tag 
 
s  =  VariationalParameter ( "s" ) 
observable  =  add ( s  *  Z ( i )  for  i  in  range ( n_qubits )) 
 
Now, a quantum model can be created with the parametric observable.
The observable variational parameters are included among the model ones.
from  qadence  import  QuantumModel ,  QuantumCircuit 
 
circuit  =  QuantumCircuit ( n_qubits ,  hea ( n_qubits ,  depth )) 
model  =  QuantumModel ( circuit ,  observable = observable ) 
 
Varia t io nal   parame ters   =   OrderedDic t ( [ ('s' ,   tens or( [ 0.6215 ] )) ,   (' t he ta _ 0 ' ,   tens or( [ 0.2697 ] )) ,   (' t he ta _ 1 ' ,   tens or( [ 0.6950 ] )) ,   (' t he ta _ 10 ' ,   tens or( [ 0.3464 ] )) ,   (' t he ta _ 11 ' ,   tens or( [ 0.9241 ] )) ,   (' t he ta _ 12 ' ,   tens or( [ 0.7898 ] )) ,   (' t he ta _ 13 ' ,   tens or( [ 0.9776 ] )) ,   (' t he ta _ 14 ' ,   tens or( [ 0.7308 ] )) ,   (' t he ta _ 15 ' ,   tens or( [ 0.7334 ] )) ,   (' t he ta _ 16 ' ,   tens or( [ 0.7720 ] )) ,   (' t he ta _ 17 ' ,   tens or( [ 0.0300 ] )) ,   (' t he ta _ 18 ' ,   tens or( [ 0.1428 ] )) ,   (' t he ta _ 19 ' ,   tens or( [ 0.2618 ] )) ,   (' t he ta _ 2 ' ,   tens or( [ 0.9746 ] )) ,   (' t he ta _ 20 ' ,   tens or( [ 0.4202 ] )) ,   (' t he ta _ 21 ' ,   tens or( [ 0.7802 ] )) ,   (' t he ta _ 22 ' ,   tens or( [ 0.2414 ] )) ,   (' t he ta _ 23 ' ,   tens or( [ 0.8382 ] )) ,   (' t he ta _ 3 ' ,   tens or( [ 0.5333 ] )) ,   (' t he ta _ 4 ' ,   tens or( [ 0.6383 ] )) ,   (' t he ta _ 5 ' ,   tens or( [ 0.0999 ] )) ,   (' t he ta _ 6 ' ,   tens or( [ 0.3065 ] )) ,   (' t he ta _ 7 ' ,   tens or( [ 0.3257 ] )) ,   (' t he ta _ 8 ' ,   tens or( [ 0.7024 ] )) ,   (' t he ta _ 9 ' ,   tens or( [ 0.8767 ] )) ] ) 
 
 
One optimization step (forward and backward pass) can be performed using built-in torch functionalities. Variational parameters
can be checked to have been updated accordingly:
import  torch 
 
mse_loss  =  torch . nn . MSELoss () 
optimizer  =  torch . optim . Adam ( model . parameters ()) 
 
# Compute forward & backward pass 
optimizer . zero_grad () 
loss  =  mse_loss ( model . expectation ({}),  torch . zeros ( 1 )) 
loss . backward () 
 
# Update the parameters and check the parameters. 
optimizer . step () 
 
Varia t io nal   parame ters   =   OrderedDic t ( [ ('s' ,   tens or( [ 0.6205 ] )) ,   (' t he ta _ 0 ' ,   tens or( [ 0.2707 ] )) ,   (' t he ta _ 1 ' ,   tens or( [ 0.6940 ] )) ,   (' t he ta _ 10 ' ,   tens or( [ 0.3474 ] )) ,   (' t he ta _ 11 ' ,   tens or( [ 0.9251 ] )) ,   (' t he ta _ 12 ' ,   tens or( [ 0.7908 ] )) ,   (' t he ta _ 13 ' ,   tens or( [ 0.9786 ] )) ,   (' t he ta _ 14 ' ,   tens or( [ 0.7318 ] )) ,   (' t he ta _ 15 ' ,   tens or( [ 0.7344 ] )) ,   (' t he ta _ 16 ' ,   tens or( [ 0.7730 ] )) ,   (' t he ta _ 17 ' ,   tens or( [ 0.0310 ] )) ,   (' t he ta _ 18 ' ,   tens or( [ 0.1418 ] )) ,   (' t he ta _ 19 ' ,   tens or( [ 0.2628 ] )) ,   (' t he ta _ 2 ' ,   tens or( [ 0.9756 ] )) ,   (' t he ta _ 20 ' ,   tens or( [ 0.4212 ] )) ,   (' t he ta _ 21 ' ,   tens or( [ 0.7812 ] )) ,   (' t he ta _ 22 ' ,   tens or( [ 0.2424 ] )) ,   (' t he ta _ 23 ' ,   tens or( [ 0.8392 ] )) ,   (' t he ta _ 3 ' ,   tens or( [ 0.5343 ] )) ,   (' t he ta _ 4 ' ,   tens or( [ 0.6373 ] )) ,   (' t he ta _ 5 ' ,   tens or( [ 0.1009 ] )) ,   (' t he ta _ 6 ' ,   tens or( [ 0.3075 ] )) ,   (' t he ta _ 7 ' ,   tens or( [ 0.3247 ] )) ,   (' t he ta _ 8 ' ,   tens or( [ 0.7034 ] )) ,   (' t he ta _ 9 ' ,   tens or( [ 0.8757 ] )) ] ) 
 
 
Non-unitary circuits 
Qadence allows composing with non-unitary blocks.
Here is an example of a non-unitary block as a sum of Pauli operators with complex coefficients.
Currently, only the PyQTorch backend fully supports execution of non-unitary circuits.
 
from  qadence  import  QuantumModel ,  QuantumCircuit ,  Z ,  X 
c1  =  2.0 
c2  =  2.0  +  2.0 j 
 
block  =  c1  *  Z ( 0 )  +  c2  *  X ( 1 )  +  c1  *  c2  *  ( Z ( 2 )  +  X ( 3 )) 
circuit  =  QuantumCircuit ( 4 ,  block ) 
 
model  =  QuantumModel ( circuit )   # BackendName.PYQTORCH and DiffMode.AD by default. 
 
w f   =   tens or( [[ 6.+4. j ,   4.+4. j ,   0.+0. j ,   0.+0. j ,   2.+2. j ,   0.+0. j ,   0.+0. j ,   0.+0. j ,   0.+0. j ,   0.+0. j , 
          0.+0. j ,   0.+0. j ,   0.+0. j ,   0.+0. j ,   0.+0. j ,   0.+0. j ]] )