qadence.draw
example plots
Mostly for quick, manual checking of correct plotting output.
from qadence import X , Y , kron
from qadence.draw import display
b = kron ( X ( 0 ), Y ( 1 ))
%3
94d1e6dde5db4ec7a5652aec5ba13bc9
0
c55c1722ad58452da120c3c3b22cb068
X
94d1e6dde5db4ec7a5652aec5ba13bc9--c55c1722ad58452da120c3c3b22cb068
649c7f6c004e49f8b0552124992291d3
1
26b9280de46446ba93bc5c526e716c40
c55c1722ad58452da120c3c3b22cb068--26b9280de46446ba93bc5c526e716c40
9058edf998e24a7e92b5cc880bfe949b
426441cb1f0c4e15add0d8c759edb196
Y
649c7f6c004e49f8b0552124992291d3--426441cb1f0c4e15add0d8c759edb196
426441cb1f0c4e15add0d8c759edb196--9058edf998e24a7e92b5cc880bfe949b
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
83c3f59bff174fe79ef4a68e0f2c022c
0
5e1cf48fddc640a48ff79531ed8d284d
X
83c3f59bff174fe79ef4a68e0f2c022c--5e1cf48fddc640a48ff79531ed8d284d
6dd5102d9888400d9228081d5fa437cc
Y
5e1cf48fddc640a48ff79531ed8d284d--6dd5102d9888400d9228081d5fa437cc
271794aff177425eb3960866c48befcd
6dd5102d9888400d9228081d5fa437cc--271794aff177425eb3960866c48befcd
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
c9ecab5a0d544c16ade233ab271cae8d
0
43fcaa9f229543dfbb01b3c13d426903
X
c9ecab5a0d544c16ade233ab271cae8d--43fcaa9f229543dfbb01b3c13d426903
2128a02e57ed49978002e81c9ac7f188
1
7150a76fce0848b3b7913c909240858e
43fcaa9f229543dfbb01b3c13d426903--7150a76fce0848b3b7913c909240858e
7d2b5706dd9a4ee3b9c912b4de682e1d
7150a76fce0848b3b7913c909240858e--7d2b5706dd9a4ee3b9c912b4de682e1d
a32d1da3ccdf49c09e6ec9799980d888
0ccc35a048fe44db8953f03223ecc168
2128a02e57ed49978002e81c9ac7f188--0ccc35a048fe44db8953f03223ecc168
37c8bdc3de2241bbb6027d38d35bf71f
Y
0ccc35a048fe44db8953f03223ecc168--37c8bdc3de2241bbb6027d38d35bf71f
37c8bdc3de2241bbb6027d38d35bf71f--a32d1da3ccdf49c09e6ec9799980d888
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_ae328d649eeb4316b59bb510c93dc7dd
4749dbedc19c41cca6fa337a29a4f43b
0
ffef37066a5e4db2925db17e97db7f3c
4749dbedc19c41cca6fa337a29a4f43b--ffef37066a5e4db2925db17e97db7f3c
c502d31a787c43e394c726792510d08a
1
62d36f91f1404a89aa4cdc9e4315bc7b
ffef37066a5e4db2925db17e97db7f3c--62d36f91f1404a89aa4cdc9e4315bc7b
a72b03fdd5be4443b623bdf54f3b40ef
27805257c77c46d197863a90c331a7b7
AddBlock
c502d31a787c43e394c726792510d08a--27805257c77c46d197863a90c331a7b7
2047d6f6a96d44c29ce2190bc074071d
2
27805257c77c46d197863a90c331a7b7--a72b03fdd5be4443b623bdf54f3b40ef
5829ac15067e4299b51f7eea185c3ed9
c1da03f3eee94069a8fba413a75dc965
2047d6f6a96d44c29ce2190bc074071d--c1da03f3eee94069a8fba413a75dc965
c1da03f3eee94069a8fba413a75dc965--5829ac15067e4299b51f7eea185c3ed9
from qadence import CNOT , RX , HamEvo , X , Y , Z , chain , kron
rx = kron ( RX ( 3 , 0.5 ), RX ( 2 , "x" ))
rx . tag = "rx"
gen = chain ( Z ( i ) for i in range ( 4 ))
# `chain` puts things in sequence
block = chain (
kron ( X ( 0 ), Y ( 1 ), rx ),
CNOT ( 2 , 3 ),
HamEvo ( gen , 10 )
)
%3
cluster_9362c056b4014cbd8e9fd394994f8502
cluster_51a6f2744c1d4fcd862523599eecbbf8
rx
98bd1bd8174b4a888b12276eb88d26ec
0
0c5c0fa626064e6f99f80936f4615be1
X
98bd1bd8174b4a888b12276eb88d26ec--0c5c0fa626064e6f99f80936f4615be1
677028167f2e4199a8d732fe01529f2e
1
0a51b4a76b984c13977f3f2a7f671835
0c5c0fa626064e6f99f80936f4615be1--0a51b4a76b984c13977f3f2a7f671835
94abf3c298754f3491f769a1c410362b
0a51b4a76b984c13977f3f2a7f671835--94abf3c298754f3491f769a1c410362b
d3b6cb8698104eb683ed6defc0939d41
94abf3c298754f3491f769a1c410362b--d3b6cb8698104eb683ed6defc0939d41
11b5714f7d13477bb6287204ad88f63f
34899f50247a4fb49c07200d2da79225
Y
677028167f2e4199a8d732fe01529f2e--34899f50247a4fb49c07200d2da79225
39a16e9d020547c4bc0f8243c379893f
2
6339a3f3898b4db0be82b5c34986ef4a
34899f50247a4fb49c07200d2da79225--6339a3f3898b4db0be82b5c34986ef4a
245749af5aeb4fbe85ece178939476be
HamEvo
6339a3f3898b4db0be82b5c34986ef4a--245749af5aeb4fbe85ece178939476be
245749af5aeb4fbe85ece178939476be--11b5714f7d13477bb6287204ad88f63f
9b66cf3dd56f48749431ba2b5028f062
7bf41a2c19ee48698f98adb7e5aee32e
RX(x)
39a16e9d020547c4bc0f8243c379893f--7bf41a2c19ee48698f98adb7e5aee32e
33573db401eb417cb65ae0ec2574b46f
3
c157e33c15374303a5b754b9b3d227b4
7bf41a2c19ee48698f98adb7e5aee32e--c157e33c15374303a5b754b9b3d227b4
047f27534b124ac7a9f64eb584c7280a
t = 10
c157e33c15374303a5b754b9b3d227b4--047f27534b124ac7a9f64eb584c7280a
047f27534b124ac7a9f64eb584c7280a--9b66cf3dd56f48749431ba2b5028f062
2198fb4747ed49e98ef263fbdd3a47ed
a294d2814ac94320b2e960fe113736af
RX(0.5)
33573db401eb417cb65ae0ec2574b46f--a294d2814ac94320b2e960fe113736af
bb84cb25e9414705b6fbe0c6a3e13d01
X
a294d2814ac94320b2e960fe113736af--bb84cb25e9414705b6fbe0c6a3e13d01
bb84cb25e9414705b6fbe0c6a3e13d01--c157e33c15374303a5b754b9b3d227b4
6261e94ea4d24290bbde44733c8fcdd4
bb84cb25e9414705b6fbe0c6a3e13d01--6261e94ea4d24290bbde44733c8fcdd4
6261e94ea4d24290bbde44733c8fcdd4--2198fb4747ed49e98ef263fbdd3a47ed
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_618914e1520a44319ef7b58fab41c088
HEA
cluster_ebef9227fa4b4a02924f597411b7abda
Tower Fourier FM
e04ce146428e4645914048de25bb33bb
0
be7778a08f6e407c8c2ba8576b97f50f
RX(1.0*phi)
e04ce146428e4645914048de25bb33bb--be7778a08f6e407c8c2ba8576b97f50f
4cfd34ea3f5744a3b3a998ff7a43273d
1
615b61d8a60b4271a4693b56325647ee
RX(theta₀)
be7778a08f6e407c8c2ba8576b97f50f--615b61d8a60b4271a4693b56325647ee
4e4eff2d092c4fc1a85213038cd75e3c
RY(theta₄)
615b61d8a60b4271a4693b56325647ee--4e4eff2d092c4fc1a85213038cd75e3c
818dc651bd2348a4ad569379f8dc8cab
RX(theta₈)
4e4eff2d092c4fc1a85213038cd75e3c--818dc651bd2348a4ad569379f8dc8cab
4b216751b7404a1a8e409d9dead918e0
818dc651bd2348a4ad569379f8dc8cab--4b216751b7404a1a8e409d9dead918e0
9c7c0b6a8ef247dd9b22dbd70f66507f
4b216751b7404a1a8e409d9dead918e0--9c7c0b6a8ef247dd9b22dbd70f66507f
7928ebf5cc2242c9a6b2e5db90775902
RX(theta₁₂)
9c7c0b6a8ef247dd9b22dbd70f66507f--7928ebf5cc2242c9a6b2e5db90775902
e9293cf635e14ab59115ad6f28c3b464
RY(theta₁₆)
7928ebf5cc2242c9a6b2e5db90775902--e9293cf635e14ab59115ad6f28c3b464
c49aa43b56b544e4be5961c02053bd54
RX(theta₂₀)
e9293cf635e14ab59115ad6f28c3b464--c49aa43b56b544e4be5961c02053bd54
4d08b091715241a098445bc25912ff4a
c49aa43b56b544e4be5961c02053bd54--4d08b091715241a098445bc25912ff4a
ad0ec8a16f0c42fa8badccd9b60fdfb3
4d08b091715241a098445bc25912ff4a--ad0ec8a16f0c42fa8badccd9b60fdfb3
d1e93e2e15cb44678de9038e0e3b008c
ad0ec8a16f0c42fa8badccd9b60fdfb3--d1e93e2e15cb44678de9038e0e3b008c
6fefe4ae414e446495017ab8273be9b5
12c4e95bc31e4a9cbf0c27d656926e8f
RX(2.0*phi)
4cfd34ea3f5744a3b3a998ff7a43273d--12c4e95bc31e4a9cbf0c27d656926e8f
885414ef091f422aa93ad7fc2153874c
2
ef0a7daf2d79421c8508599429e1c97a
RX(theta₁)
12c4e95bc31e4a9cbf0c27d656926e8f--ef0a7daf2d79421c8508599429e1c97a
cba8e44432b54073a93534a5a0746bf0
RY(theta₅)
ef0a7daf2d79421c8508599429e1c97a--cba8e44432b54073a93534a5a0746bf0
54f1d2c18e1b4b1db2f8edcff1f77ce1
RX(theta₉)
cba8e44432b54073a93534a5a0746bf0--54f1d2c18e1b4b1db2f8edcff1f77ce1
f7085fb934764e47b8d59838ce71323a
X
54f1d2c18e1b4b1db2f8edcff1f77ce1--f7085fb934764e47b8d59838ce71323a
f7085fb934764e47b8d59838ce71323a--4b216751b7404a1a8e409d9dead918e0
5abba2e317d74729a184bf5e96e3574e
f7085fb934764e47b8d59838ce71323a--5abba2e317d74729a184bf5e96e3574e
0d87102c62294f34a66cd813b5200c1e
RX(theta₁₃)
5abba2e317d74729a184bf5e96e3574e--0d87102c62294f34a66cd813b5200c1e
6912bd287bad43a9ad0f928e2f926036
RY(theta₁₇)
0d87102c62294f34a66cd813b5200c1e--6912bd287bad43a9ad0f928e2f926036
13941293bf8149d7b04513755b54a5d2
RX(theta₂₁)
6912bd287bad43a9ad0f928e2f926036--13941293bf8149d7b04513755b54a5d2
d5bbc31dca6142e69a4ed476f998e0b1
X
13941293bf8149d7b04513755b54a5d2--d5bbc31dca6142e69a4ed476f998e0b1
d5bbc31dca6142e69a4ed476f998e0b1--4d08b091715241a098445bc25912ff4a
7fbed4c072bf43a290b431c59741fdcb
d5bbc31dca6142e69a4ed476f998e0b1--7fbed4c072bf43a290b431c59741fdcb
7fbed4c072bf43a290b431c59741fdcb--6fefe4ae414e446495017ab8273be9b5
79ee1be32f1642e699cddccf8feb99a1
536b7f98fb824c86b677695ec9c0be5b
RX(3.0*phi)
885414ef091f422aa93ad7fc2153874c--536b7f98fb824c86b677695ec9c0be5b
5ae8a33e815c4720a821ca200684bfc9
3
f187477175b6411c86c64f2a3d0ab11b
RX(theta₂)
536b7f98fb824c86b677695ec9c0be5b--f187477175b6411c86c64f2a3d0ab11b
adcd36fd2a5c4f0dac1e96a48ec9c092
RY(theta₆)
f187477175b6411c86c64f2a3d0ab11b--adcd36fd2a5c4f0dac1e96a48ec9c092
f87815f90f244b2b872b2318d78c199f
RX(theta₁₀)
adcd36fd2a5c4f0dac1e96a48ec9c092--f87815f90f244b2b872b2318d78c199f
22a686ff84df4282a0274fb3fa1cc243
f87815f90f244b2b872b2318d78c199f--22a686ff84df4282a0274fb3fa1cc243
bd7ed433fac946ecaf3149b6b7fb1621
X
22a686ff84df4282a0274fb3fa1cc243--bd7ed433fac946ecaf3149b6b7fb1621
bd7ed433fac946ecaf3149b6b7fb1621--5abba2e317d74729a184bf5e96e3574e
be9def21474a470199985291108addec
RX(theta₁₄)
bd7ed433fac946ecaf3149b6b7fb1621--be9def21474a470199985291108addec
829edaee95974368a530f0fda64daed8
RY(theta₁₈)
be9def21474a470199985291108addec--829edaee95974368a530f0fda64daed8
04da9bd990fa4ce5aa5474915f21069d
RX(theta₂₂)
829edaee95974368a530f0fda64daed8--04da9bd990fa4ce5aa5474915f21069d
38eaa6a34a2044878e7cad0647b7576d
04da9bd990fa4ce5aa5474915f21069d--38eaa6a34a2044878e7cad0647b7576d
50e7ebfd588341c793df9ec809b06d86
X
38eaa6a34a2044878e7cad0647b7576d--50e7ebfd588341c793df9ec809b06d86
50e7ebfd588341c793df9ec809b06d86--7fbed4c072bf43a290b431c59741fdcb
50e7ebfd588341c793df9ec809b06d86--79ee1be32f1642e699cddccf8feb99a1
7d4fdd8a7c034eeab58aa83da555ff32
765feb6423534fd0b12550b80e49ef8c
RX(4.0*phi)
5ae8a33e815c4720a821ca200684bfc9--765feb6423534fd0b12550b80e49ef8c
bae5bf8b194242a3894ab73c35189418
RX(theta₃)
765feb6423534fd0b12550b80e49ef8c--bae5bf8b194242a3894ab73c35189418
16a9eeb2608b4775b9cb2979efa7f006
RY(theta₇)
bae5bf8b194242a3894ab73c35189418--16a9eeb2608b4775b9cb2979efa7f006
1d26d233022640e7b6a8986d5a126d41
RX(theta₁₁)
16a9eeb2608b4775b9cb2979efa7f006--1d26d233022640e7b6a8986d5a126d41
a7490c2056904f10a46f9029749a975a
X
1d26d233022640e7b6a8986d5a126d41--a7490c2056904f10a46f9029749a975a
a7490c2056904f10a46f9029749a975a--22a686ff84df4282a0274fb3fa1cc243
3919e4555799430493b796d068e32306
a7490c2056904f10a46f9029749a975a--3919e4555799430493b796d068e32306
05ae889621604e479e7204f1f3862e44
RX(theta₁₅)
3919e4555799430493b796d068e32306--05ae889621604e479e7204f1f3862e44
7ae60ac647d84f0d8cdb48c1ff79ae46
RY(theta₁₉)
05ae889621604e479e7204f1f3862e44--7ae60ac647d84f0d8cdb48c1ff79ae46
faa6d157181b4bd79585b69d26d933e1
RX(theta₂₃)
7ae60ac647d84f0d8cdb48c1ff79ae46--faa6d157181b4bd79585b69d26d933e1
7b09fb7ff32044599b0a22b743858ef5
X
faa6d157181b4bd79585b69d26d933e1--7b09fb7ff32044599b0a22b743858ef5
7b09fb7ff32044599b0a22b743858ef5--38eaa6a34a2044878e7cad0647b7576d
d4f2ed880df541a9a6758f137560c42f
7b09fb7ff32044599b0a22b743858ef5--d4f2ed880df541a9a6758f137560c42f
d4f2ed880df541a9a6758f137560c42f--7d4fdd8a7c034eeab58aa83da555ff32
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_1891e151d1044f36ba97129a2ae870aa
Obs.
cluster_43c44927462a457da15a954c28f7b3ba
cluster_f48d65f6d48b4f12946e2fe335e2f3f5
HEA
3d7bb539243b4f9793a987140e756416
0
7af68fd55b4e4beba3e6145bfbf0da74
RX(theta₀)
3d7bb539243b4f9793a987140e756416--7af68fd55b4e4beba3e6145bfbf0da74
e43051ccd7e64af28e0d654c2ebed0db
1
de4ad9df3aee4f52a3c0bd4ea1c13028
RY(theta₃)
7af68fd55b4e4beba3e6145bfbf0da74--de4ad9df3aee4f52a3c0bd4ea1c13028
1633de6464a740f2ab14b0b3a13196bf
RX(theta₆)
de4ad9df3aee4f52a3c0bd4ea1c13028--1633de6464a740f2ab14b0b3a13196bf
120eb5e4e5504a03b50f6819435878fd
1633de6464a740f2ab14b0b3a13196bf--120eb5e4e5504a03b50f6819435878fd
5ce147bf564d4dcfaad6c88049ae1d0f
120eb5e4e5504a03b50f6819435878fd--5ce147bf564d4dcfaad6c88049ae1d0f
0aa4d7cbc94e48f68800242a938a33a8
RX(theta₉)
5ce147bf564d4dcfaad6c88049ae1d0f--0aa4d7cbc94e48f68800242a938a33a8
06d68c853f0d4f9d91133bf1a061689c
RY(theta₁₂)
0aa4d7cbc94e48f68800242a938a33a8--06d68c853f0d4f9d91133bf1a061689c
e8345146055a46e08fde4f263f8d1ec7
RX(theta₁₅)
06d68c853f0d4f9d91133bf1a061689c--e8345146055a46e08fde4f263f8d1ec7
27e9a484502a4c9e95f0d7a11e9c33a1
e8345146055a46e08fde4f263f8d1ec7--27e9a484502a4c9e95f0d7a11e9c33a1
2b246ba8f7d940e989fc2532efd64364
27e9a484502a4c9e95f0d7a11e9c33a1--2b246ba8f7d940e989fc2532efd64364
f6998ccbd5f141a497aa2d914ffbb72c
2b246ba8f7d940e989fc2532efd64364--f6998ccbd5f141a497aa2d914ffbb72c
565ed657b5644a65abef7b5bcc7c0db9
f6998ccbd5f141a497aa2d914ffbb72c--565ed657b5644a65abef7b5bcc7c0db9
e715b2b945294eac8f784fbde03b905c
189093fb189043528c515b94b433c91e
RX(theta₁)
e43051ccd7e64af28e0d654c2ebed0db--189093fb189043528c515b94b433c91e
fb92390df72a4ff78b2c9e7c128a2e62
2
a7744ca14f6943ab9597162cf20873e7
RY(theta₄)
189093fb189043528c515b94b433c91e--a7744ca14f6943ab9597162cf20873e7
1963cc76be3a4d3f9d5cb4de1c9a0de1
RX(theta₇)
a7744ca14f6943ab9597162cf20873e7--1963cc76be3a4d3f9d5cb4de1c9a0de1
c0b1cac004da424aa6fca6fc4c7bdf2f
X
1963cc76be3a4d3f9d5cb4de1c9a0de1--c0b1cac004da424aa6fca6fc4c7bdf2f
c0b1cac004da424aa6fca6fc4c7bdf2f--120eb5e4e5504a03b50f6819435878fd
4632a9ff11254737aecfcd8101f63098
c0b1cac004da424aa6fca6fc4c7bdf2f--4632a9ff11254737aecfcd8101f63098
2d497955cb564b3ea5a0820129365728
RX(theta₁₀)
4632a9ff11254737aecfcd8101f63098--2d497955cb564b3ea5a0820129365728
e470426448704d39b5880c584fa2bbc1
RY(theta₁₃)
2d497955cb564b3ea5a0820129365728--e470426448704d39b5880c584fa2bbc1
d223f9e811a6484ca5736c48ad168f50
RX(theta₁₆)
e470426448704d39b5880c584fa2bbc1--d223f9e811a6484ca5736c48ad168f50
a211f07a7bee405bb849097859061411
X
d223f9e811a6484ca5736c48ad168f50--a211f07a7bee405bb849097859061411
a211f07a7bee405bb849097859061411--27e9a484502a4c9e95f0d7a11e9c33a1
769e6ab56f8b423d80fc71cb57b4314d
a211f07a7bee405bb849097859061411--769e6ab56f8b423d80fc71cb57b4314d
4bec3b32d92241e481e71ed8befafb11
AddBlock
769e6ab56f8b423d80fc71cb57b4314d--4bec3b32d92241e481e71ed8befafb11
4bec3b32d92241e481e71ed8befafb11--e715b2b945294eac8f784fbde03b905c
fde4dd7471724987b674eb5773acac52
0af340c31ce74672bdd33107af0b6af7
RX(theta₂)
fb92390df72a4ff78b2c9e7c128a2e62--0af340c31ce74672bdd33107af0b6af7
ea1000ea0c984a6fa696c37c0dbb7760
RY(theta₅)
0af340c31ce74672bdd33107af0b6af7--ea1000ea0c984a6fa696c37c0dbb7760
24056d3e7884477bb2f4c5da2cc32ecd
RX(theta₈)
ea1000ea0c984a6fa696c37c0dbb7760--24056d3e7884477bb2f4c5da2cc32ecd
92780faf731c4c6c8b303f9831563066
24056d3e7884477bb2f4c5da2cc32ecd--92780faf731c4c6c8b303f9831563066
21498170a11348d1bfe5e0e297820b23
X
92780faf731c4c6c8b303f9831563066--21498170a11348d1bfe5e0e297820b23
21498170a11348d1bfe5e0e297820b23--4632a9ff11254737aecfcd8101f63098
20edb74bb9884ff196ef9de4dcd082fb
RX(theta₁₁)
21498170a11348d1bfe5e0e297820b23--20edb74bb9884ff196ef9de4dcd082fb
b09c85f23800414fb99f06b1a85db8cf
RY(theta₁₄)
20edb74bb9884ff196ef9de4dcd082fb--b09c85f23800414fb99f06b1a85db8cf
183e5a3f059a4eb081af5da61796d595
RX(theta₁₇)
b09c85f23800414fb99f06b1a85db8cf--183e5a3f059a4eb081af5da61796d595
1b2456031af94384a8ced70010f03d27
183e5a3f059a4eb081af5da61796d595--1b2456031af94384a8ced70010f03d27
2200f0be09f9421eb248c4f59046c415
X
1b2456031af94384a8ced70010f03d27--2200f0be09f9421eb248c4f59046c415
2200f0be09f9421eb248c4f59046c415--769e6ab56f8b423d80fc71cb57b4314d
50bad808b260481a9055a3b0b6cbbac3
2200f0be09f9421eb248c4f59046c415--50bad808b260481a9055a3b0b6cbbac3
50bad808b260481a9055a3b0b6cbbac3--fde4dd7471724987b674eb5773acac52
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
42dbcf3ba0ba4ce4893fd78cf6902408
0
6d818a5a8e624fb6b495c48a932a3118
42dbcf3ba0ba4ce4893fd78cf6902408--6d818a5a8e624fb6b495c48a932a3118
9399f2a6c6af48f9822d097a02d4165f
1
1b580f8f50ac448190d3511ea841286c
37b7d77e31be47209c29c997c4a099b7
6d818a5a8e624fb6b495c48a932a3118--37b7d77e31be47209c29c997c4a099b7
815a246e225d4274a492fafae51730b5
1b580f8f50ac448190d3511ea841286c--815a246e225d4274a492fafae51730b5
a46d45f8544e4c8f8264d805c203aaba
aa42683d6ecf41d3b1f9ad7b5663ba02
815a246e225d4274a492fafae51730b5--aa42683d6ecf41d3b1f9ad7b5663ba02
d933d3e45ce74df0b670da226a056c6a
a46d45f8544e4c8f8264d805c203aaba--d933d3e45ce74df0b670da226a056c6a
4f373a7bee3b4691b979b070cdf03d83
b28a44de2ee8403dbe42998ba554140e
9399f2a6c6af48f9822d097a02d4165f--b28a44de2ee8403dbe42998ba554140e
7388c2f6e3614d87bd8104655a7918a6
2
b28a44de2ee8403dbe42998ba554140e--1b580f8f50ac448190d3511ea841286c
2c29af51ea17458396dc4d73dfdb3063
37b7d77e31be47209c29c997c4a099b7--2c29af51ea17458396dc4d73dfdb3063
61e3c41200224264ba25bf07ebb1b444
2c29af51ea17458396dc4d73dfdb3063--61e3c41200224264ba25bf07ebb1b444
61e3c41200224264ba25bf07ebb1b444--4f373a7bee3b4691b979b070cdf03d83
e931c9f52b5e4b34bfc1806f2236afef
ff32494173ac4765a95581a3f9f2208a
7388c2f6e3614d87bd8104655a7918a6--ff32494173ac4765a95581a3f9f2208a
6244c6527f964c12b1e14f2ca64f81ed
3
e3024ad347d74e0d917f63fd209c1307
ff32494173ac4765a95581a3f9f2208a--e3024ad347d74e0d917f63fd209c1307
3155d6b44e5f42a39abc7cafc9142961
e3024ad347d74e0d917f63fd209c1307--3155d6b44e5f42a39abc7cafc9142961
b368922660804777ae4d1e53bed80d2e
3155d6b44e5f42a39abc7cafc9142961--b368922660804777ae4d1e53bed80d2e
b368922660804777ae4d1e53bed80d2e--e931c9f52b5e4b34bfc1806f2236afef
d82a159153a0489ba323d2408eeae30b
035d610607ca477cbd27b960523428fb
6244c6527f964c12b1e14f2ca64f81ed--035d610607ca477cbd27b960523428fb
1cb1dc27195e461cbcdcb457b61332da
035d610607ca477cbd27b960523428fb--1cb1dc27195e461cbcdcb457b61332da
a477ec85e7c94aa2a6361a01697b8db4
1cb1dc27195e461cbcdcb457b61332da--a477ec85e7c94aa2a6361a01697b8db4
a477ec85e7c94aa2a6361a01697b8db4--a46d45f8544e4c8f8264d805c203aaba
aa42683d6ecf41d3b1f9ad7b5663ba02--d82a159153a0489ba323d2408eeae30b
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
23778a2822d545bca34eb51c429330d3
0
2aa2610f06534dcbaa458222d86b99ea
23778a2822d545bca34eb51c429330d3--2aa2610f06534dcbaa458222d86b99ea
d338d8e82df7433698bb1a90bc9d1566
1
292d77626e494d15b60bc9765928bea2
2aa2610f06534dcbaa458222d86b99ea--292d77626e494d15b60bc9765928bea2
79c36f1c63794752a7146eeeda758715
292d77626e494d15b60bc9765928bea2--79c36f1c63794752a7146eeeda758715
458dd2e5e930424c9a875fbee9026272
79c36f1c63794752a7146eeeda758715--458dd2e5e930424c9a875fbee9026272
edb98e4526fd4246bf95ffdc9f464f5f
98e5bc3abcb640ee9c748c15a13733f3
PHASE(0.5)
d338d8e82df7433698bb1a90bc9d1566--98e5bc3abcb640ee9c748c15a13733f3
f613bcb1454e4d268fcf44aac630f15b
2
98e5bc3abcb640ee9c748c15a13733f3--2aa2610f06534dcbaa458222d86b99ea
331db8cf9de2432a9d42c52f2832cebb
98e5bc3abcb640ee9c748c15a13733f3--331db8cf9de2432a9d42c52f2832cebb
dab64cffe67c476a9de5b78309aebdd6
331db8cf9de2432a9d42c52f2832cebb--dab64cffe67c476a9de5b78309aebdd6
dab64cffe67c476a9de5b78309aebdd6--edb98e4526fd4246bf95ffdc9f464f5f
c42af38552a349dba0268789e2832ca2
b3eb9346baf442cfa3ca2a97e2e08a48
f613bcb1454e4d268fcf44aac630f15b--b3eb9346baf442cfa3ca2a97e2e08a48
f077363ace954b1bb6ec1dde4589f7e6
3
cc96f6afebf24734b7d24d09548241e9
PHASE(0.5)
b3eb9346baf442cfa3ca2a97e2e08a48--cc96f6afebf24734b7d24d09548241e9
cc96f6afebf24734b7d24d09548241e9--292d77626e494d15b60bc9765928bea2
ad3c04d7862d44e585f9c8c3fbd44c5c
cc96f6afebf24734b7d24d09548241e9--ad3c04d7862d44e585f9c8c3fbd44c5c
ad3c04d7862d44e585f9c8c3fbd44c5c--c42af38552a349dba0268789e2832ca2
fb65765df65249368e942ff8ece989c0
a8d3545b6749417e9ace4b3578d4f171
f077363ace954b1bb6ec1dde4589f7e6--a8d3545b6749417e9ace4b3578d4f171
e8880c639764459ca26761b8ac99c20e
a8d3545b6749417e9ace4b3578d4f171--e8880c639764459ca26761b8ac99c20e
e03764d1a6fe4d0a98f99a847bbd7b7f
PHASE(0.5)
e8880c639764459ca26761b8ac99c20e--e03764d1a6fe4d0a98f99a847bbd7b7f
e03764d1a6fe4d0a98f99a847bbd7b7f--79c36f1c63794752a7146eeeda758715
e03764d1a6fe4d0a98f99a847bbd7b7f--fb65765df65249368e942ff8ece989c0
Developer documentation
This section contains examples in pure graphviz that can be used to understand roughly what is done
in the actual drawing backend.
import graphviz
font_name = "Sans-Serif"
font_size = "8"
graph_attr = {
"rankdir" : "LR" , # LR = left to right, TB = top to bottom
"nodesep" : "0.1" , # In inches, tells distance between nodes without edges
"compound" : "true" , # Needed to draw properly edges in hamevo when content is hidden
"splines" : "false" , # Needed to draw control gates vertical lines one over the other
} # These are the default values for graphs
node_attr = {
"shape" : "box" , # 'box' for normal nodes, 'point' for control gates or 'plaintext' for starting nodes (the qubit label).
"style" : "rounded" , # Unfortunately we can't specify the radius of the rounded, at least for this version
"fontname" : font_name ,
"fontsize" : font_size ,
"width" : "0.1" , # In inches, it doesn't get tinier than the label font.
"height" : "0.1" # In inches, it doesn't get tinier than the label font.
} # These are the defaults values that can be overridden at node declaration.
default_cluster_attr = {
"fontname" : font_name ,
"fontsize" : font_size ,
"labelloc" : "b" , # location of cluster label. b as bottom, t as top
"style" : "rounded"
} # These are the defaults values that can be overridden at sub graph declaration
hamevo_cluster_attr = {
"label" : "HamEvo(t=10)"
}
hamevo_cluster_attr . update ( default_cluster_attr )
h = graphviz . Graph ( graph_attr = graph_attr , node_attr = node_attr )
h . node ( "Hello World!" )
h
# Define graph
h = graphviz . Graph ( node_attr = node_attr , graph_attr = graph_attr )
# Add start and end nodes
for i in range ( 4 ):
h . node ( f 's { i } ' , shape = "plaintext" , label = f ' { i } ' , group = f " { i } " )
h . node ( f 'e { i } ' , style = 'invis' , group = f " { i } " )
# Add nodes
h . node ( 'X' , group = "0" )
h . node ( 'Y' , group = "1" )
# Add hamevo and its nodes
hamevo = graphviz . Graph ( name = 'cluster_hamevo' , graph_attr = hamevo_cluster_attr )
for i in range ( 4 ):
hamevo . node ( f 'z { i } ' , shape = "box" , style = "invis" , label = f ' { i } ' , group = f " { i } " )
h . subgraph ( hamevo )
# Add rx gates cluster and its nodes
cluster_attr = { "label" : "RX gates" }
cluster_attr . update ( default_cluster_attr )
cluster = graphviz . Graph ( name = "cluster_0" , graph_attr = cluster_attr )
cluster . node ( 'RX(x)' , group = "2" )
cluster . node ( 'RX(0.5)' , group = "3" )
h . subgraph ( cluster )
h . node ( 'cnot0' , label = '' , shape = 'point' , width = '0.1' , group = '0' )
h . node ( 'cnot1' , label = 'X' , group = '1' )
h . node ( 'cnot2' , label = '' , shape = 'point' , width = '0.1' , group = '2' )
h . node ( 'cnot3' , label = '' , shape = 'point' , width = '0.1' , group = '3' )
# Add edges
h . edge ( 's0' , 'X' )
h . edge ( 'X' , 'cnot0' )
h . edge ( 'cnot0' , 'z0' , lhead = 'cluster_hamevo' )
h . edge ( 'z0' , 'e0' , ltail = 'cluster_hamevo' )
h . edge ( 's1' , 'Y' )
h . edge ( 'Y' , 'cnot1' )
h . edge ( 'cnot1' , 'z1' , lhead = 'cluster_hamevo' )
h . edge ( 'z1' , 'e1' , ltail = 'cluster_hamevo' )
h . edge ( 's2' , 'RX(x)' )
h . edge ( 'RX(x)' , 'cnot2' )
h . edge ( 'cnot2' , 'z2' , lhead = 'cluster_hamevo' )
h . edge ( 'z2' , 'e2' , ltail = 'cluster_hamevo' )
h . edge ( 's3' , 'RX(0.5)' )
h . edge ( 'RX(0.5)' , 'cnot3' )
h . edge ( 'cnot3' , 'z3' , lhead = 'cluster_hamevo' )
h . edge ( 'z3' , 'e3' , ltail = 'cluster_hamevo' )
h . edge ( 'cnot1' , 'cnot0' , constraint = 'false' ) # constraint: false is needed to draw vertical edges
h . edge ( 'cnot1' , 'cnot2' , constraint = 'false' ) # constraint: false is needed to draw vertical edges
h . edge ( 'cnot1' , 'cnot3' , constraint = 'false' ) # constraint: false is needed to draw vertical edges
h
Example of cluster of clusters
# Define graph
h = graphviz . Graph ( node_attr = node_attr , graph_attr = graph_attr )
# Define start and end nodes
for i in range ( 4 ):
h . node ( f 's { i } ' , shape = "plaintext" , label = f ' { i } ' , group = f " { i } " )
h . node ( f 'e { i } ' , style = 'invis' , group = f " { i } " )
# Define outer cluster
cluster_attr = { "label" : "Outer cluster" }
cluster_attr . update ( default_cluster_attr )
outer_cluster = graphviz . Graph ( name = "cluster_outer" , graph_attr = cluster_attr )
# Define inner cluster 1 and its nodes
cluster_attr = { "label" : "Inner cluster 1" }
cluster_attr . update ( default_cluster_attr )
inner1_cluster = graphviz . Graph ( name = "cluster_inner1" , graph_attr = cluster_attr )
inner1_cluster . node ( "a0" , group = "0" )
inner1_cluster . node ( "a1" , group = "1" )
outer_cluster . subgraph ( inner1_cluster )
# Define inner cluster 2 and its nodes
cluster_attr = { "label" : "Inner cluster 2" }
cluster_attr . update ( default_cluster_attr )
inner2_cluster = graphviz . Graph ( name = "cluster_inner2" , graph_attr = cluster_attr )
inner2_cluster . node ( "a2" , group = "2" )
inner2_cluster . node ( "a3" , group = "3" )
outer_cluster . subgraph ( inner2_cluster )
# This has to be done here, after inner clusters definitions
h . subgraph ( outer_cluster )
# Define more nodes
for i in range ( 4 ):
h . node ( f "b { i } " , group = f " { i } " )
for i in range ( 4 ):
h . edge ( f 's { i } ' , f 'a { i } ' )
h . edge ( f 'a { i } ' , f 'b { i } ' )
h . edge ( f 'b { i } ' , f 'e { i } ' )
h