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
23758b0d41e14d07a696f51988586407
0
df849ea325a74320b62d22590e1e3a12
X
23758b0d41e14d07a696f51988586407--df849ea325a74320b62d22590e1e3a12
8a4aa190200240f6977716d5173cb05c
1
a33d8e98996e43c1babf9a2f6fb30da2
df849ea325a74320b62d22590e1e3a12--a33d8e98996e43c1babf9a2f6fb30da2
592dd44367f341d88ea3cc36bf0288b7
089663de8c494667af1b44363960b89d
Y
8a4aa190200240f6977716d5173cb05c--089663de8c494667af1b44363960b89d
089663de8c494667af1b44363960b89d--592dd44367f341d88ea3cc36bf0288b7
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 0 ))
%3
5b0aa436de134fbea307274425b2f981
0
b7959fbc8a4f418399d88dc65dce29a1
X
5b0aa436de134fbea307274425b2f981--b7959fbc8a4f418399d88dc65dce29a1
6941c74c5fcc4572bcbad0c17623ab3c
Y
b7959fbc8a4f418399d88dc65dce29a1--6941c74c5fcc4572bcbad0c17623ab3c
be3760917bdb4c18afeea8e2756d69f5
6941c74c5fcc4572bcbad0c17623ab3c--be3760917bdb4c18afeea8e2756d69f5
from qadence import X , Y , chain
from qadence.draw import display
b = chain ( X ( 0 ), Y ( 1 ))
%3
cab0fadce0a8497b9cf571d25733733f
0
b1c9a0ef99d44d598904d55ae1e2795d
X
cab0fadce0a8497b9cf571d25733733f--b1c9a0ef99d44d598904d55ae1e2795d
7a743bcb93aa4b9689e30990680022e6
1
85fa1d0ac0514c5c9e655ae7bf6e8df3
b1c9a0ef99d44d598904d55ae1e2795d--85fa1d0ac0514c5c9e655ae7bf6e8df3
46ec3a8b1b6f437c818b6a452257e059
85fa1d0ac0514c5c9e655ae7bf6e8df3--46ec3a8b1b6f437c818b6a452257e059
415629b2f42d425fa7b1f033c0d2bc14
cca2040c762f4f86bc815d74ccd7029a
7a743bcb93aa4b9689e30990680022e6--cca2040c762f4f86bc815d74ccd7029a
aa1900fa78c745b69b12807a5c51f679
Y
cca2040c762f4f86bc815d74ccd7029a--aa1900fa78c745b69b12807a5c51f679
aa1900fa78c745b69b12807a5c51f679--415629b2f42d425fa7b1f033c0d2bc14
from qadence import X , Y , add
from qadence.draw import display
b = add ( X ( 0 ), Y ( 1 ), X ( 2 ))
%3
cluster_0808eba07ecd4cc384cde0c655ad5e19
57fe280553c943b6877994aaeb6f8db9
0
2cc96eb00ac64eaf9e1914c6bb55c1cb
57fe280553c943b6877994aaeb6f8db9--2cc96eb00ac64eaf9e1914c6bb55c1cb
678be14cbc2446b6b299769f5860c894
1
4205e5bba6fb48fa8375baa89c36c046
2cc96eb00ac64eaf9e1914c6bb55c1cb--4205e5bba6fb48fa8375baa89c36c046
01bd82216180400fac05c69f7f2aa4f7
1cf9079108f04be79671ef4d0daec791
AddBlock
678be14cbc2446b6b299769f5860c894--1cf9079108f04be79671ef4d0daec791
2866ba9bd82d41b38d3cfc846aa1aed1
2
1cf9079108f04be79671ef4d0daec791--01bd82216180400fac05c69f7f2aa4f7
26829e981c474c13901b4236465c0a9b
474ed98a121b4a69a7a95c9be01f6027
2866ba9bd82d41b38d3cfc846aa1aed1--474ed98a121b4a69a7a95c9be01f6027
474ed98a121b4a69a7a95c9be01f6027--26829e981c474c13901b4236465c0a9b
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_9195b61ecc0849a391873eb8818c2992
cluster_ab4e68478734436da62037ff86db7d99
rx
01594581799a4adda47bd67423524073
0
515dd935716441a5a3db816ae1664c31
X
01594581799a4adda47bd67423524073--515dd935716441a5a3db816ae1664c31
3a9ffff3c0214190962730320a6f65fd
1
e9c811d2485d46ccb620ce6b54ec8dbf
515dd935716441a5a3db816ae1664c31--e9c811d2485d46ccb620ce6b54ec8dbf
47bec086c8aa499c81e6c834dc9a23df
e9c811d2485d46ccb620ce6b54ec8dbf--47bec086c8aa499c81e6c834dc9a23df
93f02c049975428aa83f23535ebb9881
47bec086c8aa499c81e6c834dc9a23df--93f02c049975428aa83f23535ebb9881
27e2988a2980411aaf1c1397ee5e0911
458705532db1435fb118a167e94bde93
Y
3a9ffff3c0214190962730320a6f65fd--458705532db1435fb118a167e94bde93
37f19e4534c24a528ae7d2cb7d691dca
2
a09858e74f6c4d36967c6ad05d659458
458705532db1435fb118a167e94bde93--a09858e74f6c4d36967c6ad05d659458
72192520590440f99a45f420c6135a23
HamEvo
a09858e74f6c4d36967c6ad05d659458--72192520590440f99a45f420c6135a23
72192520590440f99a45f420c6135a23--27e2988a2980411aaf1c1397ee5e0911
2e9a7b9bf1904a4eb2e0c2822fb5d814
cd9af01cbc4146c9beb1806cec67ebca
RX(x)
37f19e4534c24a528ae7d2cb7d691dca--cd9af01cbc4146c9beb1806cec67ebca
5e509d25c36949d2be951213a0217e48
3
17c9e0cfa4c543eea21ef2a455d6ef1b
cd9af01cbc4146c9beb1806cec67ebca--17c9e0cfa4c543eea21ef2a455d6ef1b
f9fa569f6cfd45e2b03cfdaae5b183d1
t = 10
17c9e0cfa4c543eea21ef2a455d6ef1b--f9fa569f6cfd45e2b03cfdaae5b183d1
f9fa569f6cfd45e2b03cfdaae5b183d1--2e9a7b9bf1904a4eb2e0c2822fb5d814
936b3a3ee4474928a8e202398e8c5431
f939e55583d54071b51f1b640f491063
RX(0.5)
5e509d25c36949d2be951213a0217e48--f939e55583d54071b51f1b640f491063
4abd6a8ceea343dd94d9b1fe4afc5647
X
f939e55583d54071b51f1b640f491063--4abd6a8ceea343dd94d9b1fe4afc5647
4abd6a8ceea343dd94d9b1fe4afc5647--17c9e0cfa4c543eea21ef2a455d6ef1b
70183724061346238a98a19c8cb5ba0b
4abd6a8ceea343dd94d9b1fe4afc5647--70183724061346238a98a19c8cb5ba0b
70183724061346238a98a19c8cb5ba0b--936b3a3ee4474928a8e202398e8c5431
from qadence import feature_map , hea , chain
block = chain ( feature_map ( 4 , reupload_scaling = "Tower" ), hea ( 4 , 2 ))
%3
cluster_98dd1607b12249a59a72ef7f7722ee12
HEA
cluster_8e3c4845106347ce90f9d75dd9d6c98e
Tower Fourier FM
a7ee32c712eb4190b0c2da3c4348e473
0
abf358d16a8d44288517099d18a401b7
RX(1.0*phi)
a7ee32c712eb4190b0c2da3c4348e473--abf358d16a8d44288517099d18a401b7
0658ad2529c945809c403bfcc0a45287
1
8542224897584b208446353b516610af
RX(theta₀)
abf358d16a8d44288517099d18a401b7--8542224897584b208446353b516610af
78058d110d234cd6b9c5db0c1c6dea42
RY(theta₄)
8542224897584b208446353b516610af--78058d110d234cd6b9c5db0c1c6dea42
8eaa2581baeb491cba0fe2243e7e1b1f
RX(theta₈)
78058d110d234cd6b9c5db0c1c6dea42--8eaa2581baeb491cba0fe2243e7e1b1f
b030a23531ea4ec6aedfeff06f5f892a
8eaa2581baeb491cba0fe2243e7e1b1f--b030a23531ea4ec6aedfeff06f5f892a
af4f90cdeb76414bb5f26a9db8847d43
b030a23531ea4ec6aedfeff06f5f892a--af4f90cdeb76414bb5f26a9db8847d43
572176b2f89c48e1b3bc8477f81fd36d
RX(theta₁₂)
af4f90cdeb76414bb5f26a9db8847d43--572176b2f89c48e1b3bc8477f81fd36d
f9e425240823470bbbe0492a733894eb
RY(theta₁₆)
572176b2f89c48e1b3bc8477f81fd36d--f9e425240823470bbbe0492a733894eb
092dfee1683a4bbe86d4d5ef4b87f30f
RX(theta₂₀)
f9e425240823470bbbe0492a733894eb--092dfee1683a4bbe86d4d5ef4b87f30f
778ee661e18c474fae32339e417aef82
092dfee1683a4bbe86d4d5ef4b87f30f--778ee661e18c474fae32339e417aef82
7d08100ebdde4bb8a4b720310b40f416
778ee661e18c474fae32339e417aef82--7d08100ebdde4bb8a4b720310b40f416
3668a08fa830422ab97030eae5d2fd32
7d08100ebdde4bb8a4b720310b40f416--3668a08fa830422ab97030eae5d2fd32
432e367cbe2f46f4a38544e210dbe535
d586dea63925425087a2eb166a3558cf
RX(2.0*phi)
0658ad2529c945809c403bfcc0a45287--d586dea63925425087a2eb166a3558cf
837eb8fa20174ef8aa3ba1528b6275a8
2
74ef4b80c12e488a8db98b850f2b7b21
RX(theta₁)
d586dea63925425087a2eb166a3558cf--74ef4b80c12e488a8db98b850f2b7b21
0342726e1d7d4d1ba3db9eb74abc203f
RY(theta₅)
74ef4b80c12e488a8db98b850f2b7b21--0342726e1d7d4d1ba3db9eb74abc203f
072dcffc04414d3a9d9757e58c016cce
RX(theta₉)
0342726e1d7d4d1ba3db9eb74abc203f--072dcffc04414d3a9d9757e58c016cce
f5731719d27b40c590babc5b77faa78e
X
072dcffc04414d3a9d9757e58c016cce--f5731719d27b40c590babc5b77faa78e
f5731719d27b40c590babc5b77faa78e--b030a23531ea4ec6aedfeff06f5f892a
34c5a930d4a044d79eac2ca81a0e737c
f5731719d27b40c590babc5b77faa78e--34c5a930d4a044d79eac2ca81a0e737c
c3fb14cf05264656ad541221ea830430
RX(theta₁₃)
34c5a930d4a044d79eac2ca81a0e737c--c3fb14cf05264656ad541221ea830430
4e050d4d34e7474fb364c22e0b6a5682
RY(theta₁₇)
c3fb14cf05264656ad541221ea830430--4e050d4d34e7474fb364c22e0b6a5682
e0ed82b63a684987828f4ebcd61b7bc4
RX(theta₂₁)
4e050d4d34e7474fb364c22e0b6a5682--e0ed82b63a684987828f4ebcd61b7bc4
a93be273d343496aaf4f230980f0cd69
X
e0ed82b63a684987828f4ebcd61b7bc4--a93be273d343496aaf4f230980f0cd69
a93be273d343496aaf4f230980f0cd69--778ee661e18c474fae32339e417aef82
9c0e4e74b7ee45c0a2781791b6329991
a93be273d343496aaf4f230980f0cd69--9c0e4e74b7ee45c0a2781791b6329991
9c0e4e74b7ee45c0a2781791b6329991--432e367cbe2f46f4a38544e210dbe535
3f9ea0cdba4642589a221a14f1c065c3
b68dc5452978471a8584e15cce8e8b97
RX(3.0*phi)
837eb8fa20174ef8aa3ba1528b6275a8--b68dc5452978471a8584e15cce8e8b97
b0d8f0ba4eb14a1581590d061858d563
3
6d37b017ba6942fd8a937881fce589d8
RX(theta₂)
b68dc5452978471a8584e15cce8e8b97--6d37b017ba6942fd8a937881fce589d8
ef7c670869bf47ce8cea5ac75c820ea6
RY(theta₆)
6d37b017ba6942fd8a937881fce589d8--ef7c670869bf47ce8cea5ac75c820ea6
0eab4d51d1c04e8cb0a5fb54c34119a0
RX(theta₁₀)
ef7c670869bf47ce8cea5ac75c820ea6--0eab4d51d1c04e8cb0a5fb54c34119a0
fe1bfd59e51b440485bff30518884370
0eab4d51d1c04e8cb0a5fb54c34119a0--fe1bfd59e51b440485bff30518884370
213d4e5f68dd4557b2efe943696579ac
X
fe1bfd59e51b440485bff30518884370--213d4e5f68dd4557b2efe943696579ac
213d4e5f68dd4557b2efe943696579ac--34c5a930d4a044d79eac2ca81a0e737c
5a66ea2aae4e49e9a1e46231c7c650c7
RX(theta₁₄)
213d4e5f68dd4557b2efe943696579ac--5a66ea2aae4e49e9a1e46231c7c650c7
c75fa4c32a0043618477ba0e3921c31f
RY(theta₁₈)
5a66ea2aae4e49e9a1e46231c7c650c7--c75fa4c32a0043618477ba0e3921c31f
8cad72bdaf76461490d9effb278eaf7e
RX(theta₂₂)
c75fa4c32a0043618477ba0e3921c31f--8cad72bdaf76461490d9effb278eaf7e
7946e8e252b848a4abc212b8d7efe08a
8cad72bdaf76461490d9effb278eaf7e--7946e8e252b848a4abc212b8d7efe08a
c7b16a06ee9442ae9d9a3b005bd28c7c
X
7946e8e252b848a4abc212b8d7efe08a--c7b16a06ee9442ae9d9a3b005bd28c7c
c7b16a06ee9442ae9d9a3b005bd28c7c--9c0e4e74b7ee45c0a2781791b6329991
c7b16a06ee9442ae9d9a3b005bd28c7c--3f9ea0cdba4642589a221a14f1c065c3
31ba5d3fee054371be1a44ebbc710837
ea7e3a6fd8c44e8da232236b483cd7d7
RX(4.0*phi)
b0d8f0ba4eb14a1581590d061858d563--ea7e3a6fd8c44e8da232236b483cd7d7
6f4e861081264428abd0c0bb317aaed9
RX(theta₃)
ea7e3a6fd8c44e8da232236b483cd7d7--6f4e861081264428abd0c0bb317aaed9
a60871c6a4a84d328fee3d4cafb07837
RY(theta₇)
6f4e861081264428abd0c0bb317aaed9--a60871c6a4a84d328fee3d4cafb07837
f8b6c8b54031451a8a2d7be5cf75aaa8
RX(theta₁₁)
a60871c6a4a84d328fee3d4cafb07837--f8b6c8b54031451a8a2d7be5cf75aaa8
4b671dab7a6f454e93a7eac7fd1136ff
X
f8b6c8b54031451a8a2d7be5cf75aaa8--4b671dab7a6f454e93a7eac7fd1136ff
4b671dab7a6f454e93a7eac7fd1136ff--fe1bfd59e51b440485bff30518884370
e9c77f8dc48540ee9eb73987a6ef7099
4b671dab7a6f454e93a7eac7fd1136ff--e9c77f8dc48540ee9eb73987a6ef7099
0b2fb72866af4c56908543496079d22b
RX(theta₁₅)
e9c77f8dc48540ee9eb73987a6ef7099--0b2fb72866af4c56908543496079d22b
34884de375fe484fbf5865e5ba5203df
RY(theta₁₉)
0b2fb72866af4c56908543496079d22b--34884de375fe484fbf5865e5ba5203df
7ece06ae1955496ca20eabbfd3ad37f0
RX(theta₂₃)
34884de375fe484fbf5865e5ba5203df--7ece06ae1955496ca20eabbfd3ad37f0
19cc31cfc74f4469ad423ee74768131f
X
7ece06ae1955496ca20eabbfd3ad37f0--19cc31cfc74f4469ad423ee74768131f
19cc31cfc74f4469ad423ee74768131f--7946e8e252b848a4abc212b8d7efe08a
57eaeca3cb214ff89f4db65af7b4673b
19cc31cfc74f4469ad423ee74768131f--57eaeca3cb214ff89f4db65af7b4673b
57eaeca3cb214ff89f4db65af7b4673b--31ba5d3fee054371be1a44ebbc710837
from qadence import QuantumModel , QuantumCircuit , total_magnetization , hea
model = QuantumModel ( QuantumCircuit ( 3 , hea ( 3 , 2 )), total_magnetization ( 3 ))
%3
cluster_2f9a7603280f422b9156f07477e69fbe
Obs.
cluster_3a77486387744395864b7d7df6b350db
cluster_2ca4834d2e7b44a598e51bdcb41f0346
HEA
abd7ec0b62154ef3b254d6ef9bb82914
0
c78818442a4c42ce949b7c914f89f1ec
RX(theta₀)
abd7ec0b62154ef3b254d6ef9bb82914--c78818442a4c42ce949b7c914f89f1ec
df835bb68a534879bfeb0dba62c95b4c
1
5dc414e0443a4fa49a97d20d6e9931db
RY(theta₃)
c78818442a4c42ce949b7c914f89f1ec--5dc414e0443a4fa49a97d20d6e9931db
e905681b7ce14707860d6caff0209af0
RX(theta₆)
5dc414e0443a4fa49a97d20d6e9931db--e905681b7ce14707860d6caff0209af0
e502985ed0694d30bbb111c149bc747e
e905681b7ce14707860d6caff0209af0--e502985ed0694d30bbb111c149bc747e
d8d725f5a85f4c288868742180756271
e502985ed0694d30bbb111c149bc747e--d8d725f5a85f4c288868742180756271
bc9cacf97b7f4cecb2a3f795c43a160a
RX(theta₉)
d8d725f5a85f4c288868742180756271--bc9cacf97b7f4cecb2a3f795c43a160a
34820730871d457abcde0efcb78d5601
RY(theta₁₂)
bc9cacf97b7f4cecb2a3f795c43a160a--34820730871d457abcde0efcb78d5601
ef1700a968cd47548dfd01255e241035
RX(theta₁₅)
34820730871d457abcde0efcb78d5601--ef1700a968cd47548dfd01255e241035
de301daeac0e49eda1445323d3d0b1b2
ef1700a968cd47548dfd01255e241035--de301daeac0e49eda1445323d3d0b1b2
56b0c3058fc34371bc66a9f7fe572443
de301daeac0e49eda1445323d3d0b1b2--56b0c3058fc34371bc66a9f7fe572443
126e9f95f35a4b49b02db2dedab683df
56b0c3058fc34371bc66a9f7fe572443--126e9f95f35a4b49b02db2dedab683df
d18bb80cf35546b4bd111eb0f4fc7ec6
126e9f95f35a4b49b02db2dedab683df--d18bb80cf35546b4bd111eb0f4fc7ec6
b3ae705e5e984c44b7529af09a0cafc7
039c29a6fe9042f4bc5372aa9bb0d0a9
RX(theta₁)
df835bb68a534879bfeb0dba62c95b4c--039c29a6fe9042f4bc5372aa9bb0d0a9
38d2f721ef4e43d786072d27b23cc0de
2
ed2036cf2765483f84f018b316e9da73
RY(theta₄)
039c29a6fe9042f4bc5372aa9bb0d0a9--ed2036cf2765483f84f018b316e9da73
738c50f9f8554ebcbaad49ffeaff4de5
RX(theta₇)
ed2036cf2765483f84f018b316e9da73--738c50f9f8554ebcbaad49ffeaff4de5
d73ee6ee4232497c95bf2fd37f101f6a
X
738c50f9f8554ebcbaad49ffeaff4de5--d73ee6ee4232497c95bf2fd37f101f6a
d73ee6ee4232497c95bf2fd37f101f6a--e502985ed0694d30bbb111c149bc747e
b7545d914ed84fd28ae9f2eabcab4336
d73ee6ee4232497c95bf2fd37f101f6a--b7545d914ed84fd28ae9f2eabcab4336
333898c48de04f49acf72ef0b0c41249
RX(theta₁₀)
b7545d914ed84fd28ae9f2eabcab4336--333898c48de04f49acf72ef0b0c41249
1650681ac0894d618509bc3fabda6a5a
RY(theta₁₃)
333898c48de04f49acf72ef0b0c41249--1650681ac0894d618509bc3fabda6a5a
1eb0b5b098434c18a708c5eced8579e7
RX(theta₁₆)
1650681ac0894d618509bc3fabda6a5a--1eb0b5b098434c18a708c5eced8579e7
e8c40c42fa684259bd023a1aa9242b37
X
1eb0b5b098434c18a708c5eced8579e7--e8c40c42fa684259bd023a1aa9242b37
e8c40c42fa684259bd023a1aa9242b37--de301daeac0e49eda1445323d3d0b1b2
bea8c89d0a2d46e3812919bb2aa92909
e8c40c42fa684259bd023a1aa9242b37--bea8c89d0a2d46e3812919bb2aa92909
e6cdb86bd62f4cc9ab44126876ec3a72
AddBlock
bea8c89d0a2d46e3812919bb2aa92909--e6cdb86bd62f4cc9ab44126876ec3a72
e6cdb86bd62f4cc9ab44126876ec3a72--b3ae705e5e984c44b7529af09a0cafc7
12f6e5e32171474aa263ca1c94273e9f
ae10e38a449d47e580e88affddd02819
RX(theta₂)
38d2f721ef4e43d786072d27b23cc0de--ae10e38a449d47e580e88affddd02819
2e5478f7d65941528494ab67241042b0
RY(theta₅)
ae10e38a449d47e580e88affddd02819--2e5478f7d65941528494ab67241042b0
aa52d25c567744fbbe0d4a6d20703087
RX(theta₈)
2e5478f7d65941528494ab67241042b0--aa52d25c567744fbbe0d4a6d20703087
00a7f67136054dee86016b9807839bb6
aa52d25c567744fbbe0d4a6d20703087--00a7f67136054dee86016b9807839bb6
d450da7ceb5d4234b0bd9f02ce1a3bb8
X
00a7f67136054dee86016b9807839bb6--d450da7ceb5d4234b0bd9f02ce1a3bb8
d450da7ceb5d4234b0bd9f02ce1a3bb8--b7545d914ed84fd28ae9f2eabcab4336
d9ee579bbb664acb9db24dcf52294f17
RX(theta₁₁)
d450da7ceb5d4234b0bd9f02ce1a3bb8--d9ee579bbb664acb9db24dcf52294f17
7e949aca64d3416fae83a02d673bd7fd
RY(theta₁₄)
d9ee579bbb664acb9db24dcf52294f17--7e949aca64d3416fae83a02d673bd7fd
d4066d260647414e9d25460807a10fb0
RX(theta₁₇)
7e949aca64d3416fae83a02d673bd7fd--d4066d260647414e9d25460807a10fb0
d0e59e01f63a498d875403bf01180089
d4066d260647414e9d25460807a10fb0--d0e59e01f63a498d875403bf01180089
8759a0b56cad4d309b3141c053124c13
X
d0e59e01f63a498d875403bf01180089--8759a0b56cad4d309b3141c053124c13
8759a0b56cad4d309b3141c053124c13--bea8c89d0a2d46e3812919bb2aa92909
175f6392f1d245998b0d53f40281a4f1
8759a0b56cad4d309b3141c053124c13--175f6392f1d245998b0d53f40281a4f1
175f6392f1d245998b0d53f40281a4f1--12f6e5e32171474aa263ca1c94273e9f
from qadence import *
b = chain ( SWAP ( 0 , 1 ), SWAP ( 0 , 3 ))
%3
4ecee5c467c04df0a9cf38ef01e980b2
0
deb3c34224d947b1abc46369e1dd402c
4ecee5c467c04df0a9cf38ef01e980b2--deb3c34224d947b1abc46369e1dd402c
da5ab97718bf441481111cc9fb7ecb16
1
65120c688b014dae9787954d8e93fd66
f7410163eb634c4697513e9ea73e1b01
deb3c34224d947b1abc46369e1dd402c--f7410163eb634c4697513e9ea73e1b01
ab976259d4a54e7bb50880fb96038a6c
65120c688b014dae9787954d8e93fd66--ab976259d4a54e7bb50880fb96038a6c
65ecf7d77d7143db9a6c7b5b289b0d51
4cc405b7c9d04024bba21a4027fbbec1
ab976259d4a54e7bb50880fb96038a6c--4cc405b7c9d04024bba21a4027fbbec1
037ce86a9aba47689438712436644816
65ecf7d77d7143db9a6c7b5b289b0d51--037ce86a9aba47689438712436644816
92d433e036bf4bee97b29b87bf2f13df
23dd856e9c7c4d139e50d880a8aed48c
da5ab97718bf441481111cc9fb7ecb16--23dd856e9c7c4d139e50d880a8aed48c
ddb4c275421d4ec68fefc232e5fc74d1
2
23dd856e9c7c4d139e50d880a8aed48c--65120c688b014dae9787954d8e93fd66
c5d10eb4bfe446a981237eb9d303ce52
f7410163eb634c4697513e9ea73e1b01--c5d10eb4bfe446a981237eb9d303ce52
09ce98f426284dc78c96da85e4625d6a
c5d10eb4bfe446a981237eb9d303ce52--09ce98f426284dc78c96da85e4625d6a
09ce98f426284dc78c96da85e4625d6a--92d433e036bf4bee97b29b87bf2f13df
5178315881444fff9a1a123c1e7a7db6
d63b97ca4b6e4f558bb639d81cee86c9
ddb4c275421d4ec68fefc232e5fc74d1--d63b97ca4b6e4f558bb639d81cee86c9
ba28d9c11c7d4d4a8fe3ebe884d5032b
3
96b3fb3a8a9147e19702887291aaee51
d63b97ca4b6e4f558bb639d81cee86c9--96b3fb3a8a9147e19702887291aaee51
0ead29ea0de44816b72662ddc41f3cbd
96b3fb3a8a9147e19702887291aaee51--0ead29ea0de44816b72662ddc41f3cbd
1f7a32a90cca4865b515821452bf7c6e
0ead29ea0de44816b72662ddc41f3cbd--1f7a32a90cca4865b515821452bf7c6e
1f7a32a90cca4865b515821452bf7c6e--5178315881444fff9a1a123c1e7a7db6
c1732ea4058e47c398ee639b7de7ea67
d066088e26dc423dabd2d32bf8847659
ba28d9c11c7d4d4a8fe3ebe884d5032b--d066088e26dc423dabd2d32bf8847659
30507bb822044bd88da990a3c3a6db33
d066088e26dc423dabd2d32bf8847659--30507bb822044bd88da990a3c3a6db33
d1fe317fcd4744e0ba0c83b68053e654
30507bb822044bd88da990a3c3a6db33--d1fe317fcd4744e0ba0c83b68053e654
d1fe317fcd4744e0ba0c83b68053e654--65ecf7d77d7143db9a6c7b5b289b0d51
4cc405b7c9d04024bba21a4027fbbec1--c1732ea4058e47c398ee639b7de7ea67
from qadence import *
b = chain ( CPHASE ( 0 , 1 , 0.5 ), CPHASE ( 0 , 2 , 0.5 ), CPHASE ( 0 , 3 , 0.5 ))
%3
32e92b75a20a4e10b4b5b0f0e485e9d4
0
4e3f60a12b2f456ebf26b3c7946ceaac
32e92b75a20a4e10b4b5b0f0e485e9d4--4e3f60a12b2f456ebf26b3c7946ceaac
a42746f9656e40a98ad8900390b6cec9
1
ee4cff3e0ceb4fa487bd62232805eada
4e3f60a12b2f456ebf26b3c7946ceaac--ee4cff3e0ceb4fa487bd62232805eada
4f7ed9399d43434b8329a817fe568a10
ee4cff3e0ceb4fa487bd62232805eada--4f7ed9399d43434b8329a817fe568a10
3c0510417e064299a2024cbcb3b53e45
4f7ed9399d43434b8329a817fe568a10--3c0510417e064299a2024cbcb3b53e45
9bc24b00529644dd84d403e8b3daccb6
9f8adf8735974874b29531a06d490b9d
PHASE(0.5)
a42746f9656e40a98ad8900390b6cec9--9f8adf8735974874b29531a06d490b9d
36d28184e0c441ce92147e0b5e796b8b
2
9f8adf8735974874b29531a06d490b9d--4e3f60a12b2f456ebf26b3c7946ceaac
fa5b89e56db64dac9cbde58aa58fcdcf
9f8adf8735974874b29531a06d490b9d--fa5b89e56db64dac9cbde58aa58fcdcf
4649647f2abb471da319ecf2e95fe732
fa5b89e56db64dac9cbde58aa58fcdcf--4649647f2abb471da319ecf2e95fe732
4649647f2abb471da319ecf2e95fe732--9bc24b00529644dd84d403e8b3daccb6
a94f60d1f0ed457bae7bfbee1b90feff
9e1e77af878c4260b7719fbb651ca96a
36d28184e0c441ce92147e0b5e796b8b--9e1e77af878c4260b7719fbb651ca96a
c318eb6c4d074c45870ac3c9e0ddaf71
3
e027c27d2c324299ae2abb42f6ffcafe
PHASE(0.5)
9e1e77af878c4260b7719fbb651ca96a--e027c27d2c324299ae2abb42f6ffcafe
e027c27d2c324299ae2abb42f6ffcafe--ee4cff3e0ceb4fa487bd62232805eada
7ac75600f35442418d895150ee8d601e
e027c27d2c324299ae2abb42f6ffcafe--7ac75600f35442418d895150ee8d601e
7ac75600f35442418d895150ee8d601e--a94f60d1f0ed457bae7bfbee1b90feff
c4aed194f25340f0ad7c7243dc5f7a12
bd7e1c56a2604140af715b05450c8a5b
c318eb6c4d074c45870ac3c9e0ddaf71--bd7e1c56a2604140af715b05450c8a5b
9ffe19033dd4410595379a5e602ca69e
bd7e1c56a2604140af715b05450c8a5b--9ffe19033dd4410595379a5e602ca69e
fffe8525481e4c48b28e2250af936398
PHASE(0.5)
9ffe19033dd4410595379a5e602ca69e--fffe8525481e4c48b28e2250af936398
fffe8525481e4c48b28e2250af936398--4f7ed9399d43434b8329a817fe568a10
fffe8525481e4c48b28e2250af936398--c4aed194f25340f0ad7c7243dc5f7a12
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